Java용 GNU 컴파일러

GNU Compiler for Java
Java용 GNU 컴파일러
Gcj2.png
개발자GNU 프로젝트
초기 릴리즈1998년 9월 6일, 23년 전(1998-09-06)[1]
최종 릴리즈
6[2].5 / 2018년 10월 26일
운영 체제Unix와 같은
유형컴파일러
면허증.GNU GPL
웹 사이트gcc.gnu.org

GNU 컴파일러 for Java(GCJ)Java 프로그래밍 언어용 무료 컴파일러입니다.10년 이상 GNU 컴파일러 컬렉션의 일부였지만 2017년부터는 더 이상 유지보수가 되지 않으며 향후 [3][4]출시에도 포함되지 않을 예정입니다.

GCJ는 Java 소스 코드를 Java Virtual Machine(JVM; Java 가상 머신) 바이트 코드 또는 여러 CPU 아키텍처머신 코드에 컴파일합니다.또한 바이트 코드를 포함하는 클래스 파일전체 JAR을 기계 [5][6]코드로 컴파일할 수도 있습니다.

역사

GCJ 런타임 라이브러리의 원래 소스는 GNU Classpath 프로젝트에서 가져온 것이지만,libgcj라이브러리로 이동합니다.GCJ 4.3은 이클립스 컴파일러 for Java[7]프런트엔드로 사용합니다.

2007년에는 GNU Classpath에서 Java의 두 그래픽 APIAWT와 Swing을 지원하기 위해 많은 작업이 수행되었습니다.AWT에 대한 소프트웨어 지원은 아직 개발 중입니다.「AWT 서포트가 기능하면, Swing 서포트를 검토할 수 있습니다.사용 가능한 Swing의 자유 소프트웨어 부분 구현이 하나 이상 있습니다.[8]GNU CLASSPATH는 Java 1.2 상태에서도 완료되지 않아 완전히 포기된 것으로 보입니다.

2015년 현재 GCJ에서 발표된 새로운 개발은 없으며, OpenJDK [9]에서 주로 오픈소스 Java 툴체인 개발이 이루어지며,[10][11] GCJ는 2016년 9월 30일 GCC 트렁크에서 제외되었습니다.삭제 발표는 GCC 7.1 릴리즈와 함께 이루어졌으며,[12] GCC 7.1에는 포함되지 않았습니다.GCJ는 GCC 6의 일부입니다.

성능

Java 코드를 머신 [13]코드로 컴파일 할 때 GCJ의 컴파일 함수는 JVM에서 기동하는 동등한 바이트 코드보다 기동 시간이 빨라야 합니다.

컴파일된 네이티브인터페이스(CNI)

컴파일 네이티브인터페이스(CNI)는 C++로 작성된 네이티브애플리케이션(하드웨어 및 운영체제플랫폼 전용 프로그램)과 라이브러리를 Java 코드가 호출 및 호출할 수 있도록 하는 GCJ용 소프트웨어 프레임워크입니다.

CNI는 다양한 Java 가상 머신의 표준으로 제공되는 Java Native Interface(JNI; Java 네이티브 인터페이스) 프레임워크와 매우 유사합니다.

언어 사용 비교

CNI의 저자들은 JNI에 [14]비해 다양한 이점이 있다고 주장한다.

CNI를 사용하는 이유는 CNI가 특히 Java가 표준 컴파일 기술을 사용하여 구현할 수 있는 또 다른 프로그래밍 언어라는 생각에 기반을 둔 Java 구현에 더 나은 솔루션이라고 생각하기 때문입니다.Gcc를 사용하여 구현된 언어가 호환되어야 한다는 생각에서 Java 호출 규칙은 다른 언어, 특히 C++에서 사용되는 것과 마찬가지로 실용적이어야 합니다. 왜냐하면 Java를 C++의 서브셋으로 생각할 수 있기 때문입니다.CNI는 C++와 Java가 *same* 호출 규칙과 오브젝트 레이아웃을 가지고 있다는 생각에 기초한 도우미 함수 및 규칙 세트입니다.이것들은 바이너리 호환성이 있습니다.(이것은 단순하지만 충분히 비슷합니다.)

CNI는 C++ 클래스로 표시되는 Java 클래스에 의존합니다.예를 [15]들어 Java 클래스를 지정하면

일반의 학급 내부 {    일반의 인트 i;    일반의 내부(인트 i) { 이것..i = i; }    일반의 정적인 내부  = 신규 내부(0); } 

클래스를 다음과 같이 사용할 수 있습니다.

#실패하다 <102j/cni>h> #실패하다 <내부>  내부 *멀티(내부 *p, 인트 k) {   한다면 (k == 0)     돌아가다 내부::;  // 스태틱멤버 액세스   돌아가다 신규 내부(p->i * k); } 

「 」를 참조해 주세요.

레퍼런스

  1. ^ Anthony Green, Cygnus Solutions. "GCJ announcement".
  2. ^ "GCC Releases - GNU Project".
  3. ^ "Archived copy". Archived from the original on 2007-05-09. Retrieved 2010-04-22.{{cite web}}: CS1 maint: 제목으로 아카이브된 복사(링크)
  4. ^ Campbell, Bill (2013). Introduction to Compiler Construction in a Java World. CRC Press Taylor & Francis Group. ISBN 978-1-4398-6088-5. Retrieved 2014-02-06.
  5. ^ "Compiling Java with GCJ Linux Journal".
  6. ^ "GNU Compiler for Java".
  7. ^ "gcj to use Eclipse compiler as a front end". 2007-01-08. Archived from the original on 2007-05-09. Retrieved 2007-05-20.
  8. ^ GCJ FAQ
  9. ^ GCC는 Java를 끄고 Go 또는 ADA로 대체하려고 합니다.
  10. ^ Andrew Haley (September 30, 2016). "[gcc] Revision 240661".
  11. ^ Tromey, Tom (October 2, 2016). "The Deletion of gcj". The Cliffs of Inanity. Retrieved October 3, 2016.
  12. ^ "GCC 7 Release Series: Changes, New Features, and Fixes". Retrieved May 9, 2017.
  13. ^ "GCJ: The GNU Static Java Compiler" (PDF). Archived from the original (PDF) on 2011-06-07. Retrieved 2009-08-02.
  14. ^ GCJ FAQ – GNU Project – Free Software Foundation (FSF)
  15. ^ 예시는 https://gcc.gnu.org/onlinedocs/gcj/Objects-and-Classes.html#Objects-and-Classes Archived 2016-10-20 at the Wayback Machine에서 가져옵니다.

외부 링크