Java was created by the company named as Sun MicroSystems. James Gosling is known as the creator of java language. In 1991, a team named Green team, led by James Gosling started working on java language project. Initially their intention was to develop the language that can be used for digital devices like cell phones, televisions, set-top boxes etc. But when Sun Microsystems released the first version as Java 1.0 in 1995, it's main focus had shifted to use on the Internet.
Initially the name of language was Oak, a tree name which was outside of Gosling office. Later it was renamed as Green and was finally renamed as Java. Gosling designed the syntaxes of Java similar to C/C++, so that programmers could find it easy to use as these languages were already being used by most of the programmers at that time.
On November 13, 2006, Sun released most of its Java virtual machine (JVM) as free and open-source software under the terms of the GNU General Public License (GPL). On May 8, 2007, Sun made all of its JVM's core code available under free software/open-source distribution terms.
What is open source software ?
Open source software is a software whose source code is also released along with software. you can read or change the source code as per your need and can re-distribute as well. You can download and use it without any cost. Java is not completely open source software.
In 2009-10 Oracle acquired Sun Microsystems, Since then all major versions and updates are handled by Oracle. With time Java has evolved as a very successful language to be used on and off the Internet. Today many of the applications and devices which we use on daily basis are using java in one way or other.
History of Java Versions
With time, Java releases different versions of it. The Current(as of Feb 2019) version of java is Java SE 11.
Why do java releases different versions ?
Not only java, every programming language releases different versions with time. Each version comes with some new features, enhancement in existing feature if any, and also removes/correct any error/bug in previous version.
The first version of java was released on January 23, 1996. Codename Oak. The first stable version was JDK 1.0.2. It consist around 250 classes. Applets were the big addition in this version. This version was having lots of bugs and was slow as well.
JDK 1.1 was released on February 19, 1997. It was little faster than first version. It consist around 500 classes. Some of the major additions included:
- Java Database connectivity(JDBC)
- Addition of inner classes
- Java Beans
- RMI(Remote method Invocation)
- Reflection(Introspection only)
- JIT(Just in Time) compiler for Windows platforms
J2SE 1.2 was released on December 8, 1998. Codename Playground. It consist around 2300 classes. Java 1.2 to 1.4 was re-branded as Java 2 because it came in three flavor, J2SE (Java 2 Platform, Standard Edition), J2ME (Java 2 Platform, Micro Edition) and J2EE(Java 2 Platform, Enterprise Edition). Sooner it becomes the language of choice for new enterprise(especially web-based) and mobile applications. Some of the major addtions included:
- Collection framework
- Just in Time (JIT) compiler included in Sun JVM
- Swing graphical API was integrated into the core classes.
- Scrollable result sets, BLOB, CLOB, batch update, user-defined types etc included in JDBC
- Audio support in Applets.
J2SE 1.3 was released on May 8, 2000. Codename Kestrel. Some of the major additions included:
- Jar Indexing
- Java Sound
- RMI was modified to support optional compatibility with CORBA
- Java Naming and Directory Interface (JNDI) included in core libraries (previously available as an extension)
- Java Platform Debugger Architecture (JPDA)
J2SE 1.4 was released on February 6, 2002. It was first release developed under Java Community Process(JCP). Codename Merlin. Major additions included:
- Integrated XML parser and XSLT processor (JAXP)
- Logging API
- JDBC 3.0 API
- Exception chaining
- Java Web Start
- Image I/O API for reading and writing images in formats like JPEG and PNG
- Regular Expressions
- Internet Protocol version 6 (IPv6) support
Codenamed Tiger and released on September 30, 2004. Version numbers "1.5.0" and "5.0" are used to refer same version of Java 2 Platform Standard Edition. The number was changed to reflect the level of maturity, stability, scalability and security of J2SE. Version "5.0" is the product version, while "1.5.0" is the developer version or internal version number. It consist more than 3500 classes. Some major additions included:
- Enhanced for Loop
- Static Import
- Metadata (Annotations)
Java SE 6
Codename Mustang and released on December 11, 2006. Sun replaced the name "J2SE" with Java SE and dropped the ".0" convention from the version number, while internal numbering for developer remains 1.6.0. Some of the new features included in Java SE 6:
- JDBC 4.0 API
- Scripting Language Support
- Java Compiler API - an API allowing a Java program to select and invoke a Java Compiler programmatically
- Support for pluggable annotations
- Improved Web Service support through JAX-WS
Java SE 7
Codename Dolphin. Java SE 7 was released on July 28, 2011. Some new features in Java SE 7 included:
- Strings in switch Statement
- Catching multiple exception types
- Support for Dynamic Languages
- Automatic resource management using try with resources
- Allowing underscores in numeric literals
- Timsort is used to sort collections and arrays of objects instead of merge sort
- Concurrency utilities
Java SE 8
Java 8 was released on 18 March 2014. The codename culture is dropped with Java 8 and so no official code name from onward. Some of the additions/modifications in Java SE 8 included:
- Lambda Expressions
- Date and Time API
- Annotation on Java Types
- Concurrent Accumulators
- Remove the permanent generation
Java SE 9
Java 9 was released on 21 September 2017. Some of the important additions/modifications in Java SE 9 included:
- The Java Platform module system
- jlink: The Java Linker
- jshell: The Java Shell (Read-Eval-Print Loop)
- Convenience Factory Methods for Collections
- Stream API improvements
- Private interface methods
- New Version-String Scheme
- Remove Launch-Time JRE Version Selection
- Compile for Older Platform Versions
Java SE 10
Java 10 was released on 20 March 2018. Some of the important additions/modifications in Java SE 10 included:
- APIs for Creating Unmodifiable Collections
- Application Data-Class Sharing
- Experimental Java-Based JIT Compiler
- Parallel Full GC for G1
- Garbage Collector Interface
- Remove the Native-Header Generator Tool
- Thread-Local Handshakes
- Heap Allocation on Alternative Memory Devices
- Bytecode Generation for Enhanced for Loop
- Additional Unicode Language-Tag Extensions
Java SE 11
Java 11 was released on September 2018. Some of the important additions/modifications in Java SE 11 included:
- Launch Single-File Source-Code Programs
- Local-Variable Syntax for Lambda Parameters
- Nest-Based Access Control
- Epsilon, A No-Op Garbage Collector
- Lazy Allocation of Compiler Threads
- ZGC A Scalable Low-Latency Garbage Collector
- Low-Overhead Heap Profiling
- Enhanced KeyStore Mechanisms
- Transport Layer Security (TLS) 1.3
- Removal of Thread.destroy() and Thread.stop(Throwable) Methods
- Removal of SNMP Agent
- Remove the Java EE and CORBA Modules
- Removal of Java Deployment Technologies
- Removal of JavaFX from the Oracle JDK
Is java SE 11 free or paid ?
If you want to use java 11 for commercial purpose then yes, you will have to pay and buy license from oracle to use it. But for development and testing purposes, it's free, you can download and use it without any cost.