Java is an object-oriented, class-based programming language. It's one of the top programming languages in the world, used by over 10 million developers.

As of September 2019, the latest version of Java is Java 13, while Java 8 has the most adoption. Originally created by James Gosling at Sun Microsystems, Java is now owned by Oracle.

Java logo

Java Version History

  • Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)
  • Microbenchmark Suite
  • Switch Expressions (Preview)
  • JVM Constants API
  • One AArch64 Port, Not Two
  • Default CDS Archives
  • Abortable Mixed Collections for G1
  • Promptly Return Unused Committed Memory from G1
  • Dynamic class-file constants
  • Epsilon: a no-op garbage collector
  • Local-variable syntax for lambda parameters
  • Low-overhead heap profiling
  • HTTP client (standard)
  • Transport Layer Security (TLS) 1.3
  • Flight recorder
  • ZGC: a scalable low-latency garbage collector (Experimental)
  • JavaFX, Java EE and CORBA modules have been removed from JDK
  • Deprecated the Nashorn JavaScript engine
  • Unicode 10.0.0 support
  • Local-variable type inference
  • Experimental Java-based JIT compiler. This is the integration of the Graal dynamic compiler for the Linux x64 platform
  • Application class-data sharing. This allows application classes to be placed in the shared archive to reduce startup and footprint for Java applications
  • Time-based release versioning
  • Parallel full GC for G1
  • JGarbage-collector interface
  • Additional Unicode language-tag extensions
  • Root certificates
  • Thread-local handshakes
  • Heap allocation on alternative memory devices
  • Remove the native-header generation tool – javah
  • Consolidate the JDK forest into a single repository
  • Modularization of the JDK under Project Jigsaw (Java Platform Module System)
  • JShell: The Java Shell (a Java REPL)
  • Ahead-of-time compilation
  • XML catalogs
  • More concurrency updates. It includes a Java implementation of Reactive Streams, including a new Flow class that included the interfaces previously provided by Reactive Streams
  • Variable handles: define a standard means to invoke the equivalents of various java.util.concurrent.atomic and sun.misc.Unsafe operations
  • jlink: The Java Linker: create a tool that can assemble and optimize a set of modules and their dependencies into a custom run-time image. It effectively allows to produce a fully usable executable including the JVM to run it
  • JavaDB was removed from JDK
  • HiDPI graphics: automatic scaling and sizing
  • Compact Strings
  • Milling Project Coin
    • Allow @SafeVargs on private instance methods
    • Allow effectively-final variables to be used as resources in the try-with-resources statement
    • Allow diamond with anonymous classes if the argument type of the inferred type is denotable
    • Complete the removal, begun in Java SE 8, of underscore from the set of legal identifier names
    • Support for private methods in interfaces
  • Lambda expressions
  • Project Nashhorn, which allows developers to embed JavaScript code within applications
  • Annotation on Java types
  • Unsigned integer arithmetic
  • Repeating annotations
  • Date and time API
  • Statically-linked JNI libraries
  • Direct Launch JavaFX JARs
  • Remove permanent generation

Java Developers Also Know

  1. Spring Boot
  2. Apache Maven or Gradle
  3. Hibernate
  4. IntelliJ or Eclipse
  5. JUnit

Java Alternatives

  1. OpenJDK
  2. Kotlin
  3. C#
  4. Python
  5. Scala

Top Java Books

  1. Effective Java
  2. Java Concurrency in Practice
  3. Head First Java
  4. Thinking in Java
  5. Java SE 8 for the Really Impatient

Here is a list of Java related blog posts and tutorials published on this blog. They also cover Java related technologies like Spring Boot, Maven, Tomcat and more.

  1. Basics of Java Garbage Collection
  2. The char Type in Java is Broken
  3. Checked vs Unchecked Exceptions in Java. Why it's so Confusing
  4. What are -Xms and -Xms parameters in Java/JVM
  5. Spring Boot - Replace Tomcat With Jetty As the Embedded Server
  6. Java - How to Cancel Tasks in Executors (With Examples)
  7. How to Stop Threads in Java. Best Practices and Examples.
  8. Java - Convert char to String with Examples
  9. Java Math.pow() Method with Examples
  10. Java PrintWriter Explained with Examples (Java 9+)
  11. Java Math.abs() with Examples
  12. Java Math.ceil() Method with Examples
  13. Java Math.floor() Method with Examples
  14. Java Math.random() Method with Examples
  15. Java Math.round() with Examples
  16. Java Math.sqrt() Method with Examples
  17. Java String to int with examples
  18. Fibonacci Series in Java
  19. Java Stream to Array Conversion
  20. ArrayList to Array Conversion in Java
  21. Java char Array to String Conversion
  22. Java String to Char Array Conversion
  23. Priority Queue in Java - Tutorial with Examples
  24. Java - How to Get Keys and Values from Map
  25. Array Length in Java with Examples
  26. Class Definition in Java
  27. Stack Class in Java Explained with Examples
  28. Java String Length() Method with Examples
  29. Java ArrayList Tutorial with Examples
  30. Inheritance in Java
  31. What is the Default Administrator Password for Tomcat?
  32. LinkedList in Java
  33. Best Java IDEs in 2020
  34. Spring Boot - Change Default Tomcat Port
  35. Spring Boot - Enable HTTP Compression in Tomcat
  36. What is the 'static' keyword in Java?
  37. Complete Guide to Java 8 forEach
  38. How to Simulate OutOfMemory Error in Java
  39. Java Object.getClass() Method with Examples
  40. Marker Interfaces in Java with Examples
  41. Can we override a protected method in Java?
  42. Java Records
  43. How To Declare and Initialize Arrays in Java
  44. Spring Boot Actuator