Ich habe am Java Day Tokyo 2017 teilgenommen, also damals ein Memo.
Dieses Mal haben wir uns auf Java SE 9 konzentriert.
Ich habe es für mich selbst geschrieben, es tut mir leid, dass viele Zähne fehlen.
Wir würden uns freuen, wenn Sie auf Fehler oder Ergänzungen hinweisen könnten.
Was ist der Java Day Tokyo 2017?
Japans größte jährliche Java-Veranstaltung von Oracle Japan.
Offizielle Seite: http://www.oracle.co.jp/events/javaday/2017/
Hashtag: #JavaDayTokyo
Teilnahme an der Sitzung
※ Titel weggelassen
- Grundsatzrede (Hiroshige Sugihara, Präsident von Oracle Japan, Bernard Traversat, Vizepräsident von Oracle, Will Lions, Senior Director von Oracle)
- Java 9 and Beyond: Java Renaissance in the Cloud(Oracle Vice President Bernard Traversat)
- Modulare Entwicklung mit JDK (David Back, Japan Oracle Co., Ltd.)
- HTTP / 2 beginnend mit Servlet 4.0 (Shinya Yanagihara, Japan Oracle Co., Ltd.)
- Empfehlung von Java SE 9 (Java in the Box, Yuichi Sakuraba)
- Reaktive Webanwendung von Spring Framework 5.0 (Pivotal Japan Co., Ltd., Toshiaki Maki)
Präsentationsmaterial: https://www.slideshare.net/makingx/spring-framework-50-reactive-web-application-javadaytokyo
Thema & Zusammenfassung
◆ Informationen zum aktuellen Status und zu zukünftigen Trends von Java
- Java SE 9, Java EE 8 veröffentlicht
- Verbesserungen zur Optimierung von Claud
◆ Über Java SE 9 soll Java EE 8 im Juli dieses Jahres veröffentlicht werden
- Java SE 9 wird später beschrieben. Ich habe nicht viel über Java EE 8 gehört, daher werde ich es nicht erwähnen.
◆ Informationen zum Modul (Projektpuzzle) und zu anderen neuen Funktionen, die in Java SE 9 eingeführt wurden
- Modulsystem (Projektpuzzle): Das auffälligste Merkmal. Abhängigkeiten können Modul für Modul festgelegt werden.
--JShell: Möglichkeit zur interaktiven Ausführung von Code wie REPL in Python und Ruby.
--JLink: Eine Funktion, mit der Sie nur die erforderlichen Klassenmodule des JDK angeben und laden können.
- Vor der Zeitkompilierung (AOT): Möglichkeit, Java-Klassen vor dem Starten einer virtuellen Maschine in nativen Code zu kompilieren. Reduzierte Startzeit.
--G1GC: Der Standard-GC wurde von parallelem GC zu G1GC geändert.
◆ Informationen zu Spezifikationsänderungen, die in Java SE 9 aufgetreten sind
- Fräsen von Projektmünzen (Referenz: http://itpro.nikkeibp.co.jp/atcl/column/15/120700278/050800037/?rt=nocnt)
- Unveränderliche Sammlungen können erstellt werden. (Von Methode der Sammlung Schnittstelle)
- Die interne Implementierung von String wurde von char [] in byte [] geändert. Die Heap-Nutzung wird erheblich reduziert.
◆ Informationen zu HTTP / 2, das von Servlet 4.0 unterstützt wird
- Durch die Verwendung von HTTP / 2 kann die HTTP-Kommunikation mit dem Client beschleunigt werden. Es ist nicht sehr machbar, Servlet 4.0 so zu verwenden, wie es ist. Überprüfen Sie daher den Korrespondenztrend auf der Framework-Seite.
◆ Unterstützt die reaktive Programmierung von Spring Framework 5.0
- Aus Spring Framework 5.0 wurde ein neues Webframework namens Spring WebFlux hinzugefügt, um die reaktive Programmierung zu unterstützen.
- Wenn Sie eine reaktive Programmierung durchführen, können Sie eine hohe Geschwindigkeit und flexible Skalierbarkeit durch nicht blockierende Datenkommunikation erwarten.
- Die berühmten Bibliotheken wie RxJava, Reactor, Akka. Java SE 9 unterstützt die reaktive Programmierung mit der Flow-Schnittstelle.
Unten finden Sie ein Memo zu jeder Sitzung
Java Day Tokyo 2017 Keynote Speech (Hiroshige Sugihara, Präsident von Oracle Japan, Bernard Traversat, Vizepräsident von Oracle, Will Lions, Senior Director von Oracle)
Übersicht (von der offiziellen Seite)
Die Veröffentlichung von Java SE 9 und Java EE 8 steht vor der Tür! In dieser Grundsatzrede zum Java-Tag in Tokio werden Vizepräsidenten der Entwicklungsabteilungen von Java SE und Java EE allen den Wert der neuen Version direkt vorstellen. Bitte überprüfen Sie selbst, was an der neuen Version bemerkenswert ist und was vor Ihnen liegt. Wir freuen uns auf deine Beteiligung.
Herr Hiroshige Sugihara, stellvertretender Direktor von Japan Oracle
―― "Ein Unternehmen zu sein, das Japan glücklich macht"
- Der Mangel an IT-Personal ist ein Problem, und bis 2030 werden 600.000 Menschen fehlen
- Onpre (12 Billionen)> IaaS (210 Milliarden)
- Verbesserungen zur Optimierung in der Cloud
Oracle-Vizepräsident Bernard Traversat
- Das Fundament der Cloud
- Java wird für Kerne wie AWS und MS Azule verwendet
- Java ist tot wurde von Oracle erworben und ausgelöscht
- Neulich haben wir eine Partnerschaft mit Docker angekündigt.
Java9
--122 Funktionen enthalten
- module system
- modular JDK
- JShell
- Encapsulate Internal APIs
- JLink: Java Linker
- Ahead of time compilation(AOT)
--Statische Kompilierung in Java 9 verfügbar
- Der Compiler kann Echtzeitinformationen abrufen
Trends nach Java 9 (OpenJDK)
project Valhalla
- ValueTypes
- Specialized Generics
- Var Handles
Project Panama
Anwendung auf Big Data
Auf GPU ausführen
- Foreign Function Inteerface
- Date Layout Control
- Arrays 2.0
Informationen zur Verwendung von Java mit Mazda
Konventioneller Typ
- Unterstützung von Geschäftsprozessen
- Erforderlich zur Unterstützung funktionaler und nicht funktionaler Anforderungen
- Alle Entwickler verwenden eine gemeinsame Entwicklungsumgebung, Architektur, Entwicklungsregeln und FW
- Erstellen Sie ein Tool zur automatischen Generierung
- Es ist auch wichtig, dass die Sprache lange lebt
- Abwärtskompatibilität (einfach zu aktualisieren)
Aktuelle Trends
- Kombination
- Strategiemuster → Funktionstyp
- Erwartungen
- Standardisierung der Entwicklungsumgebung und FW → aufgebläht → Erwartungen an Jigsaw
- Große Datenmenge → GC-Problem → Erwartungen an Java in der Big Data / AI-Ära
JShell
- Es kann interaktiv wie REPL ausgeführt werden
- mvn jshell compile
- Es hat auch eine komplementäre Funktion
--Erstellen Sie einen Prototyp mit JShell und fügen Sie ihn bei der Erstellung der Form in den Code ein
Oracle Senior Director Will Lions
- Java EE 8 wird bereits in diesem Sommer angekündigt
--HTTP / 2 ist schnell und sicher, keine Anwendungsänderungen erforderlich
JJUG
- Derzeit sind mehr als 6300 Menschen in den Zwanzigern und Dreißigern
»Warum der Community beitreten?
- Treffen Sie Freunde, die zusammen denken
- Lernen Sie einen großartigen Ingenieur kennen
- Sie können senden und studieren
Java 9 and Beyond: Java Renaissance in the Cloud
Übersicht (von der offiziellen Seite)
Diese Sitzung bringt Ihnen Updates für die Java 9-Version. Java 9 verändert die Art und Weise, wie Ingenieure Java-Dienste in der Cloud entwickeln und bereitstellen, radikal. Die neuen Tools AOT und JLink werden das neue Modulsystem von Java 9 nutzen, um neue Arten der Leistungs- und Dichteoptimierung zu ermöglichen. G1 ist als Standard-GC in Java 9 positioniert und bietet eine neue Skalierbarkeit für Big-Data-Cloud-Dienste. Darüber hinaus möchte ich auf neue Funktionen seit Java 9 wie Werttyp, JNI-Migration und Sprachverbesserungen eingehen. Diese Sitzung zeigt Ihnen auch die Bedeutung von Java 9 für Cloud-basierte Entwickler, indem diese neuen Funktionen demonstriert werden.
Java9
- Redundanz
- Essen Sie Speicher
neue Funktion
- jigsaw
- JLink
- Ahead of Time(AOT) Java Compiler
- JShell
- G1 GC as the Default
Java SE Advanced
- Flight Recorder Performance
- Es ist möglich, Informationen basierend auf Bedingungen zu verfolgen
- Java Mission Control Console
- Sie können den Problembereich untersuchen
- Advanced Management Console
- Nur bestimmte Apps können altes Java usw. verwenden (verbesserte Sicherheit)
Trends nach Java 9
- Uniform
- memory
- So kompakter und leichter Faden wie möglich
- Compatible
- Kompatibilität
- Performance
Modulare Entwicklung mit JDK 9 (David Back, Japan Oracle Co., Ltd.)
Übersicht (von der offiziellen Seite)
Der modulare Entwicklungsstil kommt allen Java-Entwicklern zugute (unabhängig davon, ob Ihre Anwendung nur eine JAR oder 100 JARs hat). In dieser Sitzung werden wir ein Java 9-Modulsystem vorstellen, in dem das JDK als Dutzende wiederverwendbarer Module strukturiert ist und gleichzeitig die interne API stark schützt.
Anschließend erklären wir in der Sitzung, wie Sie ein Modul erstellen und die Abhängigkeit von der internen API des JDK vermeiden, die in der häufig verwendeten Bibliothek verborgen ist. Abschließend werde ich die für das Modul bereitgestellten Tools erläutern.
Programs are ~~Classes~~ ~~Package~~ Mogules
- “public” no longer mean “accessile ti everyone”.
Export ist eine Verpackungseinheit. erfordert ist eine Moduleinheit
Mit JLink können Sie nur die erforderlichen Klassenmodule des JDK angeben und laden.
→ Was sind die Vorteile?
Spart Ressourcen beim Starten einer großen Anzahl von JDKs in der Cloud usw.
Sie können JAR-Abhängigkeiten mit JDEPS überprüfen (bereitgestellt von Java 8).
Automatic Modules
Möglichkeit, ein vorhandenes Glas automatisch zu modularisieren
Diejenigen, die nicht auf Modulbasis entwickelt wurden, verwenden die Funktion Automatische Module. Keine Veränderung in Jar
HTTP / 2 beginnend mit Servlet 4.0 (Shinya Yanagihara, Japan Oracle Co., Ltd.)
Übersicht (von der offiziellen Seite)
Die HTTP-Spezifikationen wurden zum ersten Mal seit 16 Jahren von HTTP / 1.1 auf HTTP / 2 aktualisiert und enthalten verschiedene Mechanismen zur Verbesserung der Kommunikationseffizienz. Servlet 4.0 wurde aktualisiert, um HTTP / 2 zu nutzen. In dieser Sitzung werden wir ein Beispiel für die Verwendung von HTTP / 2 mit Servlet 4.0 vorstellen.
Servlet-Überprüfung
- Java läuft auf der Serverseite
- Rolle als Controller
Servlet 4.0 Übersicht
- Servlet4.0 soll im Juli 2017 veröffentlicht werden
- HTTP2-kompatibel
HTTP / 2 Übersicht
- 1 System
- Die Anforderungsantwort für die TCP-Verbindung ist 1: 1
- Warten Sie in der Regel, bis eine Anfrage abgeschlossen ist, bevor Sie die nächste Anfrage senden. → Es wird gewartet
- Bemühungen um Beschleunigung
- CSS-Sprite
- Inline-Bild
- Domain-Sharding
- 2 Serien
- Stream-Multiplexing für TCP-Verbindungen
- Stream-Priorität
- Header-Komprimierung (reduziert den Overhead)
- Binärrahmen (zuvor textbasiert)
Server Push
- Gibt mehrere Antworten auf eine Anfrage zurück
- PushBuilder-Objekt erstellen (request.newPushBuilder ();)
- Das PushBuilder-Objekt kann wiederverwendet werden
- Verwenden Sie GET oder HEAD ("Cashable" und "Safe" (gemäß RFC 7540-Spezifikationen))
- Keine JS-Dateien und CSS-Sprites mehr erforderlich
Empfehlung von Java SE 9 (Java in the Box, Yuichi Sakuraba)
Übersicht (von der offiziellen Seite)
Wenn Sie an Java SE 9 denken, denken Sie möglicherweise an Project Jigsaw oder J Shell. Java SE 9 ist jedoch nicht die einzige. Es gibt 89 JEPs, die das Hinzufügen von Java SE-Funktionen definieren.
In dieser Sitzung werden wir die Änderungen in den Sprachspezifikationen, die Änderungen in der Kernbibliothek und die Probleme mit der Kompatibilität vieler neuer Funktionen von Java SE 9 anhand aktueller Beispiele erläutern.
Ich spreche nicht über Puzzle, J Shell
Agenda
- Compatibility
- Brand new
- Update
Compatibility
- Language & Library
- Nur unterstrichene Variablennamen können nicht mehr verwendet werden
- Die verschwundene Methode
- Methoden, die direkt mit dem Betriebssystem verbunden sind, sind ausgeblendet (Jigsaw beteiligt)
- Thread Stop
- Reflexionsmethode
- VM&Tools
- No More Java Plug-in Applet
- No More Windows x86 Clinent VM
- No More Java DB
- Operation & Management
- No more hprof (Heap-Profiler), jhat
- Die Verzeichnisstruktur hat sich geändert
- No More rt.jar, tools,jar, lib/ext
- No More -Xbootclasspath
- Standard-GC: G1GC (zuvor paralleler GC)
- Veraltet: CMS (eine Art GC)
Brand New
- Jigsaw
- Project Kulla/JShell
- Reactive Streams
- Asynchroner Prozess
- Publisher-Subscriver Model (w / Back Pressure)
- Flow-Schnittstelle
* Publisher
* Subscriber
* Subscription
- JEP11 Incubator Modules
- Beta-ähnliche Funktionen in das JDK aufnehmen
* Java SE 9 : HTTP/2 Client
Update
- Language: Milling Project Coin
- @SafeVarargs
- try-with-resources
- Variablen mit final können in der try-Klausel verwendet werden (im Wesentlichen final ist OK (ab Java 8)).
- Diamantoperator (<>)
- Auch in anonymen Klassen verfügbar
- Private Methode in der Schnittstelle
- unterstreichen
- Library
- Stream
- Factory Methods
- ofNullable(t)
*
- iterate(seed, hasNext, next)
- Kann jetzt als Bedingung angehängt werden (bis jetzt unendlich iterieren)
- 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
- Die Heap-Nutzung wird erheblich reduziert
- concatenation
- StringBuilder → InvokeDynamic
- Optimierbar
- Deprecated
- Diejenigen mit @Deprecated werden wirklich gelöscht
- Wenn Sie eine veraltete Warnung erhalten, sollten Sie sofort Maßnahmen ergreifen
- Javadoc
- Unterstützt HTML5
Reaktive Webanwendung von Spring Framework 5.0 (Pivotal Japan Co., Ltd., Toshiaki Maki)
Übersicht (von der offiziellen Seite)
Als Funktion von Spring Framework 5.0 wurde reaktive Programmierunterstützung hinzugefügt, und ein neues Webframework und eine neue Laufzeit namens Spring WebFlux wurden hinzugefügt.
In dieser Sitzung beginnen wir mit dem Hintergrund der reaktiven Unterstützung und der Erläuterung von Reactive Streams / Project Reactor und stellen die Verwendung von Spring WebFlux mit Spring Boot 2.0 vor, wobei wir uns auf Codebeispiele konzentrieren.
Briefing-Papier
https://www.slideshare.net/makingx/spring-framework-50-reactive-web-application-javadaytokyo
Was ist reaktiv?
- Non-Blocking
- event-driven
- backpressure
Art
- Sync/Bloking
- Async & Blocking
- Multi Thread
- Das Starten eines Threads ist schwierig
- Async & Non-Blocking
- Effektive Nutzung der E / A-Wartezeit
- Die Verwendung von Servlet wird unweigerlich zum Blockieren
--Non-Blocking & Event-Loop mit Netty (wird von Apple, Twitter usw. verwendet)
Warum Spring Reactive unterstützt
- Micro Service → Kann ohne Abfall skaliert werden
- Zugriff vom langsamen Client
- Skalierbarkeit, Stabilität usw.
Reactive Streams
- non-blocking
- back prassure
- Mechanismus zum Anpassen des Datenflusses
Unterstützte Bibliotheken
- RxJava
- Reactor
- Acca Stream
Für den Reaktor
Flux/Mono
- Flux
- Publisher-Implementierung Wird verwendet, um 0 bis N Daten darzustellen
- Mono
- Publisher-Implementierung Wird verwendet, um 0 oder 1 Daten darzustellen
Reaktiver Strom im Frühjahr FW 5.0