JAVA: Past and Present

How Java was created

This article explores origin of java language, when and why was java invented and who invented it.

James Gosling, Mike Sheridan, and Patrick Naughton initiated the Java language project in June 1991. They envisioned a language that was portable, object-oriented, and could be used to develop a wide range of applications

Purpose of Java

The language needed to use the principle of a virtual machine to make it compact and portable. It needed to be based on the current object-oriented language, C++.

The project went ahead under the name “green” and the language was based on an old model of USCD Pascal, which makes it possible to generate interpretive code.

In 1993, the language was called Oak, named after an oak tree that stood outside the office of James Gosling, one of the creators of Java. The language was was oriented towards the object model that more closely matched the culture of in-house developers than the Pascal procedural model.

The portability and compact nature of Oak made it the perfect candidate for use on the Internet, which was well known for its slow speed and heterogeneity on connected machines.

It took nearly two years to adapt Oak, and in January 1995, after long brainstorming sessions and coffee breaks, the team settled on Java, inspired by a type of coffee grown on the Indonesian island of Java

When was Java invented

On May 23, 1995, during the SunWorld Exposition, the technological achievements of Java language were presented to the public and brought quick success. This date commonly is accepted as a date when was Java invented.

Created with the slogan Write once, run anywhere (WORA), meant that a Java program could be developed on any device, compiled into a standard called bytecode, and be expected to run on any device equipped with a Java Runtime Environment (JRE).

JRE is a concrete platform implementation of a set of specifications that formally define what is required to run Java applications. 

This set of specifications is called a Java virtual machine (JVM).

This meant that engineers could develop programs written in Java language that would run on every platform that implements, platform specific JRE i.e. JVM.

The way allowed Java to solve portability problems is that output of Java compiler is not platform specific compile code, it is a set of instructions called bytecode executed by Java Virtual Machine (JVM) which is part of Java Runtime Environment installed on a specific platform.

In general, when a program is compiled to an intermediate form and then interpreted by a virtual machine, it runs slower than it would run if compiled to executable code. To provide a performance boost, HotSpot technology was introduced. HotSpot provides a Just-In-Time (JIT) compiler for bytecode. JIT compiler, compiles parts of bytecode into native code, as it is needed, during execution.

Java almost immediately captivated the hearts of developers due to its portability and large set of built-in libraries and became popular for mainstream programming. Java evolved to three core technology packages (JVM, JRE and JDK, a superset of JRE) that represented both the platform and the programming language.

The JVM provided the foundation for executing Java bytecode, the JRE provided the runtime environment for Java applications, and the JDK provided the tools for developing Java applications. This modular architecture made Java highly adaptable to various development environments and deployment scenarios.

Java Platform History and Features

The Java platform, with its roots designed for consumer electronics, has evolved into a powerful and versatile environment for building modern applications.

Besides JVM implementation, JRE contains other supporting tools to get most of your java applications, such as: 

  • Development toolkits 

Frameworks for Graphical User Interface (GUI) called Abstract Windowing Toolkit (AWT) and Swing.

  • Integration libraries

Java IDL, to support distributed objects written in Java Programming language, Java Database Connectivity (JDBC), tool for applications to access remote databases

Java Naming and Directory Interface (JNDI), a directory service that lets clients create portable applications that fetch information from external databases using naming rules.

  • Language and utility libraries

Set of packages that are fundamental for designing Java applications (such as collections and concurrency framework), management and monitoring.

  • Deployment solutions

Technologies that simplify release changes and updates to user applications.

JRE Implementation of JVM runs on top of the operating system and takes user compiled code, links it with above mentioned libraries and starts the JVM to run it.

The JRE uses three core components to work

  • ClassLoader

The Java ClassLoader dynamically loads all class files necessary into the Java Virtual Machine (JVM)

  • Bytecode Verifier

They bytecode verifier checks the format and accuracy of the Java code before loading it into the JVM

  • Interpreter

Creates the JVM instance that runs the program

Java Development Kit (JDK) is a superset of JRE(tool for running Java code) that provides tools necessary to write and develop Java applications.

We can say that JDK is a concrete implementation of Java platform specifications and contains all that is needed to develop and run Java applications.

Product name for JDK is Java Standard Edition (JSE).

Java Enterprise Edition (JEE) is extending JSE with a set of specifications for enterprise functionalities such as web services, distributed computing, reading and writing to databases in a transactional way.

Oracle Corporation is the current owner of the official implementation of the Java SE platform, following their acquisition of Sun Microsystems on January 27, 2010. 

On September 12, 2017 Oracle announced that it would submit the JEE to Eclipse Foundation.

The platform was renamed from JEE to JakartaEE.

Java Language History and Features

