Java是最流行的編程語言之一。Java平臺被用來實現現代IT系統中使用的各種工具和組件。我們來討論幾個最受歡迎的。
編程IDE
IntelliJ IDEA、Eclipse和NetBeans——最流行的Java編程IDE大多是用Java語言編寫的,這并不奇怪。由于Java虛擬機(JVM),它們不需要100%是Java。JetBrains在Kotlin上投入了大量資金,因此它的IDE利用了Kotlin,并且是用兩種語言編寫的。在大多數情況下,IDE是桌面應用程序,因此它們受益于Java運行時環境可以在各種平臺上運行的事實——Windows、Linux和MacOS?,F代解決方案相當復雜,它們提供與各種框架和庫的集成,使編程更容易。如今,它們甚至可以與類似AI的助手集成。
截至目前,所有IDE都在努力提供Java 21功能支持,但尚未完成。
Jenkins
Jenkins是最著名的開源持續集成工具之一。最初以Hudson的名字發布,后來因為與Oracle的沖突而分叉。Jenkins是用Java編寫的,但是也可以用來構建用其他語言編寫的項目。它是相當模塊化的,并且由于插件,可以與Go、Ruby、Python和其他類型的項目一起工作。
2018年,Jenkins X發布,將Jenkins的功能擴展到Kubernetes平臺。它可以在上面運行,也可以構建應用程序并將其部署到k8s中。Jenkins X是圍繞GitOps構建的,支持各種秘密管理器。更重要的是,它可以用于MLops。
Apache Tomcat
有很多用Java編寫的web服務器,但其中最著名的可能是Apache Tomcat。當前版本(10?。崿F了Jakarta EE 10平臺規范的部分內容。很難相信,但它從1999年就已經上市了。
有趣的是,Apache TomEE基于Tomcat,但添加了其他組件,使其完全通過了Jakarta EE 9.1 Web Profile認證(以前是Java EE)。Tomcat也被各種流行的Java框架所利用,如Spring Boot。
GraalVM
如果我們采用JDK并用Java而不是C重新實現它呢?這就是GraalVM。它包括JIT(實時)編譯器,也包括本機映像技術。本機映像旨在通過提前(AOT)將JVM應用程序編譯成二進制文件來改善其執行。得益于此,它們啟動更快,不需要JVM相關的預熱,并且使用更少的資源。然而,也有一些缺點——并非所有的特性都可用(例如,java代理),JIT(實時)編譯器通常比AOT更好(因為它可以處理運行時數據而不是編譯時),并且一些庫不工作。
SonarQube
SonarQube對詹金斯來說是個不錯的補充。他們很好地融合在一起。Sonar是一個用于靜態代碼分析和各種代碼質量相關指標的工具。它是一個獨立的應用程序,但可以與各種構建和CI解決方案集成。它是用Java編寫的,但是它也支持許多其他非jvm編程語言。
KeyCloak
你知道Auth0、Firebase認證或AWS Cognito等解決方案嗎?KeyCloak是一個開源的身份和訪問管理系統,可以在內部部署。如果你需要將Auth與你的項目集成,但無法選擇任何托管解決方案,那么它可能適合你。KeyCloak支持社交登錄、2FA和其他最重要的安全相關功能。
Elastic,Logstash堆棧(不含Kibana)
人們很容易認為Elastic 堆棧(以前的ELK Stack)是一組Java編程工具。該堆棧包含3個主要工具:
l Elastic搜索-搜索引擎
l Logstash-攝入管道
l Kibana-可視化工具
它們共同構成了一個解決方案,例如,你可以從應用程序中收集日志,對其進行索引,在其中進行搜索,并將結果可視化。但是,Kibana是用JavaScript和TypeScript編寫的,但其余部分都利用了Java。Elasticsearch依賴于Apache Lucene,后者也基于Java。
Apache Cassandra
Apache Cassandra是一個開源的NoSQL數據庫。它具有高度可伸縮性(可以在數十萬個節點上存儲數Pb的數據),并且沒有單點故障(SPOF)。它基于Java代碼。由于特定的數據模型及其有限的查詢能力,它不是最容易使用的數據庫,當然也不適合所有的項目。
Neo4j
Neo4j也是一個開源的NoSQL數據庫。但是,和卡珊德拉完全不一樣。這是一個圖形數據庫,我們可以在其中存儲節點、邊及其屬性。如果你想對社交網絡中的朋友關系進行建模,并查詢這些關系,那么Neo4j可能是一個不錯的選擇。如何查詢這樣的結構?Neo4j使用Cypher查詢語言。
Apache Kafka
從數據庫開始,讓我們來看看消息代理。Apache Kafka近年來蓬勃發展。Kafka用于數據流和處理,也用于微服務通信。Kafka的核心是用Scala編寫的,但現在,其他一些部分是用Java實現的。除了Kafka,你可能對相關項目感興趣,如Kafka Streams、Kafka Connect或Schema Registry。
Apache ActiveMQ
ActiveMQ是一個比Kafka更古老的項目,它已經存在了近20年,但仍在積極開發中。它支持Java消息服務(JMS)規范,支持多種協議(如AMQP、STOMP、MQTT等)和集群模式。目前有兩種類型的ActiveMQ版本,經典版本和名為Artemis的“下一代”版本。有趣的是,Artemis是基于紅帽捐贈的HornetQ項目。ActiveMQ的下一個主要版本將基于此版本。
結論
Java編程語言在許多應用程序和工具中使用。它在日常工作中幫助Java開發人員,但是基于它的產品可以用來部署web應用程序、存儲數據或在系統之間交換消息。幾年過去了,但是市場上的Java情況是穩定的,工具是成熟的,并且仍然在積極地工作。如果你正在考慮開始一個新項目,Java可能是一個不錯的選擇。