Java生態系統擁有龐大而多樣化的開源項目,旨在滿足幾乎所有想象得到的需求。很容易錯過其中一些偉大的項目。以下是七個開源Java項目,涵蓋從全棧應用程序開發到微服務、Wasm和JVM替代方案的所有內容。
Hilla是一個全棧框架,具有基於Java的後端和JavaScript前端。它支持響應式前端框架React和Lit。Hilla讓您使用一個簡單的命令來構建一個新的全棧項目:npx @vaadin/cli init --hilla foundry-hilla。這是一個NPM命令,但它將部署一個標準的Maven佈局,帶有一個使用Vite構建的前端目錄,一切都準備好與./mvnw腳本一起運行。
Hilla在兩個應用程序部分之間強制執行類型,這意味著您的IDE可以檢測並傳播Java API和消耗它的TypeScript前端之間的更改。在這個框架中,自動完成和重構都可以正常工作。這個功能在全TypeScript世界中的感覺類似於tRPC。
Hilla還通過JPA(在Hibernate上)集成瞭一些SQL數據庫,如MySQL和PostgreSQL。
它有點像jHipster,但更有見解。這意味著Hilla在可以將技術粘合在一起方面不太靈活,但它為您提供瞭更平滑的道路。Hilla得到瞭良好的維護和文檔支持。如果您需要使用Java構建全棧應用程序,並且如果您喜歡React或Lit作為前端,那麼Hilla是一個值得考慮的優秀框架。
繼續全棧框架的主題,我們有jHipster。jHipster采用非常靈活的方法,可以將多種不同的技術統一到一個使用Java作為API中間件的協同堆棧中。您可以選擇幾個響應式前端和各種SQL和NoSQL數據存儲。
與Hilla類似,jHipster首先通過NPM包jhipster-generator工具生成應用程序。生成器將引導您完成一個問卷調查,讓您對其功能有一個很好的瞭解。
jHipster首先讓您選擇單片應用程序、微服務架構或網關,讓您對該框架的范圍有一些瞭解。如果您選擇單片,您就可以使用Spring WebFlux將其變成響應式樣式的應用程序。接下來,您可以選擇不同的身份驗證樣式,如JWT或Oauth 2。然後,您可以從幾個數據存儲中選擇,如SQL、MongoDB和Cassandra,然後是第二級應用程序緩存,如Ehcache、Memcached或Redis。
jHipster生成器接下來允許添加一些其他技術:Elasticsearch用於搜索引擎,使用Spring WebSocket的WebSockets,作為異步消息代理的Apache Kafka,以及使用OpenAPI-generator的API-first開發。接下來,您可以從幾個前端框架中選擇,並在需要時生成管理UI,以及幾個主題。
jHipster還具有國際化和測試功能,並支持Maven和Gradle。
這是相當強大的。還可以生成域模型、數據結構和與之配套的UI。jHipster是構建許多類型的Java應用程序的絕佳選擇。
GraalVM項目始於2018年3月,旨在提供更廣泛的虛擬機實現。GraalVM可以做到JVM所能做的一切,甚至更多:它允許消耗各種語言,並輸出到各種目標執行環境。它還包括幾種編譯器樣式,包括可以增強性能的JIT(即時)編譯器。
GraalVM可以運行任何編譯為LLVM的語言,包括C、C++、Rust、Swift等。它還處理字節碼語言,如Java、Scala、Kotlin和Groovy。它還支持JavaScript、Python、Ruby和R語言。(未來,我們可以希望看到GraalVM支持Zig。)
這意味著我們可以獲得JVM的所有一次編寫,隨處運行的好處,適用於各種語言。例如,GraalVM可以接受使用GCC編譯為LLVM字節碼的C程序,並使用lli命令運行它。或者,GraalVM可以使用clang將C代碼直接編譯為可執行文件。GraalVM為許多(但不是所有)語言和平臺輸出獨立的執行版本。
它還包括對許多目標二進制文件的支持,如Wasm、Linux變體、macOS、Windows、iOS和Android。對於許多目標,GraalVM支持無需安裝GraalVM即可運行的本機映像。它還允許開發人員選擇執行模式,如JIT編譯、AOT編譯和解釋,以微調性能配置文件。
GraalVM得到瞭良好的維護和文檔支持,並擁有一個活躍的社區。總的來說,它是一個引人註目的項目,正在逐漸成為一種通用語言工具。請訪問GraalVM項目主頁以瞭解更多信息。
Micronaut是Java開發的一種新方法,旨在面向現代雲和無服務器環境。它具有豐富的功能,如用於腳手架、構建、執行和測試具有一系列集成技術的項目的命令行工具。也許最重要的是,Micronaut是圍繞一個啟用AOT的控制反轉(IOC)框架設計的,可以在面對大型代碼庫時保持啟動時間。
此外,它還支持面向微服務的功能,如服務發現、跟蹤和容器化部署,因此Micronaut是現代Java開發的一個經過深思熟慮和引人註目的選擇。
Micronaut提供瞭一個基於Web的項目設計工具,您可以使用它來瞭解可以插入Micronaut核心的工具范圍。這個工具在精神上類似於Spring Initializr或jHipster的在線生成器,但它采用瞭自己的方式。Micronaut在其核心是反應式的,支持像RxJava和Reactor這樣的反應式實現,其他所有內容都建立在這個中心支柱之上。Micronaut包括自己的反應式HTTP客戶端。
Micronaut中的每個節點都是一個反應式組件,可以組合成更大的微服務架構,使用像ZooKeeper或Eureka這樣的中央服務代理。
Micronaut使得采用最佳實踐變得容易,它是一個類似於Spring的一站式框架,但更加專註於具體的實現細節。對於在基於Java的雲和無服務器環境中工作的開發人員來說,這是一個令人心動的選擇。
在基於Java的面向對象持久性的演變中,MicroStream可能代表瞭最終的概念精煉。它以原樣接受您的運行時對象圖,並允許將其以面向對象編程語義持久化到任意數量的底層數據存儲中。
MicroStream允許您保持在對象和屬性的思維領域中,而框架則完成瞭大部分保存和恢復工作。作為開發人員,您仍然需要考慮元關註點,如獲取策略和持久性邊界,但這些定義簡單,大部分不會幹擾應用程序代碼,應用程序代碼的工作方式與不考慮持久性時一樣。
MicroStream包括根的概念,它定義瞭持久化樹的根。一個應用程序可以有多個根,如表1所示。
列表1. MicroStream保存和恢復數據
// Saving
EmbeddedStorageManager manager =EmbeddedStorage.start();
manager.setRoot(myObject);
manager.storeRoot();
//Restoring
EmbeddedStorageManager storageEngine =EmbeddedStorage.start();
myObject =(MyClass) storageEngine.root();