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