Why Java Is so Young After 25 Years: An Architect’s Point of View
Java completes 25 years of programming life and remains closer to developer's minds; almost 69% of the worldwide developer community remains to code in Java, even now.
Join the DZone community and get the full member experience.
Join For FreeJava completes 25 years of programming life and remains closer to developer's minds; almost 69% of the worldwide developer community remains to code in Java, even now. Oracle recently released Java 15 with tonnes of features like Sealed Classes, Hidden Classes, Edward-Curve Digital Signature Algorithm (EdDSA), Text Blocks to name a few. This makes Java 15 to be 25 years young and not 25 years old programming language.
History and Evolution of Java
When there were dozens of programming language which were very stable in the early 1990s like FORTRAN, COBOL, Pascal, C++, and Visual Basic, many platforms like Windows, Mac, Unix, Linux, and Mobile platforms demanded a unified approach in program development and architecture design. James Gosling and his friends discussed these aspects under an Oak tree near James' office where they felt a new programming language to be developed to address these gaps. They were very particular on foundational aspects in developing a new language called Oak, which was then named as Green (as the team is named as Green team) and later Java (based on their favorite coffee from Indonesia called Java Coffee).
James Gosling introduced Java in the year 1995 and during that time, there are other languages C, C++, VC++, Visual Basic, Python had their own market and developers, deployments. Java came up with the WORA (Write Once and Run Anywhere) concept, Simplicity, Object Oriented Programming with the removal of all pain points from C++. Most importantly, Web Programming with Applet support along with Enrich UI design (Abstract Window Toolkit).
Due to its simplicity, it got more developers and it reached as a 'PASSPORT' for all developers to work in international companies (USA, UK) in 1998-2001). However, at the same time during 2001, Dotcom down there has been plenty of job reduction, adding new developers to Java. Nevertheless, at later stages, bringing up additional features in Web Programming with JSP, Servlet, and Middle Tier architecture EJB on top of RMI brings more thoughts on Enterprise Application space for JAVA. Java also introduced mobile programming in order to enter into mobile apps and as a result, J2ME was introduced. As a result of this, Java came up with J2SE, J2ME, and J2EE.
However, all of them use CORE-JAVA as the base language. Java also had collaboration with IBM and with a Java Sound Library; Java Media Framework put together with Java runtime Speech synthesis future using IBM via Voice is another remarkable milestone for people in the media and education space. As time passes, Java increased the developer's count JUG was introduced at the same time. Java Bug Tracking and Bug reporting were great.
Being simple and powerful, more deployments subsequent years the growth was remarkable and it pushed out C++, VC++, Visual Basic from the Market Java has been leading the developer community almost 5-6 years. It even pushed python language aside and brought features like JavaScript web programming (Dynamic support on top of CSS+HTML). Java had a good amount of Transformation and it competes with newly introduced languages GO, RUBY, SCALA, and so on and it captures its own market as well.
Foundation Blocks of Java
The foundational aspects planned by the Green team during the initial conceptualization of Java programming language makes the founding blocks of Java programming language were:
- Build a simple, object-oriented language that would be easy for C++ programmers.
- Make it platform-neutral and architecture-neutral.
- High performance with many in-memory features and performance tuning with command line arguments.
- Make it multi-threaded, dynamic, and interpreted.
- Include security and robust features.
Figure: History and Evolution Timeline of Java.
With these founding blocks were right and strong enough, Java still doesn't compromise any of these features and hence quickly adopts new changes in modern programming languages like Lambda expressions, Switch expressions, and sealed class to name a few. Thus, many new programming frameworks including Hadoop and many Big data frameworks, Cloud functions adapt Java as the native facility. This is the reason Java still fights with new-age programming languages like Scala, Go, and Python even after 25 years.
Transitioning From Sun Microsystems to Oracle Inc.
Sun microsystem has been bought by Oracle and as a result, they have managed Java from 2010 onwards. Oracle has revamped Java starting from release control movement from 1-2 years to 6 months once. There have been tremendous changes, new feature additions. Java 8 is one of the remarkable versions to attract developers to regain the market space. Even though oracle introduced JAVA 14. Still all the developers, deployments were still intact with a more stable version J2SE 1.8.
Figure: Heatmap of Java Frameworks.
After Oracle took over Java, the thought process of OpenSource being considered and openness support started from J2SE (OpenJDK) by Sun and J2EE openness by Oracle in the name of the J2EE JAKARTA Eclipse community foundation project.
Java has been popularly used in all the domains, be it manufacturing, retail, banking, telecom everywhere Java language becomes mandatory and each developer should aware of Java. Because of this, it had generated more opportunities in the industry across the Globe. During 2006-2013, there have been difficulties in Oracle. However, after oracle took over Java, this slowness or development/deployment has been drastically removed. Sun Microsystems had brought a Java ONE conference where each release there will be a worldwide Technical discussion where the entire new child's (features, futures JSRs) of Java will be discussed and debated with a lot more technical audiences.
As we discussed Java has a space in microcontrollers, micro-space projects as well. One of the focus and transformation that Java brought was the Java Embedded System feature where it deals with managing devices, equipment remotely using the internet. I feel this is a foundation for bringing Internet of Things (IoT) in the recent days but it has been thought through in Java way back 2006-2010 timeframe itself.
The first major change brought by Oracle is releasing Java in two flavors:
1. Open platform for Java called OpenJDK.
2. Commercial platform for enterprise usage called Oracle Java.
Frameworks Based on Java Platforms
As an introduction to Java, there are more freedom to see more languages like GO, Python, Ruby, PERL, etc., in the world along with their market space. Java had been used in client-tier or two-tier applications (Applet, JavaScript), Server Tier (JSP, Servlet), Middle-Tier (EJB), and N-Tier (EMAIL, JNDI, JDBC, etc.). It also helps Sun and Oracle increase their developers and contributors over the period of Java's growth. Java had been tremendously used in third-party frameworks such as Spring, Hibernate and enables cross DB and Dynamic/Runtime dependency injection feature.
Apart from this, monolithic world changed to microservices world as the next generation of programming language transformation to bring more stability, scalability and agility in business and markets. Java had been used in all SpringBoot based microservices containers and gained again set of top coders, proven deployments, and so on. I forgot to mention one more feature so-called Multi-Language support where Java supports UNICODE to enable cross-language (International) support. Java has been extremely used in Big Data, AIML space with more use cases, solutions, and deployments. Java also aligned its transformations towards Cloud-based platform deployments and as a result, enables more developers to contribute and work in Java by including hot market demands as well.
Java was widely used and integrated into various domains, technology, toolsets which increases the utilization of Java from Space, Satellite researches to manufacturing, education, banking, finance, mobile, cloud, etc. Java had been successfully integrated with the below third-party tools and technologies. Java has a wider integration of AI, ML, and Cloud, and so on with stable, continuous improvement in performance. Over 25 years Java has been overlooked by various languages like Python, C++, Scala, GO, Erlang, etc. Still, Java remains #1 with more community members and stable deployments with tons of use cases.
Integration of Java with other third party frameworks right from Hibernate to Struts and until now SpringBoot microservices frameworks were globally adopted and deployed as well. Recent changes with respect to a reactive programming language, reactive Java becomes more popular and came up with more options. These integrations brought Java to the next level of programming area with performance and stability as the key part of the successful feature of Java. Oracle has also announced a lot of new changes in their releases; instead of releasing Java every two years, there will be a release happening every 6 months. In addition, there is a new website added to view the features of the upcoming project or tasks done so far. With the successful milestone of 25 years of Java journey, there have been some important milestones as if JDK8 got huge deployment count and so on. With respect to the feature, developers might expect more speed and performance improvement and fault tolerance with JVM to handle huge number of concurrent usecases.
Recent Hurdles Faced by Java Platforms
When Sun was owned Java, there are other Java runtime environments, enhancements in Java have been done especially IBM introduced IBM Java (it has a couple of interesting features as well). All of a sudden, Sun Microsystem had filed a lawsuit against Microsoft in favoring IE browser as a monopoly and using JRE against Sun Microsystems licensing requirements. Sun had won the lawsuit with Microsoft and recently Oracle had a suite with Google in using Java in their mobile android platforms.
Quick View on the Latest Java 15 Release
Oracle Java releases are based on JDK Enterprise Proposal (JEP) and Java Specification Request (JSR) and EdDSA is one such implementation of JEP 339. It is a platform-independent cryptographic signature at ~126-bit encryption algorithm. This can be used for data transportation handling with higher security to transmit encrypted data.
Sealed Class introduced in Java 15 is the implementation of JEP 360 and it restricts which classes can extend or implement the sealed class. For example:
public abstract sealed class Shape
permits Circle, Rectangle, Square {...}
makes Shape as a sealed class and allows only 'permits' class to implement/extend. This makes secured access to class hierarchy and controls the reusability of interfaces.
Hidden Class is based on the implementation of JEP 371 and it restricts class usage by allowing the class to be generated at runtime using Reflection API and makes the class non-discoverable to the external world. Hence, dynamic generation of Hidden class through proxies is not possible and makes them safely accessible.
ZGC or Z Garbage Collector is based on JEP 377. Earlier in Java 1.8, G1 GC was a break-through introduction to self-manage garbage collection and improves performance drastically. Later in Java 11, ZGC was introduced with various features for performance improvement and now in Java 15, it is improved further like Uncommenting unused memory, Multi-threaded heap, Concurrent class unloading to name a few.
Text Blocks introduced from JEP 378 creates multi-line string literal to be stored in automated escape sequence and formats string in predicted way and improved memory usage for string literals. This makes efficient storage of XML, JSON and HTML data as string literals in Java code.
Foreign-memory Access API is a JEP 383 implementation to allow programs to efficiently access foreign memory outside the allocated Java Heap. It was first introduced in Java 14 as a preview and now the improved version is released as part of Java 15. This API allows allocating native memory segment quickly by adding a piece of code like MemorySegment.allocateNative(100)
.
Conclusion
Official release notes say official first Java was first released in Jan 1996 and making Java completing its 25 years of journey as shown in above timeline. In our view, no other programming language in computer history withstood from desktop, mobile, enterprise development to modern cloud and big data development arena as compared to Java. Many people say that new programming constructs like GoLang, Python, Javascript frameworks will make Java die soon but with loads of features introduced in Java15, it looks like a strong reply that Java is still a 'go far' option for the developer community.
Opinions expressed by DZone contributors are their own.
Comments