Java是最流行的编程语言之一。Java平台被用来实现现代IT系统中使用的各种工具和组件。我们来讨论几个最受欢迎的。
编程IDE
IntelliJ IDEA、Eclipse和NetBeans——最流行的Java编程IDE大多是用Java语言编写的,这并不奇怪。由于Java虚拟机(JVM),它们不需要100%是Java。JetBrains在Kotlin上投入了大量资金,因此它的IDE利用了Kotlin,并且是用两种语言编写的。在大多数情况下,IDE是桌面应用程序,因此它们受益于Java运行时环境可以在各种平台上运行的事实——Windows、Linux和MacOS。现代解决方案相当复杂,它们提供与各种框架和库的集成,使编程更容易。如今,它们甚至可以与类似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!)实现了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可能是一个不错的选择。