資源描述:
《capsule:開源的jvm應(yīng)用部署工具-java開發(fā)java經(jīng)驗(yàn)技巧》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、Capsule:開源的JVM應(yīng)用部署工具-編程開發(fā)技術(shù)Capsule:開源的JVM應(yīng)用部署工具譯文出處:王鵬原文出處:dzone現(xiàn)實(shí)世界中,應(yīng)用程序部署過程可能沒冇想象中的那么簡單。應(yīng)用程序其實(shí)非常「皺感」,在部署過程中,它會(huì)發(fā)現(xiàn)門己身處一個(gè)陌生的環(huán)境中,并且在與不同碩件、不同基礎(chǔ)設(shè)施軟件,以及陌生的鄰居(應(yīng)用程序)行交互。如果期望應(yīng)用程序正常地運(yùn)行,編碼和部署過程都是重中之重。兩者之間的平衡常常依賴于程序的編寫語言、程序構(gòu)成的運(yùn)行時(shí)和工具,因此,不同的技術(shù)??赡苄枰煌牟渴鸸ぞ?。但JVM應(yīng)用程序?qū)Νh(huán)境的要求非常少一一只需一個(gè)JVM和一個(gè)內(nèi)核,然而意想不到是,目前為止尚不存在一個(gè)通用的JVM
2、應(yīng)用部署工具/機(jī)制。FatJARs并不總奏效,而且它們需要平臺(tái)特定的腳木。最近有人使用Docker來部署Java應(yīng)用,事實(shí)上Docker并不適用于這種任務(wù):它的主要目的之一是提供通用的應(yīng)用可移植性(類似JVM應(yīng)用已經(jīng)具備的特性),同時(shí)它也需要下載、部署并管理各種full-OS鏡像和存repositorieso作為運(yùn)彳亍時(shí)不可知工具,Docker也無法利用JVMs的優(yōu)勢。當(dāng)下,經(jīng)過一年的發(fā)展,Capsule1.0正式發(fā)布一個(gè)簡單、健壯且靈活的JVM應(yīng)用部署工具。Capsule迎合JVM應(yīng)用的獨(dú)特優(yōu)勢和需求,因此這里有理由相信這是最簡單、最強(qiáng)大的JVM應(yīng)用部署方式,不管是用于一個(gè)桌面應(yīng)用、micr
3、oscrvicc或復(fù)雜的Web應(yīng)用。Capsule不僅適用于Java應(yīng)用程序,還能應(yīng)用J?所冇JVM語言,從Jtuby、Jython和Groovy,到Kotlin、Clojure和Scala,再到Frege和OCaml-Java<>如果你在寫JVM程序,給Capsule一個(gè)機(jī)會(huì)。你口J以這樣來理解capsule,將它當(dāng)作steroids上的1個(gè)fatJAR(在允許本地庫的同時(shí)也不會(huì)干擾到依賴項(xiàng))與1個(gè)聲明式啟動(dòng)腳木的整合;另一個(gè)理解方式是,將其當(dāng)作部署階段的構(gòu)建工具。正如構(gòu)建管理工具一樣,Capsule從構(gòu)建到應(yīng)用發(fā)布的各個(gè)環(huán)節(jié)都有全方位的管理。Capsule在設(shè)計(jì)時(shí)一宜遵循以下原則:?打包應(yīng)
4、該是輕量、可移杭和便捷的。無論多么復(fù)雜,不管有多少JAR文件組成,或者冇多少腳本語言的源文件還是木地庫,Capsule都可以包裝任何JVM應(yīng)用到一個(gè)名為Capsule的可執(zhí)行JAR,并且可以在任何平臺(tái)上運(yùn)行。Capsule可以直接包含應(yīng)用的所有依賴項(xiàng),或簡單地聲明部分或者全部,一旦發(fā)布將會(huì)被完整的下載。這就是fatJAR的工作方式。如果愿意,capsules木身也口J以置于Mavenrepositories,在發(fā)布時(shí)進(jìn)行卜載。?安裝對主機(jī)系統(tǒng)的影響最小,并對更新選擇性支持。在capsule首次安裝時(shí),其正常運(yùn)行需耍依賴在1個(gè)臨時(shí)冃錄中生成的一些文件,隨后用戶可以在任何吋刻刪除這些文件,不會(huì)對c
5、apsule產(chǎn)生任何不良影響。capsule可以選擇性地支持更新——不管是應(yīng)用或者是其依賴關(guān)系——當(dāng)啟動(dòng)時(shí)會(huì)自動(dòng)下載。這些依賴關(guān)系一一可以是語言運(yùn)行時(shí)或者是Web容器——也可以被具他capsule共亨。?發(fā)布必須是確定和靈活的,可能是安全的且有選擇地限制。發(fā)布一個(gè)capsule不需要啟動(dòng)腳木。Capsules査找詰求的JVM版木、設(shè)置classpath>必要的agents并設(shè)置JVMflagsoCapsules在啟動(dòng)時(shí)也可以創(chuàng)建自己的容器(來限制資源使用,或使用己知的端口以避免對其他項(xiàng)目形成干擾),同時(shí)JVM應(yīng)用可以在無特權(quán)的容器下運(yùn)行,這些容器是安全的。另外,安全性由JVM提供的安全機(jī)制保證
6、。此外,capsules只需耍一個(gè)內(nèi)核和一個(gè)JVM——甚至不需耍shell,他們便能在JVMmicrokernels上運(yùn)行,比如OSv。通過caplets和組件定制capsule的行為,所有這些功能都是完全可編程、可組合的。當(dāng)工具和標(biāo)準(zhǔn)已經(jīng)存在時(shí),不用再重造車輪。Capsule是用Java編寫的,并可以通過Java擴(kuò)展。它遵循JVM生態(tài)系統(tǒng),而不是重造車輪,僅使用現(xiàn)有的工具和標(biāo)準(zhǔn)。capsule打包在一個(gè)可執(zhí)行JAR,并將所有元數(shù)據(jù)存儲(chǔ)為簡單的JAR-manifestattributes中;并且口J以根據(jù)需要,從Mavenrepositories中下載全部或者部分,并通過Maven、Gradl
7、c和Leiningcn這些流彳亍的JVM工具構(gòu)建。Capsule本身是一個(gè)簡單的Maven依賴,就像所有的構(gòu)建工具插件,不需要再安裝其他新工具。通過Caplets實(shí)現(xiàn)的Capsule魔法CapsuleZ所以能保持簡單還能提供這些功能主要?dú)w功于caplets,以模塊化定制Capsule行為。Caplets可以嵌入到1個(gè)capsule,或者單獨(dú)進(jìn)行包裝并使用命令行包裝和修改現(xiàn)有capsule行為。Ca