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.