GCJ
GCJ
GCJ(GNU 编译器 for the Java Programing Language)是一个自由的Java编译器,是GCC(GNU Compiler Collection)的一部分,拥有超过十年的历史。然而,自2017年起,GNU宣布不再对其进行维护,也不会在GNU的后继版本中包括它。GCJ可将Java源代码编译为Java虚拟机字节码或适用于不同架构的机器码。它还可以将包含字节码的类文件和整个jar文件编译为机器代码。
概括介绍
GCJ是GNU 编译器 for the Java Programing Language 的简称。在GCC内部,它包含Java编程语言的前端(gcc/java),一个运行时库(libjava)和其他工具库(boehm-gc, libffi and zlib)。大多数的运行时库的实现是在GNU Classpath project共享的。
GCJ是一个轻巧的,性能优越的Java语言编译器。它能够将Java源文件编译为Java字节码文件或者直接将Java源文件编译为本地机器码,它也能够将Java字节码文件编译为本地机器码。
被编译的应用程序和GCJ运行时libgcj进行链接。该运行时提供了核心类库,垃圾回收器和一个字节码解释器。libgcj能够动态加载和解释类文件,产生混合编译/解释的应用程序。该运行时同名为GNU Classpath的工程整合在一起。最多支持jdk1.4的类库和一些jdk1.5的类库。
GCJ也能够被配置成为一个适合嵌入式系统的交叉编译器。最近的GNU Debugger(gdb)支持GCJ。一个简单的利用GNU侦错器调试Java程序的教程见参考资料。
新增内容
GCJ的编译功能在某些情况下,特别是在启动时间上,可以提供比JavaOS中启动等效字节码更快的性能。此外,GCJ提供了编译本地接口(CNI),这是一种软件框架,允许Java代码调用和被C++中的本地应用程序和库调用。CNI与Java虚拟机标准的JNI(Java本地接口)框架非常相似,但CNI的设计更接近C++,使得Java和C++之间的互操作性更加顺畅。
GCJ的运行库原始源代码来自GNU Classpath项目,但libgcj库之间存在代码差异。在2007年,GNU Classpath项目实现了对Java的两个图形API(AWT和Swing)的支持,尽管AWT的软件支持仍在开发中,Swing支持也在考虑之中。然而,GNU Classpath项目从未完成甚至达到Java 1.2的状态,并且现在似乎已经完全被放弃。
截至2015年,GCJ没有新的发展公告,并且已经处于维护模式。开源Java工具链的开发主要在OpenJDK中进行。GCJ最终于2016年9月30日从GCC主干中删除,并在GCC 7.1版本发布时正式宣布其删除。尽管如此,GCJ仍然是GCC 6的一部分。
结构和表达优化
为了保持词条的结构清晰和表达流畅,新增内容被整合到现有段落中,避免了信息重复,并确保了信息的完整性和准确性。通过这种方式,现有百科词条的内容得到了丰富,同时保持了良好的可读性和逻辑连贯性。
参考资料

Warning: Invalid argument supplied for foreach() in /www/wwwroot/newbaike1.com/id.php on line 362
目录
概述
概括介绍
新增内容
结构和表达优化
参考资料