Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Java10 and 11

420 views

Published on

The material for the presentation of the JJUG CCC 2018 Spring

Published in: Software
  • Be the first to comment

Java10 and 11

  1. 1. Java 10まとめと、どうなる Java 11 2018/5/26 JJUG CCC 2018 Spring きしだ なおき
  2. 2. About me •  Naoki Kishida •  LINE Fukuoka •  @kis
  3. 3. Agenda •  New Release Model •  About JDK 10 •  About JDK 11 •  About Java Support
  4. 4. New Release Model
  5. 5. 6-monthly release •  Oracle had announced they will release Java every 6 months at 2017/9/6
  6. 6. Java new release cycle. •  Feature release every 6 months –  March and September(春分の⽇/秋分の⽇) •  Maintenance release every 3 months –  April and July for March release –  October and January for September release •  Long Term Support every 3 years –  The first LTS is for JDK 11 •  Oracle JDK will be for only Oracle Customer –  Use OpenJDK instead.
  7. 7. Version number •  2018/03 Feature release JDK10 •  2018/04 Maintenance release JDK10.0.1 •  2018/07 Maintenance release JDK10.0.2 •  2018/09 Feature release JDK11 LTS •  2018/10 Maintenance release JDK11.0.1 LTS •  2019/01 Maintenance release JDK11.0.2 LTS
  8. 8. Java SE 8 support is extended •  Oracle has extended Java SE 8 support at least until 2019/1 •  It is available for the personal use until 2020/12 •  Java SE 8 support will finish after 3 months of JDK 11 release. •  We should move to JDK 11 by 2019/1 http://www.oracle.com/technetwork/jp/java/eol-135779-ja.html
  9. 9. Desktop technology •  Applet and Web Start is no longer supported after JDK 11 •  JavaFX will not be bundled with JDK11 – So far OpenJDK had not bundled JavaFX •  AWT and Swing will be supported – There are many commits for JDK 11
  10. 10. About JDK 10
  11. 11. Java 10 JEPs •  286 Local-Variable Type Inference •  296 Consolidate the Repository •  304 GC Interface •  307 Paralell Full GC for G1 •  310 Application Class-Data Sharing •  312 Thread-Local Handshakes •  313 Remove javah •  314 Additional Unicode Language-Tag Extensions •  316 Heap Allocation on Alternative Momory Devices •  317 Experimental Java-Based JIT Compiler •  319 Root Certificates •  322 Time-Based Release Versioning
  12. 12. 286: Local-Variable Type Inferences •  var list = new ArrayList<String>() •  `var` is not a keyword – but a special type •  We can use `var` as a variable name •  We can use `var` as a method name •  We can not use `var` as a class name
  13. 13. Usage for `var` •  var m = new Object() {
 int twice(int x) {
 return x * 2;
 }
 };
 print(m.twice(3));
  14. 14. 304: Garbage-Collector Interface •  GC is modularized. •  There are many GCs that will come. – Epsilon GC – ZGC – Shenandoah •  Not to control GC by user code
  15. 15. 317: Experimental Java-Based JIT Compiler •  Project Metoropolis – java-on-java •  We can write JVM even with Scala? – There is a possibility.
  16. 16. 307: Parallel Full GC for G1 •  G1GC had been the default GC on JDK 9 •  Full GC for G1 was not parallel. •  Until JDK 8, Parallel GC was the default •  To smooth migration, Full GC for G1GC also parallelize. •  But full GC should not occur. – Ideally, it has no effect for us.
  17. 17. 310: Application Class-Data Sharing •  CDS for system class is introduced in JDK 5 •  Share class data between multiple JVM on the same machine – startup performance – reduce the resource footprint •  JDK 10 allow to use CDS for application class
  18. 18. 312: Thread-Local Handshakes •  JVM can stop an individual thread – stop not just all thread
  19. 19. 314: Additional Unicode Language-Tag Extentions •  Enhance java.util.Locale •  additional Unicode extensions of BCP 47 language tag – currency type – the first day of the week – region override – time zone
  20. 20. 316: Heap Allocation on Alternative Memory Devices •  Now we can use non-volatile RAM(不 揮発性メモリ) such as 3D XPoint •  This will enable the JVM to use different types of memory system
  21. 21. 319: Root Certificates •  OpenJDK doesnʼt have Root Certificates so far •  Oracle JDK have had it. •  To smooth migration, OpenJDK have had it.
  22. 22. API Changes •  java.io.Reader – long transferTo(Writer) •  java.lang.mainagement.RuntimeMXBe an – long getPid() •  java.util.List/Map/Set – copyOf(Collection) •  java.util.stream.Collectors – toUnmodifiableList/Set/Map
  23. 23. Docker aware •  Until JDK 9, JVM use the platform CPU count/Memory size even if it is running on Docker. •  JDK 10, JVM can use Docker setting for CPU count/ Memory size if it is running on Docker. •  VM Options –  -XX:InitialRAMPercentage –  -XX:MaxRAMPercentage –  -XX:MinRAMPercentage
  24. 24. Other Changes •  Kerberos configuration file krb5.conf include *.conf in INCLUDEDIR •  -d32 and –d64 has been removed •  new JavaDoc tag. {@summary} •  policytool has been removed •  XMLInputFactory.newFactory() has been “de-deplicated” – it had been deplicated by mistake.
  25. 25. About JDK 11
  26. 26. Java 11 JEPs •  309 Dynamic Class-File Constants •  318 Epsilon: A No-Op Garbage Collector •  320 Remove the Java EE and CORBA Modules •  321 HTTP Client(Standard) •  323 Local-Variable Syntax for Lambda Parameters •  324 Key Agreement with Curve25519 and Curve448 •  327 Unicode 10 •  328 Flight Recorder •  329 ChaCha20 and Poly1305 Cryptographic Algorithms •  330 Launch Single-File Source-Code Programs
  27. 27. Expected JEPs for JDK11 •  326 Raw String Literals •  325 Switch Expressions •  181 Nest-Based Access Control
  28. 28. Launch Single-File Source-Code Programs •  java Hello.java •  Shebang – #! /usr/bin/java –source 10 – chmod +x hello – ./hello
  29. 29. Raw String Literals •  var sql = ```select NAME
 from MEMBER
 where id=1``` •  How to address indent
  30. 30. Switch Expressions •  Now `switch` is a statement •  int i;
 switch (s) {
 case “start”:
 case “begin”:
 i = 0;
 break;
 case “end”:
 i = 1;
 break;
 default:
 i = 2;
  31. 31. Switch Expressions •  int i = switch (s) {
 case “start”,“begin”-> 0;
 case “end” -> 1;
 default -> 2;
 }
  32. 32. Local-Variable Syntax for Lambda Parameters •  list.map(s -> s.toUpperCase())
 .collect(toList()) •  list.map((var s) -> s.toUpperCase())
 .collect(toList())
  33. 33. HTTP Client(Standard) •  Guraduate the incubate •  var client HttpClient.newHttpClient();
 var url = URI.create(url);
 var req = HttpRequest.newBuilder(uri).build();
 HttpResponse<String> res = client.send(
 req, HttpResponse.BodyHandlers.ofString(
 Charset.forName(“utf-8”));
 return res.body();
  34. 34. Epsilon: A No-Op Garbage Collector •  Do nothing! •  For evaluate GC performance
  35. 35. Remove the Java EE and CORBA Modules •  No one uses CORBA! •  The size is large •  Removing them, JDK will be smaller
  36. 36. Flight Recorder •  Logging the performance •  Now it is an open source
  37. 37. Unicode 10 •  Support Unicode 9 and Unicode 10
  38. 38. Nestmate •  To address inner class accesivility •  Valhalla!
  39. 39. Java 11でのAPI追加 •  String – repeat – lines – isBlank – strip/stripLeading/stripTrailing
  40. 40. String •  repeat •  isBlank •  lines •  strip/stripLeading/stripTrailing
  41. 41. Predicate::not •  lines.filter(s -> !s.isEmpty()) → lines.filter(Predicate.not(String::isEmp ty))
  42. 42. Files •  String Files.read(Path) •  Path FIles.write(Path, String) •  Files.isSameContent(Path, Path)
  43. 43. ArrayIndexOutOfBoundsException •  jshell> new int[]{}[0] | java.lang.ArrayIndexOutOfBoundsException thrown: 0 | at (#1:1) -> jshell> new int[]{}[0] | Exception java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0 | at (#8:1)
  44. 44. How about Stream#toList? •  modifiable? unmodifible? •  What order? •  “it nulls a property of the Stream API we have take time to keep. The whole Stream API doesn't depends on the Collection API”
  45. 45. About Java Support
  46. 46. Oracle JDK •  Same as the current support •  Very expensive for web servicer •  100 servers on AWS -> 1おくえん
  47. 47. OpenJDK •  Official publishment says it has only 6 months support for each JDK release. No LTS •  Mark Reinhold said OpenJDK will have LTS – but not on the web site yet – LTS support is for 3 years. No overlap.
  48. 48. AdoptOpenJDK •  Project by London JUG •  IBM suponsered •  Provide pre-build JDK •  LTS support for 4 years
  49. 49. Zulu •  Provided by Azul System •  Free to download and use •  Enterprise support – 100 servers $28,750/year – unlimited servers $258,750/year
  50. 50. Support the new era after Heisei •  Start to support the new era as NewEra •  JDK12 will release 2019/3 •  The new era will release early 2019/4 •  JDK maintenance release will be late 2019/4 – JDK 12.0.1 •  The new era will start 2019/5
  51. 51. Summary •  がんばろ

×
Save this presentationTap To Close