본문 바로가기
PL/Java

[Java] About Java - 1

by Garonguri 2022. 2. 10.
728x90

 

JAVA

 

1. Flatform 독립적(비의존적)

  • flatform : os+hardware. 
  • 의미 : 운영체제, CPU와 상관 없이 다른 플랫폼에서도 동작할 수 있다.

대부분 언어들은 플랫폼 종속적(의존적)이다. 그 이유는

- 하드웨어 아키텍쳐마다 사용하는 기계어 종류가 다르기 때문.

- 운영체제마다 사용하는 API(application programming interface) 형식이 다르기 때문.

- 운영체제마다 메모리 관리 기법이 다르기 때문.


In JAVA

- 자바 컴파일러가 소스코드를 바이트 코드로 만들면, linking과정 없이 byte code를 바로 JVM에서 실행한다.

(Details)

1. 소스코드 작성

2. 컴파일러가 컴파일. 이 때 소스코드를 바이트코드로 만든다. 1 byte 크기의 Opcode와 추가 피연산자로 구성

3. 컴파일된 바이트코드를 JVM의 클래스 로더에게 전달

4. Dynamic Loading을 통해 필요 클래스들을 JVM 메모리에 올림.

    (로드 -> 검사 -> 메모리 할당 -> direct reference로 변경 -> 클래스 변수 초기화)

5. 실행 엔진이 바이트 코드를 실행.

    - 바이트 코드를 하나씩 읽고 해석하는 인터프리터

    - 바이트 코드를 바이너리 코드로 변경해 실행하는 JIT 컴파일러

 

- Garvage Collector가 메모리 자원을 수고하기 때문에 메모리 반납을 할 필요가 없음.

  • JVM(java virtual machine)이 Java를 flatform 독립적으로 만들어 준 것.

In C/C++

1. 소스코드 작성

2. 컴파일러가 프로그램 시작 전 함수 호출 부분을 라이브러리 내 함수와 연결하는 static linking 과정 진행.

- 응용 프로그램 내에서 메모리가 필요하면 함수를 사용해 직접 할당. (malloc, new)

- 할당, 사용 끝났으면 운영체제에 반납해야함. (free, delete)

 

728x90

'PL > Java' 카테고리의 다른 글

About Java 2  (0) 2022.02.18
시험 공부  (0) 2022.02.03

댓글