SlideShare une entreprise Scribd logo
1  sur  55
Télécharger pour lire hors ligne
Retrospect and
Prospect of Java
Joseph S. Kuo (CyberJos)
Technical Lead (Principal Engineer)
Taiwan 2018
#JCConf
About Me
• 數學系出身。24年程式資歷,20年Java資歷
• 撰寫過Basic, C/C++, LPC, Java, JavaScript, Python, 族繁不
…及備載…
• 擔任過電腦資訊講師, 曾在簡訊服務商、 遊戲雲端平台、
全球電子商務網站、資訊安全防護、使用者行為管理等公司
中任職。JCConf 講者。
• 負責程式撰寫、軟體設計、架構規劃及技術教學,並參與各式
專案設計、架構、開發、實作與維護
• 希望能一輩子玩技術寫程式到老
#JCConfTaiwan 2018
Agenda
• Overview
• Retrospect of Java
• Features in 9, 10, 11
• Prospect of Java
#JCConfTaiwan 2018
Overview
#JCConfTaiwan 2018
“A simple, object-oriented, distributed,
interpreted, robust, secure, architecture
neutral, portable, high-performance,
multi-threaded, and dynamic language.”
— Sun
#JCConfTaiwan 2018
History
• 1991: Oak language is born
• 1994: Java 1.0a became available for download
• 1995-05-23: Java 1.0a2 released with HotJava browser.
• 1995: Sun renamed Oak to Java.
• 1996-01-23: Java 1.0 released
• 1996-05-29: 1st
JavaOne Conference, > 6k attendees
• 1997: > 400k developers, 2nd
JavaOne, > 10k attendees
• 1998: 3rd
JavaOne, >15k attendees (Java Ring)
• 1999: J2SE, J2EE, J2ME
#JCConfTaiwan 2018
History
• 2000: Java is applied from servers to devices
• 2005: 10 years, 4.5M developers, 2.5B devices
• 2006: Java is open sourced
• 2007: first version of OpenJDK is released
• 2011-07-07: Java SE 7 released (OpenJDK)
• 2015: 20 years, > 12M developers, 15B devices
• 2017-09-21: Java SE 9 released
• 2018-03-20: Java SE 10 released
• 2018-09-25: Java SE 11 released
#JCConfTaiwan 2018
#JCConfTaiwan 2018
Source: https://www.tiobe.com/tiobe-index/
TIOBE Popularity Ranking
#JCConfTaiwan 2018
TIOBE Popularity Trend
Source: https://www.tiobe.com/tiobe-index/
#JCConfTaiwan 2018
Source: https://www.tiobe.com/tiobe-index/
TIOBE Popularity History
#JCConfTaiwan 2018
Source: https://trendyskills.com/
Trendy Skills
#JCConfTaiwan 2018
Source: https://trendyskills.com/
Trendy Skills
#JCConfTaiwan 2018
Source: https://blog.newrelic.com/technology/popular-programming-languages-2017/
New Relic 2017
#JCConfTaiwan 2018
Source: https://octoverse.github.com/
GitHub Pull Requests
#JCConfTaiwan 2018
Source: https://insights.stackoverflow.com/survey/2018
stackoverflow Survey
Retrospect of Java
#JCConfTaiwan 2018
From 1.0 to 8
#JCConfTaiwan 2018
JDK 1.0 (1996-01-23)
• First stable version, JDK 1.0.2, is called Java 1
• Syntax is similar with C/C++
• No pointer, no operator overloading, no multiple
inheritance
• Object class
• Interface
• Package system
• AWT
• Garbage Collection
#JCConfTaiwan 2018
JDK 1.1 (1997-02-19)
• Inner class
• JavaBeans (java.beans package)
• JDBC
• RMI
• Reflection supported introspection
• I18n and Unicode
#JCConfTaiwan 2018
J2SE 1.2 (1998-12-08)
• Codename: Playground
• Collections Framework
• Added keyword: strictfp
• Java plug-in
• Integration of Swing graphical API into core classes
• JIT compiler in Sun’s JVM for the first time
#JCConfTaiwan 2018
J2SE 1.3 (2000-05-08)
• Codename: Kestrel
• HotSpot JVM (released in 1999-04)
• JNDI included in core libraries (was an extension)
• Java Platform Debugger Architecture
• JavaSound
• Synthetic Proxy classes
#JCConfTaiwan 2018
J2SE 1.4 (2002-02-06)
• Codename: Merlin (JSR 59)
• First Java platform developed under JCP
• Added keyword: assert (JSR 41)
• Regular Expression
• Exception chaining allows to encapsulate exceptions
• IPv6
• Java NIO (JSR 51)
• Logging API (JSR 47)
#JCConfTaiwan 2018
J2SE 1.4 (2002-02-06)
• Image I/O
• Java Web Start (JSR 56)
• Preferences API (java.util.prefs)
• JAXP: XML parser (JSR 5) and XSTL processor (JSR 63)
• Integrated security components: JCE, JSSE, JAAS
#JCConfTaiwan 2018
J2SE 5.0 (2004-09-30)
• Codename: Tiger (JSR 176)
• Generic Types (JSR 14)
• Enumerations (JSR 201)
• Auto-boxing/unboxing (JSR 201)
• Enhanced foreach loop (JSR 201)
• Vararg
• Metadata (Annotation) (JSR 175)
• New Java memory model
• Static imports
#JCConfTaiwan 2018
J2SE 5.0 (2004-09-30)
• Concurrency utilities (java.util.concurrent)
• Scanner and Formatter
• Unicode 4.0
• JConsole
#JCConfTaiwan 2018
Java SE 6 (2006-12-11)
• Codename: Mustang (JSR 270)
• Scripting language support and Rhino engine(JSR 223)
• Core and Swing performance improvements
• JAX-WS (JSR 224)
• JDBC 4.0 (JSR 221)
• Java Compiler API (JSR 199)
• JAXB 2.0 including integration with StAX parser
• Java I/O Console
#JCConfTaiwan 2018
Java SE 7 (2011-07-07)
• Codename: Dolphin (JSR 336)
• JVM supported for dynamic languages: invokedynamic
(JSR 292)
• Compressed 64-bit pointers
• Project Coin:
– String in switch
– try-with-resources
– Type inference for generic: diamond operator
– Binary integer literals
– Allowing underscores in numeric literals
– Catching multiple exception types and re-throwing
#JCConfTaiwan 2018
Java SE 7 (2011-07-07)
• Concurrency utilities (JSR 166)
• New file I/O library (java.nio.file) (JSR 203)
• Elliptic Curve Cryptography support (ECDSA/ECDH)
• Support new network protocols (SCTP, SDP)
• Fork/Join framework
• Unicode 6.0
• G1GC
• JDBC 4.1
#JCConfTaiwan 2018
Java 8 (2014-03-18)
• Defined by JSR 337
• Organized in terms of JDK Enhancement Proposals
• Lambda Expression (JSR 335, JEP 126)
• Method references (::) (JEP 126)
• Functional Interfaces
• Default methods
• Stream
• Nashorn JavaScript runtime (JSR 223, JEP 174)
• Date and Time API (JSR 310, JEP 150)
#JCConfTaiwan 2018
Java 8 (2014-03-18)
• Annotations on Java Types (JSR 308, JEP 104)
• Removed Permanent Generation (JEP 122)
• Unicode 6.2 (JEP 133)
• JDBC 4.2 (JEP 170)
#JCConfTaiwan 2018
Features in 9, 10, 11
#JCConfTaiwan 2018
Java 9
#JCConfTaiwan 2018
Java SE 9 (2017-09-21)
• Defined by JSR 379
• Jigsaw (JSR 376)
• Java REPL - jshell (JEP 222)
• XML Catalogs (JEP 268)
• Currency update (JEP 266)
• HTTP 2 Client (JEP 110)
• UTF-8 Property File (JEP 226)
• Unicode 7 (227), Unicode 8 (267)
#JCConfTaiwan 2018
Java SE 9 (2017-09-21)
• Convenience Factory Methods for Collections (JEP 269)
• G1 is default GC (JEP 248)
• Applet API and Java plug-in deprecated (JEP 289)
• Ahead-of-Time Compilation (JEP 295)
• Java-Level JVM Compiler Interface (JEP 243)
• ...(others)
#JCConfTaiwan 2018
#JCConfTaiwan 2018
JShell, Unicode 8, G1GC
#JCConfTaiwan 2018
Private in interface
Java 10
#JCConfTaiwan 2018
Java SE 10 (2018-03-20)
• Local-variable type inference (JEP 286)
• Parallel Full GC for G1 (JEP 307)
• Application Class-Data Sharing (JEP 310)
• Garbage-Collector Interface (JEP 304)
• Thread-Local Handshakes (JEP 312)
• Root Certificates (JEP 319)
• Experimental Java-Based JIT Compiler (JEP 317)
#JCConfTaiwan 2018
#JCConfTaiwan 2018
Local-variable type inference
Parallel Full GC for G1
• The G1 garbage collector is designed to avoid full
collections, but when the concurrent collections can't
reclaim memory fast enough a fall back full GC will occur.
• The current implementation of the full GC for G1 uses a
single threaded mark-sweep-compact algorithm. We
intend to parallelize the mark-sweep-compact algorithm
and use the same number of threads as the Young and
Mixed collections do.
• The number of threads can be controlled by the
-XX:ParallelGCThreads option, but this will also affect
the number of threads used for Young and Mixed
collections.
#JCConfTaiwan 2018
Application Class-Data Sharing
• Currently CDS only allows the bootstrap class loader to
load archived classes. Application CDS ("AppCDS")
extends CDS to allow the built-in system class loader
(a.k.a., the "app class loader"), the built-in platform class
loader, and custom class loaders to load archived classes.
• By default, Class-Data Sharing is enabled only for the
JVM's bootstrap class loader. Specify the -XX:+UseAppCDS
command-line option to enable class data sharing for
other loaders.
• java -Xshare:off -XX:+UseAppCDS -XX:DumpLoadedClassList=x.lst -cp x.jar HelloWorld
java -Xshare:dump -XX:+UseAppCDS -XX:SharedClassListFile=x.lst 
-XX:SharedArchiveFile=x.jsa -cp x.jar
java -Xshare:on -XX:+UseAppCDS -XX:SharedArchiveFile=x.jsa 
-cp x.jar HelloWorld
#JCConfTaiwan 2018
Experimental Java-Based JIT Compiler
• Enable Graal to be used as an experimental JIT compiler,
starting with the Linux/x64 platform. Graal will use the
JVM compiler interface (JVMCI) introduced in JDK 9.
Graal is already in the JDK, so enabling it as an
experimental JIT will primarily be a testing and
debugging effort.
• To enable Graal as the JIT compiler, use the following
options on the java command line:
-XX:+UnlockExperimentalVMOptions -XX:
+UseJVMCICompiler
#JCConfTaiwan 2018
Java 11
#JCConfTaiwan 2018
Java SE 11 (2018-09-25)
• Epsilon: A No-Op Garbage Collector (JEP 318)
• ZGC: A Scalable Low-Latency Garbage Collector
(Experimental) (JEP 333)
• Remove the Java EE and CORBA Modules (JEP 320)
• HTTP Client (Standard) (JEP 321)
• Local-Variable Syntax for Lambda Parameters (JEP 323)
• Low-Overhead Heap Profiling (JEP 331)
• Transport Layer Security (TLS) 1.3 (JEP 332)
#JCConfTaiwan 2018
Java SE 11 (2018-09-25)
• Nest-Based Access Control (JEP 181)
• Flight Recorder (JEP 328)
• Unicode 10 (JEP 327)
• Dynamic Class-File Constants (JEP 309)
• Launch Single-File Source-Code Programs (JEP 330)
• Deprecate the Nashorn JavaScript Engine (JEP 335)
#JCConfTaiwan 2018
#JCConfTaiwan 2018
New APIs in String
#JCConfTaiwan 2018
Local-Variable Syntax
#JCConfTaiwan 2018
HTTP Client
#JCConfTaiwan 2018
Launch Single File
#JCConfTaiwan 2018
ZGC vs G1GC
Prospect of Java
#JCConfTaiwan 2018
Java SE 12 (2019-03-19)
• Switch Expressions (Preview) (JEP 325)
• Raw String Literals (Preview) (JEP 326)
• One AArch64 Port, Not Two (JEP 340)
• Default CDS Archives (JEP 341)
#JCConfTaiwan 2018
Switch Expression
int numLetters = switch (day) {
case MONDAY, FRIDAY, SUNDAY -> 6;
case TUESDAY -> 7;
case THURSDAY, SATURDAY -> 8;
case WEDNESDAY -> 9;
};
#JCConfTaiwan 2018
Raw String Literals
String html = `
<html>
<body>
<p>Hello World.</p>
</body>
</html>
`.align().ident(4);
System.out.print(html);
#JCConfTaiwan 2018
Thank you!
#JCConfTaiwan 2018

