GCJ, GNU Java Compiler!
gcj是GNU的Java编译器,从FC4开始,Fedora Core开始提供一些可以使用的GCJ应用和环境。gcj可以用来编译Java源程序,生成字节码和目标代码。gcj基于GNU自己的运行库libgcj,它包含一个类库,垃圾收集器和字节码解释器。
FC4默认的遵守JPackage项目的规范,并且可以使用其他的JRE环境替代默认的JRE环境。从GCC4开始实行新的ABI接口,遵循的是Java语言标准,所以可以适应更多的应用。
利用gcj发布程序
利用gcj发布程序可以使用一些帮助程序,
gcj支持编译成目标代码的发布,但是这样不一定总是有效,而字节码发布可以在JRE替代环境有效的情况使用,因此更加有用。
如何编译发布已有的Java应用
首先编译jar文件为本地代码
FC4默认的遵守JPackage项目的规范,并且可以使用其他的JRE环境替代默认的JRE环境。从GCC4开始实行新的ABI接口,遵循的是Java语言标准,所以可以适应更多的应用。
利用gcj发布程序
利用gcj发布程序可以使用一些帮助程序,
aot-compile-rpm
可以把jar编译成一个软件包,并把库注册到全局的数据库中。gcj支持编译成目标代码的发布,但是这样不一定总是有效,而字节码发布可以在JRE替代环境有效的情况使用,因此更加有用。
如何编译发布已有的Java应用
首先编译jar文件为本地代码
gcj -shared -findirect-dispatch -fjni -fPIC -Wl,-Bsymbolic mypackage.jar -o mypackage.jar.so
-shared -fPIC用来生动态库的参数;-Wl,-Bsymbolic连接器的连接参数;-findirect-dispatch 生成二进制兼容ABI的标志;-fjni使用JNI;
添加库到全局数据库查看全局库, gcj-dbtool -p用root用户添加, gcj-dbtool -a `gcj-dbtool -p` mypackage.jar mypackage.jar.so这时可以这样运行程序, java -cp mypackage.jar com.mypackage.Main
已经能够编译和运行的程序有Eclispe,Tomcat,Ant和Openoffice的Java程序部分。
这里只是关于GCJ环境的初步介绍,更多东西需要参看gcj的手册。
Comments