GCJ相关

[b]CJ是一个好东西[/b]


还是比较喜欢IBM的developerworks
的文档风格,讲述一个技术文档,先是简单描述一下相关的术语和技术背景,然后基本的思路是为什么要用它?怎么去用?最后会遇到什么问题(一般会指出它的不
足)?提供完整的实例,并详细描述测试环境,结尾提供参考文档。很好,很强大。希望我也能够按照这样的风格写技术类文档。但是有时候真的很懒。哎,天下
事,难而废者十之一,惰而废者十之九。言归正传:

[b]

什么是GCJ?


[/b]
GCJ(
GNU Compiler for the Java Programming Language, GCJ
)是多元的,高效的,具有前瞻性的java编译器。它可以编译java源代码,将java字节码转换成本地机器代码。目前支持的java版本最高1.5,最新的1.6还不支持。

[b]

为什么要用GCJ?[/b]


速度不是唯一的理由。他强大的分析工具,作为服务器开发的利器。他产生于JVM蜗牛时代,但今天的JVM已经不可同日而语了。


[b]那么在linux里面怎么用GCJ呢?[/b]


如果你的linux是ubuntu的话,那恭喜你,这个过程太easy了。

首先安装GCJ,默认是没有安装的。所以我们需要打开“新利得软件包管理器”,然后搜索GCJ,如下图所示:


然后在gcj上面右键选择“标记以便安装”,下来会提示相关的几个包,默认就行,应用即可。大约50多兆,下载完自动安装。倒杯水回来ok。在新开一个终
端窗口里面,敲入gcj,如果出现“gcj: 没有输入文件”。说明安装成功。用gcj -v 显示版本信息。我的显示是:


使用内建 specs。

从 /usr/lib/gcc/i486-linux-gnu/4.2.3/libgcj.spec 读取 specs

将 spec startfile 重命名为 startfileorig

将 spec lib 重命名为 liborig

目标:i486-linux-gnu

配置为:../src/configure -v --enable-languages=c,c++,java --prefix=/usr
--enable-shared --with-system-zlib --libexecdir=/usr/lib
--without-included-gettext --enable-threads=posix --enable-nls
--with-gxx-include-dir=/usr/include/c++/4.2 --program-suffix=-4.2
--enable-clocale=gnu --enable-java-awt=gtk --enable-gtk-cairo
--enable-plugin
--with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.2-1.5.0.0/jre
--with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libmudflap
--enable-targets=all --enable-checking=release --build=i486-linux-gnu
--host=i486-linux-gnu --target=i486-linux-gnu

线程模型:posix

gcc 版本 4.2.3 (Ubuntu 4.2.3-2ubuntu6)


OK,安装成功(ubuntu的却强大!)。


[b]GCJ的使用

[/b]
下面简单举几个例子,说明GCJ的使用。深入的功能俺也是正在学习。

1、用gcj生成可执行文件,eg:

gcj -o test --main=Test Test.java

-o 是生成可执行文件

--main 是指定main方法所在的类,一般是多个文件有连接的时候

Test.java是事先用vi编辑的java类。

这样就生成一个可执行的文件:test,但发现大小明显比class文件多了一倍多。

然后在命令提示符下执行./test ,结果跟java Test 一样

2、用gcj生成java字节码class

gcj -C Test.java

即可生成Test.class文件

[b] [/b]
再用javac编译一个,以便比较。用ghex(需要另外安装,一个linux下的十六进制编辑器)打开两个class文件比较,都是CAFEBABE开始,0002001C结尾。没有区别。

3、用gij执行java字节码

gij Test 或者 gij -verbose Test 效果跟java Test /java -verbose Test 效果一下,只是gij的包不一样,例如 gnu.java.security, gnu.java.net

4、垃圾回收器的分析工具

用gc-analyze分析,先需要生成内存堆栈的文件。可以用
gnu.gcj.util.GCInfo.enumerate(String namePrefix)这个方法,比如:


[code="example"]import gnu.gcj.util.*;

import java.util.*;



public class GCDumpTest

{

public static void main(String args[])

{

ArrayList l = new ArrayList(1000);



for (int i = 1; i TestDump001 和


TestDump001.bytes的两个文件。

然后执行:




gc-analyze -v TestDump001 但显示的信息太多,最好还是重定向到一个文件,然后打开慢慢研究。

gc-analyze -v TestDump001 >dump.txt

信息比较庞大,俺还没有看完呢。


[/code]
[url=http://dolphin-ygj.iteye.com/blog/398314]linux中 jdk 的卸载和安装[/url]

一.jdk1.4卸载

由于redhat Enterprise 5 中自带安装了jdk1.4的,所以在安装jdk1.6前我把jdk1.4的卸了,步骤如下:


1.打开终端输入#rpm -qa | grep gcj
,其现实内容有:

java

-1.4.2-gci-compat.........

java

-1.4.2-gcj-compat-devel.....(具体忘了是什么了,反正有两个java

开头的文件)


2.卸载

#rpm -e --nodeps java

-1.4.2-gci...
(利用rpm -e --nodeps 命令删除上面查找的内容)

此时jdk1.4已被卸了。


二.jdk1.6安装

1. 从网站上下载jdk1.6包(jdk-6u10-linux

-i586-rpm.bin
),通过leapFTP上传到linux

系统的/var/ftp/pub目录下


2.在linux

中切换到 /var/ftp/pub目录下,修改jdk1.6的使用权限:#chmod u+x
jdk-6u10-linux

-i586-rpm.bin



3.解压并安装:#./
jdk-6u10-linux

-i586-rpm.bin (默认安装在/usr/java

中)



4.环境变量配置:

#vi /etc/profile


在该profile文件中添加:

JAVA_HOME=/usr/java

/jdk1.6.0_10

JRE_HOME=/usr/java

/jdk1.6.0_10/jre

PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

CLASSPATH=.:$JAVA_HOME/lib/jt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib(注意:前面的.:
,linux

中的;号为:号)

export JAVA_HOME JRE_HOME PATH CLASSPATH

添加完毕保存退出


#source /etc/profile


#java

-version


显示 java

version "1.6.0_10" (jdk1.6安装成功)


卸载rpm版的jdk:

#rpm -qa|grep jdk


显示:jdk-1.6.0_10-fcs

卸载:#rpm -e --nodeps jdk-1.6.0_10-fcs


[code="example"][/code]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值