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.
1
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
JSR 384, what’s new
Language changes:
- Local-Variable Syntax for Lambda Parameters
Library changes:
- JEP 321 Http Client standardized
Java 10
JSR 383, what’s new
Language changes:
- Local variable type inference (
var
keyword)
Java 9
JSR 379, what’s new
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)
JSR 337, what’s new
Language changes:
- lambda expressions (JSR 335, includes method handles)
- continuation of Project Coin (small language improvements)
- annotations on Java types
Library changes:
- Improved Date and Time API
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:
- support for dynamic languages
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
JSR 59
Language changes:
- the
assert
keyword
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:
- the
strictfp
keyword
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 😉
5