- 聲明 1: 為何本文使用 JVM Movable 而非 Java Portable?因為 Java 本身是一個可移植 (Portable) 的語言,而不是指 SUN JRE(JVM)。
- 聲明 2: Mozilla, Firefox 為 Mozilla Fund./Co. 的註冊商標;Firefox Portable, OpenOffice.org Portable, PortableApps 為 John T. Haller 的註冊商標;SUN, Java 為 SUN Co. 的註冊商標。謹此聲明。
在拜讀 某A 前輩的文章: OpenOffice.org Portable 非公式正體中文版: OO.o Portable 2.1 Pre-Release 的新功能 後,發現 JRE(JVM) 竟然是可攜帶的!驚喜之餘,聯想到了這篇文章: Portable Firefox問題 (請問可否不用在電腦安裝 java 而執行 java 元件呢?)。到底 Firefox Portable + JVM Movable 可不可行?
若是以前,我會回答很「官方」的答案: 不行。(參: Firefox Portable: Known Issues,因為要更動很多 registry) 。
當然,透過「暫時寫入、事後抹除」技巧,的確能模擬出 Sun JRE(JVM) 已經安裝過的狀態,但是: 風險過大,搞不好,可能影響到原有的 Sun JRE(JVM) ;而且,我們可能需要 admin 權限。然而對於許多 Firefox/Feuerfuchs Portable 使用者而言,是不可能有 admin 權限。
所以到目前為止 (2007/2/22),
「官方」的答案是: 不行。
但現在,我的答案好像不這麼肯定了。
那 OpenOffice.org Portable + JVM Movable 是怎麼做到的?在讀到該分消息,震驚之餘,我去下載了 OpenOffice.org Portable (Beta),閱讀其中程式碼,發現: 能這樣做,是因為 OpenOffice.org 設計「良好」,只要將 JRE(JVM) 放置的目錄提供給 OpenOffice.org,剩下的交給 OpenOffice.org 處理。
然而,Mozilla Firefox 卻不同!
Mozilla Firefox 使用的是 SUN JRE(JVM) 提供的 Java Plug-in。Mozilla Firefox 的工作僅止於找出 SUN Java Plug-in,剩下的,讓 SUN Java Plug-in 去弄。而 SUN Java Plug-in 似乎是利用 Registry 來尋找 JRE(JVM) 所放置的目錄。
這下問題,又回到原點了: Registry Hack!
有解決方法嗎?
目前,最有可能的方法是: 重新實做 Java Plug-in。
可能嗎?
很有可能,至少一開始,我是這樣認為的!
障礙列表:
- Mozilla Firefox 去找電腦中已經安裝的 Java Plug-in,造成衝突。
- 重新實做 Java Plug-in
先談談 Mozilla Firefox 的 JVM Framework。您可以在下面的列表找的相關資料:
再看看 SUN 對於 Open JVM Integration 的「看法」:
Since Netscape 7 has been widely adopted, we decided to stop building OJI plugin for Netscape 6.x in JDK release.所以,顯然的,上面的兩篇有點舊,其使用的介面可能與 JVM 最新版本不太一樣。
再談談 SUN Java Plug-in 的相關資料:
全都沒有講到和 Java Plug-in 怎麼和 JVM 運作(至少我都看不太出來)。
到目前為止,可以用的資料,好像只有「稍舊」的 OJI。
我又把腦筋動到 Java 的「開放原始碼」。
而我從 OpenJDK 的 Mailing List Archive 中找到這一封信。
信上說 Java Plug-in 的原始碼尚未於 OpenJDK 計畫中公佈,
但我也得知: 可以在 JDK 6 的原始碼中找到非 Windows 版本的 Java Plug-in。
(但我不知道從何找起)
而這句話又讓我想起,README: JDK Builds 的一句話:
NOTE: The Java Plug-in product for Windows cannot be built from the Community Source Release.看到之後,心就涼了一半。
只好期待 SUN 最後還是會把 Java Plug-in 加入到 OpenJDK 計畫中。
不過,除了 SUN 的 Java Plug-in 以外,我還看到了一個東西: gcjwebplugin。這個計畫目前已經被整並到 GNU Classpath 計畫。目標是製作一個 Java Plug-in。雖然我看不太懂程式碼,不過好像和 JVM 的種類無關,也許可以從中取得靈感以及相關的介面。
如果有前輩,能重新實做 Java Plug-in 或者 SUN 釋出 Java Plug-in 再略加改寫 (改成以其他方式取得 JRE(JVM) 的位置) ,應該就可以達成 Firefox/Feuerfuchs Portable + JVM Movable。
__________h.s.
後記:
這個議題好像蠻常被提起,而我也蠻有興趣的 (雖然我不使用 Java Applet,而且目前沒有能力) ,所以略加紀錄。希望能供有興趣的前輩參考。
4 則留言:
打擾先抱歉
看到你這篇blog真高興 目前在實作ojiplugin因為特殊需求 所以無法用gtk2(也就沒辦法用gnu classpath) 乃至於參考gcjwebplugin寫了一版可以秀出applet(已kaffe jvm, X-based的widget)的java oji plugin, 不過目前還有一些問題....
很高興我的文章有用。
加油哦!
請問一下,該如何讓openoffice.org裡面附的jre能可攜呢?一定要安裝嗎?還是可以用付掛的方式加進去呢?
可否指導一下,謝謝~
To: 匿名@2007年10月10日
請參閱:
Using Java With OpenOffice.org Portable
Regards,
__h.s.
張貼留言