Summary of differences between Java versions?
What are the major differences in between Java version in terms of software development? Where can one find a summary of the most important changes related to programming?
The Release Notes such as http://www.oracle.com/technetwork/java/javase/releasenotes-136954.html can be hard to read.
For example there is new code structure "for each" in Java 1.5.
This is a summary of the excellent Wikipedia article about the Java version history. It is highly selective (and biased on what I know and use), otherwise it would simply turn out to be a copy of the article.
The bold parts are what really brought the language forward as a whole. As you see, not every release has bold parts.
Java 11
Language changes:
Library changes:
- JEP 321 Http Client standardized
Java 10
Language changes:
- Local variable type inference (
var
keyword)
Java 9
Language changes:
- further continuation of Project Coin (small language improvements)
Library changes:
- Java Platform Module System (jigsaw)
- modularization of the platform itself
- makes modules a first-class citizen meant to replace the messy classpath with modules with real dependency information
Other changes:
- People seem to have gotten over the 1.x naming convention, almost no one calls this "Java 1.9".
Java 8 (a.k.a 1.8)
Language changes:
- lambda expressions (JSR 335, includes method handles)
- continuation of Project Coin (small language improvements)
- annotations on Java types
Library changes:
Java 7 (a.k.a 1.7)
JSR 336, features and enhancements
Language changes:
- Project Coin (small changes)
switch
on Strings- try-with-resources
- diamond operator
Library changes:
- new abstracted file-system API (NIO.2) (with support for virtual filesystems)
- improved concurrency libraries
- elliptic curve encryption
- more incremental upgrades
Platform changes:
Java 6 (a.k.a 1.6)
JSR 270. features and enhancements
Mostly incremental improvements to existing libraries, no new language features (except for the
@Override
snafu).Java 5 (a.k.a 1.5)
JSR 176, features and enhancements
Language Changes:
- generics (that's the big one)
- annotations
enum
types- varargs, enhanced for loops (for-each)
Library changes:
- concurrency utilities in
java.util.concurrent
Java 1.4
Language changes:
Library changes:
- regular expressions support
- NIO
- integrated XML handling
Java 1.3
Mostly minor improvements, really.
Platform changes:
- HotSpot JVM: improvement over the original JIT
Java 1.2
Language changes:
Library changes:
- a unified collections system
- Swing as a new UI-System on top of AWT
Platform changes
- a real JIT, greatly improving speed
Java 1.1
Language changes:
- inner classes
Library changes:
- AWT event changes
- JDBC, RMI
- reflection
Java 1.0
Initial release, everything is new ;-)
The explanation for why Java 6 had so little changes seems to be at JSR 270 page: it looks like back then, they were experimenting with idea of _time-driven_ releases instead of _feature-driven_: "goal is to ship feature releases on a regular 18-24 month cycle..."
@gnat: that sounds about right, but the answer is stuffed enough as it is, I'd like to keep additional info like this out of the list.
@JoachimSauer yup, your answer sounds about right without these details "embedded". Though... it probably wouldn't hurt if you add links to respective umbrella JSRs for 1.4 and later releases, that would implicitly cover it, along with maybe more details
Hey Axel, please do not feel bad, at all. Certainly let's blame the web! Why can't we republish the contet from Wikipedia here on PE? Why do we have to resort to copy and paste? Why is there no mechanism to display content from Wikipedia in pE? IMO this should be basic stuff. Imagine java 1.9 comes out what do you think. Which page will be kept uptodate ?this answer is just copy and paste, programmers should avoid it, no?
@AndreasScheinert: the focus of Wikipedia is different from SE. The full Wikipedia article would definitely be too much information for this question. Also, I think that the licenses would not allow copy-and-paste of content.
License under CC-BY-SA with attribution
Content dated before 6/26/2020 9:53 AM
Axel Kemper 8 years ago
In the compiled Java documentation from http://javadoc.allimant.org, you'll find a *what's new?* section in the table of contents. A Java Version History is available on Wikipedia.