Contenu connexe

Tendances

The OMR GC talk - Ruby Kaigi 2015
The OMR GC talk - Ruby Kaigi 2015The OMR GC talk - Ruby Kaigi 2015
The OMR GC talk - Ruby Kaigi 2015craig lehmann
 
[JavaOne 2011] Models for Concurrent Programming
[JavaOne 2011] Models for Concurrent Programming[JavaOne 2011] Models for Concurrent Programming
[JavaOne 2011] Models for Concurrent ProgrammingTobias Lindaaker
 
Java 9: The (G1) GC Awakens!
Java 9: The (G1) GC Awakens!Java 9: The (G1) GC Awakens!
Java 9: The (G1) GC Awakens!Monica Beckwith
 
Graal and Truffle: One VM to Rule Them All
Graal and Truffle: One VM to Rule Them AllGraal and Truffle: One VM to Rule Them All
Graal and Truffle: One VM to Rule Them AllThomas Wuerthinger
 
JVM JIT-compiler overview @ JavaOne Moscow 2013
JVM JIT-compiler overview @ JavaOne Moscow 2013JVM JIT-compiler overview @ JavaOne Moscow 2013
JVM JIT-compiler overview @ JavaOne Moscow 2013Vladimir Ivanov
 
Why scala is not my ideal language and what I can do with this
Why scala is not my ideal language and what I can do with thisWhy scala is not my ideal language and what I can do with this
Why scala is not my ideal language and what I can do with thisRuslan Shevchenko
 
