Java - Java 특징
Java 특징
1. OS에 독립적이다.
Java 언어는 JVM(Java Virtual Machine)을 이용하여 OS와 Java Application을 연결하기 때문에
Java application은 Windows, Linux, Mac 등 OS의 종류에 구애받지 않는다.
단, JVM은 OS에 맞게 필요하다.
그림으로 보면 다음과 같다.
Java application은 JVM에서 실행되기 때문에 반드시 필요하다.
JDK(Java Development Kit) 설치 시 JVM, Java 클래스 라이브러리 등을 받을 수 있다.
(javac.exe: Java 컴파일러, java.exe: Java 인터프리터, Javap.exe: 역어셈블러, jar.exe: 압축프로그램)
JDK = JRE + 개발에 필요한 실행파일
JRE(자바 실행 환경(Java Runtime Environment)) = JVM + 클래스 라이브러리
2. 객체 지향 언어이다.
상속, 다형성 등 객체 지향 언어의 특징을 잘 활용할 수 있다.
3. 자동으로 메모리를 관리한다.
C언어의 경우 메모리를 할당한 수 역할이 끝나면 free()를 직접 해야한다.
하지만 Java는 JVM의 가비지컬렉터(Garbage Collector)가 자동적으로 메모리를 관리하기 때문에 크게 신경을 쓸 필요가 없다.
4. 멀티쓰레드를 지원한다.
멀티쓰레드(Multi Thread)는 OS 동작이 필요하기 때문에 종류에 맞게 구현할 필요가 있지만 Java는 OS 상관 없이 관련 라이브러리를 이용해 구현할 수 있다.
이외에도 여러 특징이 있지만 가장 눈여겨볼 것은 JVM을 통해 동작한다는 것이다.
JVM 단에서 여러 동작을 지원하기 때문에 Java를 이용한 개발이 보다 수월하다는 것을 알 수 있다.
5. 동적 로딩을 지원한다.
자바 애플리케이션은 여러 개의 클래스로 구성되어 있는데 자바는 동적 로딩을 지원하기에 실행 시에 모든 클래스가 로딩되지 않고 필요한 시점에 클래스를 로딩해 사용할 수 있다.
Java가 느린 이유
1. Java 애플리케이션은 JVM을 거치기 때문
2. HW에 맞게 완전히 컴파일된 상태가 아니고 실행 시 해석(interpret)되기 때문
Java 동작
Java 동작을 보면 다음과 같다.
javac.exe로 클래스 파일을 생성한 후 java.exe로 실행한다.
이때 .class 파일은 각 클래스마다 하나씩 만들어진다.
Java의 모든 코드가 class안에 있어야 하는 이유라고 볼 수 있다.