History of Java
Java was developed by Sun Microsystems in 1991, under the leadership of James Gosling. Initially called Oak, it was renamed Java in 1995. It quickly gained popularity due to its “Write Once, Run Anywhere” philosophy, facilitated by the Java Virtual Machine (JVM). Over the years, Java has evolved through multiple versions, each introducing new features and performance enhancements.
The following table shows the history of Java versions and their features:
Version | Year | Features |
---|---|---|
JDK 1.0 | 1996 | Initial release, applet support, AWT (Abstract Window Toolkit), Java.io, java.lang, java.net packages |
JDK 1.1 | 1997 | Inner classes, JavaBeans, RMI (Remote Method Invocation), JDBC, reflection, internationalization |
J2SE 1.2 (Java 2) | 1998 | Swing, Collections framework, Java plug-in, security and cryptography enhancements |
J2SE 1.3 | 2000 | HotSpot JVM, JPDA (Java Platform Debugger Architecture), JNDI (Java Naming and Directory Interface) |
J2SE 1.4 | 2002 | Regular expressions, NIO (New I/O), assertions, logging API, image I/O API, exception chaining |
J2SE 5.0 (1.5) | 2004 | Generics, enhanced for-loop, autoboxing/unboxing, annotations, enumerations, varargs, concurrency utilities |
Java SE 6 | 2006 | Scripting language support (JSR 223), compiler API, JAXB (Java Architecture for XML Binding), improved web service support |
Java SE 7 | 2011 | Try-with-resources, binary literals, diamond operator, multi-catch exceptions, NIO.2, fork/join framework, underscore in numeric literals |
Java SE 8 | 2014 | Lambda expressions, Stream API, Optional class, method references, default methods in interfaces, new Date and Time API (java.time) |
Java SE 9 | 2017 | Modular system (Project Jigsaw), JShell (interactive Java shell), collection factory methods, private methods in interfaces |
Java SE 10 | 2018 | Local variable type inference (var), garbage collector enhancements |
Java SE 11 | 2018 | New string methods (e.g., isBlank, lines, repeat), file methods (e.g., readString, writeString), HTTP Client API standardization |
Java SE 12 | 2019 | Switch expression enhancements, default JVM class data-sharing (CDS) |
Java SE 13 | 2019 | Text blocks (multi-line string literals), dynamic CDS archives |
Java SE 14 | 2020 | Switch expressions (finalized), records (preview), pattern matching for instanceof (preview) |
Java SE 15 | 2020 | Sealed classes (preview), hidden classes, new garbage collectors (ZGC improvements, Shenandoah) |
Java SE 16 | 2021 | Pattern matching for instanceof, records (standardized), vector API (incubator) |
Java SE 17 | 2021 | Sealed classes (standardized), foreign function and memory API (incubator), removal of deprecated features |
Java SE 18 | 2022 | UTF-8 by default, simple web server, code snippets in API documentation |
Java SE 19 | 2022 | Structured concurrency (incubator), virtual threads (preview), pattern matching enhancements |
Java SE 20 | 2023 | Scoped values, vector API enhancements, more incubator and preview features related to structured concurrency, pattern matching |
This table shows the gradual evolution of Java and the incorporation of modern features while maintaining backward compatibility.