Java collections the force awakens
Java collections  the force awakensJava collections  the force awakens
Java collections the force awakensRichardWarburton
 
Introduction to OpenCL, 2010
Introduction to OpenCL, 2010Introduction to OpenCL, 2010
Introduction to OpenCL, 2010Tomasz Bednarz
 
Jvm profiling under the hood
Jvm profiling under the hoodJvm profiling under the hood
Jvm profiling under the hoodRichardWarburton
 
Know yourengines velocity2011
Know yourengines velocity2011Know yourengines velocity2011
Know yourengines velocity2011Demis Bellot
 
Speculative Execution of Parallel Programs with Precise Exception Semantics ...
Speculative Execution of Parallel Programs with Precise Exception Semantics ...Speculative Execution of Parallel Programs with Precise Exception Semantics ...
Speculative Execution of Parallel Programs with Precise Exception Semantics ...Akihiro Hayashi
 
Weaving Dataflows with Silk - ScalaMatsuri 2014, Tokyo
Weaving Dataflows with Silk - ScalaMatsuri 2014, TokyoWeaving Dataflows with Silk - ScalaMatsuri 2014, Tokyo
Weaving Dataflows with Silk - ScalaMatsuri 2014, TokyoTaro L. Saito
 
Владимир Иванов. Java 8 и JVM: что нового в HotSpot
Владимир Иванов. Java 8 и JVM: что нового в HotSpotВладимир Иванов. Java 8 и JVM: что нового в HotSpot
Владимир Иванов. Java 8 и JVM: что нового в HotSpotVolha Banadyseva
 
HC-4021, Efficient scheduling of OpenMP and OpenCL™ workloads on Accelerated ...
HC-4021, Efficient scheduling of OpenMP and OpenCL™ workloads on Accelerated ...HC-4021, Efficient scheduling of OpenMP and OpenCL™ workloads on Accelerated ...
HC-4021, Efficient scheduling of OpenMP and OpenCL™ workloads on Accelerated ...AMD Developer Central
 
