我們在這個附錄討論的都是從一個Java應用裡調用非Java代碼最基本的技術。每種技術都有自己的優缺點。但目前最主要的問題是並非所有這些特性都能在所有JVM中找到。因此,即使一個Java程序能調用位於特定平台上的固有方法,仍有可能不適用於安裝了不同JVM的另一種平台。
Sun公司提供的JNI具有靈活、簡單(盡管它要求對JVM內核進行大量控制)、功能強大以及通用於大多數JVM的優點。到本書完稿時為止,微軟仍未提供對JNI的支持,而是提供了自己的J/Direct(調用Win32 DLL函數的一種簡便方法)和RNI(特別適合編寫高效率的代碼,但要求對JVM內核有很深入的理解)。微軟也提供了自己的專利Java/COM集成方案。這一方案具有很強大的功能,且將Java變成了編寫COM服務器和客戶的有效語言。只有微軟公司的編譯器和JVM能提供對J/Direct、RNI以及Java/COM的支持。
我們最後研究的是CORBA,它使我們的Java對象可與其他對象溝通——無論它們的物理位置在哪裡,也無論是用何種語言實現的。CORBA與前面提到的所有技術都不同,因為它並未集成到Java語言裡,而是采用了其他廠商(第三方)的集成技術,並要求我們購買其他廠商提供的ORB。CORBA是一種有趣和通用的方案,但如果只是想發出對操作系統的調用,它也許並非一種最佳方案。