暗錘Spring框架:雲原生時代中的Java危機 - JAXenter
Java的現狀也太難了,有些人甚至將其稱為“老式語言”。儘管它很受歡迎,但還是有一些抱怨。在我們這個新的雲原生世界中,為什麼Java還是需要發展?不斷髮展才能適應現代的雲原生,Java需要保持所有使其可靠的功能,同時還必須能夠在新的應用程式環境中執行。
不用擔心,當您聽到Java被描述為一種“老式”程式語言時,您並不是唯一一個感到陳舊的人。儘管Java自1995年問世以來,它肯定還不準備退休(或者說退休),並且繼續躋身TIOBE索引的頂級語言之列。 實際上,到目前為止,沒有其他語言如此流行。
但是,這並非沒有問題,包括有時過於笨拙以至於無法跟上某些新的程式語言,不夠敏捷和靈活到無法在這種新的容器世界中工作,並且與未編碼的應用程式並沒有真正的關係。
本文將討論社群可以做什麼來幫助該語言跟上現代應用程式開發趨勢,以確保該語言在新的雲原生程式設計世界中繼續佔有一席之地。
Java為什麼經受住了時間的考驗?
據說Java具有“文藝復興的時刻”,程式語言在不斷髮展。實際上,對新創新的需求如此之大,以至於釋出週期已縮短到每六個月一次。除了從未跌至TIOBE指數的第二位之外,SlashData預測到2019年底將有760萬名Java開發人員。
為什麼Java需要發展?
現代應用程式開發與Java之間的脫節之處在於,基於較新的程式語言構建的應用程式傾向於更輕量,敏捷和靈活,並且通常在容器中執行,而傳統上Java並沒有這樣的容器。
常見的抱怨包括:
- Java太胖了,執行時環境通常包含從不使用的庫。這對於微服務體系結構來說並不是一個好兆頭,但是在使用Java應用程式解決更復雜的問題時確實可以使用。
- 它仍然遵循“一次編寫,隨處執行”的原則,這意味著任何具有Java虛擬機器(JVM)的裝置都應該能夠成功執行Java應用程式(即無需對其進行更改)。儘管這通常是一個很好的功能,但在定位於使用容器時這些卻沒有那麼重要。
- 與較新的應用程式相比,Java的啟動時間更長,這可以歸因於Java確實非常擅長解決複雜問題所需的一切,但在簡化過程方面仍有一些不足之處。
- 庫太多,因此程式包太大,這會減慢啟動時間,並使Java應用程式的敏捷性降低。
- 有人還說Java太冗長,更多現代語言可以用更少的程式碼來完成相同的事情。
- Java是一種非常動態的語言,它是使它如此高效和敏捷的部分原因,但也會導致某些框架濫用動態功能,從而導致更長的啟動時間和較大的記憶體開銷。
- 在併發和吞吐量更重要的情況下,它並不是處理事件驅動的體系結構的最佳裝備語言。Java解決此問題的計劃是透過Fibers(banq注:而不是React等庫包)。
為了不斷髮展以適應現代的雲原生應用程式,Java需要保持所有使其可靠的功能,同時還必須能夠在新的應用程式環境中執行。Java復興的部分原因是,開發人員開始意識到這一點,並正在盡其所能使Java現代化,同時又不會偏離該語言的已嘗試和真正的好處。這可以使數百萬當前的Java開發人員能夠擴充套件他們可以做的工作,而不必學習一種全新的語言並改變他們的工作方式。
Java在現代應用程式開發世界中
當我說現代應用程式開發時,我指的是像Kubernetes和Serverless這樣的環境,它們都依賴於將程式碼部署到生產中的容器,直到最近,Java都不相容。
長期以來,像Red Hat這樣的Java領導者都希望透過諸如Quarkus之類的計劃使其成為這些環境中的關鍵角色,Quarkus是為GraalVM和OpenJDK Hostpot量身定製的Kubernetes原生Java框架。透過為開發人員提供在統一的反應式和指令式程式設計模型中使用Java的能力,Quarkus的目標是使開發人員能夠在Kubernetes和無伺服器環境中工作而無需學習新的範例。它可以提供新的執行時效率,以嘗試解決當前使Java陷入困境的某些問題,包括更快的啟動時間,更低的記憶體利用率以及更小的應用程式和容器映像佔用空間。
透過Quarkus之類的框架,我相信Java將能夠更好地適應現代應用程式開發領域的需求,並且不僅會不斷髮展,而且還會不斷創新。因為這是關鍵所在–為雲原生Java創造通往未來的道路,並在此過程中將Java置於企業創新的中心。
相關文章
- 雲原生時代高效能Java框架—Quarkus(一)Java框架
- 雲原生時代高效能Java框架—Quarkus(二)Java框架
- 被時代拋棄的危機感
- 雲原生時代的運維體系進化運維
- 容器映象服務:雲原生時代的核心基石
- 雲原生時代,如何“玩轉”容器安全?
- 雲原生時代來臨,開發者如何適應雲原生開發環境?開發環境
- 雲原生時代下,作業系統生態的挑戰與機遇作業系統
- GraalVM(雲原生時代的Java)和IoT在邊緣側落地與實踐LVMJava
- 雲原生時代的DevOps平臺設計之道dev
- 雲原生java的那些事兒Java
- java程式碼-編譯-打包-執行_雲原生時代筆記總結Java編譯筆記
- 雲原生時代如何方便的進行本地除錯除錯
- 雲原生時代 RocketMQ 運維管控的利器 - RocketMQ OperatorMQ運維
- CODING —— 雲原生時代的研發工具領跑者
- 筆記:追隨雲原生的Java筆記Java
- SphereEx 正式步入雲原生時代:Database Mesh 2.0 實現雲原生資料庫理念革新Database資料庫
- dubbogo 3.0:牽手 gRPC 走向雲原生時代GoRPC
- 雲原生 go-zero 微服務框架Go微服務框架
- 世界銀行:危機時代下對發展的再思考
- 開放下載 | 《Knative 雲原生應用開發指南》開啟雲原生時代 Serverless 之門Server
- Spring 框架:Java 開發者的春天Spring框架Java
- 金融雲原生漫談(七)|雲原生時代:從傳統運維到智慧運維的進階之路運維
- 架構師成長系列 | 雲原生時代的 DevOps 之道架構dev
- 雲原生時代訊息中介軟體的演進路線
- 探索雲原生時代:技術驅動的業務架構革新架構
- Spark的危機與機遇:未來必然是AI框架倒推資料處理框架SparkAI框架
- Jakarta EE:雲原生Java的新平臺Java
- 雲原生時代,應用架構將如何演進?應用架構
- 雲原生時代,資料庫該何去何從?資料庫
- 初步探索GraalVM--雲原生時代JVM黑科技LVMJVM
- 雲原生時代,中介軟體應該如何 “進化”?
- 雲原生Web服務框架ESA RestlightWeb框架REST
- 雲原生微服務框架之go-zero微服務框架Go
- 雲原生時代,螞蟻金服公開了新的金融混合雲架構架構
- 阿里雲AIoT雲端一體:迎接雲原生+低程式碼時代的到來阿里AI
- 沙龍報名 | 雲端計算進入多元架構,雲原生時代的挑戰與機遇架構
- Docker的危機Docker