맨위로가기

자바 컴파일러

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

자바 컴파일러는 자바 소스 코드를 컴퓨터가 실행할 수 있는 바이트 코드로 변환하는 프로그램이다. 주요 자바 컴파일러로는 오라클에서 제공하는 javac, IBM에서 개발한 Jikes, GNU 컴파일러 모음의 일부인 GCJ, 이클립스 JDT에서 사용되는 ECJ 등이 있다. javac를 사용하여 자바 소스 파일을 컴파일할 수 있으며, UTF-8 인코딩을 사용하는 경우 문자 깨짐 문제를 해결하기 위해 -encoding UTF-8 옵션을 사용할 수 있다.

더 읽어볼만한 페이지

  • 자바 컴파일러 - GraalVM
    GraalVM은 JVM 기반의 고성능 런타임으로, 다양한 프로그래밍 언어 지원, JIT 컴파일, 네이티브 이미지 생성 등을 통해 애플리케이션 성능 향상과 메모리 사용량 감소를 목표로 하며 오픈 소스 커뮤니티 에디션, Oracle GraalVM, Oracle GraalVM Enterprise Edition 세 가지 에디션으로 제공된다.
  • 자바 컴파일러 - GCJ
    GCJ는 자바 코드를 네이티브 코드로 컴파일하는 GCC의 구성 요소였으며, CNI 프레임워크를 통해 자바 코드와 C++ 코드를 상호 호출할 수 있도록 지원했다.
  • 자바 사양 요청 - 자바 플랫폼, 마이크로 에디션
    자바 ME는 임베디드 및 모바일 장치에서 자바 앱을 실행하는 플랫폼으로, 피처폰에서 주로 사용되었으며 다양한 프로파일과 에뮬레이터, 개발 도구를 제공하고 JSR을 통해 기능이 확장된다.
  • 자바 사양 요청 - 자바 커뮤니티 프로세스
    자바 커뮤니티 프로세스는 자바 기술 명세의 개발 및 관리를 담당하는 조직으로, 자바 기술 표준화와 발전에 기여해왔으나 운영 방식에 대한 비판과 여러 논란에 직면해 있다.
자바 컴파일러
기본 정보
종류컴파일러
개발 도구소프트웨어 개발 도구
목적자바 프로그램의 컴파일
종류소스 대 소스 컴파일러
파일 확장자.java
개발자오라클 및 오픈 소스 커뮤니티
최초 출시일1995년 5월 23일
안정화 버전자바 21 (2023년 9월 19일)
운영체제크로스 플랫폼
라이선스GNU 일반 공중 사용 허가서 버전 2 (GCJ)
상세 정보
특징자바 소스 코드를 바이트코드로 변환
기반자바 가상 머신 (JVM) 사양
기능자바 컴파일러 API (JSR 199) 지원

2. 주요 컴파일러

2020년을 기준으로, 널리 사용되거나 중요한 자바 컴파일러는 다음과 같다.


  • javac: 오라클에서 제공하는 JDK에 포함되어 있다.
  • Jikes: IBM에서 개발한 오픈 소스 자바 컴파일러로, C++로 작성되었다. 최적화를 위해 정적 단일 할당 형태의 변형을 사용한다.
  • GCJ: GNU 컴파일러 모음(GCC)의 일부로, C 언어, Fortran, Pascal 등 Java 외에도 다양한 언어를 지원한다. GCC 백엔드를 사용하여 네이티브 코드를 생성할 수 있다. 2015년부터 유지 보수 모드로 전환되었다.
  • ECJ: 이클립스 JDT에 사용되는 오픈 소스 증분 컴파일러이다.


그 외에도, 형식적 의미론 연구를 위한 Featherweight Java 처리기 등 유명하지는 않지만 중요한 것들이 몇 가지 있다.

2. 1. javac

오라클에서 제공하는 JDK에 포함되어 있다.[1]

2. 2. Jikes

IBM에서 개발한 오픈 소스 자바 컴파일러로, C++로 작성되었다. 최적화를 위해 정적 단일 할당 형태의 변형을 사용한다.

2. 3. GNU Compiler for Java (GCJ)

