Coderstand

Meetup Java 9 (31/10/2017)

31/10/2017

Warning: theses notes are published raw, without any rewriting.
Attention: ces notes sont publiées telles quelles, sans retraitement particulier.

Nouveautés

  • Système de module JPMS (Jigsaw)

  • JDK modularisé

  • G1 nouveau GC

  • changement de numérotation de versions

  • Jshell

  • StackWalking API

  • AOT compiler (experimental)

  • méthodes privées dans les interfaces

  • Reactive Stream (4 interfaces)

  • Api process: gestion des processus depuis Java

  • Fabriques pour les collections immutables (Set.of, List.of, Map.of)

  • Compact Strings

  • Annotations @Deprecated(forRemoval)

Classpath Hell

  • résolution par ordre alphabétique
  • Luck based

JVM pré-9 laxiste sun.misc.Unsafe ou field.setAccessible(true)

JVM Java 9

  • plus de rt.jar et tools.jar
  • JMods format pour la JVM
  • Images personnalisées
  • JDK modulaire

un module

  • exporte des packages
  • confine des packages (internals)
  • description dans module-info.java
  • ⚠️ public change de sens si la classe n’est pas exportée.

Avantages:

  • check à compile et runtime
  • les classes d’un package sont chargées depuis un seul jar
  • chargement plus rapide
  • Sanity check: un package ne peut exister dans 2 modules différents. ⚠️ également sur les packages non exposés
  • strong encapsulation

requires VS requires static VS requires transitive

exports VS exports to VS opens

provides with et uses

Outil: jdeps

Compilation

javac --module-path /modules

Linking: jlink


TwitterFacebookLinkedin