java 1.5.0 gcj_Ubuntu下GCJ的使用
最近在看重构,里面有一些java的代码,想了一下,其实之前好像也正而八经地看过一阵吧。。。所以就顺手起来,运行一下,以更好地了解现在的书的的内容。。
在ubuntu 1004下,我下了gcj,
发现还是一系列gcc系列的思维,不过不错。。比较适合我单纯用把java用来练手的。。。
可以在ubuntu中
sudo apt-get install gcj-jdk
来安装
下面是编译命令(记得要输入主类名)
$ javac TestT.java
$ gcj-g --main=TestT -o TestT TestT.class
$ gdb TestT
下面是转自一网友的关于gcj 的一些基本知识。
from http://hi.baidu.com/ssyuan/item/bf1fb0c2613f1147a9ba94c9
Ubuntu下GCJ的使用
GCJ是一个好东西。
还是比较喜欢IBM的developerworks的文档风格,讲述一个技术文档,先是简单描述一下相关的术语和技术背景,然后基本的思路是为什么要用它?怎么去用?最后会遇到什么问题(一般会指出它的不足)?提供完整的实例,并详细描述测试环境,结尾提供参考文档。很好,很强大。希望我也能够按照这样的风格写技术类文档。但是有时候真的很懒。哎,天下事,难而废者十之一,惰而废者十之九。言归正传:
什么是GCJ?GCJ(GNU Compiler for the Java Programming Language, GCJ)是多元的,高效的,具有前瞻性的java编译器。它可以编译java源代码,将java字节码转换成本地机器代码。目前支持的java版本最高1.5,最新的1.6还不支持。
为什么要用GCJ?
速度不是唯一的理由。他强大的分析工具,作为服务器开发的利器。他产生于JVM蜗牛时代,但今天的JVM已经不可同日而语了。
那么在linux里面怎么用GCJ呢?
如果你的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的却强大!)。
GCJ的使用下面简单举几个例子,说明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文件
再用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)这个方法,比如: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 < 1500; i++) {
l.add("This is string #" + i);
}
GCInfo.enumerate("TestDump");
}
}
这是GCJ官网上的例子,但是原来的是 static public..,不知是何意?还是手误。
这样就生成TestDump001 和TestDump001.bytes的两个文件。
然后执行:
gc-analyze -v TestDump001 但显示的信息太多,最好还是重定向到一个文件,然后打开慢慢研究。
gc-analyze -v TestDump001 >dump.txt
信息比较庞大,俺还没有看完呢。
今天先到此,待续ing
参考文档:
GCJ官方网站:http://gcc.gnu.org/java/index.html
java 1.5.0 gcj_Ubuntu下GCJ的使用相关推荐
- java月亮升起与落下动画设计_Java版1.0.0/开发版本
本页面列出了Java版1.0.0的开发版本. Beta 1.9-pre1 Beta 1.9 Prerelease是Java版1.0.0的首个预发布版. 它被称为"丢失的更新", 新 ...
- AS5 安装 JAVA 1.6.0 用于 TOTOplayer的启动
系统:RedHat as-5 TOTOPLAYER (LINUX下的千千静听)启动需要JAVA-1.6的版本,系统默认安装是1.4,所以需要升级 查看本机JAVA版本命令:rpm -qa|grep j ...
- Java删除指定文件夹下的文件和目录
Java删除指定文件夹下的文件和目录 import java.io.File;public class TestFile {public static void main(String[] args) ...
- openssl 版本区别_冰蝎的前世今生:3.0新版本下的一些防护思考
微信又改版了,为了我们能一直相见 你的加星和在看对我们非常重要 点击"长亭安全课堂"--主页右上角--设为星标? 期待与你的每次见面- 冰蝎(Behinder)是国内黑客圈较火的一 ...
- JDK5.0环境下配置PKCS#11
JDK5.0环境下配置PKCS#11 发表日期:2008-1-5 新浪微博 QQ空间 QQ微博 百度搜藏 腾讯朋友 QQ收藏 百度空间 人人网 开心网 这篇文章不介绍具体的编程方法,而是针对PKCS# ...
- 下拉加载 实现 java_[Java教程]iscroll5实现一个下拉刷新上拉加载的效果
[Java教程]iscroll5实现一个下拉刷新上拉加载的效果 0 2016-08-24 15:00:08 直接上代码!!! * { margin: 0; padding: 0; } ul, li { ...
- java 7 发布,【UC浏览器】Java平台7.0正式版发布啦
[UC浏览器]Java平台7.0正式版发布啦 UC浏览器是UC 优视科技开发的一款手机浏览器,支持WEB.WAP页面浏览,速度快而稳定,页面排版美观:具有网站导航.搜索.下载.个人数据管理等功能,您能 ...
- Java IO: 其他字符流(下)
转载自 Java IO: 其他字符流(下) 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) 本小节会简要概括Java IO中的PushbackRe ...
- java oauth2.0_教程:如何实现Java OAuth 2.0以使用GitHub和Google登录
java oauth2.0 将Google和GitHub OAuth登录添加到Java应用程序的指南 我们添加到Takipi的最新功能之一是3rd party登录. 如果您像我一样懒惰,那么我想您也希 ...
- 教程:如何实现Java OAuth 2.0以使用GitHub和Google登录
将Google和GitHub OAuth登录添加到Java应用程序的指南 我们添加到Takipi的最新功能之一是3rd party登录. 如果您像我一样懒惰,那么我想您也希望跳过填写表单和输入新密码的 ...
最新文章
- OpenCV-Python:实现人脸、人眼、嘴巴识别
- Struts2与Webwork2的区别
- 机器学习实战读书笔记--logistic回归
- SPOJ - QTREE Query on a tree(树链剖分+线段树)
- php 判断页面加载完,所有ajax执行完且页面加载完判断
- 面试总结之人工智能AI(Artificial Intelligence)/ 机器学习(Machine Learning)
- Excel将多个工作簿加载到SQL Server中
- python条形堆积图_Matplotlib堆积条形图
- PhD Debate-11 预告 | 回顾与展望神经网络的后门攻击与防御
- 华为区块链白皮书(一)
- 独热码状态机、SR锁存器延迟模型、移位除法器模型
- 钱宝订单查询 chaqb.com
- exist优化 in mysql_MySQL 子查询优化[IN/EXISTS]--smei join
- PPTV面试算法思考-最长对称子字符串
- centos 安装java8_Centos7安装jdk8
- 西安电子科技大学硕士论文latex模板第1章修改为第一章
- 【TigerGraph】图数据库实战入门 —— 数据导入
- 发送邮件 空格 java_java发送邮件 - 困觉的曼巴er的个人空间 - OSCHINA - 中文开源技术交流社区...
- avi文件格式详解(一)
- 钱诚10.26黄金原油独家操作建议指导;日内黄金白银趋势解析
热门文章
- 计算机与通信工程学院运动会海报,【图文】运动会宣传海报资料
- 七种常见的数据分析法之:帕累托法则
- Matches UVA - 11375 递推+大数 Ingenuous Cubrency UVA - 11137 递推
- Python学习 -元组和集合
- HP LaserJet 1010 安装方法
- hashcat简单使用
- This file should be served over HTTPS. This download has been blocked. computed高级处理
- win10右键没有新建选项,无法新建文件夹
- Unity3D Terrain 变成粉色(紫色/洋红色)解决方案!
- php计算运费价格,PHP: UPS API, UPS 运费计算, UPS接口