Java/Java

Java - Java 특징

Dlise 2023. 1. 19. 17:00

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안에 있어야 하는 이유라고 볼 수 있다.