Let's talk about Garbage Collection
Let's talk about Garbage CollectionLet's talk about Garbage Collection
Let's talk about Garbage CollectionHaim Yadid
 
Advanced Spark and TensorFlow Meetup May 26, 2016
Advanced Spark and TensorFlow Meetup May 26, 2016Advanced Spark and TensorFlow Meetup May 26, 2016
Advanced Spark and TensorFlow Meetup May 26, 2016Chris Fregly
 
Flutter 是什麼?用 Flutter 會省到時間嗎? @ GDG Devfest2020
Flutter 是什麼?用 Flutter 會省到時間嗎? @ GDG Devfest2020Flutter 是什麼?用 Flutter 會省到時間嗎? @ GDG Devfest2020
Flutter 是什麼?用 Flutter 會省到時間嗎? @ GDG Devfest2020Johnny Sung
 

Tendances (20)

Collections forceawakens
Collections forceawakensCollections forceawakens
Collections forceawakens
 
The OMR GC talk - Ruby Kaigi 2015
The OMR GC talk - Ruby Kaigi 2015The OMR GC talk - Ruby Kaigi 2015
The OMR GC talk - Ruby Kaigi 2015
 
[JavaOne 2011] Models for Concurrent Programming
[JavaOne 2011] Models for Concurrent Programming[JavaOne 2011] Models for Concurrent Programming
[JavaOne 2011] Models for Concurrent Programming
 
Java 9: The (G1) GC Awakens!
Java 9: The (G1) GC Awakens!Java 9: The (G1) GC Awakens!
Java 9: The (G1) GC Awakens!
 
Graal and Truffle: One VM to Rule Them All
Graal and Truffle: One VM to Rule Them AllGraal and Truffle: One VM to Rule Them All
Graal and Truffle: One VM to Rule Them All
 
JVM JIT-compiler overview @ JavaOne Moscow 2013
JVM JIT-compiler overview @ JavaOne Moscow 2013JVM JIT-compiler overview @ JavaOne Moscow 2013
JVM JIT-compiler overview @ JavaOne Moscow 2013
 
Why scala is not my ideal language and what I can do with this
Why scala is not my ideal language and what I can do with thisWhy scala is not my ideal language and what I can do with this
Why scala is not my ideal language and what I can do with this
 
Java collections the force awakens
Java collections  the force awakensJava collections  the force awakens
Java collections the force awakens
 
Introduction to OpenCL, 2010
Introduction to OpenCL, 2010Introduction to OpenCL, 2010
Introduction to OpenCL, 2010
 
Jvm profiling under the hood
Jvm profiling under the hoodJvm profiling under the hood
Jvm profiling under the hood
 
Know yourengines velocity2011
Know yourengines velocity2011Know yourengines velocity2011
Know yourengines velocity2011
 
Speculative Execution of Parallel Programs with Precise Exception Semantics ...
Speculative Execution of Parallel Programs with Precise Exception Semantics ...Speculative Execution of Parallel Programs with Precise Exception Semantics ...
Speculative Execution of Parallel Programs with Precise Exception Semantics ...
 
Weaving Dataflows with Silk - ScalaMatsuri 2014, Tokyo
Weaving Dataflows with Silk - ScalaMatsuri 2014, TokyoWeaving Dataflows with Silk - ScalaMatsuri 2014, Tokyo
Weaving Dataflows with Silk - ScalaMatsuri 2014, Tokyo
 
Владимир Иванов. Java 8 и JVM: что нового в HotSpot
Владимир Иванов. Java 8 и JVM: что нового в HotSpotВладимир Иванов. Java 8 и JVM: что нового в HotSpot
Владимир Иванов. Java 8 и JVM: что нового в HotSpot
 
HC-4021, Efficient scheduling of OpenMP and OpenCL™ workloads on Accelerated ...
HC-4021, Efficient scheduling of OpenMP and OpenCL™ workloads on Accelerated ...HC-4021, Efficient scheduling of OpenMP and OpenCL™ workloads on Accelerated ...
HC-4021, Efficient scheduling of OpenMP and OpenCL™ workloads on Accelerated ...
 
NvFX GTC 2013
NvFX GTC 2013NvFX GTC 2013
NvFX GTC 2013
 
Let's talk about Garbage Collection
Let's talk about Garbage CollectionLet's talk about Garbage Collection
Let's talk about Garbage Collection
 
camel-scala.pdf
camel-scala.pdfcamel-scala.pdf
camel-scala.pdf
 
Advanced Spark and TensorFlow Meetup May 26, 2016
Advanced Spark and TensorFlow Meetup May 26, 2016Advanced Spark and TensorFlow Meetup May 26, 2016
Advanced Spark and TensorFlow Meetup May 26, 2016
 
Flutter 是什麼?用 Flutter 會省到時間嗎? @ GDG Devfest2020
Flutter 是什麼?用 Flutter 會省到時間嗎? @ GDG Devfest2020Flutter 是什麼?用 Flutter 會省到時間嗎? @ GDG Devfest2020
Flutter 是什麼?用 Flutter 會省到時間嗎? @ GDG Devfest2020
 

Similaire à JCConf 2018 - Retrospect and Prospect of Java

A tour of Java and the JVM
A tour of Java and the JVMA tour of Java and the JVM
A tour of Java and the JVMAlex Birch
 
