JDK는 플랫폼에 독립적이지 않다. 각 운영체제, 환경 별로 다른 버전이 필요하다. 하지만 각 플랫폼 별로 다른 목적(실행) 파일을 만들지는 않는다. 이에 대해서 알아보자.
C 언어의 개발과 구동
Java 이전 언어인 C 언어의 소스(코드) 파일 와 목적(실행) 파일은 어땠을까? C 언어는 하나의 소스 파일이 존재하고, 각 플랫폼 별 컴파일러가 해당 플랫폼에서 실행 가능한 목적 파일을 생성한다.
이는 이 전 플랫폼 별 소스 파일, 컴파일러, 목적 파일이 필요하던 어셈블리어 에서 개선된 형태이다.
장점
- 하나의 소스 파일만 작성하면 된다.
단점
- 각 플랫폼 별 컴파일러가 필요하다.
- 각 플랫폼 별 목적 파일이 생성된다.
Java 언어의 개발과 구동
Java는 기존 C 언어의 불편함을 개선했다. 하나의 소스 파일과 하나의 컴파일러가 존재한다. 그렇기 때문에 목적 파일도 플랫폼 별로 동일하다. 컴파일러를 통해 생성된 목적 파일을 각 플랫폼 별 JRE에서 실행 한다.
장점
- 하나의 소스 파일만 작성하면 된다.
- 한번의 컴파일로 모든 플랫폼에서 실행 가능한 목적 파일을 생성한다.
정리
어셈블리어 | C | Java | |
목적 파일 | 어셈블러로 기계어 생성 | 컴파일러로 해당 운영체제용 기계어 생성 | 기종이 몇개든 단 하나의 JVM용 기계어 생성 |
기계어 비교 | 기계어랑 1:1 대응하는 니모닉 | 기계어와 m:n 대응하는 수학적 기호 | 기계어와 m:n 대응하는 수학적 기호 |
비고 | 기종별 어셈블러 필요 | 기종별 컴파일러 필요 | 단 하나의 컴파일러만 필요 기종별 JRE 세팅 필요(한번만 설치해주면 됨) |
참조
'Programming Language > Java' 카테고리의 다른 글
Mybatis Executor, PreparedStatement (0) | 2021.05.15 |
---|---|
JVM, JDK, JRE 란? (0) | 2021.03.10 |
빌드도구란? (Maven, Gradle) (0) | 2021.02.01 |