作者king19880326 (OK的啦~我都可以接受)
看板Eclipse
标题Re: 可行吗? 原生编译的 Eclipse
时间Thu Dec 18 16:32:43 2008
※ 引述《freesamael (烧卖)》之铭言:
: 拿个轻松一点的议题做开场好了。
: 很多人用 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
您好, 我照着你说的方式进行compile.
(我的系统是Ubuntu8.10 on macbook)
先删除原先使用sudo apt-get install eclipse-gcj 所安装的eclipse
接着去
http://www.eclipse.org/downloads/
下载了 Eclipse IDE for Java EE Developers (162 MB) 并将其放在/home/mitnick下
照着网页上的指示新增了 script
并且执行
compile的过程都是ok, 只有
Compiling ./plugins/org.eclipse.emf.codegen.ecore_2.4.1.v200808251517.jar to
native ...
org/eclipse/emf/codegen/ecore/templates/edit/ItemProviderAdapterFactory.java:
In class
'org.eclipse.emf.codegen.ecore.templates.edit.ItemProviderAdapterFactory':
org/eclipse/emf/codegen/ecore/templates/edit/ItemProviderAdapterFactory.java:
In constructor '()':
org/eclipse/emf/codegen/ecore/templates/edit/ItemProviderAdapterFactory.java:6:
internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcj-4.3/README.Bugs> for instructions.
adding to eclipse.db ... error: could not update eclipse.db:
java.lang.IllegalArgumentException:
lib-native/./plugins/org.eclipse.emf.codegen.ecore_2.4.1.v200808251517.jar.so
is not a file
[OK]
疑似发生错误讯息.
等到scrip执行结束後
我照网页上的指示执行
mitnick@mitnick-laptop:~$ ./eclipse.db -consoleLog -debug -vm gij -vmargs
-Dgnu.gcj.precompiled.db.path=eclipse.db
却出现 bash: ./eclipse.db: No such file or directory
请问是我哪一个环节做错了吗 @@>??
感谢感谢 <(_ _)>
ps. 照网页上的说法, 好像执行只能利用 command line. 我该如何在 application
下制造一个捷径呢?? 感谢感谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.243.43
※ 编辑: king19880326 来自: 140.112.243.43 (12/18 18:20)
※ 编辑: king19880326 来自: 140.112.243.43 (12/18 18:21)
※ king19880326:转录至看板 Linux 12/21 15:52
※ king19880326:转录至看板 LinuxDev 12/21 15:53