포스팅 내용
- 자바(Java)란?
- 자바언어의 특징
- JVM (Java Vertual Machine)
자바(Java)란?
자바는 썬 마이크로시스템즈(Sun Microsystems, Inc. 이하 썬)에서 개발하여 1996년 1월 공식적으로 발표한 객체지향 프로그래밍 언어이다.
자바의 가장 중요한 특징은 운영체제(Operating System, 플랫폼)에 독립적이라는 것이다.
자바로 작성된 프로그램은 운영체제의 종류에 관계없이 실행이 가능하기 때문에, 운영차제에 따라 프로그램을 전혀 변경하지 않고도 실행이 가능하다.
자바는 풍부한 클래스 라이브러리(Java API)를 통해 프로그래밍에 필요한 요소들을 기본적으로 제공하기 때문에 자바 프로그래머는 단순히 이 클래스 라이브러리만을 잘 활용해도 강력한 기능의 자바 프로그램을 작성할 수 있다.
(여담) 한국은 자바공화국이라는 농담이 있을 정도로 국내에서 사용되는 프로그래밍 언어중에는 자바의 비중이 높다. 정부기관에서 진행하는 프로젝트를 스프링 기반의 전자정부 프레임워크 (eGovFramework)가 이용되기에 영향을 받았을 것으로 추측된다...
자바언어의 특징
- 운영체제에 독립적이다.
- 자바 응용프로그램은 운영체제나 하드웨어가 아닌 JVM하고만 통신하고 JVM이 자바 응용프로그램으로부터 전달받은 명령을 해당 운영체제가 이해할 수 있도록 변환하여 전달한다.
- 자바로 작성된 프로그램은 운영체제에 독립적이지만, JVM은 운영체제에 종속적이다 (썬에서는 이러한 이유로 운영체제별로 설치할 수 있는 각기 다른 버전의 JVM을 제공한다. -> Linux, MaxOS, Windows 등)
- 객체지향언어이다.
- 객체지향개념의 특징인 상속, 캡슐화, 다형성이 잘 적용되어있다.
- 비교적 배우기 쉽다.
- 자바의 간결하면서도 명료한 객체지향적 설계는 사용자들의 객체지향개념을 보다 쉽게 이해하고 활용할 수 있도록 하여 객체지향 프로그래밍의 저변확대에 크게 기여했다.
- 자동 메모리 관리 (Garbage Collection)
- 가비지컬렉터(Garbage Collector)가 자동적으로 메모리를 관리해주기 때문에 프로그래머는 메모리를 따로 관리 하지 않아도 된다. 자동으로 메모리를 관리한다는 것이 다소 비효율적인 면도 있지만, 프로그래머가 보다 프로그래밍에 집중할 수 있도록 도와준다.
- 네트워크와 분산처리를 지원한다.
- 멀티스레드를 지원한다.
- 일반적으로 멀티쓰레드(multi-thread)의 지원은 사용되는 운영체제에 따라 구현방법도 상이하며, 처리 방식도 다르다. 그러나 자바에서 개발되는 멀티쓰레드 프로그램은 시스템과는 관계없이 구현가능하며, 관련된 라이브러리(Java API)가 제공되므로 구현이 쉽다. 그리고 여러 쓰레드에 대한 스케줄링(scheduling)을 자바 인터프리터가 담당하게 된다.
- 동적 로딩(Dynamic Loading)을 지원한다.
- 자바는 동적 로딩을 지원하기 때문에 실행 시에 모든 클래스가 로딩되지 않고 필요한 시점에 클래스를 로딩하여 사용할 수 있다는 장점이 있다.
- 그 외에도 일부 클래스가 변경되어도 전체 애플리케이션을 다시 컴파일 하지 않아도 되며, 애플리케이션의 변경사항이 발생해도 비교적 적은 작업만으로 처리할 수 있는 유연한 애플리케이션을 작성할 수 있다.
- 참고) 자바의 단점으로 속도문제가 가장 대표적인 것이나 바이트 코드(byte code)를 하드웨어의 기계어로 바로 변환해주는 JIT(Just In Time) 컴파일러와 Hotspot과 같은 신기술의 도입으로 JVM의 기능이 향상됨으로써 속도문제가 상당히 개선되었다.
JVM(Java Virtual Machine)
JVM은 'Java virtual machine'을 줄인 것으로 직역하면 '자바를 실행하기 위한 가상 기계'라고 할 수 있다.
가상 기계라는 말이 약간 어색하게 들린다면 영어권에서는 컴퓨터를 머신(machine)으로도 지칭하기에 이렇게 이름붙여졌다고 볼 수 있다.
자바로 작성된 애플리케이션은 모두 이 가상 컴퓨터(JVM)에서만 실행되기 때문에, 자바 애플리케이션이 실행되기 위해서는 반드시 JVM이 필요하다.
-> 일반 애플리케이션의 코드는 OS(Operating System, 운영체제)만 거치고 하드웨어로 전달되는데 비해 Java애플리케이션은 JVM을 한 번 더 거친다.
앞서 설명했듯이, 썬에서는 주요 OS용 JVM을 제공해주기에 자바의 장점인 "Write once, run anywhere. (한 번 작성하면 어디서든 실행된다.)" 이 가능하다.
JRE(Java Runtime Environment)와 JVM을 헷갈리는 분들이 있다.
JRE는 자바를 실행하기 위한 환경을 갖춘 세트로서, 자바 프로그램을 동작시킬 때 필요한 라이브러리 파일들과 기타 파일들을 가지고 있다. JVM은 JRE에 더하여 개발을 위한 환경이 갖추어져(더 넓은 범위) 있는 것이다. 따라서 JVM을 설치했다면 JRE도 이미 설치가 된 것이다.
만약, 자바를 개발에 이용하지 않고 자바를 실행만 하고 싶다면 JRE만 설치해도 된다.
============================================================================
References
http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9788994492032&orderClick=LAG&Kc=