[JAVA] Java에 대해서

이병수·2023년 12월 22일
0

Java

목록 보기
1/27
post-custom-banner

Java란 무엇인가?


Java??

자바(Java)는 프로그래밍 언어 중 하나
자바 프로그램은 운영체제나 하드웨어에 의존하지 않은 바이트 코드인 추상적인 코드로 구현
다른 프로그래밍 언어와는 다르게 자바 프로그램을 실행시키기 위해서 자바 가상 머신(JVM)을 설치해야한다.



JDK, JRE, JVM에 대하여

JDK (Java Development Kit)

  • Java 프로그램을 개발할 수 있는 환경으로 Java 어플리케이션을 개발하기 위해 필요한 도구들을 제공

  • .java 파일들을 .class 파일들로 변환해주는 Java Compiler(javac) 기능이 있다.

  • 코드를 디버깅하는 jdb 등의 기능이 있다.

JRE (Java Runtime Environment)

  • 자바 실행 환경

  • JRE는 .class 파일만 실행이 가능하다.

JVM (Java Virtual Machine)

  • 자바 가상 머신이라는 뜻을 가지고 있다.

  • 여러가지 기기 위에 Java 프로그램을 실행시킬 수 있는 가상의 기기

  • JVM은 인터프리터와 JIT 컴파일러를 통해 바이트 코드를 각각의 운영체제에 맞는 기계어로 변환한다.

    • 운영체제에 종속적이기에, 각 운영체제에 맞는 자바 가상 머신을 설치해야한다.

    • 자바 프로그램은 JVM이라는 한 단계를 거쳐서 코드를 변환하기에 상대적으로 실행 속도가 느리다.

  • 가비지 컬렉터(Garbage Collector)를 통해 동적 메모리를 관리한다.


Java의 동작원리

  1. 자바에서 만들어진 .java 파일(자바 소스 파일)을 javac(자바 컴파일러)에 의해 .class 파일(자바 바이트 코드)로 변환된다.

  2. .class 파일의 바이트 코드를 읽어 JRE로 가져온다. (클래스 로더가 운반하는 역할)

  3. JRE에서 바이트 코드를 실행시키면 JVM이 실행이 된다.

  4. JVM 위에서 JIT Compiler와 Java Interpreter에 의해 바이트 코드가 기계어로 해석되어 실행되어진다.

    • 추가적으로, JVM위에서 실행되어지면서 가비지 컬렉터를 통해 동적 메모리가 관리되어짐

용어 정리

바이트 코드(byte code)

JVM이 이해할 수 있는 언어로 변환된 자바 소스 코드
JVM에서 돌아가는 실행 프로그램을 위한 이진 표현법

  • 바이트 코드는 JIT 컴파일러에 의해 바이너리 코드로 변환된다.

  • 바이트 코드의 확장자는 .class 이다.

  • 바이트 코드는 JVM이 읽는 언어로, 어떤 운영체제에서라도 JVM만 있으면 실행될 수 있다.

클래스 로더

자바 바이트 코드(.class)를 JRE로 불러와서 메모리에 저장한다.

  • 자바는 동적으로 클래스를 읽어오므로, 프로그램이 실행 중인 런타임에서 모든 코드가 자바 가상 머신과 연결

  • Java 프로그램의 실행에 필요한 모든 클래스를 동적으로 로드한다.

Java 컴파일러

작성된 Java 코드(.java)를 JVM이 읽을 수 있는 바이트 코드(.class)로 변환하는 변환기

  • 자바를 설치하면 javac.exe. 라는 실행 파일 형태로 설치됨

인터프리터

자바 컴파일러에 의해 변환된 바이트 코드를 읽고 한 줄씩 기계어로 해석하는 역할

  • 하나씩 해석하고 실행하기에 바이트 코드 하나하나의 해석은 빠르지만 인터프리팅 결과의 실행은 느리다.

JIT 컴파일러

프로그램이 실행 중인 런타임에 실제 기계어로 변환해주는 컴파일러

  • 인터프리터의 단점을 보완, 인터프리터의 효율을 높여줌

가비지 컬렉터

프로그래머가 동적 메모리를 관리하지 않고 프로그램이 알아서 자동으로 관리해주는 역할

  • 사용하지 않은 메모리는 자동으로 제거됨

참고

profile
백엔드 개발자가 되고 싶어요
post-custom-banner

0개의 댓글