Gustavo Garnica: Evolución de la Plataforma Java y lo que Significa para Ti
Gustavo Garnica: Evolución de la Plataforma Java y lo que Significa para TiGustavo Garnica: Evolución de la Plataforma Java y lo que Significa para Ti
Gustavo Garnica: Evolución de la Plataforma Java y lo que Significa para TiSoftware Guru
 
Jozi-JUG JDK 9 Unconference
Jozi-JUG JDK 9 UnconferenceJozi-JUG JDK 9 Unconference
Jozi-JUG JDK 9 UnconferenceHeather VanCura
 
Java Webinar #12: "Java Versions and Features: Since JDK 8 to 16"
Java Webinar #12: "Java Versions and Features: Since JDK 8 to 16"Java Webinar #12: "Java Versions and Features: Since JDK 8 to 16"
Java Webinar #12: "Java Versions and Features: Since JDK 8 to 16"GlobalLogic Ukraine
 
Polygot Java EE on the GraalVM
Polygot Java EE on the GraalVMPolygot Java EE on the GraalVM
Polygot Java EE on the GraalVMRyan Cuprak
 
New Features of Java7 SE
New Features of Java7 SENew Features of Java7 SE
New Features of Java7 SEdogangoko
 
Application Architecture Trends
Application Architecture TrendsApplication Architecture Trends
Application Architecture TrendsSrini Penchikala
 
Hacking Java @JavaLand2016
Hacking Java @JavaLand2016Hacking Java @JavaLand2016
Hacking Java @JavaLand2016Sean P. Floyd
 
Java dev mar_2021_keynote
Java dev mar_2021_keynoteJava dev mar_2021_keynote
Java dev mar_2021_keynoteSuyash Joshi
 
Web application development using Play Framework (with Java)
Web application development using Play Framework (with Java)Web application development using Play Framework (with Java)
Web application development using Play Framework (with Java)Saeed Zarinfam
 
Java EE Introduction
Java EE IntroductionJava EE Introduction
Java EE Introductionejlp12
 
JavaOne 2014 - Scalable JavaScript Applications with Project Nashorn [CON6423]
JavaOne 2014 - Scalable JavaScript Applications with Project Nashorn [CON6423]JavaOne 2014 - Scalable JavaScript Applications with Project Nashorn [CON6423]
JavaOne 2014 - Scalable JavaScript Applications with Project Nashorn [CON6423]Leonardo Zanivan
 
Whats new in Java 9,10,11,12
Whats new in Java 9,10,11,12Whats new in Java 9,10,11,12
Whats new in Java 9,10,11,12Rory Preddy
 
Java 40 versions_sgp
Java 40 versions_sgpJava 40 versions_sgp
Java 40 versions_sgpmichaelisvy
 
Java user group 2015 02-09-java8
Java user group 2015 02-09-java8Java user group 2015 02-09-java8
Java user group 2015 02-09-java8marctritschler
 

Similaire à JCConf 2018 - Retrospect and Prospect of Java (20)

A tour of Java and the JVM
A tour of Java and the JVMA tour of Java and the JVM
A tour of Java and the JVM
 
Gustavo Garnica: Evolución de la Plataforma Java y lo que Significa para Ti
Gustavo Garnica: Evolución de la Plataforma Java y lo que Significa para TiGustavo Garnica: Evolución de la Plataforma Java y lo que Significa para Ti
Gustavo Garnica: Evolución de la Plataforma Java y lo que Significa para Ti
 
Jozi-JUG JDK 9 Unconference
Jozi-JUG JDK 9 UnconferenceJozi-JUG JDK 9 Unconference
Jozi-JUG JDK 9 Unconference
 
Java Webinar #12: "Java Versions and Features: Since JDK 8 to 16"
Java Webinar #12: "Java Versions and Features: Since JDK 8 to 16"Java Webinar #12: "Java Versions and Features: Since JDK 8 to 16"
Java Webinar #12: "Java Versions and Features: Since JDK 8 to 16"
 
De Java 8 a Java 11 y 14
De Java 8 a Java 11 y 14De Java 8 a Java 11 y 14
De Java 8 a Java 11 y 14
 
Polygot Java EE on the GraalVM
Polygot Java EE on the GraalVMPolygot Java EE on the GraalVM
Polygot Java EE on the GraalVM
 
New Features of Java7 SE
New Features of Java7 SENew Features of Java7 SE
New Features of Java7 SE
 
Application Architecture Trends
Application Architecture TrendsApplication Architecture Trends
Application Architecture Trends
 
Hacking Java @JavaLand2016
Hacking Java @JavaLand2016Hacking Java @JavaLand2016
Hacking Java @JavaLand2016
 
Java dev mar_2021_keynote
Java dev mar_2021_keynoteJava dev mar_2021_keynote
Java dev mar_2021_keynote
 
Web application development using Play Framework (with Java)
Web application development using Play Framework (with Java)Web application development using Play Framework (with Java)
Web application development using Play Framework (with Java)
 
De Java 8 ate Java 14
De Java 8 ate Java 14De Java 8 ate Java 14
De Java 8 ate Java 14
 
Java EE Introduction
Java EE IntroductionJava EE Introduction
Java EE Introduction
 
Java 9 sneak peek
Java 9 sneak peekJava 9 sneak peek
Java 9 sneak peek
 
