Fedora GCJ基礎講解安裝JAVA
Fedora GCJ能提高更方便的使用性能。下面就這就來講術Fedora GCJ。在Fedora的發布版中,Red Hat公司宣布將原有的Red Hat Linux開發計劃與Fedora Core Linux計劃整合成新的Fedora Project。Fedora Project將由Red Hat公司贊助,以社區支持的方式開發Linux發行版Fedora Core LinuxFedora4是首個包含了大量用Java編程語言編寫的代碼的版本。正是由于GNU類路徑(Classpath)和GNU Fedora GCJ(GNU Compiler for Java)的改進才促成了這些附加部分。
Fedora GCJ基礎
首先,GNU Fedora GCJ不是Java。然而,Fedora GCJ的目標是實現一個完整的系統,該系統兼容于Java并且將預編譯器(ahead-of-time compiler)置于中心。它擁有一個基于GNU類路徑的凈化類庫和一個內置的解釋器。其編譯器可以將Java源文件、類文件、甚至是整個jar文件編譯成目標碼。
以前Fedora GCJ對待Java采取的是一種“激進且傳統”的方式,它認為Java好像是C++的某個不常用的方言似的。這么做有好的一面,然而不幸的是兩者運行時的鏈接模型差異太大——因此當遇到一些規模比較大、復雜度比較高的Java應用時,這種方法就無能為力了,特別是面對那些有著復雜的類加載機制的Java應用時,顯得尤為突出。
在GCC4.0的發布版中,我們對Fedora GCJ實現了一種新的編譯方式,稱之為二進制兼容性ABI(Binary Compatibility Application Binary Interface)。這種編譯方式將所有的鏈接推遲到運行時刻進行并且完全實現了Java的二進制兼容規范——正好是讓預編譯的代碼與類裝載結合所需要的。
我們還增加了一個類映射數據庫。在運行時,只要我們定義好一個類,Fedora GCJ運行時(叫做“libFedora GCJ”)就會在數據庫中尋找這個類。如果找到該類(注意我們這里使用的是類的“內容”,而不僅僅是類名),那么libFedora GCJ就會映射到該共享庫中,該庫包含了編譯后的類。
這兩個改變使得我們可以做一些更強大的事情:我們可以預編譯Java程序而不必要求任何應用級的改變。此外,由于采用了新的方式對字節碼進行校驗,我們還能確保編譯的代碼在運行時的類型安全。
構建RPM
在Fedora Core上構建Java應用是很簡單的——現存的構建方式不會發生變化。Fedora Core舶來了“Ant“并且使用來自Eclipse的Java編譯器將Java代碼編譯成字節碼。
描述如何編寫RPM已經超出了本文討論的范圍,但是Fedora RPM指南上有一些有用的信息,JPackage上也有一些Java特定的指南。
一旦你的程序被編譯成字節碼,你就可以將他們編譯為本地代碼。因為Fedora GCJ尚不包含一個即時編譯器(JIT),這就是其獲得合理性能的方法。在某些情況下,其性能可能會超過已有即時編譯器,因為Fedora GCJ使用了共享庫……當你同時運行應用程序的多個實例時,你就會看到這種巨大的差異。
【編輯推薦】