長期以來,Java一直因其啟動速度慢、大量的依賴項(無論是否全部使用)以及大量的資源需求而飽受批評。再加上JVM和應用服務器,需求會變得更大。對Java 感興趣的同學,可以參加Java培訓來獲得知識和技能,以便快速上崗。
傳統的解釋型Java服務對于真正的微服務平臺來說并不理想,尤其是無服務器API。
這就是原生 Java 真正閃耀的地方......
找到最佳點
原生Java非常適合Kubernetes、微服務和無服務器組件。這也是開發(fā)新服務或將大型應用程序分解成小型服務的理想機會。
采用原生Java不一定是“大爆炸”式的方法——它可以一次一個服務地完成。這種方法最大限度地降低了風險,并且隨著技術的進一步成熟,將有助于建立信心。
開始時,進行遷移可能看起來勢不可擋,但是它與今天的傳統Java開發(fā)并沒有太大的不同。
Logicdrop 開發(fā)了一個用于業(yè)務自動化和數據智能的一體化平臺,使企業(yè)能夠設計自己的解決方案并將其部署到云中。 我們的平臺最初是使用 Spring Boot 和 Drools 開發(fā)的,現在已經從頭開始重新設計,只使用 Quarkus 和 Kogito,并主要部署原生 Java 可執(zhí)行文件。參加java培訓是入門學習的最佳選擇,有經驗豐富的專業(yè)老師面授指導教學,通過理論結合實戰(zhàn)的方式教授java基礎知識,幫助你更好的理解與運用java。
在切換到原生Java之前,在云原生基礎設施中運行越來越多的Spring Boot服務變得具有挑戰(zhàn)性,更不用說大規(guī)模的成本了。不管功能如何,容器的大小總是大約1GB+,因為它們需要一個JVM并包含一整套依賴項(使用或不使用)。啟動時間平均為15-30秒,由于資源緊張,每個節(jié)點只能運行少量程序。
遷移到Quarkus之后,生成的本機可執(zhí)行文件明顯更小,啟動速度明顯更快,并且總體上使用的資源更少。容器的大小小于50MB(壓縮的),在不到1秒的時間內就可以接受請求。這些優(yōu)勢使得native Java成為規(guī)模和啟動時間在成本和性能方面都至關重要的環(huán)境的理想選擇。
吞吐量不是一個大問題,我們發(fā)現在完成跳躍后,吞吐量大致相同。由于擴展速度更快,更多的服務可以打包到更少的節(jié)點中,因此水平擴展可以適應任何差異。
何時使用原生Java
原生Java令人印象深刻:GraalVM將Java與其他“更輕更快”的棧相提并論,同時保持我們都知道的熟悉的Java結構。而“更輕更快”在云中至關重要!java培訓課程結構良好,以正確的順序涵蓋了java庫的基本知識,使你的學習更加輕松。
原生Java可執(zhí)行文件也更加安全:GraalVM通過剝離未使用的類、方法和字段來減少漏洞。
新的微服務是原生Java的理想起點,因為它們可以從零開始編寫,以利用已建立的成熟的原生庫。
在決定將什么遷移到原生Java時,這些先決條件是一個很好的起點:
該服務是獨立的嗎?
啟動時間和擴展是否重要?
外部依賴項是否與本機 Java 兼容?
可能需要額外的配置才能正確處理動態(tài) Java 功能(例如反射)。 如果沒有這些額外的元數據,庫在用作本機可執(zhí)行文件的一部分時可能會失敗! 因此,根據我們的經驗,Java 庫要么與原生 Java 兼容,要么不兼容。
使用一個框架來提供一組精心管理的庫有助于了解哪些在原生Java中有效,哪些無效。不幸的是,對于其他Java庫來說,事情要困難得多:目前,判斷一個庫是否與本地Java兼容的唯一方法是在本地可執(zhí)行文件中運行它。很多時候,如果有什么失敗,都會很快出現。
了解哪些庫與原生Java兼容是決定哪些庫適合原生Java的一個重要因素:對于不兼容的庫,我們要么使用替換,要么重新實現功能。想掌握 Java 技術的同學不妨報個Java培訓班,可以節(jié)省學習時間,提高學習效率,在短時間內學有所成,還能找到一份不錯的工作。
幸運的是,大多數Java應用程序通常依賴于框架中已經提供的類似功能——日志、REST APIs、JSON等。例如,這些API已經存在于Quarkus中,并且與本地Java兼容:
持久性(NoSQL 和 RDBMS)
可觀察性(Elastic、Prometheus、Jaeger 等)
AWS 開發(fā)工具包
安全
SOAP (Apache CXF)
REST(RESTEasy、Jackson 等)
支持(Swagger、Logging 等)
選擇框架
選擇原生框架各有利弊,所以選擇一個需要仔細考慮長期使用。
原生Java可以用于普通Java開發(fā)。但是大多數組織應該選擇構建框架,因為它將減少樣板代碼,并提供一組精選的API,從而節(jié)省時間和精力。此外,每個框架都使您免于構建本機可執(zhí)行文件的過程,從而進一步降低了復雜性和學習難度。想要了解java更多知識和技能,可以參加java培訓,幫你加深對java的理解,學到更多的技能,提升工作效率。
所選擇的框架應該完全包含GraalVM,提供支持原生Java的豐富生態(tài)系統,并以對您的組織有意義的方式簡化原生可執(zhí)行文件的構建。考慮到這一點,今天只有三個Java框架這樣做——Quarkus、Micronaut和Helidon。
一些框架甚至可以“傳統地”在JVM中運行,同時仍然利用一些GraalVM優(yōu)化。當應用程序或服務不能完全本機運行時,這可能是一個很好的備用方法。
總結
最終,任何微服務通常都會受益于更快的啟動時間和更少的資源需求。使用原生Java的優(yōu)勢,尤其是在Kubernetes中,加上成本節(jié)約和可衡量的效率,是遷移到原生Java的原因。
原生Java可執(zhí)行文件將Java推向了一個新的高度。如果機會確實出現了,并且條件合適,那么付出額外的努力來開始使用GraalVM是非常值得的!在java培訓中,有很多關于原生Java的學習課程,結合實戰(zhàn)項目訓練,將知識運化應用,快速提升自己。