当前位置:Java -> 哪些编程工具是用Java编写的?
Java 是最受欢迎的编程语言之一。我们刚刚迎来了新的 LTS 发布 - Java SE 21。尽管并不总为人所知,但 Java 平台被用于实现现代 IT 系统中使用的各种工具和组件。让我们讨论一下其中一些最受欢迎的。
IntelliJ IDEA、Eclipse 和NetBeans - 这些最受欢迎的 Java 编程 IDE 大部分都是用 Java 语言编写的,这并不奇怪。多亏了 Java 虚拟机(JVM),它们不需要完全是 Java。JetBrains 在 Kotlin 投入了很多,因此它的 IDE 利用了 Kotlin,并用两种语言编写。大多数情况下,IDE 是桌面应用程序,因此它们受益于 Java 运行时环境可以在各种平台上运行 - Windows、Linux 和 MacOS。现代解决方案相当复杂,它们提供与各种框架和库的集成,以使编程更加容易。现在它们甚至还整合了类似 AI 的助手。
目前,所有 IDE 都在努力提供对 Java 21 特性的支持,但尚未完成。
Jenkins 是最知名的开源持续集成工具之一。最初发布为 Hudson,后来由于与 Oracle 的冲突而被分叉。Jenkins 是用 Java 编写的,但也可以用于构建其他语言编写的项目。它相当模块化,并且借助插件可以与 Go、Ruby、Python 和其他类型的项目一起工作。
2018 年,Jenkins X 发布,它将 Jenkins 的能力扩展到了 Kubernetes 平台。它可以在该平台上运行,也可以构建并部署应用程序到 k8s。Jenkins X 是围绕 GitOps 构建的,并支持各种秘密管理器。而且它还可用于 MLops。
有许多用 Java 编写的 Web 服务器,但可能最著名的是 Apache Tomcat。当前版本(10!)实现了 Jakarta EE 10 平台规范的部分内容。难以置信的是,它自 1999 年以来一直存在于市场上。
有趣的是,Apache TomEE 是基于 Tomcat 的,但添加了其他组件,以便完全符合 Jakarta EE 9.1 Web Profile 认证(以前是 Java EE)。Tomcat 也被各种流行的 Java 框架所利用,如 Spring Boot。
如果我们拿 Java 开发工具包(JDK),以 Java 重新实现,而不是以 C,会怎么样?那就是 GraalVM。它包括 JIT(即时)编译器,还有 Native Image 技术。Native Image 旨在通过将 JVM 应用程序提前(AOT)编译成二进制文件来改进 JVM 应用程序的执行。由此,它们启动更快,无需 JVM 相关的预热,并且使用更少资源。然而,也存在一些缺点 - 并非所有功能都可用(例如,Java 代理),JIT(即时)编译器通常比 AOT 更好(因为它可以在运行时数据上工作而不是编译时),一些库也无法使用。
SonarQube 是 Jenkins 的一个很好的补充。它们之间可以很好地集成。Sonar 是一个用于静态代码分析和各种代码质量相关指标的工具。它是一个独立的应用程序,但可以与各种构建和 CI 解决方案集成。它是用 Java 编写的,但同样支持许多其他编程语言,包括非 JVM 的编程语言。
还可以阅读 如何在项目中使用 Sonar
您是否了解像 Auth0、Firebase 认证 或 AWS Cognito 这样的解决方案?KeyCloak 是一个开源的身份和访问管理系统,可部署在本地。如果您需要将 Auth 集成到您的项目中,并且无法选择任何托管解决方案,那么它可能适合您。KeyCloak 支持社交登录、双因素认证和其他最重要的安全相关功能。
Elastic Stack(以前是 ELK Stack)是一套 Java 编程工具。该堆栈包含 3 个主要工具:
它们一起构成了一个解决方案,你可以从中收集应用程序的日志、对其进行索引、搜索它们并可视化结果。丑陋的事实是,Kibana 是用 JavaScript 和 TypeScript 编写的,但其他部分利用了 Java。Elasticsearch 依赖于基于 Java 的 Apache Lucene。
Apache Cassandra是一种开源的NoSQL数据库。它具有高度可扩展性(可以在数十万个节点上存储PB级数据)并且没有单点故障(SPOF)。它是基于Java代码的。由于其特定的数据模型和有限的查询能力,它并不是最容易使用的数据库,当然它并不适用于所有项目。
Neo4j也是一种开源的NoSQL数据库。然而,它与Cassandra完全不同。它是一个图形数据库,可以存储节点、边以及它们的属性。如果您想对社交网络中的朋友关系建模并查询这些关系,那么Neo4j可能是一个不错的选择。如何查询这样的结构?Neo4j利用了一种Cypher查询语言。
从数据库转向消息代理,让我们来看看消息代理。近年来,Apache Kafka一直在蓬勃发展。Kafka用于数据流和处理,同时也用于微服务通信。Kafka的核心是用Scala编写的,但目前,一些其他部分是用Java实现的。除了Kafka,您可能对相关项目感兴趣,如Kafka Streams、Kafka Connect或Schema Registry。
ActiveMQ比Kafka要老得多,它已经存在了将近20年,但仍在积极开发中。它支持Java消息服务(JMS)规范,支持多种协议(如AMQP、STOMP、MQTT等)和集群模式。目前有两种类型的ActiveMQ版本,经典版本和被称为Artemis的“下一代”版本。有趣的是,Artemis基于由Red Hat捐赠的HornetQ项目。ActiveMQ的下一个重要版本将基于这个版本。
Java编程语言在许多应用程序和工具中得到广泛应用。它帮助Java开发人员日常工作,基于它的产品可用于部署Web应用程序、存储数据或在系统之间交换消息。多年过去了,但市场上的Java情况稳定,工具成熟,并且仍在积极开发中。如果您考虑启动一个新项目,Java可能是一个不错的选择。
推荐阅读: 45.如何优化WHERE子句
本文链接: 哪些编程工具是用Java编写的?