GNU 컴파일러 모음(GCC)의 일부로, C 언어, Fortran, Pascal 등 Java 외에도 다양한 언어를 지원한다. GCC의 백엔드를 사용하여 네이티브 코드를 생성할 수 있다. 2015년부터 유지 보수 모드로 전환되었다.

2. 4. Eclipse Compiler for Java (ECJ)

이클립스 JDT에 사용되는 오픈 소스 증분 컴파일러이다.[1]

2. 5. 기타 컴파일러

2020년 시점에서, 형식적 의미론 연구를 위한 Featherweight Java 처리기 등 널리 알려지지는 않았지만 중요한 컴파일러들이 있다.

3. 컴파일 방법

2023년 현재, javac를 사용하여 자바 소스 파일을 컴파일하는 방법은 다음과 같다.[4]


  • 기본 컴파일: "hoge" 부분을 컴파일하려는 자바 소스 파일의 파일 이름으로 바꾼다.


```text

> javac hoge.java

```

  • UTF-8 인코딩 문제 해결: 자바 소스 파일에 UTF-8 형식의 문장이 포함된 경우, 컴파일 및 실행 시 문자 깨짐이 발생할 수 있다. 이 경우 다음 코드를 사용한다.


```text

> javac -encoding UTF-8 hoge.java

```

또는

```text

> javac -J-Dfile.encoding=UTF-8 hoge.java

```

UTF-8 외의 다른 문자 코드로 변환할 때도 "UTF-8" 부분을 원하는 문자 코드명으로 바꿔서 올바르게 변환할 수 있다.

3. 1. 기본 컴파일

2023년 현재, javac를 사용하여 자바 소스 파일을 컴파일하는 기본적인 방법은 다음과 같다.

"hoge" 부분을 컴파일하려는 자바 소스 파일의 파일 이름으로 바꾼다.[4]

```

> javac hoge.java

```

만약 자바 소스 파일 안에 UTF-8 형식의 문장을 출력하는 코드가 있다면, 컴파일하여 실행할 때 문자 깨짐이 발생할 수 있다. 이 경우 다음 코드를 사용하여 실행한다.[4]

```

> javac -encoding UTF-8 hoge.java

```

```

> javac -J-Dfile.encoding=UTF-8 hoge.java

```

UTF-8 이외의 문자 코드로 변환할 때도 코드란의 "UTF-8"을 원하는 문자 코드명으로 바꿔서 변환할 수 있다.

3. 2. UTF-8 인코딩 문제 해결

2023년 현재, javac를 사용하여 자바 소스 파일을 컴파일하는 기본적인 코드는 다음과 같다.

"hoge" 부분을 컴파일하려는 자바 소스 파일의 파일 이름으로 바꿔서 실행해야 한다.



> javac hoge.java



만약 자바 소스 파일 안에 UTF-8 형식의 문장을 출력하는 코드가 기술되어 있는 경우, 컴파일하여 실행할 때 문자 깨짐이 발생할 가능성이 있으므로, 이 코드는 실행할 수 없다. 대신, 다음 코드를 실행하여 대처할 수 있다.[4]



> javac -encoding UTF-8 hoge.java





> javac -J-Dfile.encoding=UTF-8 hoge.java



또한, UTF-8 이외의 문자 코드로 변환할 때도 코드란의 "UTF-8"을 목적하는 문자 코드명으로 바꿔서 올바르게 변환할 수 있다.

참조

[1] 웹사이트 GCJ - past, present, and future https://lwn.net/Arti[...] 2021-09-24
[2] 웹사이트 The Java Virtual Machine Specification, Java SE 8 Edition, Section 1.2 https://docs.oracle.[...] 2021-09-24
[3] 웹사이트 JSR 199: JavaTM Compiler API https://jcp.org/en/j[...] 2021-09-24
[4] 웹사이트 ソースファイルのエンコーディングを指定してコンパイルする https://www.javadriv[...] 2023-03-14
[5] 웹인용 The Java Virtual Machine Specification, Java SE 8 Edition, Section 1.2 https://docs.oracle.[...] 2021-09-24
[6] 웹인용 GCJ - past, present, and future https://lwn.net/Arti[...] 2021-09-24
[7] 웹인용 JSR 199: JavaTM Compiler API https://jcp.org/en/j[...] 2021-09-24



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com