Which Programming Tools Are Written in Java?
Although it is not always known, the Java platform was used to implement various tools and components used in modern tech systems.
Join the DZone community and get the full member experience.
Join For FreeJava is one of the most popular programming languages. We're just after the new LTS release - Java SE 21. Although it is not always known, the Java platform was used to implement various tools and components used in modern IT systems. Let’s discuss some of the most popular ones.
Programming IDEs
IntelliJ IDEA, Eclipse, and NetBeans - the most popular Java Programming IDEs are written mostly in Java language, that’s not surprising. Thanks to the Java Virtual Machine (JVM), they don’t need to be 100% Java. JetBrains invests a lot in Kotlin, so its IDEs leverage it and are written in both languages. IDEs, in most cases, are desktop applications, so they benefit from the fact that Java Runtime Environment can be run on various platforms - Windows, Linux, and MacOS. Modern solutions are quite complex, they offer integration with various frameworks and libraries, to make programming easier. Nowadays they even integrate with AI-like assistants.
As of now, all IDEs are working on providing Java 21 features support, but it is not completed yet.
Jenkins
Jenkins is one of the most known open-source continuous integration tools. Initially released as Hudson, it was later forked due to conflict with Oracle. Jenkins is written in Java but can be used to build projects written in other languages as well. It is pretty modular and, thanks to the plugins, may work with Go, Ruby, Python, and other types of projects.
In 2018, Jenkins X was released, which extends Jenkins capabilities into the Kubernetes platform. It can be run on it, but also build and deploy the apps into the k8s. Jenkins X is built around GitOps and supports various Secret Managers. What is more, it can be used for MLops.
Apache Tomcat
There are a lot of web servers written in Java, but probably one of the most known is the Apache Tomcat. The current version (10!) implements parts of the Jakarta EE 10 platform specification. It is hard to believe, but it has been on the market since 1999.
Interestingly, Apache TomEE is based on Tomcat but adds other components so that it is fully Jakarta EE 9.1 Web Profile certified (previously Java EE). Tomcat is also leveraged by various popular Java frameworks, such as Spring Boot.
GraalVM
What if we took the JDK and re-implemented it in Java instead of C? That’s the GraalVM. It includes the JIT (Just In Time) compiler but also the Native Image technology. Native Image is designed to improve executions of JVM applications by compiling them Ahead Of Time (AOT) into binaries. Thanks to that, they start faster, do not need the JVM-related warm-up, and use fewer resources. However, there are some drawbacks - not all features are available (e.g., java agents), the JIT (Just In Time) compiler is usually better than the AOT (because it can work on the runtime data instead of compile time), and some libraries do not work.
SonarQube
SonarQube is a nice addition to Jenkins. They integrate together very nicely. Sonar is a tool for static code analysis and various code quality-related metrics. It is a standalone application but can integrate with various build and CI solutions. It is written in Java, but again, it supports many other, also non-jvm, programming languages.
Read also How to use Sonar in your project
KeyCloak
Do you know solutions like Auth0, Firebase Authentication, or AWS Cognito? KeyCloak is an open-source Identity and Access Management system that can be deployed on-premise. If you need to integrate Auth with your project and you can’t choose any hosted solution, then it may be for you. KeyCloak supports Social Logins, 2FA, and other most important security-related features.
Elastic, Logstash Stack (without Kibana)
It is tempting to write that Elastic Stack (previously ELK Stack) is a set of Java programming tools. The stack contains 3 main tools:
- Elasticsearch - search engine,
- Logstash - ingestion pipeline,
- Kibana - visualization tool.
Together, they form a solution in which you can, e.g., gather logs from your applications, index them, search in them, and visualize the results. The ugly truth is that Kibana is written in JavaScript and TypeScript, but the rest leverages Java. Elasticsearch depends on Apache Lucene, which is based on Java as well.
Apache Cassandra
Apache Cassandra is an open-source NoSQL database. It is highly scalable (it can store petabytes of data on hundreds of thousands of nodes) and has no Single Point of Failure (SPOF). It is based on Java code. Due to the specific data model and its limited querying capabilities, It is not the easiest database to use, and for sure it does not fit all projects.
Neo4j
Neo4j is also an open-source NoSQL database. However, it is totally different from Cassandra. It is a graph database where we can store nodes, edges, and their attributes. If you’d like to model friends' connections in social networks and query those relations, then Neo4j may be a good choice. How to query such a structure? Neo4j leverages a Cypher Query Language.
Apache Kafka
Moving from databases, let’s take a look at message brokers. Apache Kafka has been thriving in recent years. Kafka is used for data streaming and processing, but also for microservice communication. Core of the Kafka was written in Scala, however right now, some of the other parts are implemented in Java. Apart from Kafka, you may be interested in related projects, such as Kafka Streams, Kafka Connect, or Schema Registry.
Apache ActiveMQ
ActiveMQ is a much older project than Kafka, it has existed for almost 20 years but is still actively developed. It supports Java Message Service (JMS) specification, supports multiple protocols (such as AMQP, STOMP, MQTT, and others), and clustering modes. There are 2 types of ActiveMQ releases right now, the classic one and the “next-gen” called Artemis. What is interesting is that Artemis is based on the HornetQ project, which was donated by Red Hat. The next major release of ActiveMQ will be based on this version.
Conclusions
Java programming language is used in a lot of applications and tools. It helps Java developers on a daily basis with their work, but products based on it can be used to deploy web applications, store data, or exchange messages between systems. Years have passed, but the Java situation on the market is stable, tools are mature, and still actively worked on. If you’re considering starting a new project, Java may be a good candidate.
Published at DZone with permission of Michał Matłoka. See the original article here.
Opinions expressed by DZone contributors are their own.
Comments