Java Version

Release Date

  • JDK 1.0 (January 23, 1996)
  • JDK 1.1 (February 19, 1996)
  • J2SE 1.2 (December 8, 1998)
  • J2SE 1.3 (May 8, 2000)
  • J2SE 1.4 (February 6, 2002)
  • J2SE 5.0 (September 30, 2004)
  • Java SE 6 (December 11, 2006)
  • Java SE 7 (July 28, 2011)
  • Java SE 8 (March 18, 2014)
  • Java SE 9 (September 21, 2017)
  • Java SE 10 (March 20, 2018)
  • Java SE 11 (September 25, 2018)[38]
  • Java SE 12 (March 19, 2019)
  • Java SE 13 (September 17, 2019)

JDK 1.0

  • 1996년에 발표된 최초버전

JDk 1.1

  • Inner Class, Java Bean, JDBC, RMI, reflection, JIT for windows, Internationalization, and Unicode

J2SE 1.2~1.4

  • 기반 플랫폼을 구분하기 위해 J2SE, J2EE, J2ME로 리브랜딩 (J2SE는 Java2 Standard Edition의 약자)
  • Collections
  • strictfp
  • HotSpotVM
  • CORBA
  • JNDI
  • assert, RegExr from Perl, Exception Chaining, IPv6, Non-Blocking IO, Logging API, XML and XLT Parser(JAXP), Security and Cryptography

J2SE 5.0

  • Generic, Metadata(annotation), Auto-Boxing/Unboxing, Enum, Vaargs, for-each, Static Import

JavaSE 6

  • 다시 리브랜딩
  • 윈도우9x 지원 중단
  • 대폭 성능개선 (컴파일러, GC 등)
  • JDBC 4.0

JavaSE 7

  • NIO
  • Mergesort -> Timsort
  • 압축된 64비트 포인터(CompressedOops) 지원시작
  • Strings in switch
  • Automatic resource management in try-statement (Disposable)
  • Generic에서 타입추론 지원
  • Simplified varargs method declaration
  • Binary integer literals
  • Allowing underscores in numeric literals
  • Catching multiple exception types and rethrowing exceptions with improved type checking

JavaSE 8

  • Stream
  • Lambda
  • Interface default method, static method

JavaSE 9

  • Jigsaw
  • JShell
  • HTML5 JavaDoc
  • G1GC
  • Interface private method, constant
  • New API: Process, Platform logging, CompletableFuture 강화, Reactive Stream
  • 컬렉션 메소드의 펙토리 메서드들이 추가됨 (interface method)
  • 스트림 메서드 추가 (iterate(), takeWhile()/dropWhile(), ofNullable())
  • Optional 개선

JavaSE 10

  • JEP 286: Local-variable type inference[331]
  • JEP 317: Experimental Java-based JIT compiler.[332] This is the integration of the Graal dynamic compiler for the Linux x64 platform JEP 310: Application class-data sharing.[333] This allows application classes to be placed in the shared archive to reduce startup and footprint for Java * applications
  • JEP 322: Time-based release versioning[334]
  • JEP 307: Parallel full GC for G1[335]
  • JEP 304: Garbage-collector interface[336]
  • JEP 314: Additional Unicode language-tag extensions[337]
  • JEP 319: Root certificates[338]
  • JEP 312: Thread-local handshakes[339]
  • JEP 316: Heap allocation on alternative memory devices[340]
  • JEP 313: Remove the native-header generation tool – javah[341]
  • JEP 296: Consolidate the JDK forest into a single repository[342]

JavaSE 11

  • JEP 309: Dynamic class-file constants[350]
  • JEP 318: Epsilon: a no-op garbage collector[351]
  • JEP 323: Local-variable syntax for lambda parameters[352]
  • JEP 331: Low-overhead heap profiling[353]
  • JEP 321: HTTP client (standard)[354]
  • JEP 332: Transport Layer Security (TLS) 1.3[355]
  • JEP 328: Flight recorder[356]
  • JEP 333: ZGC: a scalable low-latency garbage collector (Experimental)[357]
  • JavaFX, Java EE and CORBA modules have been removed from JDK[358]
  • JEP 335: Deprecated the Nashorn JavaScript engine[359]
  • Unicode 10.0.0 support (while current version is Unicode 11.0.0, it’s only in Java 12[360])

JavaSE 12

  • Class data sharing
  • Switch-Case pattern matching
  • 원시 문자 리터럴
  • JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)[368]
  • JEP 230: Microbenchmark Suite[369]
  • JEP 325: Switch Expressions (Preview)[370]
  • JEP 334: JVM Constants API[371]
  • JEP 340: One AArch64 Port, Not Two[372]
  • JEP 341: Default CDS Archives[373]
  • JEP 344: Abortable Mixed Collections for G1[374]
  • JEP 346: Promptly Return Unused Committed Memory from G1[375]

JavaSE 13

  • JEP-350: Dynamic CDS Archives
  • JEP-351: ZGC: Uncommit Unused Memory
  • JEP-353: Reimplement the Legacy Socket API
  • JEP-354: Switch Expressions (Preview)
  • JEP-355: Text Blocks (Preview)