JavaOne 2014 - Scalable JavaScript Applications with Project Nashorn [CON6423]
JavaOne 2014 - Scalable JavaScript Applications with Project Nashorn [CON6423]JavaOne 2014 - Scalable JavaScript Applications with Project Nashorn [CON6423]
JavaOne 2014 - Scalable JavaScript Applications with Project Nashorn [CON6423]
 
Whats new in Java 9,10,11,12
Whats new in Java 9,10,11,12Whats new in Java 9,10,11,12
Whats new in Java 9,10,11,12
 
JavaOne_2010
JavaOne_2010JavaOne_2010
JavaOne_2010
 
Java 40 versions_sgp
Java 40 versions_sgpJava 40 versions_sgp
Java 40 versions_sgp
 
JavaCro'19 - The State of Java and Software Development in Croatia - Communit...
JavaCro'19 - The State of Java and Software Development in Croatia - Communit...JavaCro'19 - The State of Java and Software Development in Croatia - Communit...
JavaCro'19 - The State of Java and Software Development in Croatia - Communit...
 
Java user group 2015 02-09-java8
Java user group 2015 02-09-java8Java user group 2015 02-09-java8
Java user group 2015 02-09-java8
 

Plus de Joseph Kuo

JCConf 2023 - 深入淺出 Java 21 功能
JCConf 2023 - 深入淺出 Java 21 功能JCConf 2023 - 深入淺出 Java 21 功能
JCConf 2023 - 深入淺出 Java 21 功能Joseph Kuo
 
JCConf 2022 - New Features in Java 18 & 19
JCConf 2022 - New Features in Java 18 & 19JCConf 2022 - New Features in Java 18 & 19
JCConf 2022 - New Features in Java 18 & 19Joseph Kuo
 
JCConf 2021 - Java17: The Next LTS
JCConf 2021 - Java17: The Next LTSJCConf 2021 - Java17: The Next LTS
JCConf 2021 - Java17: The Next LTSJoseph Kuo
 
JCConf 2017 - Next Generation of Cloud Computing: Edge Computing and Apache E...
JCConf 2017 - Next Generation of Cloud Computing: Edge Computing and Apache E...JCConf 2017 - Next Generation of Cloud Computing: Edge Computing and Apache E...
JCConf 2017 - Next Generation of Cloud Computing: Edge Computing and Apache E...Joseph Kuo
 
JCConf 2016 - Cloud Computing Applications - Hazelcast, Spark and Ignite
JCConf 2016 - Cloud Computing Applications - Hazelcast, Spark and IgniteJCConf 2016 - Cloud Computing Applications - Hazelcast, Spark and Ignite
JCConf 2016 - Cloud Computing Applications - Hazelcast, Spark and IgniteJoseph Kuo
 
Establish The Core of Cloud Computing Application by Using Hazelcast (Chinese)
Establish The Core of  Cloud Computing Application  by Using Hazelcast (Chinese)Establish The Core of  Cloud Computing Application  by Using Hazelcast (Chinese)
Establish The Core of Cloud Computing Application by Using Hazelcast (Chinese)Joseph Kuo
 

Plus de Joseph Kuo (6)

JCConf 2023 - 深入淺出 Java 21 功能
JCConf 2023 - 深入淺出 Java 21 功能JCConf 2023 - 深入淺出 Java 21 功能
JCConf 2023 - 深入淺出 Java 21 功能
 
JCConf 2022 - New Features in Java 18 & 19
JCConf 2022 - New Features in Java 18 & 19JCConf 2022 - New Features in Java 18 & 19
JCConf 2022 - New Features in Java 18 & 19
 
JCConf 2021 - Java17: The Next LTS
JCConf 2021 - Java17: The Next LTSJCConf 2021 - Java17: The Next LTS
JCConf 2021 - Java17: The Next LTS
 
JCConf 2017 - Next Generation of Cloud Computing: Edge Computing and Apache E...
JCConf 2017 - Next Generation of Cloud Computing: Edge Computing and Apache E...JCConf 2017 - Next Generation of Cloud Computing: Edge Computing and Apache E...
JCConf 2017 - Next Generation of Cloud Computing: Edge Computing and Apache E...
 
JCConf 2016 - Cloud Computing Applications - Hazelcast, Spark and Ignite
JCConf 2016 - Cloud Computing Applications - Hazelcast, Spark and IgniteJCConf 2016 - Cloud Computing Applications - Hazelcast, Spark and Ignite
JCConf 2016 - Cloud Computing Applications - Hazelcast, Spark and Ignite
 
Establish The Core of Cloud Computing Application by Using Hazelcast (Chinese)
Establish The Core of  Cloud Computing Application  by Using Hazelcast (Chinese)Establish The Core of  Cloud Computing Application  by Using Hazelcast (Chinese)
Establish The Core of Cloud Computing Application by Using Hazelcast (Chinese)
 

Dernier

The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is insideshinachiaurasa2
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...masabamasaba
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...Jittipong Loespradit
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnAmarnathKambale
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024VictoriaMetrics
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Bert Jan Schrijver
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfonteinmasabamasaba
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrainmasabamasaba
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyviewmasabamasaba
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park masabamasaba
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension AidPhilip Schwarz
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...masabamasaba
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park masabamasaba
 

Dernier (20)

The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 

