자바와 c/c++의 가장 큰 차이점은 실행 환경에 있습니다.
자바 소스를 컴파일하면 자바 가상 기계에서 실행 가능한 바이트 코드 형태의 클래스 파일이 생성됩니다.
반면 c/c++ 소스를 컴파일하고 나면 플랫폼 상에서 바로 실행될 수 있는 실행 파일이 생성 됩니다.
즉, c/c++ 소스를 컴파일해서 생성된 실행파일에는 플랫폼에 종속적인 코드가 있으며, 플랫폼이 바뀌면 다시 소스를 컴파일하고 링크해야 합니다.
하지만, 자바의 클래스 파일은 자바 가상 기계상에서 실행되어 플랫폼에 종속적인 코드를 갖지 않으므로 플랫폼이 달라져도 다시 컴파일 할 필요가 없습니다.
TIP
자바와 c/c++의 실행환경과 실행 과정의 차이점
자바
- 자바는 링크 과정이 없이 컴파일러가 바로 바이트 코드를 생성합니다.
- 바이트 코드는 자바 가상 기계에서만 실행가능합니다.
- 자바는 런타임에 필요한 클래스들이 자바 가상 기계에 의해 링크되며 클래스 로더가 동적으로 필요한 클래스를 로딩합니다.
- ClassLoader 객체를 이용하여 프로그래머가 직접 클래스를 로딩할 수도 있습니다.
c/c++
- 컴파일러가 중간 단계인 오브젝트 코드를 생성한 후 링커가 필요한 라이브러리들을 링크하여 최종 실행 가능한 실행 파일을 생성합니다.
- 정적 라이브러리의 경우 라이브러리를 실행 파일에 포함시키므로 실행 파일 크기가 커집니다.
- 동적 라이브러리의 경우 런타임에 링크가 일어납니다.
- 오브젝트 코드 및 실행 파일은 플랫폼에 따라 다르므로 플랫폼이 바뀌면 컴파일 및 링크를 새로 해야 합니다.
반응형
'프로그래밍 > JAVA' 카테고리의 다른 글
JAVA의 특징 (0) | 2022.02.17 |
---|---|
JDK?JRE? (1) | 2022.02.15 |
JAVA[자바]의 실행환경 (0) | 2022.02.14 |
절차지향언어? 객체지향언어? (2) | 2022.01.16 |
프로그래밍 언어란? (1) | 2022.01.16 |