늘 겸손하게

Java 특징 정리 본문

Programming/Java

Java 특징 정리

besforyou999 2022. 2. 7. 19:43

 

자바 특징 정리


-  플랫폼 독립적인 언어

  • 모든 플랫폼에서 호환성을 가진다
  • 네트워크, 특히 웹에 최적화된 프로그래밍 언어

 

자바의 플랫폼 독립성, WORA ( Write Once Run Anywhere )

  • 한번 작성된 코드는 모든 플랫폼에서 바로 실행 가능
  • C/C++ 등 기존 언어가 가진 플랫폼 종속성을 극복
  • 바이트 코드( byte code )JVM( Java Virtual Machine )이 이를 가능하게 했다.

 

 바이트 코드?

- 자바 소스코드를 컴파일한 object 코드. JVM이 해석하고 실행

- CPU에 종속적이지 않은 object 코드.

- .class 파일에 저장

 

JVM ( Java Virtual Machine )

- 자바 바이트 코드를 실행하는 자바 가상 기계(소프트웨어)

- 인터프리터 방식으로 바이트 코드 해석

- JVM 자체는 플랫폼에 종속적

 

 

어느 플랫폼이든 JVM만 설치되어 있다면 같은 자바 소스 코드를 실행할 수 있다.

이를 통해 네트워크에 연결된 어느 클라이언트에서나 똑같은 자바 코드를 실행시킬 수 있어 네트워크, 웹 개발에 널리 쓰였다.

 


JDK와 JRE

 

JDK ( Java Development Kit )

- 자바 응용 개발 환경

- 개발에 필요한 도구 포함 ( 컴파일러, JRE( Java Runtime Environment ), 클래스 라이브러리, 샘플 등 포함 )

 

JRE ( Java Runtime Environment )

- 자바 실행 환경. JVM 포함

 

 


자바의 특징 ( 정리 )

 

1. 플랫폼에 독립적

 

- 하드웨어, 운영체제에 종속되지 않은 바이트 코드를 이용하여 어느 플랫폼에서든 이용 가능하다.

 

 

2. 객체 지향 언어

 

- 캡슐화, 상속 , 다형성을 지원한다.

 

 

3. 클래스로 캡슐화

 

- 자바의 모든 변수나 함수는 클래스 내에 선언

- 클래스 안에서 클래스(내부 클래스) 작성 가능

 

 

4. 패키지

 

- 서로 관련 있는 여러 클래스를 패키지로 묶어 관리

- 패키지는 폴더와 개념이 같다.

 

 

5. 멀티스레드

 

- 여러 스레드의 동시 수행 환경 지원

- C/C++ 프로그램은 멀티스레드를 위해 운영체제 API를 호출하지만 자바는 운영체제의 도움 없이 자체적으로 멀티스레드를 지원한다.

    

 

6. 가비지 컬렉션

 

자바 언어는 메모리 반환 기능이 없어 JVM이 자동으로 사용하지 않는 메모리를 반환한다.

이 작업을 가비지 컬렉션이라고 한다.

 

 

7.  실시간 응용프로그램에 부적합

 

실행 도중 예측할 수 없는 시점에 가비지 컬렉션이 실행되기 때문

 

 

8. 안전하고 쉬운 작성

 

- 타입 체크 엄격

- 물리적 주소를 사용하는 포인터 개념이 없다

- 동적 메모리 반환 또한 없다

- 다양한 라이브러리를 지원

 

 

9. 실행 속도 개선을 위한 JIT 컴파일러 사용

 

자바는 바이트 코드를 인터프리터 방식으로 실행합니다.

 

인터프리터 방식이란 런타임에 코드 한 줄씩 기계어로 번역하는 방식을 말합니다.

이 방식은 컴파일, 즉 실행 전에 모든 코드를 기계어로 번역하여 실행하는 방식보다는 느리지만 OS 및 플랫폼에 독립적일 수 있도록 합니다.

 

자바 소스 코드를 컴파일러가 바이트 코드로 변환한 다음, 실제 바이트코드를 실행하는 시점에서 JVM이 바이트코드를 JIT 컴파일을 통해 기계어로 변환합니다.