Various reasons why Java is still great

Published

Blog image

Java has weathered radical changes in the technology landscape and many threats to its dominance. What makes this technology so great and what does the future of Java look like?

One of the most fascinating phenomena in the software industry is the continued importance of Java . Both as a language and as a platform Java has survived radical changes in the technology landscape, and its own internal structure has changed with it. How is it possible that Java has been at the center of enterprise and open source for more than two decades? Let's look at a few factors that stand out.

If you want to refresh your Java knowledge or even further expand it, we recommend you Skillshare as a learning platform.

The Java Community Process

Java began as an alternative to the traditional way of doing things - an upstart of sorts. Today, despite repeated challenges, it is a recognized pillar of enterprise software. How to explain Java's continued relevance in the face of such radical change? A key factor is the passion of the community, fostered by governance structures that engage developers so that Java remains a vibrant, dynamic force.

Far from being a smooth-running machine, Java governance is a confusing hodgepodge of competing interests and organizations making their voices heard in the Java Community Process (JCP) and through Java Specification Requests (JSRs). Ultimately, the JCP is a place where people who care about Java technology contribute and resolve conflicts. It's a pretty puzzling combination of bureaucracy, politics and creativity. In fact, it is something like a functioning democracy.

As a long-time Java programmer, it was surprising - amazing, actually - to see how the language has successfully integrated lambdas and closures. Adding functional constructs to an object-oriented programming language was a highly controversial and impressive achievement. The same applies to the adoption of concepts introduced by technologies such as Hibernate and Spring (JSR 317 and JSR 330, respectively) into the official platform. That such widespread technology can still incorporate new ideas is encouraging.

The responsiveness of Java helps ensure the language incorporates useful improvements. It also means developers know they are working in a living system that is nurtured and cultivated for success in a changing world. Project Loom - an ambitious attempt to redesign Java's concurrency model - is an example of a project that underscores Java's commitment to evolution. Several other proposals currently being processed by the JCP demonstrate a similar willingness to pursue important goals to improve Java technology.

The people working on Java are only half the story. The people who work with it are the other half, and they reflect the diversity of Java's many possible uses. Social coding and open source are not unique to Java, but they are an important part of the healthy Java ecosystem. How JavaScript Java also developed together with the programming community , as the web gained traction. This origin story is an important part of the character of Java.

Open-Source-Frameworks und -Tools

Another important reason for Java's success is the abundance of open source frameworks and tools developed around Java. There are one or more libraries available for almost anything you might need. If you like a project, there's a good chance it's open source and you can contribute to it. This is beneficial for both learning and community building.

Not long ago I was doing a lot of YAML parsing and discovered the SnakeYAML project. I soon delved into the subject matter and tried to do something exotic with this new project. Not long after, I started talking to the owner of the project.
Something similar happened when I had to do some sophisticated processor orchestration close to the metal. First I discovered the NuProcess project, then I was allowed to contribute a small correction. Exchanges like this make a programmer's life richer. They also ensure that open source projects continue to develop.

The wealth of projects in the Java ecosystem range from modest examples like the ones I've presented, to database drivers and similar technologies, to monumental projects. There are application servers like Tomcat and Jetty, frameworks like Hibernate, and even the Eclipse IDE. All are open source projects that invite collaboration.

Spring-Dependency Injection

Spring MVC Framework Logo

No appreciation of the Java ecosystem would be complete without hats off Spring to pull. This meta-framework is perhaps the standard that other meta-frameworks can follow. And why? Because Spring gives you the same ability to create custom code and incorporate third-party code into your programs. By implementing Dependency Injection and Inversion of Control, Spring allows you to standardize not only your own internal components, but also the way third-party projects and vendors prepare their components. This results in greater consistency when using these components in your programs.

Of course, there are also valid criticisms of Spring, and it is not always the right tool. Google Guice is another tool that works similarly to Spring. But Spring as a framework introduced a clean and consistent way to deploy and compose application components. That was a turning point back then, and it's still important today.

Everything is an object

If the people behind Java and using Java are the wind that keeps the ship going, then the technical aspects of Java are the sails. It's impressive that the original Java specification sprung like an Athena from a single mind (the mind of James Gosling) and yet remained flexible enough to be relevant today.

An important feature of the design of Java is that in Java everything is an object.

In a development landscape that currently favors functional programming, it is sometimes fashionable to discard this aspect of Java and object-oriented programming. Java's maintainers have responded by incorporating some functional programming languages ​​into the language. But they have remained steadfast that Java remains a highly object-oriented language where everything is an object.

It's possible to write great or terrible code in any paradigm. When you enter a Java system, you know from the start that it is strongly typed and that everything is contained in classes. The absoluteness of this design decision reduces complexity and adds clarity to the language and programs that use it. Well-written Java programs have the mechanical elegance of well-written object-oriented code. Functionality is the result of interacting components, like gears in a machine.

The price of this approach is confusion in the early stages of learning. Virtually every Java beginner faces important questions: what is the public keyword for, what is a class, and why on earth do I have to

public static void main(String[] args)

But remember that these learning curves are strong aspects of a grand order: the beginner encounters and absorbs sophisticated concepts that are fundamental to the way Java works. One could say that the strictly class-based structure of Java programs lends itself to good programming on a large scale. As systems become larger, the structure, which may seem unwieldy on a smaller scale, becomes more advantageous. In many cases it justifies the effort of learning in the early stages.

Of course there are legitimate points of criticism about the Java syntax - this also applies to JavaScript and any other language. As Bjarne Stroustrup once said, "There are only two kinds of languages: the ones people complain about and the ones no one uses."

Die JVM

The Java Virtual Machine - Source: educba.com

The Java Virtual Machine is another aspect of Java design that is occasionally criticized. At the time of its development, the JVM was a bold technical solution to the diversity of runtime environments. Since then, it has sometimes appeared to be a burden of redundant architecture and a source of performance problems. But after years of relentless refinement, the technology has begun to prove itself right. She has also proven to be quite prescient. The world has fallen in love with virtual machines lately; they are ubiquitous and even form the lowest layer of cloud computing.

Applied to Devops containers and serverless architectures, the JVM provides a clear target for the deployment environment with well-defined properties and controls. Modern virtual Java machines are also impressive. They provide sophisticated automatic memory management with performance close to C.

Creativity in the company

Software development consists of two strong streams: the entrepreneurial and the creative. There is a spirit of creative joy in programming that is the only possible explanation for, say, working on a dungeon simulator for 25 years. This creativity, coupled with solid business value, is the alchemy that keeps Java alive. In order to be successful in the long term, a software project must create space for both. Java did that.

You might find this interesting