1 Java的性能問題及幾種解決方案 Java程序也有其本身的缺陷,那就是其效率問題。由于Java是一種介于解釋型和編譯型之間的語言,其對內存的管理是通過JVM虛擬機來實現的,同樣的程序,如果用編譯型語言C來實現,其運行速度一般要比Java快得多。因此,提高Java的性能就顯得十分重要。 迄今為止,人們為提高Java的運行速度而做出的許多努力,主要集中在程序設計的方法和模式選擇方面。但是由于算法和設計模式的優化是通用的,對Java 有效的優化算法和設計模式,對其他編譯語言也基本適用,因此不能從根本上改變Java程序與編譯型語言在執行效率方面的差異。 另外,JIT(Just In Time,及時編譯)技術也是一個比較好的思想。它的基本原理是,首先,通過Java編譯器把Java源代碼編譯成與平臺無關的二進制字節碼。然后,在 Java程序真正執行之前,系統通過JIT編譯器把Java的字節碼編譯為本地化機器碼。最后,系統執行本地化機器碼,不用對字節碼進行解釋。這樣做的優點是,大大提高了Java程序的性能,縮短了加載程序的時間;同時,由于編譯的結果并不在程序運行期間保存,因此也節約了存儲空間。缺點是,由于JIT編譯器對所有的代碼都想優化,因此同樣也占用了很多時間。 動態優化技術即提前編譯為機器碼的技術(dynamicopttmization,ahead of time technology)是提高Java性能的另一個嘗試。動態優化技術充分利用了Java源碼編譯、字節碼編譯、動態編譯和靜態編譯的技術。其輸入是 Java的源碼或字節碼。而輸出是經過高度優化的可執行代碼和動態庫(WindoW中是.dil文件,UNIX中是共享庫.a.so文件)。其優點是能大大提高程序的性能,缺點是破壞了Java的可移植性,也對Java的安全帶來了一定的隱患。
(1)編寫Java類代碼 其中,需要JNI實現的方法應當用native關鍵字聲明。在該類中,用System.1oadLibrary()方法加載需要的動態鏈接庫。關鍵代碼如下: //Compute.java public class Compute{ public native double comp (double params); static{ //調用動態鏈接庫 System.loadLibrary(“mathlib”);