자바 (ch1)

IT/JAVA / / 2021. 5. 12. 23:40

자바는 무엇인가?

자바는 운영체제의 종류에 관계없이 실행되는 개체지향 언어이다. 

 

1. JVM이란 무엇인가

 

JVM 이란 컴파일된 Java byte code를 각각의 os에 맞게 해석하는 역할을 하는 virtual machine 의 약자입니다. 그렇기 때문에 어떤 os를 사용하더라도 JVM이 설치되어 있으면 어디든 구현이 가능하다는 말입니다.

 

2. 컴파일 하는 방법

자바 컴파일을 다음 과 같이 진행된다

자바 컴파일은 .java 파일이 javac(바이트코드)로 쓰여진 .class파일로 변환이 된다. 즉 JVM을 위한 기계언어로 변환이 되는것 이다. 이후 Java interpreter를 통해서 특정 환경의 기계에서 실행될 수 있도록 변환이 되게 된다. Window나 MacOS에서 구현이 가능하다는 것.

 

3. 실행하는 방법

public class HelloWorld { public static void main(String args[]){ System.out.println("Hello World"); } } -> 이후 javac.exe를 통해 javac를 이용해서 IDE를 통해 컴파일 Javac Hello.jav

 

4. 바이트코드란 무엇인가

소스코드가 빌드 될때 3가지의 타입의 언어들이 존재하는데 아래 그림과 같다.

그리고 java는 바이트 코드를 사용하고 있다. 즉, 2번의 질문의 그림에서 컴파일 되고 인터프리트 되는 과정중에 JVM이 읽을 수 있는 모양의 언어인 셈이다.

 

5. JIT 컴파일러란 무엇이며 어떻게 동작하는지

JIT 컴파일러는 실행시점에 자주 쓰는 코드들을 기계어로 변환 시켜놓고 저장해둔 뒤에 필요할때마다 호출하여 사용하는 방식이다.

동작하는 방법은 JVM에서 bytecode로 컴파일이 된다면 이후 기계어로 interpret될때, JIT이 사용된다. 이때 여러번 반복되는 내용이 더욱 빠르게 interpret된다.

 

6.JVM 구성 요소

 

Memory

1. PC REGISTER : 운영체제에서 배우는 PC레지스터와 비슷

2. STACK : Method가 호출되면 Method와 Method 정보가 stack에 쌓이며 매개변수, 지역변수, 임시변수 등을 저장하는 곳

3. NATIVE METHOD STACK : 자바가 아닌 다른언어로 작성된 코드를 실행할때 사용되는 Native Metohd 를 위한 메모리 공간

4. METHOD AREA : 모든 쓰레드가 공유하는 메모리 영역

5. HEAP : 프로그램 상에서 런타임시 동적으로 할당하여 사용하는 영역

6.Execution Engine : 불러와진 class의 바이트코드를 실행하는 런타임 모듈이 Execution Engine 이다.

 

7.JDK와 JRE의 차이

JRE 는 자바 런타임 환경 : Java 프로그램 실행만 필요한 경우 java를 실행하는데 필요한 모튼 패키지가 들어있다.

JDK 는 자바 개발 키트 : 자바의 모든기능을 포함한 SDK 입니다. JDK를 통해서 Java 프로그램을 만들 수 있도록 한다.

728x90
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기