[Java] 자바란?

iiueon·2023년 6월 1일

자바언어의 특징

1. 운영체제에 독립적이다.

자바 응용 프로그램은 운영체제나 하드웨어가 아닌 JVM하고만 통신하고
JVM이 전달받은 명령을 해당 운영체제가 이해할 수 있도록 변환 후 전달한다.

2. 객체지향언어이다.

자바는 객체지향개념의 특징인 상속, 캡슐화, 다형성이 잘 적용되어 있다.

3. 비교적 배우기 쉽다.

4. 자동 메모리 관리 (Garbage Collection)

가비지컬렉터(garbage collector)가 자동으로 메모리 관리를 해주기 때문에 프로그래머는 메모리 관리를 따로 하지 않아도 된다.

5. 네트워크와 분산처리를 지원한다.

6. 멀티쓰레드를 지원한다.

자바 멀티쓰레드 프로그램은 시스템과는 관계없이 구현가능하며, 관련된 라이브러리(Java API)가 제공되므로 구현이 쉽다.
그리고 여러 쓰레드에 대한 스케줄링을 자바 인터프리터가 담당하게 된다.

7. 동적 로딩(Dynamic Loading)을 지원한다.

자바는 동적 로딩을 지원하기 때문에 실행 시에 모든 클래스가 로딩되지 않고 필요한 시점에 클래스를 로딩하여 사용할 수 있다.
또한 일부 클래스가 변경되어도 전체 애플리케이션을 다시 컴파일하지 않아도 되며
어플리케이션의 변경사항이 발생해도 비교적 적은 작업만으로도 처리할 수 있는 유연한 애플리케이션을 작성 가능하다.



JVM (Java Virtual Machine)

자바를 실행하기 위한 가상 컴퓨터

Java애플리케이션 vs 일반애플리케이션

javavsnormal

Java 애플리케이션

  • 코드가 JVM을 거치고 하드웨어로 전달
  • 하드웨어에 맞게 완전히 컴파일된 상태가 아니고 실행시 해석(interpret)됨
  • 따라서 속도가 느린 단점이 있음
    -> JIT컴파일러와 최적화 기술을 적용해 속도 격차를 많이 줄임
  • OS와 하드웨어에 독립적
    단, JVM은 OS에 종속적이므로 해당 OS에서 실행가능한 JVM이 필요

일반 애플리케이션

  • OS 종속적



자바프로그램의 실행과정

  1. 프로그램의 실행에 필요한 클래스(*.class파일)를 로드한다.
  2. 클래스파일을 검사한다.
  3. 지정된 클래스에서 main(String[] args)를 호출한다.
  4. main메서드의 마지막 코드까지 모두 실행되면 프로그램이 종료된다.



참고 자료

  • 자바의 정석 3판
profile
지연_로딩

0개의 댓글