J'ai participé au Java Day Tokyo 2017, donc une note à l'époque.
Cette fois, nous nous sommes concentrés sur Java SE 9.
Je l'ai écrit pour moi-même, donc je suis désolé qu'il manque beaucoup de dents.
Nous vous serions reconnaissants de bien vouloir signaler des erreurs ou des suppléments.
Qu'est-ce que le Java Day Tokyo 2017?
Le plus grand événement annuel Java du Japon organisé par Oracle Japan.
Page officielle: http://www.oracle.co.jp/events/javaday/2017/
Hashtag: #JavaDayTokyo
Session participée
※ Titres omis
- Discours d'ouverture (Hiroshige Sugihara, président d'Oracle Japan, Bernard Traversat, vice-président d'Oracle, Will Lions, directeur principal d'Oracle)
- Java 9 and Beyond: Java Renaissance in the Cloud(Oracle Vice President Bernard Traversat)
- Développement modulaire avec JDK (David Back, Japan Oracle Co., Ltd.)
- HTTP / 2 à partir de Servlet 4.0 (Shinya Yanagihara, Japan Oracle Co., Ltd.)
- Recommandation de Java SE 9 (Java in the Box, Yuichi Sakuraba)
- Application Web réactive de Spring Framework 5.0 (Pivotal Japan Co., Ltd. Toshiaki Maki)
Matériel de présentation: https://www.slideshare.net/makingx/spring-framework-50-reactive-web-application-javadaytokyo
Sujet et résumé
◆ À propos de l'état actuel et des tendances futures de Java
--Java SE 9, Java EE 8 est sorti
--Améliorations pour l'optimisation sur Claud
◆ À propos de Java SE 9, Java EE 8 devrait être publié en juillet de cette année
--Java SE 9 sera décrit plus tard. Je n'ai pas beaucoup entendu parler de Java EE 8, donc je ne le mentionnerai pas.
◆ À propos du module (Project jigsaw) et d'autres nouvelles fonctionnalités introduites dans Java SE 9
- Système de modules (puzzle de projet): la caractéristique la plus notable. Les dépendances peuvent être définies module par module.
--JShell: Capacité à exécuter du code de manière interactive, comme REPL en Python et Ruby.
--JLink: une fonction qui vous permet de spécifier et de charger uniquement les modules de classe requis du JDK.
--Ahead of Time Compilation (AOT): possibilité de compiler des classes Java en code natif avant de démarrer une machine virtuelle. Temps de démarrage réduit.
--G1GC: Le GC par défaut est passé de GC parallèle à G1GC.
◆ À propos des modifications de spécification survenues dans Java SE 9
--Milling Project Coin (Référence: http://itpro.nikkeibp.co.jp/atcl/column/15/120700278/050800037/?rt=nocnt)
- Des collections immuables peuvent être créées. (De la méthode de l'interface de collecte)
- L'implémentation interne de String est passée de char [] à byte []. L'utilisation du tas est considérablement réduite.
◆ À propos de HTTP / 2 pris en charge par Servlet 4.0
- En utilisant HTTP / 2, la communication HTTP avec le client peut être accélérée. Il n'est pas très possible d'utiliser Servlet 4.0 tel quel, alors vérifiez la tendance de la correspondance côté framework.
◆ Prend en charge la programmation réactive de Spring Framework 5.0
- À partir de Spring Framework 5.0, un nouveau framework Web appelé Spring WebFlux a été ajouté pour prendre en charge la programmation réactive.
--Si vous effectuez une programmation réactive, vous pouvez vous attendre à une évolutivité rapide et flexible grâce à une communication de données non bloquante.
- Les célèbres bibliothèques telles que RxJava, Reactor, Akka. Java SE 9 prend en charge la programmation réactive avec l'interface Flow.
Ci-dessous un mémo de chaque session
Discours d'ouverture du Java Day Tokyo 2017 (Hiroshige Sugihara, président d'Oracle Japan, Bernard Traversat, vice-président Oracle, Will Lions, directeur principal d'Oracle)
Aperçu (à partir de la page officielle)
La sortie de Java SE 9 et Java EE 8 approche enfin! Dans ce discours d'ouverture du Java Day Tokyo, les vice-présidents des départements de développement de Java SE et Java EE présenteront directement la valeur de la nouvelle version à tous. Veuillez vérifier par vous-même ce qui est remarquable dans la nouvelle version et ce qui nous attend. Nous attendons votre participation avec impatience.
M. Hiroshige Sugihara, directeur représentant d'Oracle du Japon
―― "Être une entreprise qui rend le Japon heureux"
--La pénurie de personnel informatique est un problème, et d'ici 2030, il y aura une pénurie de 600000 personnes
--Onpre (12 billions)> IaaS (210 milliards)
--Améliorations pour l'optimisation sur le Cloud
Vice-président d'Oracle Bernard Traversat
- La fondation du Cloud
--Java est utilisé pour les cœurs tels que AWS et MS Azule
- Java est mort a été acquis par Oracle et anéanti
- L'autre jour, nous avons annoncé un partenariat avec Docker.
Java9
--122 fonctionnalités incluses
- module system
- modular JDK
- JShell
- Encapsulate Internal APIs
- JLink: Java Linker
- Ahead of time compilation(AOT)
- Compilation statique disponible en Java 9
- Le compilateur peut obtenir des informations en temps réel
Tendances après Java 9 (OpenJDK)
project Valhalla
- ValueTypes
- Specialized Generics
- Var Handles
Project Panama
Application au Big Data
Exécuter sur GPU
- Foreign Function Inteerface
- Date Layout Control
- Arrays 2.0
À propos de l'utilisation de Java avec Mazda
Type conventionnel
- Soutenir les processus d'affaires
- Requis pour prendre en charge les exigences fonctionnelles et non fonctionnelles
- Tous les développeurs utilisent un environnement de développement, une architecture, des règles de développement et un firmware communs
- Créer un outil de génération automatique
- Il est également important que la langue vive longtemps
- Rétrocompatibilité (facile à mettre à niveau)
Tendances récentes
- Combinaison
- Modèle de stratégie → Type de fonction
- Attentes
- Standardisation de l'environnement de développement et FW → gonflé → Attentes pour Jigsaw
- Grande quantité de données → Problème GC → Attentes pour Java à l'ère du Big Data / AI
JShell
--Il peut être exécuté de manière interactive comme REPL
- mvn jshell compile
--Il a également une fonction complémentaire
--Créez un prototype avec JShell, et lorsque la forme est formée, mettez-la dans le code
Directeur principal d'Oracle Will Lions
--Java EE 8 sera annoncé dès cet été
--HTTP / 2 est rapide et sécurisé, aucune modification d'application requise
JJUG
- Actuellement plus de 6300 personnes, le noyau est dans la vingtaine et la trentaine
――Pourquoi rejoindre la communauté
- Rencontrez des amis qui réfléchissent ensemble
- Apprenez à connaître un grand ingénieur
- Vous pouvez envoyer et étudier
Java 9 and Beyond: Java Renaissance in the Cloud
Aperçu (à partir de la page officielle)
Cette session vous apportera des mises à jour sur la version Java 9. Java 9 change radicalement la façon dont les ingénieurs développent et déploient les services Java dans le cloud. De nouveaux outils tels que AOT et JLink tireront parti du nouveau système de modules de Java 9 pour permettre de nouveaux types d'optimisation des performances et de la densité. Positionné comme GC par défaut dans Java 9, G1 offre un nouveau niveau d'évolutivité pour les services cloud Big Data. En outre, je voudrais aborder les nouvelles fonctionnalités depuis Java 9 telles que le type de valeur, la migration JNI et les améliorations du langage. Cette session vous montrera également l'importance de Java 9 pour les développeurs cloud en démontrant ces nouvelles fonctionnalités.
Java9
--Problème Java
- Redondance
- Manger de la mémoire
nouvelle fonction
- jigsaw
- JLink
- Ahead of Time(AOT) Java Compiler
- JShell
- G1 GC as the Default
Java SE Advanced
- Flight Recorder Performance
- Il est possible de retracer les informations en fonction des conditions
- Java Mission Control Console
- Vous pouvez enquêter sur la zone problématique
- Advanced Management Console
- Seules des applications spécifiques peuvent utiliser l'ancien Java, etc. (sécurité améliorée)
Tendances après Java 9
- Uniform
- memory
- Fil le plus compact et le plus léger possible
- Compatible
- compatibilité
- Performance
Développement modulaire avec JDK 9 (David Back, Japan Oracle Co., Ltd.)
Aperçu (à partir de la page officielle)
Le style de développement modulaire profite à tous les développeurs Java (que votre application ne possède qu'un seul JAR ou 100 JAR). Dans cette session, nous présenterons un système de modules Java 9 dans lequel le JDK est structuré comme des dizaines de modules réutilisables tout en protégeant fortement l'API interne.
Ensuite, dans la session, nous expliquerons comment créer un module et comment éviter la dépendance à l'API interne du JDK caché dans la bibliothèque couramment utilisée. Enfin, j'expliquerai les outils fournis pour le module.
Programs are ~~Classes~~ ~~Package~~ Mogules
- “public” no longer mean “accessile ti everyone”.
exports est une unité de package. nécessite une unité de module
En utilisant JLink, vous pouvez spécifier et charger uniquement les modules de classe requis du JDK.
→ Quels sont les avantages?
Économise des ressources lors du lancement d'un grand nombre de JDK dans le cloud, etc.
Vous pouvez vérifier les dépendances jar avec jdeps (fourni à partir de Java 8)
Automatic Modules
Possibilité de modulariser automatiquement un pot existant
Ceux qui n'ont pas été développés sur la base d'un module utilisent la fonction Modules automatiques. Pas de changement dans le pot
HTTP / 2 à partir de Servlet 4.0 (Shinya Yanagihara, Japan Oracle Co., Ltd.)
Aperçu (à partir de la page officielle)
Les spécifications HTTP ont été mises à jour de HTTP / 1.1 à HTTP / 2 pour la première fois en 16 ans, incorporant divers mécanismes pour améliorer l'efficacité de la communication. Servlet 4.0 a été mis à jour pour tirer parti de HTTP / 2. Dans cette session, nous présenterons un exemple d'utilisation de HTTP / 2 avec Servlet 4.0.
Examen du servlet
- Java fonctionnant côté serveur
- Rôle de contrôleur
Présentation du servlet 4.0
- Servlet4.0 devrait être publié en juillet 2017
- Compatible HTTP2
Présentation de HTTP / 2
- 1 système
- La réponse à la demande est 1: 1 pour la connexion TCP
- En règle générale, attendez la fin d'une requête avant d'envoyer la requête suivante → Il y a attente
- Efforts pour accélérer
- Sprite CSS
- Image en ligne
- Partage de domaine
- 2 séries
- Multiplexage de flux pour les connexions TCP
- Priorité du flux
- Compression d'en-tête (réduit les frais généraux)
- Cadre binaire (auparavant basé sur du texte)
Server Push
- Renvoie plusieurs réponses à une demande
- Créer un objet PushBuilder (request.newPushBuilder ();)
- L'objet PushBuilder est réutilisable
- Utilisez GET ou HEAD ("Cashable" et "Safe" (selon les spécifications RFC 7540))
- Élimine le besoin de combiner des fichiers JS et des sprites CSS
Recommandation de Java SE 9 (Java in the Box, Yuichi Sakuraba)
Aperçu (à partir de la page officielle)
Quand vous pensez à Java SE 9, vous pourriez penser à Project Jigsaw ou J Shell. Mais Java SE 9 n'est pas le seul. Il existe 89 JEP qui définissent l'ajout de fonctionnalités Java SE.
Dans cette session, nous expliquerons certaines des nombreuses nouvelles fonctionnalités de Java SE 9 telles que les changements de spécification de langage, les changements de bibliothèque principale et les problèmes de compatibilité avec des exemples réels.
Je ne parle pas de Jigsaw, J Shell
ordre du jour
- Compatibility
- Brand new
- Update
Compatibility
- Language & Library
- Les noms de variables uniquement soulignés ne peuvent plus être utilisés
- La méthode disparue
- Les méthodes directement connectées au système d'exploitation sont masquées (Jigsaw impliqué)
- fil Stop
- Méthode de réflexion
- VM&Tools
- No More Java Plug-in Applet
- No More Windows x86 Clinent VM
- No More Java DB
- Operation & Management
- Plus de hprof (profileur de tas), jhat
- La structure des répertoires a changé
- No More rt.jar, tools,jar, lib/ext
- No More -Xbootclasspath
- GC par défaut: G1GC (précédemment GC parallèle)
- Obsolète: CMS (un type de GC)
Brand New
- Jigsaw
- Project Kulla/JShell
- Reactive Streams
- Processus asynchrone
- Publisher-Subscriver Model (w / Back Pressure)
- Interface de flux
* Publisher
* Subscriber
* Subscription
- JEP11 Incubator Modules
- Inclure des fonctionnalités de type bêta dans le JDK
* Java SE 9 : HTTP/2 Client
Update
- Language: Milling Project Coin
- @SafeVarargs
- try-with-resources
- Les variables avec final peuvent être utilisées dans la clause try (sensiblement final est OK (à partir de Java 8))
- Opérateur diamant (<>)
- Aussi disponible dans les classes anonymes
- Méthode privée dans l'interface
- souligner
- Library
- Stream
- Factory Methods
- ofNullable(t)
*
- iterate(seed, hasNext, next)
- Peut maintenant être attaché comme condition (jusqu'à présent, itération infinie)
- New Methods
- take/dropWhile
- Collectors.flatMapping
- Collectors.filtering
- Optional
- stream()
- ifPresentOrElse(action, elseAction)
- or(supplier)
- Optional opt = opt1.or(() -> opt2)
- Collection
- Factory Method
- of()
- List l = List.of(0,1,2);
- Map<Integer, String> m = Map.of(0,”a”,1,”b”);
- Making Immutable Collection
- Enumeration.asIterator();
- String
- L'utilisation du tas est considérablement réduite
- concatenation
- StringBuilder → InvokeDynamic
- Permet l'optimisation
- Deprecated
- Ceux avec @Deprecated sont vraiment effacés
- Si vous recevez un avertissement obsolète, vous devez prendre des mesures immédiates
- Javadoc
- Prend en charge HTML5
Application Web réactive de Spring Framework 5.0 (Pivotal Japan Co., Ltd. Toshiaki Maki)
Aperçu (à partir de la page officielle)
La prise en charge de la programmation réactive a été ajoutée en tant que fonctionnalité de Spring Framework 5.0, et un nouveau framework Web et un environnement d'exécution appelés Spring WebFlux ont été ajoutés.
Dans cette session, nous commencerons par le contexte du support réactif et l'explication de Reactive Streams / Project Reactor, et nous présenterons comment utiliser Spring WebFlux avec Spring Boot 2.0, en nous concentrant sur des exemples de code.
Document d'information
https://www.slideshare.net/makingx/spring-framework-50-reactive-web-application-javadaytokyo
Qu'est-ce que réactif?
- Non-Blocking
- event-driven
- backpressure
type
- Sync/Bloking
- Async & Blocking
- Multithread
- Le processus de lancement d'un thread est lourd
- Async & Non-Blocking
- Utilisation efficace du temps d'attente des E / S
--Utiliser Servlet devient inévitablement bloquant
--Non-Blocking & Event-Loop avec Netty (utilisé par Apple, Twitter, etc.)
Pourquoi Spring prend en charge Reactive
- Micro service → Peut être mis à l'échelle sans gaspillage
- Accès depuis un client lent
- Évolutivité, stabilité, etc.
Reactive Streams
- non-blocking
- back prassure
- Mécanisme d'ajustement du flux de données
Bibliothèques prises en charge
- RxJava
- Reactor
- Acca Stream
Pour Reactor
Flux/Mono
- Flux
- Implémentation de l'éditeur Utilisé pour représenter 0 à N données
- Mono
- Implémentation de l'éditeur Utilisé pour représenter 0 ou 1 données
Flux réactif dans Spring FW 5.0