티스토리 뷰

 

1. 운영체제에 독립적이다.


기존의 언어는 한 운영체제에 맞게 개발된 프로그램을 다른 종류의 운영체제에 적용하기 위해서는 많은 노력이
필요 하였지만, 자바에서는 그런 노력을 하지 않아도 된다. 
이것을 가능하게 하는 것은 자바가상머신(JVM) 때문인데 자바 응용프로그램은 운영체제나 하드웨어가 아닌 JVM하고만 통신하고 JVM이 자바 응용프로그램으로부터 전달받은 명령을 해당 운영체제가 이해할 수 있도록 변환하여 전달한다.
즉, 자바로 작성된 프로그램은 운영체제에 독립적이다. (JVM은 운영체제에 종속적임)

 

 

2. 자동 메모리 관리 (Garbage Collection)


가비지란 프로그램이 실행되면서 발생하는 '정리되지 않은 메모리', '유효하지 않은 메모리 주소'를 말한다.
자바로 작성된 프로그램이 실행되면, 가비지컬렉터(garbage collector)가 자동적으로 메모리를 관리해주기 때문에 프로그래머는 메모리를 따로 관리하지 않아도 된다. (가비지컬렉터는 가비지를 정리해주는 프로그램을 말함)
이는 프로그래머가 프로그래밍에 집중할 수 있도록 도와준다.

JVM은 메모리를 부여받고 프로그램들을 실행하다가 메모리가 부족해지는 순간이 오면 운영체제에게 추가로 메모리를 더 요청하게 된다. 이때 가비지 컬렉터가 실행된다.
또한 24시간 내내 돌아가는 서버 프로그램인 경우에는 JVM이 한가할 때 가비지 컬렉터가 실행된다.

 

 

3. 네트워크와 분산처리를 지원한다.


인터넷과 대규모 분산환경을 염두에 둔 까닭인지 풍부하고 다양한 네트워크 프로그래밍 라이브러리(Java API)를 지원한다.

 

 

4. 멀티쓰레드를 지원한다.


쓰레드(thread) : 프로세스 (메모리에 로딩된 프로그램) 에서 하나의 실행 흐름
자바는 멀티쓰레드를 지원하는 언어로 하나의 프로그램에서 여러 개의 실행 흐름을 만들고 실행할 수 있다.
멀티쓰레드를 사용 하는 이유는 대기시간이 발생했을 때 (ex I/O 연산) 기다리는 동안 다른 일을 처리할 수 있게 해서 처리 속도를 빠르게 하기 위함이다.
자바에서 개발되는 멀티쓰레드 프로그램은 시스템 (운영체제) 과는 관계없이 구현가능하며, 관련된 라이브러리 (Java API)가 제공되므로 구현하기 용이하다.

 

 

5. 동적 로딩(Dynamic Loading)을 지원한다.


보통 자바로 작성된 애플리케이션은 여러 개의 클래스로 구성되어 있다. 자바는 동적 로딩을 지원하기 때문에 실행 시에 모든 클래스가 로딩되지 않고 필요한 시점에 클래스를 로딩하여 사용할 수 있다는 장점이 있다.
그 외에도 일부 클래스가 변경되어도 전체 애플리케이션을 다시 컴파일 하지 않아도 되며, 애플리케이션의 변경사항이 발생해도 비교적 적은 작업만으로 처리할 수 있는 유연한 애플리케이션을 작성할 수 있다.

 

 

참고자료


남궁 성 지음, Java의 정석 3rd Edition,도우출판.

https://wanzargen.tistory.com/15

https://jeong-pro.tistory.com/71

 

'프로그래밍 언어 > Java' 카테고리의 다른 글

객체지향 프로그래밍3  (0) 2019.06.06
객체지향 프로그래밍2  (0) 2019.06.04
객체지향 프로그래밍  (0) 2019.06.02
변수에 대해  (0) 2019.06.02
JVM 이란?  (0) 2018.11.06