JCConf 2018 - Retrospect and Prospect of Java

  • 1. Retrospect and Prospect of Java Joseph S. Kuo (CyberJos) Technical Lead (Principal Engineer) Taiwan 2018 #JCConf
  • 2. About Me • 數學系出身。24年程式資歷,20年Java資歷 • 撰寫過Basic, C/C++, LPC, Java, JavaScript, Python, 族繁不 …及備載… • 擔任過電腦資訊講師, 曾在簡訊服務商、 遊戲雲端平台、 全球電子商務網站、資訊安全防護、使用者行為管理等公司 中任職。JCConf 講者。 • 負責程式撰寫、軟體設計、架構規劃及技術教學,並參與各式 專案設計、架構、開發、實作與維護 • 希望能一輩子玩技術寫程式到老 #JCConfTaiwan 2018
  • 3. Agenda • Overview • Retrospect of Java • Features in 9, 10, 11 • Prospect of Java #JCConfTaiwan 2018
  • 5. “A simple, object-oriented, distributed, interpreted, robust, secure, architecture neutral, portable, high-performance, multi-threaded, and dynamic language.” — Sun #JCConfTaiwan 2018
  • 6. History • 1991: Oak language is born • 1994: Java 1.0a became available for download • 1995-05-23: Java 1.0a2 released with HotJava browser. • 1995: Sun renamed Oak to Java. • 1996-01-23: Java 1.0 released • 1996-05-29: 1st JavaOne Conference, > 6k attendees • 1997: > 400k developers, 2nd JavaOne, > 10k attendees • 1998: 3rd JavaOne, >15k attendees (Java Ring) • 1999: J2SE, J2EE, J2ME #JCConfTaiwan 2018
  • 7. History • 2000: Java is applied from servers to devices • 2005: 10 years, 4.5M developers, 2.5B devices • 2006: Java is open sourced • 2007: first version of OpenJDK is released • 2011-07-07: Java SE 7 released (OpenJDK) • 2015: 20 years, > 12M developers, 15B devices • 2017-09-21: Java SE 9 released • 2018-03-20: Java SE 10 released • 2018-09-25: Java SE 11 released #JCConfTaiwan 2018
  • 9. #JCConfTaiwan 2018 TIOBE Popularity Trend Source: https://www.tiobe.com/tiobe-index/
  • 17. From 1.0 to 8 #JCConfTaiwan 2018
  • 18. JDK 1.0 (1996-01-23) • First stable version, JDK 1.0.2, is called Java 1 • Syntax is similar with C/C++ • No pointer, no operator overloading, no multiple inheritance • Object class • Interface • Package system • AWT • Garbage Collection #JCConfTaiwan 2018
  • 19. JDK 1.1 (1997-02-19) • Inner class • JavaBeans (java.beans package) • JDBC • RMI • Reflection supported introspection • I18n and Unicode #JCConfTaiwan 2018
  • 20. J2SE 1.2 (1998-12-08) • Codename: Playground • Collections Framework • Added keyword: strictfp • Java plug-in • Integration of Swing graphical API into core classes • JIT compiler in Sun’s JVM for the first time #JCConfTaiwan 2018
  • 21. J2SE 1.3 (2000-05-08) • Codename: Kestrel • HotSpot JVM (released in 1999-04) • JNDI included in core libraries (was an extension) • Java Platform Debugger Architecture • JavaSound • Synthetic Proxy classes #JCConfTaiwan 2018
  • 22. J2SE 1.4 (2002-02-06) • Codename: Merlin (JSR 59) • First Java platform developed under JCP • Added keyword: assert (JSR 41) • Regular Expression • Exception chaining allows to encapsulate exceptions • IPv6 • Java NIO (JSR 51) • Logging API (JSR 47) #JCConfTaiwan 2018
  • 23. J2SE 1.4 (2002-02-06) • Image I/O • Java Web Start (JSR 56) • Preferences API (java.util.prefs) • JAXP: XML parser (JSR 5) and XSTL processor (JSR 63) • Integrated security components: JCE, JSSE, JAAS #JCConfTaiwan 2018
  • 24. J2SE 5.0 (2004-09-30) • Codename: Tiger (JSR 176) • Generic Types (JSR 14) • Enumerations (JSR 201) • Auto-boxing/unboxing (JSR 201) • Enhanced foreach loop (JSR 201) • Vararg • Metadata (Annotation) (JSR 175) • New Java memory model • Static imports #JCConfTaiwan 2018
  • 25. J2SE 5.0 (2004-09-30) • Concurrency utilities (java.util.concurrent) • Scanner and Formatter • Unicode 4.0 • JConsole #JCConfTaiwan 2018
  • 26. Java SE 6 (2006-12-11) • Codename: Mustang (JSR 270) • Scripting language support and Rhino engine(JSR 223) • Core and Swing performance improvements • JAX-WS (JSR 224) • JDBC 4.0 (JSR 221) • Java Compiler API (JSR 199) • JAXB 2.0 including integration with StAX parser • Java I/O Console #JCConfTaiwan 2018
  • 27. Java SE 7 (2011-07-07) • Codename: Dolphin (JSR 336) • JVM supported for dynamic languages: invokedynamic (JSR 292) • Compressed 64-bit pointers • Project Coin: – String in switch – try-with-resources – Type inference for generic: diamond operator – Binary integer literals – Allowing underscores in numeric literals – Catching multiple exception types and re-throwing #JCConfTaiwan 2018
  • 28. Java SE 7 (2011-07-07) • Concurrency utilities (JSR 166) • New file I/O library (java.nio.file) (JSR 203) • Elliptic Curve Cryptography support (ECDSA/ECDH) • Support new network protocols (SCTP, SDP) • Fork/Join framework • Unicode 6.0 • G1GC • JDBC 4.1 #JCConfTaiwan 2018
  • 29. Java 8 (2014-03-18) • Defined by JSR 337 • Organized in terms of JDK Enhancement Proposals • Lambda Expression (JSR 335, JEP 126) • Method references (::) (JEP 126) • Functional Interfaces • Default methods • Stream • Nashorn JavaScript runtime (JSR 223, JEP 174) • Date and Time API (JSR 310, JEP 150) #JCConfTaiwan 2018
  • 30. Java 8 (2014-03-18) • Annotations on Java Types (JSR 308, JEP 104) • Removed Permanent Generation (JEP 122) • Unicode 6.2 (JEP 133) • JDBC 4.2 (JEP 170) #JCConfTaiwan 2018
  • 31. Features in 9, 10, 11 #JCConfTaiwan 2018
  • 33. Java SE 9 (2017-09-21) • Defined by JSR 379 • Jigsaw (JSR 376) • Java REPL - jshell (JEP 222) • XML Catalogs (JEP 268) • Currency update (JEP 266) • HTTP 2 Client (JEP 110) • UTF-8 Property File (JEP 226) • Unicode 7 (227), Unicode 8 (267) #JCConfTaiwan 2018
  • 34. Java SE 9 (2017-09-21) • Convenience Factory Methods for Collections (JEP 269) • G1 is default GC (JEP 248) • Applet API and Java plug-in deprecated (JEP 289) • Ahead-of-Time Compilation (JEP 295) • Java-Level JVM Compiler Interface (JEP 243) • ...(others) #JCConfTaiwan 2018
  • 38. Java SE 10 (2018-03-20) • Local-variable type inference (JEP 286) • Parallel Full GC for G1 (JEP 307) • Application Class-Data Sharing (JEP 310) • Garbage-Collector Interface (JEP 304) • Thread-Local Handshakes (JEP 312) • Root Certificates (JEP 319) • Experimental Java-Based JIT Compiler (JEP 317) #JCConfTaiwan 2018
  • 40. Parallel Full GC for G1 • The G1 garbage collector is designed to avoid full collections, but when the concurrent collections can't reclaim memory fast enough a fall back full GC will occur. • The current implementation of the full GC for G1 uses a single threaded mark-sweep-compact algorithm. We intend to parallelize the mark-sweep-compact algorithm and use the same number of threads as the Young and Mixed collections do. • The number of threads can be controlled by the -XX:ParallelGCThreads option, but this will also affect the number of threads used for Young and Mixed collections. #JCConfTaiwan 2018
  • 41. Application Class-Data Sharing • Currently CDS only allows the bootstrap class loader to load archived classes. Application CDS ("AppCDS") extends CDS to allow the built-in system class loader (a.k.a., the "app class loader"), the built-in platform class loader, and custom class loaders to load archived classes. • By default, Class-Data Sharing is enabled only for the JVM's bootstrap class loader. Specify the -XX:+UseAppCDS command-line option to enable class data sharing for other loaders. • java -Xshare:off -XX:+UseAppCDS -XX:DumpLoadedClassList=x.lst -cp x.jar HelloWorld java -Xshare:dump -XX:+UseAppCDS -XX:SharedClassListFile=x.lst -XX:SharedArchiveFile=x.jsa -cp x.jar java -Xshare:on -XX:+UseAppCDS -XX:SharedArchiveFile=x.jsa -cp x.jar HelloWorld #JCConfTaiwan 2018
  • 42. Experimental Java-Based JIT Compiler • Enable Graal to be used as an experimental JIT compiler, starting with the Linux/x64 platform. Graal will use the JVM compiler interface (JVMCI) introduced in JDK 9. Graal is already in the JDK, so enabling it as an experimental JIT will primarily be a testing and debugging effort. • To enable Graal as the JIT compiler, use the following options on the java command line: -XX:+UnlockExperimentalVMOptions -XX: +UseJVMCICompiler #JCConfTaiwan 2018
  • 44. Java SE 11 (2018-09-25) • Epsilon: A No-Op Garbage Collector (JEP 318) • ZGC: A Scalable Low-Latency Garbage Collector (Experimental) (JEP 333) • Remove the Java EE and CORBA Modules (JEP 320) • HTTP Client (Standard) (JEP 321) • Local-Variable Syntax for Lambda Parameters (JEP 323) • Low-Overhead Heap Profiling (JEP 331) • Transport Layer Security (TLS) 1.3 (JEP 332) #JCConfTaiwan 2018
  • 45. Java SE 11 (2018-09-25) • Nest-Based Access Control (JEP 181) • Flight Recorder (JEP 328) • Unicode 10 (JEP 327) • Dynamic Class-File Constants (JEP 309) • Launch Single-File Source-Code Programs (JEP 330) • Deprecate the Nashorn JavaScript Engine (JEP 335) #JCConfTaiwan 2018
  • 52. Java SE 12 (2019-03-19) • Switch Expressions (Preview) (JEP 325) • Raw String Literals (Preview) (JEP 326) • One AArch64 Port, Not Two (JEP 340) • Default CDS Archives (JEP 341) #JCConfTaiwan 2018
  • 53. Switch Expression int numLetters = switch (day) { case MONDAY, FRIDAY, SUNDAY -> 6; case TUESDAY -> 7; case THURSDAY, SATURDAY -> 8; case WEDNESDAY -> 9; }; #JCConfTaiwan 2018
  • 54. Raw String Literals String html = ` <html> <body> <p>Hello World.</p> </body> </html> `.align().ident(4); System.out.print(html); #JCConfTaiwan 2018