Vestige是一個安裝、運行和更新JavaSE應(yīng)用程序的框架。是為Java服務(wù)器應(yīng)用程序(POP、CARDDAV、RESTful…)帶來可移植性。通過參加java培訓(xùn),你可以學(xué)習(xí)更多java框架,以提高java技能。
你可能會說Java已經(jīng)是可移植的了,的確如此,但將操作系統(tǒng)特定于JVM的膠水卻不是。Java服務(wù)器應(yīng)用程序所需的內(nèi)容包括:
可移植安裝(創(chuàng)建rpm、DEB、EXE、DMG都很繁瑣)。
自動啟動計算機/用戶會話。
與用戶共享的目錄(配置、日志)和僅用于應(yīng)用程序的目錄(緩存、TMP)。
即使配置了PAC代理,也可以使用internet配置(下載應(yīng)用程序更新、訪問web服務(wù))。
Vestige帶來了這一切。與其他框架一樣,它使用Maven解析器(以前稱為Eclipse-ether)從.m2/repository文件夾下載和執(zhí)行應(yīng)用程序。與現(xiàn)有框架不同,Vestige可以攻擊依賴項來替換、添加或刪除任何依賴項。此外,它允許你在一個類加載器(類路徑模式)和每個JAR一個類加載器(平臺模式)之間進行選擇。平臺模式允許更快的類加載(因為它只在一個JAR中搜索)和應(yīng)用程序之間的類共享。
Vestige在JVM
6到10上運行。在JVM9或更高版本上啟動時,它使用JPMS(以前稱為Jigsaw)并為每個類加載器創(chuàng)建一個模塊層,以保持應(yīng)用程序之間的類共享處于啟用狀態(tài)。在java培訓(xùn)中,也有關(guān)于Vestige的學(xué)習(xí),理論知識+實踐項目,雙管齊下,學(xué)以致用,讓你深入淺出地學(xué)習(xí)java。
不過,在Vestige中運行Tomcat或Felix并不是很有用,因為最常更改的部分是功能部分,而功能部分位于Tomcat的webapp文件夾中的WAR中,以及OSGi中的一些捆綁包中,因此功能部分沒有類共享。
但是,如果我們可以在Maven存儲庫中發(fā)布一個WAR,而不使用它的lib目錄,Tomcat就可以發(fā)展并使用殘余Maven
SPI在web應(yīng)用程序之間以及與Vestige JVM上運行的其他應(yīng)用程序共享類。
Vestige專用于JavaSE應(yīng)用程序,并試圖限制移植應(yīng)用程序所需的約束。
移植到OSGi或JPMS是一項繁瑣的任務(wù):你必須管理導(dǎo)入/導(dǎo)出包/模塊。但移植到Vestige要簡單得多。你只需刪除所有JVM范圍的操作(System.exit、System.setProperty和shutdown
hooks)。如果不刪除它們,應(yīng)用程序?qū)⑦\行,但可能會干擾其他應(yīng)用程序行為。
如果希望在平臺模式下運行并在應(yīng)用程序之間共享類,則必須使所有靜態(tài)變量不可變(final是不夠的),并使用線程上下文類加載器執(zhí)行IOC。
Vestige為靜態(tài)(應(yīng)用程序停止)和動態(tài)(應(yīng)用程序運行)更新提供SPI。動態(tài)更新很難實現(xiàn)(應(yīng)該禁止阻塞操作),但這是可能的。想要學(xué)習(xí)java更多知識和技能,可以考慮參加java培訓(xùn),有經(jīng)驗豐富的專業(yè)講師指導(dǎo)教學(xué),有緊跟市場需求的實時課程,可以讓你快速掌握這門技術(shù),節(jié)約時間,少走彎路。