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)
'PL > Java' 카테고리의 다른 글
About Java 2 (0) | 2022.02.18 |
---|---|
시험 공부 (0) | 2022.02.03 |
댓글