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