Java turned 28 this week! Here are my 28 favourite features/APIs in it.
What are your favourite features/APIs comment below?
Java 2 introduced the collections framework.
"The collections framework is a unified architecture for representing and manipulating collections... It reduces programming effort while increasing performance"
P.S. Oh yeah! I used generics \o/
Java 4 introduced NIO (New Input/Output) API. They were high level abstraction APIs designed to provide efficient operations on the low-level I/O operations. Later on Java 7 extended these non-blocking I/O for filesystem access.
Java 5 came with Generics. Hate it or love it. IMHO this is one of the key features to be released at that time. It reduced bugs and added an extra layer of abstraction over types.
Annotation was another feature Java 5 came with.
"Annotations, a form of metadata, provide data about a program that is not part of the program itself. Annotations have no direct effect on the operation of the code they annotate."
Java 5 also introduced Varargs. They provided a short-hand for methods that support an arbitrary number of parameters of one type.
Java 5 also improved concurrency.
I loved this enhanced for-each loop when it was released. It was easy and who cares about the index when all you need is the value.
Java 6 is all about performance there were huge performance improvements for the core platform and even on Swing. It is in Java 6 we saw a few new GC algorithms too.
Java 7 replaced MergeSort to TimSort for the Collections and Arrays sorting 🚀
Java 8 is an amazing release. Project Lambda is the pinnacle of this release.
Java 8 introduced Optional to prevent us from NPE.
"A container object which may or may not contain a non-null value. If a value is present, isPresent() will return true and get() will return the value."
Lambda's are amazing and they organically lead to Functional interfaces.
"A functional interface in Java is an interface that contains only a single abstract (unimplemented) method."
Java 9 brought in JShell.
"JShell is a REPL tool, which evaluates declarations, statements, and expressions as they are entered and immediately shows the results. The tool is run from the command line."
Remember Zigsaw from Java 9.
"The Java Platform Module System specifies a distribution format for collections of Java code and associated resources"
Java 10 released with much awaited Local Variable Type inference a.k.a "var". The verbose Java becomes inferred Java.
Major release every 6 months. Reduced the release cycle duration. No long wait for newer version and features.
Java 11 came with Flight Recorder, which provided a low-overhead data collection framework for troubleshooting Java applications and the HotSpot JVM.
Java 11 allowed us to launch single file Java programs via Java command.
Java 11 bid farewell to Java Applets / Java Web Start / JavaFX and others.
Java 12 came with switch expressions
Java 12 also introduced a new GC algorithm named Shenandoah. This amazing algorithm provided consistent pause time irrespective of your heap size.
Java 13 came with Text Blocks. Multi-line texts made easy.
Java 14 launched with Pattern Matching for instanceof
JEP 305, Pattern Matching for instanceof simplifies the common case of an instanceof test being immediately followed by cast (see the code snippet)
Java 14 also launched with Records.
Records allows easy creation of simple immutable Tuple-like classes.
Java 15 introduced sealed classes.
My blog post that talks about sealed classes and interfaces - https://sendilkumarn.com/blog/java-17
Java 16 came with Vector API.
"Single instruction, multiple data (SIMD)"
Jumping to Java21, it finalized and introduced virtual threads to the java platform.
"Virtual threads are lightweight threads that dramatically reduce the effort of writing, maintaining, and observing high-throughput concurrent applications."
Last but not least! The amazing community of #java ❤️
What are your favorite features of #java comment below?
sendilkumarn@java turns 28 today!
Here is a thread on my favorite Java features/APIs/releases 🧵21:44 PM - 23 May 2023Sharat Chander 🟧 @Sharat_Chander☕️☕️🎂🎂🥳🥳🎂🎂☕️☕️ Happy Birthday, #Java! 28 amazing years! What's your favorite Java memory or photo? Post now and use the #28YearsOfJava hashtag! Stay connected: https://t.co/7WRXM7EvX8 ☕️☕️🎂🎂🥳🥳🎂🎂☕️☕️ https://t.co/jj3AM0yKbT