Java
-
자바 언어는 플랫폼에 독립적으로 설계되었다.
-
자바 코드는 운영체제나 CPU 등 플랫폼에 상관없이 자바 가상 기계(JVM)만 있으면 어떤 컴퓨터에서든 동일하게 실행된다. 이를 WORA(Write Once Run Anywhere) 라고 한다.
-
한 번 작성된 자바 프로그램은 수정 없이 실행 가능하다.
자바 가상 기계와 바이트 코드
-
바이트 코드(byte code)는 자바 컴파일러가 자바 소스 프로그램을 컴파일한 일종의 기계어로서, 자바 가상 기계(Java Virtual Machine, JVM)에 의해 실행되는 바이너리 코드(binary code)이다.
-
바이트 코드는 자바 가상 기계에 의해 인터프리터 방식으로 한 명령씩 해석되어 실행된다.
-
자바 프로그램 입장에서 볼때 자바 가상 기계는 운영체제이자 컴퓨터이다.
-
자바 가상 기계는 플랫폼에 적합하게 서로 다르게 구현되므로 플랫폼 종속적이다.
자바 응용프로그램 실행 환경
-
자바 컴파일러는 자바 소스 프로그램을 컴파일하여 바이트 코드를 클래스 파일(class file)에 저장한다.
-
자바 프로그램이 실행되기 위해서는 개발자가 작성한 자바 프로그램 외에 자바 플랫폼에서 제공하는 다양한 클래스 라이브러리(자바 APIs)가 반드시 필요하다.
자바와 타언어(C/C++)의 실행 차이
-
C/C++는 컴파일한 목적 파일을 링크시켜 하나의 실행파일(exe)을 만들며, 이 실행 파일 하나만 있으면 실행 가능하다. 그리고 이 실행 파일은 컴퓨터의 CPU가 바로 실행한다.
-
Java의 경우 링크 과정이 없으며 자바 가상 기계가 컴파일된 클래스 파일을 실행한다.
JDK와 JRE
-
JDK(Java Development Kit)는 자바 개발자를 위한 상업용 소프트웨어로, 자바 컴파일러 등의 개발 도구와 JRE(Java Runtime Environment)로 구성된다.
-
JRE는 자바 응용프로그램이 실행될 때 필요한 소프트웨어들로 개발자가 활용할 수 있는 자바 API(이미 컴파일된 다양한 클래스 라이브러리)와 자바 가상 기계를 포함한다.
자바 API
- 자바 API(Application Programming Interface)는 개발자들이 사용하도록 미리 만들어놓은 유용한 자바 클래스들의 집합이다.
이클립스, 자바 통합 개발 환경
-
IDE(Integrated Development Environment)란 소스 코드 편집, 컴파일, 디버깅을 한꺼번에 할 수 있는 소프트웨어 통합 개발 환경을 일컫는다.
-
C/C++ → 비주얼 스튜디오 / Java → 이클립스(eclipse)
-
이클립스는 자바 언어로 개발된 데스크톱 응용프로그램이다.
자바의 특징
-
플랫폼 독립성 - 자바 가상 기계만 있으면 자바 프로그램의 실행이 가능하다.
-
객체 지향 - 캡슐화, 상속, 다형성 등을 지원한다. 객체 지향 프로그램은 해결할 과제를 실제 세상의 객체와 객체간의 상호 관계로 모델링하여 인간의 사고에 가깝게 표현한다.
-
클래스로 캡슐화 - 자바는 변수나 메소드는 반드시 클래스 내에 구현하도록 한다.
-
소스와 클래스 파일 - 자바 소스가 컴파일된 클래스 파일(.class)는 반드시 하나의 자바 클래스만이 들어있다.
-
실행 코드 배포 - 다수의 클래스 파일을 jar 파일 형태로 압축하여 배포 및 실행이 가능하다.
-
패키지 - 서로 관련 있는 클래스는 패키지로 묶어 관리한다.
-
멀티스레드 - 하나의 자바 프로그램에서 다수의 스레드가 동시에 실행할 수 있는 환경을 지원한다.
-
가비지 컬렉션 - 자바 언어는 메모리를 반환하는 기능이 없다. 프로그램 내에 사용되지 않는 메모리는 자바 가상 기계의 가비지 컬렌셕 기능에 의해 자동으로 회수된다.
-
실시간 응용 시스템에 부적합 - 자바 응용프로그램은 실행 도중 예측할 수 없는 시점에 가비지 컬렉션이 실행되므로, 프로그램이 일시적으로 중단된다.
Reference
- 책 - 명품 자바 에센셜