Java

Java

이진유진 2024. 1. 12. 11:11
반응형
velog에서 정리 한 것들을 블로그 이전하는 김에 다시 재정리를 하려고 한다. 
2023년 2월 13일 - https://velog.io/@yujin-17/TIL-07.-Java

Java

* 객체지향 언어

객체지향 언어의 중심에는 Class가 존재한다. 

단 하나의 소스파일로 모든 기종의 컴퓨터에서 실행 가능하다. 

 

JDK vs JRE 

JDK(Java Development Kit) - 자바 개발 도구

java 애플리케이션 개발을 위해 반드시 필요하다. 

사람이 작성한 소스 코드를 번역하여 컴퓨터가 이해할 수 있는 바이트 코드로의 변환을 하는 컴파일러가 포함되어 있다.

Open JDK + 제조사의 부가기능으로 구성되어 있다. 

JDK에는 JRE 가 포함되어 있다. 

 

JRE(Java Runtime Enviroment) - 자바 실행 환경

java로 컴파일된 애플리케이션을 실행하는 역할을 한다.

모든 애플리케이션은 JVM(Java Virtual Machine - 자바 가상 기계)라는 가상의 컴퓨터 공간에서 실행된다. 

 

main 함수

java로 작성된 프로그램을 실행하는 첫 관문이다. 

 

Java의 호환성?

java는 Write Once Use Anywhere의 목적을 가진다. 소스파일을 하나만 작성하면 어디에서든지 사용이 가능하다. 

반면, C언어와 같은 경우, 하나의 소스파일로 각 기계에 맞는 목적 파일로 만들어 사용한다. 

 

하나의 목적파일로 어디든 실행 가능한 Java VS 다수의 목적파일을 만들어 사용하는 C

 

Java를 사용하면 이러한 이점을 이용해 기계의 기종.

즉, 운영체제의 영향을 받지 않고 개발할 수 있다. 

 

Java의 목적파일은 반기계어인 byteCode(. class)인데, JVM에서 사용된다. 

 

이와 같이 JVM에서 사용할 수 있게, 컴파일러(javac)가 소스코드를 바이트코드로 컴파일해주는 과정을 거친다. 

 

자바의 실행과정

 

Java의 실행과정?

  1. 개발자가 Java source file(. java)를 작성한다. 
  2. JDK가 제공하고 있는 Java Compiler를 통해 소스파일을 컴파일한다. 
  3. JVM의 Class Loader에서 컴파일로 생성된 바이트 코드(. class)를 전달받아, 동적 로딩을 통하여 실행에 필요한 클래스들을 로딩해 JVM의 내부 Runtime Data Area에 로드한다. 
  4. JVM의 Execution에 의하여 기계어로 해석되어 실행된다.

 

Class Loader?

  • 프로그램상의 작성한 모든 클래스, 변수 및 메서드 정보를 Method Area에 배치시킨다.
  • JVM 내부에 바이트코드를 load, Link를 통하여 배치 작업을 수행하는 모듈이다.
  • 실행 시, 동적으로 클래스를 로드하며, jar 파일 내부에 저장되어 있는 클래스들을 JVM에 로드한다. 
  • static(정적) 변수와 메서드는 Heap Area에 배치시킨다. 

Execution (실행 엔진)

  • Interpreter - 바이트 코드를 한 줄씩 읽고 번역해 준다. 느리다는 단점이 있다. 
  • Interpreter를 보안하기 위하여 JIT 컴파일러가 출시되었다.

JIT 컴파일러?

Interpreter 방식으로 실행을 하다, 적당한 시점에 바이트 코드 전체를 컴파일하여 캐싱한다. 

컴파일된 코드를 미리 저장해 두어 바로 실행되게끔 해 실행속도가 빨라진다. 

 

  • Garbage Collector - 유효하지 않은. 즉, 사용되지 않는 메모리를 추적하여 비워주는 기능을 한다. 

 

 

 

반응형