티스토리 뷰

 

1. 자바의 특징

- 배우기 쉬운 객체지향 언어

*객체지향 언어 = 기존의 프로그래밍 언어 + 객제지향 개념을 도입

ex) C++, Java, Python, JS 

 

- 자동 메모리 관리

자바가 나오기 전에는 프로그래머가 직접 메모리를 관리해줬어야 했다.

근데 사람이 직접 관리하다보니까 메모리를 사용하고 난 다음에 반환해줘야하는데 그 반환을 하지 않아서 사용할 메모리가 부족해서 프로그램이 죽는 일이 많았다.

 

자바에서는 가비지 컬렉터(gc : garbage collector) 메모리를 자동으로 알아서 정리해준다.

자바로 작성된 프로그램에서는 프로그래머가 메모리를 사용하 다음에 일일히 정리하지 않아도 되니까 프로그램을 작성하기가 매우 편리하다.

 

- 멀티 쓰레드를 지원

멀티 쓰레드 : 하나의 프로그램에서 동시에 여러 작업을 수행할 수 있게한다.

ex) 채팅 프로그램에서 채팅을 하면서 친구와 파일을 주고받을 수 있는게 멀티쓰레드로 프로그램이 작성되어 있기 때문에 가능한 것이다.

요즘 대부분 프로그램은 멀티쓰레드로 작성되기 때문에 프로그래밍 언어라면 반드시 가져야 하는 중요한 특징이다.

 

- 풍부한 라이브러리로 쉽게 개발가능

라이브러리 : 프로그램을 개발하는데 자주 쓰이는 중요한 기능들을 미리 만들어서 제공하는 것

자바가 제공하는 라이브러리가 워낙 다양하고 풍부하기 때문에 우리가 원하는 프로그램을 적은 노력으로 쉽게 개발할 수 있다.

 

- 운영체제에 독립적 ★ ★ ★

일반적으로 프로그램을 작성하면 그 특정 운영체제에서만 실행이 가능하다.

ex) 윈도우즈OS에서 실행되는 프로그램을 작성하면 리눅스 운영체제에서는 이 프로그램을 사용할 수 없다.

리눅스 운영체제에서도 이 프로그램을 사용할 수 있으려면 프로그램을 수정할 수 밖에 없다.

 

그런데 자바로 작성된 프로그램은 전혀 수정하지 않고도 여러 운영체제에서 실행될 수 있다.

 

* How 어떻게 가능한가? 

자바로 작성된 프로그램이 수정하지 않고도 여러 운영 체제에서 실행될 수 있는 이유가 바로 자바 가상머신 때문이다.

 

*자바가상머신(자바 버츄얼머신:JVM)

자바 버츄얼머신 : 자바 프로그램이 실행되는 가상 컴퓨터(VM)

실제 컴퓨터가 아니라 소프트웨어로 만들어진 컴퓨터란 뜻이다.

한번 작성하면 어디서든 실행(Write once, run anywhere)

 

일반적인 애플리케이션은 OS 즉, 운영체제에 위에서 실행이 되는데

자바 프로그램은 이 자바 버추얼머신 위에서 실행이된다.

그래서 OS와 독립적일 수 있는 것이다.

 

일반적으로 프로그램은 즉 애플리케이션은 어떤 특정 OS위에서 실행되게 되는데

여기서 윈도우즈OS용으로 만들어진 어플리케이션은 윈도우즈OS에서 실행될 수 있는거고 맥OS에서는 윈도우즈OS용으로 만들어진 어플리케이션은 사용할 수 없게 된다.

만약에 맥OS에서 윈도우즈OS용으로 만들어진 어플리케이션은 사용하고 싶으면 맥OS버전의 어플리케이션으로 수정해야햔다.

 

자바는 여러 운영체제 별로 JVM이 만들어져있기 때문에 하나의 자바로 작성된 프로그램을 개발하기만 하면 코드를 전혀 수정하지 않고도 JVM이 설치만 되어있으면 실행하는데 아무런 문제가 없다.

 

이처럼 다양한 종류의 JVM들이 만들어져있기 때문에 JVM이 설치만 되어있으면 우리가 만든 자바프로그램을 운영체제에 관계없이 어디서든 수정없이 다른 OS에서 실행할 수 있다.