본문 바로가기
Java/기본

Java 개요

by 재성스 2023. 8. 10.
반응형

Java란?

  • 썬 마이크로시스템즈에서 1996년 1월 개발
  • 객체지향 프로그래밍 언어
  • 자바의 중요 특징은 운영체제에 독립적
  • 운영체제 종류에 관계없이 실행 가능
  • 클래스 라이브러리(Java API)를 통해 프로그램 작성 가능

 

 

JVM(Java Virtual Machine)

  • 자바가 운영체제에 독립적으로 사용될 수 있게 만든 에뮬레이터
  • JVM이 자바 응용프로그램으로 부터 전달받은 명령을 해당 운영체제가 이해하도록 변환하여 전달.
  • JVM은 운영체제에 종속적
  • 따라서, 여러 운영체제에 설치할 수 있는 서로 다른 버전의 JVM을 제공
  • 자바를 실행하기 위한 가상 기계
  • 가상 기계란 소프트웨어로 구현된 하드웨어를 뜻하는 넓은 의미
  • 자바로 작성된 앱은 모두 JVM에서만 실행됨
  • 일반 앱 코드는 OS만 거치고 하드웨어로 전달
  • 자바 앱은 JVM을 한 번 더 거침
  • 또한 하드웨어에 맞게 완벽히 컴파일 된 상태가 아니고, 실행 시 해석되는 것이기 때문에 속도가 느림
  • 그러나 최근 바이트코드(컴파일된 자바코드)를 하드웨어의 기계어로 변환해주는
  • JIT컴파일과 향상된 최적화 기술이 적용되어 속도가 어느정도 개선됨.

 

 

자동 메모리 관리(Garbage Collection)

  • 자바로 작성된 프로그램이 실행되면, 가비지컬렉터가 자동으로 메모리 관리를 해줌

 

네트워크와 분산처리 지원

  • 인터넷과 대규모 분산환경에 적합
  • Java API를 통해 네트워크 관련 프로그램을 쉽게 개발 할 수 있음

 

멀티스레드 지원

  • 일반적인 멀티스레드 지원은 운영체제에 따른 구현방법이 상이하여 구현이 어려움
  • 자바에서는 시스템과 관계없이 구현 가능하며, Java API가 제공되므로, 구현이 쉬움
  • 여러 쓰레드에 대한 스케줄링을 자바 인터프리터가 담당.

 

동적 로딩 지원

  • 자바로 작성된 앱은 여러 개 클래스로 구성
  • 자바는 동적 로딩을 지원하기 때문에 실행 시 모든 클래스가 로딩되지 않고 필요한 것만 로딩
  • 클래스가 변경되도 전체 앱을 다시 컴파일 할 필요가 없으며, 변경사항이 있어도 비교적 적은 작업으로 처리 가능

 

자바의 단점

  • 속도문제가 대표적
  • 바이트코드를 하드웨어의 기계어로 즉시 변환해주는 JIT컴파일러와 Hotspot과 같은 신기술
  • 도입으로 JVM의 속도 문제가 상당히 개선됨.

 

Java 앱의 동작 흐름 비교

일반 앱 -> OS -> 컴퓨터(하드웨어)

Java 앱 -> JVM -> OS -> 컴퓨터(하드웨어)

반응형

'Java > 기본' 카테고리의 다른 글

Java 프로그래밍을 위한 JDK  (0) 2023.08.10