Java's Main Features, Editions, and History

The Birth of the Java Language

  • Java was developed in 1991 at Sun Microsystems by James Gosling, Patrick Naughton, Chris Warth, Ed Frank, and Mike Sheridan.
  • It was called Oak in 1991, but from version 1.0.2, released in 1996, it began using the name Java.
  • With the emergence of the World Wide Web, Java developed more actively as a computer language design.
  • In 2009, when Sun Microsystems was acquired by Oracle, ownership of Java also moved to Oracle.

Programming Language: Java

  • Simple
  • Object-oriented
  • Suitable for distributed applications
  • Executed by an interpreter
  • Provides robust features
  • Secure
  • Architecture-neutral and highly portable
  • Provides high performance
  • Supports multithreading
  • Dynamic

Main Features of the Java Language

Object-Oriented Language

Java is a fully object-oriented language.

Object oriented means thinking of the subjects handled in an application as objects and building functionality by combining them. Many programming languages, not only Java, are designed around object orientation.
In other words, by learning Java, you can gain general-purpose knowledge that can also be used with other languages.

Platform Independent

You can write programs that are independent of the platform.

A Java program runs after being converted into intermediate code that operates on the Java Virtual Machine. Because it does not generate platform-specific native code, an application does not depend on a specific platform. If a virtual machine for that platform exists, a Java program can run anywhere. This property is called “Write Once, Run Anywhere.”

Automatic Memory Management with Garbage Collection

Java provides a mechanism called Garbage Collection, which automatically releases memory that is no longer used. Therefore, in principle, problems such as memory leaks do not occur simply because memory release was forgotten. Also, developers do not need to write code that is conscious of memory release, which improves development productivity.

A Different Language from JavaScript

Because the names are similar, they are easy to confuse, but Java and JavaScript are completely different languages. Java runs on a dedicated Java Virtual Machine, while JavaScript is mainly a lightweight scripting language used in browsers.

JVM(Java Virtual Machine)

A computer that uses Java bytecode as machine language is called a Java Virtual Machine.

  • Stack area(Runtime stack)
  • Dynamically allocated memory area(Garbage Collection Heap)
  • Constant & Method area(Constant & Code Segment)
  • Register area(Process Register)

Types of Java Editions

Java provides the following editions depending on the purpose.

Java SE(Java Platform - Standard Edition)

  • The base edition of Java
  • Provides an environment, or software platform, for developing, deploying, and running Java applications/applets on desktops or servers
  • Provides a compiler, interpreter, standard APIs, and more
  • Java SE Development Kit(JDK)

Java EE(Java Platform - Enterprise Edition)

  • Enterprise edition for server-side development
  • Based on Java SE, provides an environment for building and running large-scale enterprise servers
  • Provides a web application server(GlassFish) and many APIs such as Servlet, JSP, JDBC, DataSource, JPA, JTA, JNDI, RMI, EJB, and JMS
  • Java EE SDK

Java ME(Java Platform - Micro Edition)

  • Edition used for embedded systems
  • Provides an environment for developing and running wireless applications that operate on mobile phones, PDAs, and similar devices
  • Provides a compiler, emulator, standard APIs, and more
  • Java ME SDK

Java SE is the edition that provides the API for the basic features of the Java language. Java SE is required to run Java EE. Java ME assumes use in embedded systems and is not compatible with the Java SE subset, but it provides minimal functionality. The content here covers Java SE features.

History of Java

The following is a rough history of Java SE.

Java versions

Version Date Main New Features
JDK Beta 1995
JDK 1.0 January 23, 1996 Initial version
JDK 1.1 February 19, 1997 Internationalization support, JDBC API
J2SE 1.2 December 8, 1998 Collections Framework, Swing, reflection
J2SE 1.3 May 8, 2000 HotSpot
J2SE 1.4 February 6, 2002 Regular expressions, logging, New I/O, assert
J2SE 5.0 September 30, 2004 Generics, autoboxing, enum types, enhanced for statement
JavaSE 6 December 11, 2006 Unicode normalization, JDBC 4.0
JavaSE 7 July 28, 2011 try-with-resources syntax, New I/O.2, diamond syntax
JavaSE 8 (LTS) March 18, 2014 Lambda expressions, Stream API, Date-Time API
Java 9 September 21, 2017 Modules, JShell, Reactive Streams
Java 10 March 20, 2018 Local variable type inference
Java 11 (LTS) September 25, 2018 HttpClient, single Java file execution
Java 12 March 19, 2019 switch expressions(Preview)
Java 13 September 17, 2019 Text blocks(Preview)
Java 14 March 17, 2020
Java 15 September 15, 2020
Java 16 March 16, 2021
Java 17 (LTS) September 14, 2021
Java 18 March 22, 2022

At first, 5.0 was called version 1.5, but because the language specification and other areas changed significantly, it was later revised to 5.0. Up to 5.0, it was called J2SE(Java2 Platform, Standard Edition), but after the release of 6, JavaSE became the official name. The decimal notation in version numbers was also discontinued.

However, internally the versions are still managed as 1.5, 1.6, 1.7… as before, and some notation still follows that style, so be careful.

References