作者freesamael (烧卖)
看板Eclipse
标题可行吗? 原生编译的 Eclipse
时间Mon Aug 20 02:57:43 2007
拿个轻松一点的议题做开场好了。
很多人用 Eclipse 一阵子之後,装了一大堆 plugin,开始越来越感觉得到 Eclipse
的缓慢。我们系上有一些 IBM 的开发工具(Rational Application Developer),也是
建立在 Eclipse 上的,那速度更是慢到令人吐血,别人用开发工具是为了加速开发,
我觉得我们在用开发工具好像是为了磨练耐心。於是我开始四处寻找让 Eclipse 跑得
比较快的方法。好一阵子,我都暗字都祈求 IBM 或 Sun 赶快做一张 PCI-E 介面的
java 加速卡,我一定捧场去买一张。
前几天跟朋友讨论的时候扯出一个想法 - Eclipse 如果能够原生编译成机器码,而不是
java bytecode,执行效率是否能有所提昇? 可是我该去哪里找工具让我把 java 编译成
机器码呢?
这时我才发现一直被我丢弃在一旁,不太使用的 gcj/gij 竟然有提供把 java source 和
java bytecode 编译成机器码的功能,而且老早就有人把 Eclipse 拿来开刀了。最早
这麽做的应该是 Red Hat 的工程师,他们弄了一个 native Eclipse 的专案,後来成为
Fedora 专案的一部分 - Fedora Eclipse。 (
http://sourceware.org/eclipse/)
我在 Ubuntu Linux 套件库内也找到 eclipse-gcj,一样是以 gcj 编译的 natively-
compiled Eclipse。但是我想试试最新的 Eclipse europa,所以我决定自己编译一次。
其实也没有想像中的困难,因为有现成的文件。(
http://0rz.tw/fd2UX)
按照这份文件,直接把 Eclipse 的所有 plugin 从 .jar 档编译成 .jar.so,然後建立
一份 mapping 资讯告诉 gij 该用哪个档案取代原本的 .jar 档就能运作了。gij 倒是
做得不错,native Eclipse 还是可以安装一般的 Eclipse plugin,没有编译成机器码
的部份就是以 java bytecode 的方式执行,所以可以有部份 plugin 是编译成机器码的,
另外一部份则是 java bytecode。
效率呢? 的确,感觉得出来有快一点,至少载入的时间缩短了,但是还有一些小问题。
首先,GNU Classpath 对 JDK1.4 的相容程度都还不到 100%,更遑论新的 JDK1.5/1.6,
因此不是所有 java 程式都能正常、稳定的执行。我就有遇到一个小状况,在启动编译好
的专案程式时会跑出错误讯息,要等上几秒钟才会执行。
再者是 gij 执行 java bytecode 的效率太差,跟 Sun JRE 的效率差距是我可以明显
感受到的,所以只要使用太多 java bytecode plugin,就没有优势。这也是为什麽我
平常鲜少使用 gcj/gij 的原因。
不过这仍然是提昇 Eclipse 性能的一个有趣的解决方案。在 Sun 提供 GPL 授权的
JDK 後(OpenJDK:
http://openjdk.java.net/),gcj/gij 或许有机会从中吸取经验或
直接使用其部份原始码藉以提昇性能和相容性。所以这仍然是可以期待的。
附注:GNU Classpath 与 JDK1.4 的相容性资讯:
http://www.kaffe.org/~stuart/japi/htmlout/h-jdk14-classpath.html
--
本着作系采用
Creative Commons 2.0 台湾(中华民国)授权条款 授权
您可以任意复制、散布、修改本着作,但须标示姓名并使用相同授权条款
详见
http://creativecommons.org/licenses/by-sa/2.0/tw/
本着作引用之任何形式着作,其版权属原作者所有。
Copyright(C) 2005
Samael Wang, Some Right Reserved.
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.135.82.153
1F:推 KENyroj:推! 08/20 09:34
2F:推 archerlin:不如将Eclipse挂在Ramdisk上跑不知道会不会快很多? 08/20 09:38
3F:推 PsMonkey:这叫轻松的话提阿.... Orz 08/20 12:35
4F:推 freesamael:不然要讨论Eclipse这名称到底是不是冲着Sun来的吗XD~~ 08/20 16:05