2d3k / CS-Study

기본을 소홀히 하지 말자!!
0 stars 1 forks source link

[JAVA] 자바의 구동 과정 #4

Open 2d3k opened 1 year ago

2d3k commented 1 year ago

1. 자바가 실행되는 과정을 설명하시오.

2. JVM의 특징과 역할을 설명하시오

3. JVM에 자바가 아닌 다른 언어가 실행되는 이유를 설명하시오.

2.16(목)까지

2d3k commented 1 year ago
  1. 빌드는 소스코드 파일을 실행 가능하게 만들어주는 과정인데, 자바가 실행되려면 첫 째로 자바 컴파일러를 통해 자바 클래스 파일(.java)을 자바 바이트 코드(.class)로 변환한다. 그 다음 클래스 로더를 통해 자바 바이트 코드를 JVM 런타임 데이터 영역에 로드한다. 마지막으로 실행 엔진을 통해 실행한다.

바이트 코드 가상 컴퓨터에서 작동하도록 만든 이진코드 자바 바이트코드란 JVM이 이해할 수 있는 언어로 변환된 코드이며 명령어의 크기가 1 바이트라서 자바 바이트코드라고 불린다. 자바 코드를 배포하는 가장 작은 단위이고 확장자는 .class이다.

2d3k commented 1 year ago
  1. JVM (Java Virtual Machine)은 OS에 독립적으로 java 프로그램을 작성하여 실행할 수 있게 해주는 구현체이다.

Execution Engine은. class파일과같은 ByteCode를 실행 가능하도록 해석하므로, 컴파일된 바이트 코드를 기계가 이해할 수 있는 기계어로 변환한다.

Heap GC(가비지 컬렉션)의 대상이 되는 영역 객체를 동적으로 생성하게 되면 인스턴스가 Heap 영역의 메모리에 할당 단, 레퍼런스 변수의 경우, Heap에 인스턴스가 저장되는 것이 아닌 포인터가 저장

Method Area 클래스 정보를 처음 메모리에 올릴 때 초기화되는 대상을 저장하기 위한 영역

2d3k commented 1 year ago
  1. 코틀린이 JVM에서 실행되는 이유를 예로 들면, 자바 코드(.java)는 컴파일러에 의해 바이트 코드(.class)로 변환되는데, 코틀린 코드(.kt) 또한 마찬가지이다. 안드로이드에서 소스 코드는(자바 파일이든 코틀린 파일이든) 컴파일러에 의해 우선 DEX 파일로 변환되는데, 이 DEX 파일은 바이트 코드(.class 파일)들을 포함하고 있다. 컴파일되는 부분 있어서 자바와 코틀린 모두 바이트 코드(.class)로 컴파일되기 때문에 서로 간에 100% 호환이 가능하다.
hyeonayou commented 1 year ago
  1. 소스코드를 자바 컴파일러가 읽어서 .class 파일로 변환 한다. - > 클래스 로더가 .class 파일을 JVM 런타임 데이터 영역에 로드한다. -> 실행 엔진을 통해 해석된다.

  2. JVM은 특정 운영체제에 종속되지 않고 자바를 실행할 수 있게 해주며 GC를 통해 메모리를 관리해주는 것이다.
    힙 영역에 올라온 더이상 사용되지 않는 인스턴스를 찾아 메모리에서 삭제 시켜준다.

  3. 코틀린, 자이썬, 제이루비등은 컴파일 시 자바 바이트코드(.class)로 변환 되어지게 되며 다른 자바 파일들과 상호호환 되게 되고 JVM에 의해서 실행되게 되는 과정을 거칩니다 byte code(.class)로 컴파일 (= 상호 호환 가능) 결국 컴파일되는 부분 있어서 모두 바이트 코드(.class)로 컴파일되기 때문에 서로 간에 100% 호환이 가능하게 되는 것