One of the most fascinating phenomena in the software industry is Java. Both language and platform have survived several threats to their supremacy and adapted their structure to several radical upheavals in the tech landscape. How is it possible that Java has been at the heart of business for over two decades and… open source state? We have identified seven factors that stand out.
Java started out as an alternative to the traditional approach – a sort of upstart. Today, Java is a cornerstone of business software. An essential factor for continued relevance is the passion of the community. This is facilitated by governance structures that encourage developers to keep Java alive and dynamic. Far from being a smooth-running machine, Java governance is more of a confusing mishmash of competing interests and organizations that have their say in the Java Community Process (JCP) and via Java Specification Requests (JSRs) raise. Ultimately, the JCP is a place where people who care about Java technology contribute and resolve conflict. This represents a rather mysterious combination of bureaucracy, politics and creativity – akin to a functioning democracy.
As an old Java programmer it was great to see the language succeed Lambdas and closures integrated. Adding functional constructs to an object-oriented programming language was a highly controversial and impressive achievement. The same goes for the adoption of concepts developed by technologies such as Hibernate and Spring (JSR 317 or. JSR 330) have been introduced on the official platform. That such widespread technology is still able to integrate new ideas is encouraging.
Another major reason for Java’s success is the plethora of open source frameworks and tools built around it. One or more libraries are available for almost every purpose. If you like a project, chances are it’s open source and you can contribute. This is not only an advantage when it comes to learning, but also when it comes to community building.
Not long ago I was doing a lot of research on YAML parsing and found this SnakeYAML project discovers. I soon got the hang of it and tried something exotic with this new project. Shortly afterwards I had a lively exchange with the owner of the project. This enriches the life of a programmer and ensures that open source projects continue to develop.
The plethora of projects in the Java ecosystem range from simple examples like the one I’ve mentioned to database drivers and similar technologies. There are application servers like hangover and jettyframes like hibernate and even the Eclipse IDE. These are all open source projects that invite you to contribute.
No appreciation for the Java ecosystem would be complete without paying tribute To jump Pull. This meta-framework is the standard that all other meta-frameworks should follow. There’s a reason for that: Spring gives you the ability to create custom code and embed 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 projects and third-party suppliers prepare their components. This leads to more consistency when using these components in your programs.
Of course, there are legitimate criticisms of Spring, and it’s not always the right tool. Google Guice is another tool similar to Spring. However, as a framework, the latter has introduced a clean and consistent method for assembling and delivering application components. That was a crucial step then and is still important today.
If the people behind Java and the use of Java are the wind that keeps the ship moving, then the technical aspects of Java are the sails. It’s impressive that the original Java spec emerged like an Athena from a single mind (that of James Gosling) yet remained flexible enough to remain relevant today. An important feature of Java design: everything is an object. In a development landscape that currently favors functional programming, it is sometimes fashionable to ignore this aspect of Java and object-oriented programming.
The administrators of Java have responded by including some functional programming idioms in the language. But they have remained steadfast: Java remains a strongly object-oriented language, in which basically everything is an object. It is possible to write great or terrible code in any paradigm. When you step into a Java system, you immediately know that it is strongly typed and that everything is in classes. The absoluteness of this design decision reduces complexity and brings clarity to the language and the 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.
The price of this approach: confusion in the early stages of learning. Virtually every Java novice faces an important question: what is the keyword for?
publicwhat is a lesson and why the hell do i need it?
public static void main(String args) write only to print “hello world”?
But it’s important to remember that these learning curves are strong aspects of a bigger picture: beginners encounter and absorb advanced concepts that are fundamental to how Java works. You could say that the strictly class-based structure of Java programs promotes good development work in general. The larger the systems get, the more beneficial the structure becomes, which may seem impractical on a smaller scale. In many cases, it justifies the learning effort.
the Java virtual machine (JVM) is another aspect of the Java construct that is occasionally criticized. At the time of its development, the JVM was a bold technical solution for the various runtime environments. Since then, it has sometimes appeared as an unnecessary architectural burden and a source of performance problems. But after years of relentless sophistication, technology is beginning to advance in a world that is increasingly in virtual machines love that can be found everywhere – even in the lowest layers 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 Java virtual machines are also impressive. They offer advanced automatic memory management with performance comparable to that of C.
Software development consists of two strong streams: the entrepreneurial and the creative. Only the spirit of the creative joy of programming explains that one example Worked on a dungeon simulator for 25 years. This creativity, coupled with solid business value, is the alchemy that keeps Java alive. To be successful in the long term, a software project must create space for entrepreneurship and creativity. Java did it.
This post is based on an article from our US sister publication Infoworld.