發表文章

目前顯示的是 9月, 2015的文章

Capsule:JVM的打包佈署開源工具

圖片
如 Capsule 自已所介紹,打包與發佈Java應用程式。 我的第一個印象是:包裝一個可執行Jar檔,不是很簡單的事嗎? 存在即是合理,要是有其必要之處。 她的原理很簡單 把可執行Jar檔的啟動Class換成她的:Capsule 照後這個Class依照設定來啟動您的程式(執行相關所需的環境變數、參數全部記載在MANIFEST內) 她把執行的行為分為 六種(Caplets) ,我覺的重要的至少有兩種: capsule-shield :把程式打包,乍看之下沒什麼,可是對於JNI程式就很有用處了,因為我們沒有辦法把JNI所需的Library與可執行Jar 綁在一塊,而且執行時一般得還得傳入 -Djava.library.path參數指定Native Library所在的位置才能順利執行,可是透過 Capsule 卻可以解決這個問題(這裡有個包JNI的 Jar (Linux或Windows)檔,可以直接下載執行) capsule-maven 也是個重要的Caplets,程式打包通常的作法是把所有會用到Jar Library解開後再一起打成一包,會產生所謂的Fat Jar(檔案比較大),而 capsule-maven 讓我們把程式delivery時,不用包含這些相關的Jar Library,而只交付所謂的 thin jar(不含其它Library),然後在Runtime(執時)階段時再來下載這些Library。 capsule-desktop :用來執行GUI程式,說實在的看不出來有什麼特別 capsule-secure :沒試過,她的描述是: 以設定的安全政策在Java的沙盒中執行 capsule-osv :也沒試過,說是用來打包程式在 OSv microkernel 雲端執行。 MANIFEST 說明 先來一個最簡單的 lwjgl.Jar 打包說明(Fat-Jar): 註:Native Library必須跟Capsule.class放在第一層,不要想在MANIFEST.MF自訂java.library.path,因為Capsule執行時會代入java.library.path直接蓋過你的設定。 Fat-Jar檔內的MNAIFEST.MF內容 Main-Class: Ca