Re: 可行嗎? 原生編譯的 Eclipse
※ 引述《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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 6 之 6 篇):
Eclipse 近期熱門文章
PTT數位生活區 即時熱門文章