Java:Speedment 3.2的发布–现在启用轻量级数据库微服务
幾種傳統(tǒng)的ORM不能完全遵循Java模塊封裝(JPMS)。 這通常意味著在部署微服務時會使用很多不必要的文件和類。 最新的主要版本3.2的開源
Speedance通過引入模塊系統(tǒng)支持來解決此問題,該模塊支持對云應用程序進行有效部署并提供更嚴格的API。
在本文中,您將學習Speedment 3.2的新增功能以及如何部署體積縮小10倍且使用更少內存的云數(shù)據(jù)庫應用程序。
支持Java平臺模塊系統(tǒng)(JPMS)
Speedment 3.2的最大功能無疑是對JPMS的本地支持。 現(xiàn)在,Speedment中的每個模塊都包含自己的模塊
module-info.java文件,并采用嚴格的封裝。
作為開發(fā)人員,使用模塊系統(tǒng)完全是可選的,并且由于其多版本的JAR,Speedment仍然可以在Java 8下運行。您可以選擇現(xiàn)在,以后或從不遷移到JPMS。
其他ORM,例如Hibernate,可能支持JPMS的某些部分,但不遵循嚴格的封裝(例如,要求
--add-opens手動添加,從而繞過保護措施以防止訪問內部/受保護的類)。
可選模塊允許較小的微服務
Speedment模塊已在內部進行了重組,以減少模塊之間的耦合。 結果,某些模塊現(xiàn)在是可選的,從而允許部署甚至更小的微服務。 例如,現(xiàn)在可以分別選擇各種數(shù)據(jù)庫連接器,并且
JoinComponent也是可選的。
縮小尺寸
不再需要多個內部模塊(例如“惰性”和“可變流”),并且對其他一些內部模塊進行了優(yōu)化并減小了尺寸。
強封裝
由于有了模塊系統(tǒng),內部類現(xiàn)在被完全隱藏,甚至受到保護,免于深度反射。 這會增強API(因為僅可以訪問故意可見的類和方法),因此可以在不影響公共API的情況下將來遷移內部類。
云部署示例
與在標準JDK下運行應用程序相比,可以創(chuàng)建一個自定義JRE +應用程序+加速庫,該庫小10倍,并且使用的內存減少了25%。 如果您在云中運行大量微服務,那么這將帶來巨大的差異。
我的文章“
Java:如何創(chuàng)建輕量級數(shù)據(jù)庫微服務 ”。 數(shù)據(jù)庫應用程序連接到帶有電影,演員等的“ Sakila”數(shù)據(jù)庫的公共MySQL云實例。它檢索十個最長的電影,并按長度順序將它們打印在控制臺上。
定制的JRE仍然具有真正的JVM的所有優(yōu)點,例如垃圾收集,JIT編譯器等。只是已刪除的未使用模塊和工具。
final Speedment app = new SakilaApplicationBuilder() .withPassword( "sakila" ) .build(); final FilmManager films = app.getOrThrow(FilmManager. class ); System.out.println( "These are the ten longest films rated as PG-13:" ); films.stream() .filter(Film.RATING.equal( "PG-13" )) .sorted(Film.LENGTH.reversed()) .limit( 10 ) .map(film -> String.format( "%-18s %d min" , film.getTitle(), film.getLength().orElse( 0 )) ) .forEach(System.out::println);該應用程序將產生以下輸出:
These are the ten longest films rated as PG- 13 : GANGS PRIDE 185 min CHICAGO NORTH 185 min POND SEATTLE 185 min THEORY MERMAID 184 min CONSPIRACY SPIRIT 184 min FRONTIER CABIN 183 min REDS POCUS 182 min HOTEL HAPPINESS 181 min JACKET FRISCO 181 min MIXED DOORS 180 min 事實證明,與僅占用30 MB(甚至包括應用程序和Speedment運行時)的定制JRE相比,標準開放JDK 11的存儲要求為300 MB。 因此,可以將存儲需求減少大約90%。 在檢查堆使用情況時
jmap結論是,RAM使用量也減少了約25%。
如何獲得速度3.2
新用戶可以使用以下工具下載Speedment 3.2
初始化器 。
現(xiàn)有用戶只能在其用戶中更新速度版本
pom.xml文件,并通過發(fā)出以下命令來重新生成域模型:
而已。 現(xiàn)在,您的舊Speedment應用程序將在新版本下運行。
如果要使用模塊系統(tǒng),請?zhí)砑右韵聝热?
module-info.java文件到Java 8+應用程序的根目錄:
(*)根據(jù)數(shù)據(jù)庫類型,您必須將MySQL模塊替換為數(shù)據(jù)庫的相應模塊。 閱讀有關各種數(shù)據(jù)庫連接器模塊的所有信息
在這里 。
資源資源
JPMS模塊的基礎知識
完整的Speedment版本說明歷史記錄可以在這里找到 在GitHub上加速 Speedment Initializer能夠生成項目模板
翻譯自: https://www.javacodegeeks.com/2019/11/java-release-of-speedment-3-2-now-enabling-lightweight-database-microservices.html
總結
以上是生活随笔為你收集整理的Java:Speedment 3.2的发布–现在启用轻量级数据库微服务的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 半夜鸡叫周扒皮的故事(睡前故事半夜鸡叫完
- 下一篇: oppor9参数(oppor9参数报价)