Sun Microsystems released the first public implementation as Java 1.0 in 1996.

Since the first release of Java, there have been many additional features added to the language. Now Java is being used in Windows applications, Web applications, enterprise applications, mobile applications, cards, etc, Each new version adds new features.

A brief history of the Java language reveals its surprising origins as a project aimed to revolutionize software development, ultimately transforming into a juggernaut in the field.

The Java Programming Language is a general-purpose, concurrent, strongly typed, class-based object-oriented language. It is normally compiled to the bytecode instruction set and binary format defined in the Java Virtual Machine Specification. 

Although fundamental principles of java are portability and security, other factors played important role also in invention and development of java, such as:

  • Robustness

There are two main reasons for program failure: memory management mistakes and run time errors. Java addresses these problems by providing automatic memory cleaning of unused objects, called garbage collection and object oriented exception handling for runtime errors. In a Java application all runtime errors should be managed by the program.

  • Familiarity and Simplicity

Java was designed to be easy to learn, assuming that you have some programming experience. It was easy to move to java if you have some previous experience in C++.

  • Object Orientation

Java strongly supports Object-Oriented Programming concepts such as encapsulation, abstraction, and inheritance.

All the instructions and data in a Java program have to be added inside a class or object.

  • Multithreading

Java was written to be able to deal with multiple things simultaneously by defining multiple threads. Java runtime system implements multi process synchronization thas enables you to focus on behavior of your program instead of multitasking system

  • Distributedness

Java was designed to be able run in a distributed environment like the internet. Java also supports Remote method invocation(RMI) to be able invoke methods across networks.

  • Dynamicity

With runtime type information java is able dynamically link new class libraries, objects and methods. 

How is Java developed

In the past, major Java releases were typically separated by two or more years. However, subsequent to the release of JDK 9, the time between major Java releases has decreased. Today, the expected time between releases is just six months. 

At the heart of Java development is Java Community Processes (JCP), established in 1998,  a formalized mechanism that allows interested parties to develop standard technical specifications for Java technology.

The JCP formalizes how new features and changes to Java are proposed via Java Specification Requests (JSRs). It contains proposed changes, additions, or improvements to the Java technology platform. The JCP itself is described by a JSR. As of 2020, JSR 387 describes the current version (2.11) of the JCP.

Every JSR enters a review process. This is a multistage process wherein the changes proposed in the JSR are gradually considered more seriously, modified, anguished over, and eventually adopted.

JEP is a JDK Enhancement Proposal. JEP proposes experimental ideas that are channeled into becoming JSR.

New features of Java are delivered via JDK projects. When a proposal is mature it is considered for implementation in a JDK project.

A JDK project is a broad range of implemented JEPs, including one or more groups responsible for various areas of the Java platform.

The most important active JDK projects are: Amber, Loom, Panama and Valhalla

  • Project Amber is incubator of smaller Java features intended to be part of future Java releases
  • Project Loom is an effort to replace the old Java threading model that relies on underlying OS threads by creating virtual threads.
  • Project Panama is an effort to improve Java communication with non-Java APIs through Java Native Interface(JNI) by introducing some foundational components.
  • Project Valhalla’s aim is bringing between primitive and custom types. By unifying Java’s types it will be possible to apply generics to both classes and primitives gaining performance benefits.

There have been many releases of Java language since 1995.

We can say that Java 8 released in 2014 was the most significant release of Java that put it on the track of one of the  most important programming languages.

Its main new features were Lambda expressions and stream API  putting it closer to the functional programming paradigm.

Since Java 9, there have been new releases of Java every six months. However not every release of java gets Long Time Support (LTS).

Currently Long time supported versions of Java are 11, 17 and 21, the version released on September 21st 2023.

What is Java used for

Java’s strict specifications and standardized development practices ensure consistency and interoperability across different development teams and environments. This consistency is crucial for building and maintaining complex microservices architectures.

Because of its well defined JVM, with the advent of cloud computing, containerised development using technologies such as Docker and Kubernetes, is well suited for microservices architectures and various serverless approaches.

Java  is used for mobile application development for building Android applications, which are used by billions of people worldwide. Java is also used in the development of cross-platform mobile applications using tools such as Xamarin and PhoneGap.

Mobile and desktop game development is an area where Java is a popular choice.

With the popular Spring framework’s implementation of JEE specifications, we can say that Java is the language of choice when it comes to development of enterprise applications and microservices architecture.

Conclusion

In 1995, Java introduced two revolutionary concepts that became inevitable principles of modern software development: portability and memory management.

Those two principles still play a fundamental role in the invention of new technologies and ways of software development.

This article explored a brief history of the Java language and its origins and remarkable rise to prominence.

Scroll to Top