SlideShare a Scribd company logo
1 of 47
Download to read offline
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
今年はJava進化の年!
今知っておくべき新しいJava
2017年2月17日
日本オラクル株式会社
クラウド・テクノロジー事業統括
Fusion Middleware事業本部
伊藤 敬
@itakash
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Java SE最新動向
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Java SE Roadmap
JDK 8
• Lambda & Stream API
• New Date and Time API
• Nashorn: JavaScript
Interoperability
• JavaFX Enhancements
• Etc..
8u40
• Performance Improvements
• Density and Resource Management
• Multi-Language Support Improvements
• Accessibility Enhancements
• Continued Java SE Advanced Features
JDK 9
• Modularity – Jigsaw
• Jshell (Java Shell)
• HTTP 2.0
• G1GC as default
• JDK 5 source code can not compile
• Continued Java SE Advanced Features
8u20
• G1 Performance Improvement
• JVM Performance Improvements
• Java Mission Control 5.4
• Advanced Management Console 1.0
• MSI Enterprise JRE Installer
8u60
• Bug Fixes
• Continued Java SE Advanced Features
20162014 2015 2017
3
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Java 9リリースまでのスケジュール (as of 2/17/2017)
• 2016/05/26 Feature Complete(JDK9の仕様・実装確定)
• 2016/12/22 Feature Extension Complete (その他マイナーな仕様・実装確定)
• 2017/01/05 Rampdown Start (テストで露見したBugの修正開始)
• 2017/02/09 All Tests Run(最終総合テスト開始)
• 2017/02/16 Zero Bug Bounce(露見した全てのBugの手当て・方策確定)
• 2017/03/16 Rampdown Phase 2(Bug修正最終段階)
• 2017/07/06 Final Release Candidate(正式リリース版の最終候補確定)
• 2017/07/27 General Availability(リリース版提供開始)
4
https://jdk9.java.net/
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
JDK 9紹介
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
主要機能
• Jigsaw
• jshell: The Java Shell (JEP 222)
• Javadoc機能改善 – HTML5(JEP 224) / Search (JEP 225)
• Encapsulate Most Internal APIs (JEP 260)
• Process API Updates (JEP 102)
• Multi Release Jar Files (JEP 238)
• Security強化・関連JEP
• Deprecated/Removed機能
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Jigsaw – JDK/JREのモジュール化
7
• Java 8
– Compact Profile 1, 2, 3, Fullの4種類を提供
• Java 9
– 任意のモジュールを組み合わせてランタイ
ムが作成できる
– 不要なモジュールをJREに含めないことで、
軽量化、セキュリティ向上が期待できる
JEP 200: The Modular JDK
http://openjdk.java.net/jeps/200
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Java SE 9 – モジュールの導入(Project Jigsaw)
• Javaプログラム構造の変更 – ”Module”の導入
Package
Class & Interface
public class sample {
public void main(…) {
string str:
int x;
void sampleMethod(); …
Package
Class & Interface
public class sample {
public void main(…) {
string str:
int x;
void sampleMethod(); …
Module
8
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 9
モジュールの定義はmodule-info.javaで行う
module com.foo.app {
requires com.foo.bar;
requires java.sql;
}
com.foo.app
java.sqlcom.foo.bar
module-info.java
依存性
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 10
module-info.java: 公開範囲の宣言
module com.foo.bar {
exports com.foo.bar.alpha;
exports com.foo.bar.beta;
}
com.foo.bar
com.foo.bar.alpha
com.foo.bar.beta
com.foo.bar.internal
module-info.java
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Jigsaw - jlink: The Java Linker (JEP 282)
• jlink - Jigsawのためのコマンドツール
• 必要なモジュールだけをまとめたカスタムJREを作成できる
11
jlink --modulepath mods;"C:¥Program Files¥Java¥jdk-9¥jmods" --addmods xxx --output yyy
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 12
Javaコマンドでリンクされているモジュールを確認
$ java -listmods
java.activation@9.0
java.annotations.common@9.0
java.base@9.0
java.compact1@9.0
java.compact2@9.0
java.compact3@9.0
java.compiler@9.0
java.corba@9.0
java.datatransfer@9.0
java.desktop@9.0
java.instrument@9.0
java.logging@9.0
java.management@9.0
java.naming@9.0
java.prefs@9.0
java.rmi@9.0
java.scripting@9.0
java.se@9.0
java.security.jgss@9.0
java.security.sasl@9.0
java.smartcardio@9.0
java.sql@9.0
java.sql.rowset@9.0
java.transaction@9.0
java.xml@9.0
java.xml.bind@9.0
java.xml.crypto@9.0
java.xml.ws@9.0
jdk.attach@9.0
jdk.charsets@9.0
jdk.compiler@9.0
jdk.crypto.ec@9.0
jdk.crypto.pkcs11@9.0
jdk.hotspot.agent@9.0
jdk.httpserver@9.0
jdk.jartool@9.0
jdk.javadoc@9.0
jdk.jcmd@9.0
jdk.jconsole@9.0
jdk.jdeps@9.0
jdk.jdi@9.0
jdk.jdwp.agent@9.0
jdk.jlink@9.0
jdk.jvmstat@9.0
jdk.localedata@9.0
jdk.management@9.0
jdk.naming.dns@9.0
jdk.naming.rmi@9.0
jdk.pack200@9.0
jdk.policytool@9.0
jdk.rmic@9.0
jdk.scripting.nashorn@9.0
jdk.sctp@9.0
jdk.security.auth@9.0
jdk.security.jgss@9.0
jdk.xml.bind@9.0
jdk.xml.dom@9.0
jdk.xml.ws@9.0
jdk.zipfs@9.0
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
jshell: The Java Shell (JEP 222)
13
• JavaのREPL環境 (Read-Eval-Print Loop)を提供
• ちょっとしたJavaコード・新しいAPI、ロジックの確認に役立つ機能
jshell> int k = 14
k ==> 14
jshell> long fibonacci(int n) {
...> return n <= 1? n : fibonacci(n-1) + fibonacci(n-2);
...> }
| created method fibonacci(int)
jshell> fibonacci(3)
$3 ==> 2
jshell> fibonacci(k)
$4 ==> 377
jshell> for (int i = 1; i <= k; ++i) printf("%7d: %12d¥n", i, fibonacci(i))
1: 1
2: 1
3: 2
4: 3
5: 5
・・・
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Javadoc機能改善 – HTML5(JEP 224) / Search (JEP 225)
14
• JavadocのHTML5対応
• Javadocに検索機能を追加
Java 8 Javadoc: https://docs.oracle.com/javase/8/docs/api/
Java 9 Javadoc: http://download.java.net/java/jdk9/docs/api/index.html
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Encapsulate Most Internal APIs (JEP 260)
15
• 内部APIのカプセル化
• Java 9からはほとんどの内部APIはデフォルトでアクセスできなくなる
• ただし、代替APIの提供が完了していない内部APIは(当分は)利用可能
• Java 9でもアクセス可能な内部APIは以下の通り
– sun.misc.Unsafe
– sun.misc.{Signal,SignalHandler}
– sun.reflect.Reflection::getCallerClass
– sun.reflect.ReflectionFactory
– sun.misc.Cleaner
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Multi Release Jar Files (JEP 238)
• 1つのJarファイルの中で、複数のJavaバージョンを指定できる
16
META-INF
Content Root
A.class
B.class
C.class
D.class
Normal JAR
META-INF
versions
-8
A.class
B.class
-9
C.class
Content Root
A.class
B.class
C.class
D.class
Multi Release JAR
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Deprecated/Removed機能
17
• 以下の機能はJava 9からは非推奨(Deprecated)または削除(Removed)
– 非推奨
• JEP 289: Deprecate the Applet API
–アプレットはJava 9からは非推奨扱い
– 削除
• JEP 241: Remove the jhat Tool
• JEP 231: Remove Launch-Time JRE Version Selection
• JEP 240: Remove the JVM TI hprof Agent
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
JDK9 移行のポイント
18
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
• バグ修正
• 利用可能なアルゴリズムの変更
• セキュリティ改善
• サポート対象プラットフォームの
変更
• ネイティブコードの使用
• Properties の変更
• 非推奨の警告(@depricated)
• デプロイ系の変更(browser)
• 内部実装の変更
– GC アルゴリズム – G1GCデフォルト化
– 多くの内部API の使用不可
• パッケージ
– ファイル名、内部ファイルの形式、
– レジストリのキー(Windows)、インス
トール先(ディレクトリ)
• ツールやファイルの排除
• 非推奨のメソッド、クラス、機能の
排除
19
JDK 9で想定される主要な非互換の原因
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
JEP 260: Encapsulate most internal APIs
• デフォルトで殆どの内部API をアクセスすることが出来なくなる
• 幾つかの利用頻度の高い API は暫定的に利用可能を継続
– 代替できる public API がまだないことが前提
20
ほとんどの内部APIが利用不可になる
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
殆どの sun.misc.* と sun.reflect.* API の利用不可に
• 代替 public API がまだ存在しないものが一時的に残る
– sun.misc.Unsafe
– sun.misc.{Signal,SignalHandler}
– sun.misc.Cleaner
– sun.reflect.Reflection::getCallerClass
– sun.reflect.ReflectionFactory
• 上記以外の sun.{misc,reflect}の API が利用できなくなる
– 例:sun.misc.Base64
21
sun.misc.Base64.Encoder
sun.misc.Base64.Decoder
java.util.Base64.Encoder
java.util.Base64.Decoder
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
内部API利用の確認、暫定の内部API利用
• JDK 8 に含まれている jdeps ツールを使って、内部 API の利用を検出
することが出来る
– JDK 9 に含まれているバージョンの利用を推奨
• どうしても従来の内部API利用が必要な場合は、コマンドラインのフラグ
指定によって従来のライブラリ利用を指定、利用することが可能
– あくまで暫定の処置方法をご理解ください
22
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
JEP 223: New Version String Scheme(バージョニング変更)
• JDK 8 以前の version string は独自ルール
• 新しい仕組みはセマンティック バージョニングを準拠し、従来の歴史的な
部分(1.x や u など)を排除
• JDK のファイル名も変更する
• JDK 9以降の変更 – JDK8まではこれまでバージョニングを維持
23
JDK 1.9.0_25 から JDK 9.1.9 へ
JDK <major version>.<minor version>.<security update>
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
JEP 220: Modular Run-Time Images
• 実行環境にモジュール化が導入されるため、JREのディレクトリ構成、ファイル構成
が変更される
– ファイル名、ファイルの内部構造、Windowsのレジストリキー、インストール・ホルダ
• JREのフォルダー構成及び上記の変更箇所に依存する実装はお勧めしません
– 独自のライブラリ等は、別のホルダを作成し、明示的にクラスパスを指定することをお勧めします
• 既存のアプリケーションで上記のようなコードが存在する場合は修正が必要
24
JREディレクトリ構成、ファイル構成の変更、rt.jar の排除
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Java 9 EA版でのJREディレクトリ構成
25
• JDK 9 Early Access Build 153で確認したJRE/lib以下のディレクトリ構成
– JRE 8のディレクトリ構成とは異なる
• lib/applet, lib/ext
• rt.jarがなくなる
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
コンパイル可能なバージョンの制限
JEP 182: Policy for Retiring “javac –source and –target options”
• {-source,-target} 1.5 は JDK 8 で非推奨化
• JDK 9 では 1.6 以上をサポート、1.5より以前は非対応
• 新しいポリシーは”one plus three back”
–例: JDK 9 は 6, 7, 8, 9
JDK 10 は 7, 8, 9, 10
26
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
JavaDB の非搭載
• JavaDB は単純に Apache Derby のコピー
• JDK 7 と JDK 8 で付属されていた
• Apache プロジェクトからの直接入手に変更
27
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Javaプラグイン実行時のメッセージ表示
28
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
JDK9/JRE9でアプレットを起動した際に表示される
メッセージ画面(日本語)
• JRE9からはアプレットを起動すると以下のような警告メッセージが表示されます
デスクトップ
Javaコンソール
* メッセージ全文(ポップアップと同
じ文面)
警告: Java Plug-inが非推奨であり、
今後のJavaリリースでの削除が考
えられます。このコンテンツの開発
者に連絡してこのプログラムの更
新を依頼してください。
29
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
メッセージ画面(「発行者」が設定されている場合)
「発行者」が設定されている場合、
その値が警告メッセージのここに入る。
30
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Java EE 8 修整提案
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Java EE – What’s Next?
32
クラウドとマイクロサービスのための
新しいアプリケーション開発のスタイル
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Java Platform, Enterprise Edition への提案仕様
• クラウド、マイクロサービス向けの
新しいアプリケーション開発を想定
• 実績あるテクノロジーで構成
• 包括的な構成
– プログラミング・モデル、パッケージング、
ポータビリティ
• 標準ベース
– 本内容は提案仕様
– JCPプロセスに沿ってコミュニティととも
に検討を進める
33
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
クラウド・アプリケーション開発で想定する各要素
異種クライアントとの連携
を実現する
• 多言語化
• Mobile, REST, HTML5
ステートレス・サービスの
主流化
• マイクロサービスへの対応
• サービス個別の管理運用と
スケーラビリティ
多彩なデータソースに
対応
• リレーショナルと
ノン・リレーショナル
User profile
service
Order
service
Partner
service
Catalog
service
Notification
service
Import
service
HTTP/2 REST JSON XHR
Event JAX-RS/JSON Notifications JAX-WS
RDBMS NoSQL DB TSDBData Streams
Time SeriesEventsKey ValueJDBC
34
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 35
Make Your Middle Tier Stateless
Push all state and configuration down to highly available cloud services
Application Server
File System
Application Server
File System
Application Server
File System
Application Server
File System
Application
Instance
File System
Load Balancer
Sticky to an
Individual
Instance
Application
InstanceApplication
InstanceApplication
InstanceApplication
Instance
Load Balancer
NOT Sticky to
an Individual
Instance
State
Service
Configuration
Service
Application
Instance
Key to Cloud Native
Session State
Shopping cart contents, page
view data, personalization, etc
Application Configuration
Port numbers, file system
paths, host names, etc
Legacy Cloud Native
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 36
Platform Architecture
Orchestration – Deployment, Scheduling, and Standup
BareMetal
Orchestration
Deployment
Manager
Local Service Impls
Additional Local Classfiles
Java EE
Cloud Native App
Container
Container
Container
Java EE
Cloud Native App
JLink
Local Service Impls
Additional Local Classfiles
Java EE
Cloud Native App
With Just Enough
Container
Container
Container
Java EE
Cloud Native App
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 37
Platform Architecture
Orchestration – Inspection, Injection, and Wiring
BareMetal
Orchestration
Container
Config
Cache
Logging
Platform Services
Service
Registry
Java EE
Cloud Native App
Java EE Cloud Native App
@Config
@Cache
@Logging
@Service Name
Impl
Impl
Impl
Impl
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Recent Java EE 7 compatibility updates: Congratulations!テクノロジーのフォーカスエリア:サマリー
 リアクティブ・プログラミン
グの導入
 Unified event model
 Event messaging API
 JAX-RS, HTTP/2,
Lambda, JSON-B, ...
Programming Model
 外部化されたState管
理へストアするAPI
State
 データストラクチャの変更
時に自動的にイベントを発
生させる
Eventual Consistency
 クライアント側のサー
キットブレーカのサ
ポート
 回復用コマンド
 クライアント側のヘル
ス・レポートのフォー
マットを標準化
Resiliency
 新仕様 – インタフェース、
パッケージングフォーマッ
ト、マニフェスト
 ごく短命なインスタンス
Serverless
 Secret management
 OAuth
 OpenID
Security アプリケーションとランタ
イムをサービスとしてパッ
ケージ
 スタンドアロン型のイ
ミュータブル実行バイナリ
 多様な形態のアーカイブ
Packaging
 集約性の向上
 テナントベースのルー
ティングとデプロイ
Multitenancy
 コンフィグレーションを
外だしにする
 コンフィグレーションへ
アクセスする統一化
API
Configuration
 key valueとDocument DB
のための永続性とクエリ・
インタフェース
Key Value/Doc Store
38
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
提案プラットフォームアーキテクチャ
Java EE Packaging, Serverless, Multitenancy
OS / Hypervisor
Container Runtime
Java SE Runtime
Java EE Runtime
Programming Model
API Gateway
Load Balancer
HTTP/2
JSON-B
Event API
REST API
Security API State API Config API
Eventual
Consistency
Resiliency
Key Value
Store API
39
Key Value
Database
Logging
Config
State
Security
Notification
Reliability,Monitoring
ManagementandOrchestration
SchedulingandElasticScaling
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 40
Java EE 7
Connector JAXBJSP Debugging
Managed BeansJSPConcurrency EE Interceptors JAX-WS WebSocket
Bean Validation JASPIC ServletJMS JTADeployment
Batch JACCDependency
Injection JAXR JSTL Management
CDI EJB JAX-RPC Web ServicesJSF JPA
JSON-PCommon
Annotations EL JAX-RS Web Services
MetadataJavaMail
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
修整版 Java EE 8 プロポーザル
41
No Change to Plan
Propose to Drop
Propose to Add
 JSON <-> object mapping
JSON-B 1.0 (JSR 367)
 Flexible JMS MDBs
 Improved XA support
JMS 2.1 (JSR 368)
 HTTP/2 support
Servlet 4.0 (JSR 369)
 Reactive enhancements
 Server-sent events
 Non-blocking I/O
 Client-side circuit breakers
JAX-RS 2.1 (JSR 370)
 Action-based MVC framework
MVC 1.0 (JSR 371)
 Small-scale new features
 Community-driven improvements
JSF 2.3 (JSR 372)
 REST-based APIs
Management 2.0 (JSR 373)
 JSON Pointer and Patch
 Java Lambda support
JSON-P 1.1 (JSR 374)
 Authentication/authorization APIs
 OAuth, OpenID support
 Secret management
Security 1.0 (JSR 375)
 Standard for externalizing application
configuration
Configuration
 Standard for client-side health reporting
Health Checking
 Bootstrap API for Java SE
 Async events
 Observer ordering
CDI 2.0 (JSR 365)
 Collection constraints
 Date/Time support
 Community-requested features
Bean Validation 2.0 (JSR 380)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 42
Java EE 8 (Revised Proposal, 2016)
Connector JAXBJSP Debugging
Managed BeansJSPConcurrency EE Interceptors JAX-WS WebSocket
Bean Validation JASPIC ServletJMS JTADeployment
Batch JACCDependency
Injection JAXR JSTL Management
CDI EJB JAX-RPC Web ServicesJSF JPA
Common
Annotations EL JAX-RS Web Services
MetadataJavaMail
CDI
JSON-B Security
Bean Validation
JSF
JAX-RS JSON-P
Servlet
Health CheckConfiguration
JSP
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 43
Java EE Roadmap
Java EE Communityとの協力
• サーベイからフィードバック
• Java EE Next JSRsの策定
2016 Java EE 8
• Specs, RI, TCK の提供
• マイクロサービス・サポート
(イニシャル)
• Java EE 9 策定
• Java EE 9インプリメンテーショ
ンの Early Access版提供
Java EE 9
• Specs, RI, TCK の提供
• モジュラー Java EEランタイ
ム
• マイクロサービス・サポー
ト(エンハンスド)
2017
2018
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 44
最新Java情報はこちらから!:Oracle Java & Developers
https://builder.japan.zdnet.com/sp_oracle/
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 45
今すぐTRY! Oracle Cloud無料トライアルのご案内
https://cloud.oracle.com/ja_JP/tryit
Confidential – Oracle Internal/Restricted/Highly Restricted 46
今年はJava進化の年!今知っておくべき新しいJava

More Related Content

What's hot

What's hot (20)

Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版
 
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
 
XP祭り2021LT資料(「俺のLT」完結編)
 XP祭り2021LT資料(「俺のLT」完結編) XP祭り2021LT資料(「俺のLT」完結編)
XP祭り2021LT資料(「俺のLT」完結編)
 
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話
 
JSUG20171027-spfingboot-k8s-ocp
JSUG20171027-spfingboot-k8s-ocpJSUG20171027-spfingboot-k8s-ocp
JSUG20171027-spfingboot-k8s-ocp
 
red-hat-forum-2017-openshift-baremetal-deployment
red-hat-forum-2017-openshift-baremetal-deploymentred-hat-forum-2017-openshift-baremetal-deployment
red-hat-forum-2017-openshift-baremetal-deployment
 
20211118 dbts2021 マイクロサービスにおけるApache Geodeの効果的な使い方
20211118 dbts2021 マイクロサービスにおけるApache Geodeの効果的な使い方20211118 dbts2021 マイクロサービスにおけるApache Geodeの効果的な使い方
20211118 dbts2021 マイクロサービスにおけるApache Geodeの効果的な使い方
 
JavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jpJavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jp
 
【de:code 2020】 AI とデータ サイエンスを加速する NVIDIA の最新 GPU アーキテクチャ
【de:code 2020】 AI とデータ サイエンスを加速する NVIDIA の最新 GPU アーキテクチャ【de:code 2020】 AI とデータ サイエンスを加速する NVIDIA の最新 GPU アーキテクチャ
【de:code 2020】 AI とデータ サイエンスを加速する NVIDIA の最新 GPU アーキテクチャ
 
DevOpsに求められる様々な技術とその連携の学習方法
DevOpsに求められる様々な技術とその連携の学習方法DevOpsに求められる様々な技術とその連携の学習方法
DevOpsに求められる様々な技術とその連携の学習方法
 
Oracle jdk 20190827 - 今、あらためてOracle提供のJDKを語る
Oracle jdk 20190827 - 今、あらためてOracle提供のJDKを語るOracle jdk 20190827 - 今、あらためてOracle提供のJDKを語る
Oracle jdk 20190827 - 今、あらためてOracle提供のJDKを語る
 
Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」 #jjug_ccc #ccc_f3
Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」 #jjug_ccc #ccc_f3Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」 #jjug_ccc #ccc_f3
Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」 #jjug_ccc #ccc_f3
 
MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...
MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...
MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...
 
Java in the World of Container by David Buck
Java in the World of Container by David BuckJava in the World of Container by David Buck
Java in the World of Container by David Buck
 
de:code 2019 Cloud トラック 総まとめ!
de:code 2019 Cloud トラック 総まとめ!de:code 2019 Cloud トラック 総まとめ!
de:code 2019 Cloud トラック 総まとめ!
 
[Modern Cloud Day Tokyo 2019] Oracle CloudでDevOps!?Javaアプリケーションのモダン開発を支援するOra...
[Modern Cloud Day Tokyo 2019] Oracle CloudでDevOps!?Javaアプリケーションのモダン開発を支援するOra...[Modern Cloud Day Tokyo 2019] Oracle CloudでDevOps!?Javaアプリケーションのモダン開発を支援するOra...
[Modern Cloud Day Tokyo 2019] Oracle CloudでDevOps!?Javaアプリケーションのモダン開発を支援するOra...
 
[de:code 2019 振り返り Night!] Data Platform
[de:code 2019 振り返り Night!] Data Platform[de:code 2019 振り返り Night!] Data Platform
[de:code 2019 振り返り Night!] Data Platform
 
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)
 
OSC 2020 Fukuoka IT運用自動化を支援する「運用レコメンドプラットフォーム」実現の舞台裏
OSC 2020 Fukuoka IT運用自動化を支援する「運用レコメンドプラットフォーム」実現の舞台裏OSC 2020 Fukuoka IT運用自動化を支援する「運用レコメンドプラットフォーム」実現の舞台裏
OSC 2020 Fukuoka IT運用自動化を支援する「運用レコメンドプラットフォーム」実現の舞台裏
 
Tech deepdive#2 datastore_180317_share
Tech deepdive#2 datastore_180317_shareTech deepdive#2 datastore_180317_share
Tech deepdive#2 datastore_180317_share
 

Viewers also liked

Re:ゼロから文化を創り、技術を伝承する ~客先常駐エンジニアと「社内勉強会」で築いた価値と変化
Re:ゼロから文化を創り、技術を伝承する ~客先常駐エンジニアと「社内勉強会」で築いた価値と変化Re:ゼロから文化を創り、技術を伝承する ~客先常駐エンジニアと「社内勉強会」で築いた価値と変化
Re:ゼロから文化を創り、技術を伝承する ~客先常駐エンジニアと「社内勉強会」で築いた価値と変化
Shunsuke Suga
 
Yahoo!ブラウザーアプリのプロダクトマネージャーが考えていること
Yahoo!ブラウザーアプリのプロダクトマネージャーが考えていることYahoo!ブラウザーアプリのプロダクトマネージャーが考えていること
Yahoo!ブラウザーアプリのプロダクトマネージャーが考えていること
Yahoo!デベロッパーネットワーク
 
データテクノロジースペシャル:Yahoo! JAPANにおけるメタデータ管理の試み
データテクノロジースペシャル:Yahoo! JAPANにおけるメタデータ管理の試みデータテクノロジースペシャル:Yahoo! JAPANにおけるメタデータ管理の試み
データテクノロジースペシャル:Yahoo! JAPANにおけるメタデータ管理の試み
Yahoo!デベロッパーネットワーク
 
Yahoo! JAPANのサービス開発を10倍早くした社内PaaS構築の今とこれから
Yahoo! JAPANのサービス開発を10倍早くした社内PaaS構築の今とこれからYahoo! JAPANのサービス開発を10倍早くした社内PaaS構築の今とこれから
Yahoo! JAPANのサービス開発を10倍早くした社内PaaS構築の今とこれから
Yahoo!デベロッパーネットワーク
 
行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋
行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋
行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋
Yahoo!デベロッパーネットワーク
 

Viewers also liked (20)

[Developers Summit 2017] MicrosoftのAI開発機能/サービス
[Developers Summit 2017] MicrosoftのAI開発機能/サービス[Developers Summit 2017] MicrosoftのAI開発機能/サービス
[Developers Summit 2017] MicrosoftのAI開発機能/サービス
 
【17-D-1】今どきのアーキテクチャを現場の立場で斬る
【17-D-1】今どきのアーキテクチャを現場の立場で斬る【17-D-1】今どきのアーキテクチャを現場の立場で斬る
【17-D-1】今どきのアーキテクチャを現場の立場で斬る
 
【17-E-1】自動化はどこに向かうのか~まだ開発・運用の自動化で消耗しているの?~
【17-E-1】自動化はどこに向かうのか~まだ開発・運用の自動化で消耗しているの?~【17-E-1】自動化はどこに向かうのか~まだ開発・運用の自動化で消耗しているの?~
【17-E-1】自動化はどこに向かうのか~まだ開発・運用の自動化で消耗しているの?~
 
Re:ゼロから文化を創り、技術を伝承する ~客先常駐エンジニアと「社内勉強会」で築いた価値と変化
Re:ゼロから文化を創り、技術を伝承する ~客先常駐エンジニアと「社内勉強会」で築いた価値と変化Re:ゼロから文化を創り、技術を伝承する ~客先常駐エンジニアと「社内勉強会」で築いた価値と変化
Re:ゼロから文化を創り、技術を伝承する ~客先常駐エンジニアと「社内勉強会」で築いた価値と変化
 
Googleのインフラ技術から考える理想のDevOps
Googleのインフラ技術から考える理想のDevOpsGoogleのインフラ技術から考える理想のDevOps
Googleのインフラ技術から考える理想のDevOps
 
Developers Summit 2017 17-A-7 執筆を支える技術と技術書のトレンド
Developers Summit 2017 17-A-7 執筆を支える技術と技術書のトレンドDevelopers Summit 2017 17-A-7 執筆を支える技術と技術書のトレンド
Developers Summit 2017 17-A-7 執筆を支える技術と技術書のトレンド
 
サーバーレスにおける開発プロセス戦略(パネルディスカッション用スライド)
サーバーレスにおける開発プロセス戦略(パネルディスカッション用スライド)サーバーレスにおける開発プロセス戦略(パネルディスカッション用スライド)
サーバーレスにおける開発プロセス戦略(パネルディスカッション用スライド)
 
[Devsumi2017]オルタナティブなチーム開発のすゝめ
[Devsumi2017]オルタナティブなチーム開発のすゝめ[Devsumi2017]オルタナティブなチーム開発のすゝめ
[Devsumi2017]オルタナティブなチーム開発のすゝめ
 
正しくプロダクトを作り、リリースプランニングするためのプロダクトオーナーの役割とは
正しくプロダクトを作り、リリースプランニングするためのプロダクトオーナーの役割とは正しくプロダクトを作り、リリースプランニングするためのプロダクトオーナーの役割とは
正しくプロダクトを作り、リリースプランニングするためのプロダクトオーナーの役割とは
 
Yahoo!ブラウザーアプリのプロダクトマネージャーが考えていること
Yahoo!ブラウザーアプリのプロダクトマネージャーが考えていることYahoo!ブラウザーアプリのプロダクトマネージャーが考えていること
Yahoo!ブラウザーアプリのプロダクトマネージャーが考えていること
 
Developer Summit 2017
Developer Summit 2017Developer Summit 2017
Developer Summit 2017
 
データテクノロジースペシャル:Yahoo! JAPANにおけるメタデータ管理の試み
データテクノロジースペシャル:Yahoo! JAPANにおけるメタデータ管理の試みデータテクノロジースペシャル:Yahoo! JAPANにおけるメタデータ管理の試み
データテクノロジースペシャル:Yahoo! JAPANにおけるメタデータ管理の試み
 
リクルート式AIの活用法
リクルート式AIの活用法リクルート式AIの活用法
リクルート式AIの活用法
 
エンジニアが働きたい場所で働けるために、チームに必要なこと
エンジニアが働きたい場所で働けるために、チームに必要なことエンジニアが働きたい場所で働けるために、チームに必要なこと
エンジニアが働きたい場所で働けるために、チームに必要なこと
 
Devsumi20170217
Devsumi20170217Devsumi20170217
Devsumi20170217
 
スタディサプリを支えるデータ分析基盤 ~設計の勘所と利活用事例~
スタディサプリを支えるデータ分析基盤 ~設計の勘所と利活用事例~スタディサプリを支えるデータ分析基盤 ~設計の勘所と利活用事例~
スタディサプリを支えるデータ分析基盤 ~設計の勘所と利活用事例~
 
再考PaaS 〜 Heroku最新情報で考える、2017年のPaaS選択基準 〜
再考PaaS 〜 Heroku最新情報で考える、2017年のPaaS選択基準 〜再考PaaS 〜 Heroku最新情報で考える、2017年のPaaS選択基準 〜
再考PaaS 〜 Heroku最新情報で考える、2017年のPaaS選択基準 〜
 
Yahoo! JAPANのサービス開発を10倍早くした社内PaaS構築の今とこれから
Yahoo! JAPANのサービス開発を10倍早くした社内PaaS構築の今とこれからYahoo! JAPANのサービス開発を10倍早くした社内PaaS構築の今とこれから
Yahoo! JAPANのサービス開発を10倍早くした社内PaaS構築の今とこれから
 
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
 
行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋
行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋
行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋
 

Similar to 今年はJava進化の年!今知っておくべき新しいJava

Beginning Java EE 6 勉強会(1) #bje_study
Beginning Java EE 6 勉強会(1) #bje_studyBeginning Java EE 6 勉強会(1) #bje_study
Beginning Java EE 6 勉強会(1) #bje_study
Toshiaki Maki
 
MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20
MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20
MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20
Ryusuke Kajiyama
 

Similar to 今年はJava進化の年!今知っておくべき新しいJava (20)

Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
 
Java EE 再入門
Java EE 再入門Java EE 再入門
Java EE 再入門
 
Beginning Java EE 6 勉強会(1) #bje_study
Beginning Java EE 6 勉強会(1) #bje_studyBeginning Java EE 6 勉強会(1) #bje_study
Beginning Java EE 6 勉強会(1) #bje_study
 
コンテナ環境でJavaイメージを小さくする方法!
コンテナ環境でJavaイメージを小さくする方法!コンテナ環境でJavaイメージを小さくする方法!
コンテナ環境でJavaイメージを小さくする方法!
 
MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20
MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20
MySQL 5.7 & 最新開発状況 @ オープンソースカンファレンス20
 
MySQLインストールのお作法
MySQLインストールのお作法MySQLインストールのお作法
MySQLインストールのお作法
 
JDK: 新しいリリースモデル解説
JDK: 新しいリリースモデル解説JDK: 新しいリリースモデル解説
JDK: 新しいリリースモデル解説
 
これからのJDK/JVM 何を選ぶ?どう選ぶ?
これからのJDK/JVM 何を選ぶ?どう選ぶ?これからのJDK/JVM 何を選ぶ?どう選ぶ?
これからのJDK/JVM 何を選ぶ?どう選ぶ?
 
JDKの選択肢とサーバーサイドでの選び方
JDKの選択肢とサーバーサイドでの選び方JDKの選択肢とサーバーサイドでの選び方
JDKの選択肢とサーバーサイドでの選び方
 
OpenJDKソムリエと巡るJDKワイナリーツアー #sfggjp #javajo
OpenJDKソムリエと巡るJDKワイナリーツアー #sfggjp #javajoOpenJDKソムリエと巡るJDKワイナリーツアー #sfggjp #javajo
OpenJDKソムリエと巡るJDKワイナリーツアー #sfggjp #javajo
 
20161119 java one-feedback_osaka
20161119 java one-feedback_osaka20161119 java one-feedback_osaka
20161119 java one-feedback_osaka
 
JavaOne2015報告またはこれからのJava
JavaOne2015報告またはこれからのJavaJavaOne2015報告またはこれからのJava
JavaOne2015報告またはこれからのJava
 
JDK: 新しいリリースモデル解説(ver.2.0)
JDK: 新しいリリースモデル解説(ver.2.0)JDK: 新しいリリースモデル解説(ver.2.0)
JDK: 新しいリリースモデル解説(ver.2.0)
 
Scalaでのプログラム開発
Scalaでのプログラム開発Scalaでのプログラム開発
Scalaでのプログラム開発
 
GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)
GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)
GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)
 
20140518 JJUG MySQL Clsuter as NoSQL
20140518 JJUG MySQL Clsuter as NoSQL20140518 JJUG MySQL Clsuter as NoSQL
20140518 JJUG MySQL Clsuter as NoSQL
 
20190202 jdk new_release_model_sendai
20190202 jdk new_release_model_sendai20190202 jdk new_release_model_sendai
20190202 jdk new_release_model_sendai
 
Windows環境でのMySQL
Windows環境でのMySQLWindows環境でのMySQL
Windows環境でのMySQL
 
5分で作るMySQL Cluster環境
5分で作るMySQL Cluster環境5分で作るMySQL Cluster環境
5分で作るMySQL Cluster環境
 
5分で作るMySQL Cluster環境
5分で作るMySQL Cluster環境5分で作るMySQL Cluster環境
5分で作るMySQL Cluster環境
 

More from Takashi Ito

More from Takashi Ito (8)

JDK:新しいリリースモデル解説 @ 富山 BuriKaigi 2019
JDK:新しいリリースモデル解説 @ 富山 BuriKaigi 2019JDK:新しいリリースモデル解説 @ 富山 BuriKaigi 2019
JDK:新しいリリースモデル解説 @ 富山 BuriKaigi 2019
 
Java EE, What's Next? by Anil Gaur
Java EE, What's Next? by Anil GaurJava EE, What's Next? by Anil Gaur
Java EE, What's Next? by Anil Gaur
 
20161111 java one2016-feedback
20161111 java one2016-feedback20161111 java one2016-feedback
20161111 java one2016-feedback
 
Java Day Tokyo 2016 feedback at Kumamoto
Java Day Tokyo 2016 feedback at KumamotoJava Day Tokyo 2016 feedback at Kumamoto
Java Day Tokyo 2016 feedback at Kumamoto
 
JavaOne2015フィードバック @ 富山合同勉強会
JavaOne2015フィードバック @ 富山合同勉強会JavaOne2015フィードバック @ 富山合同勉強会
JavaOne2015フィードバック @ 富山合同勉強会
 
20160123 java one2015_feedback @ Osaka
20160123 java one2015_feedback @ Osaka20160123 java one2015_feedback @ Osaka
20160123 java one2015_feedback @ Osaka
 
JavaOne2015報告会 in Okinawa
JavaOne2015報告会 in OkinawaJavaOne2015報告会 in Okinawa
JavaOne2015報告会 in Okinawa
 
112815 java ee8_davidd
112815 java ee8_davidd112815 java ee8_davidd
112815 java ee8_davidd
 

Recently uploaded

Recently uploaded (7)

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 

今年はJava進化の年!今知っておくべき新しいJava

  • 1. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 今年はJava進化の年! 今知っておくべき新しいJava 2017年2月17日 日本オラクル株式会社 クラウド・テクノロジー事業統括 Fusion Middleware事業本部 伊藤 敬 @itakash
  • 2. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Java SE最新動向
  • 3. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Java SE Roadmap JDK 8 • Lambda & Stream API • New Date and Time API • Nashorn: JavaScript Interoperability • JavaFX Enhancements • Etc.. 8u40 • Performance Improvements • Density and Resource Management • Multi-Language Support Improvements • Accessibility Enhancements • Continued Java SE Advanced Features JDK 9 • Modularity – Jigsaw • Jshell (Java Shell) • HTTP 2.0 • G1GC as default • JDK 5 source code can not compile • Continued Java SE Advanced Features 8u20 • G1 Performance Improvement • JVM Performance Improvements • Java Mission Control 5.4 • Advanced Management Console 1.0 • MSI Enterprise JRE Installer 8u60 • Bug Fixes • Continued Java SE Advanced Features 20162014 2015 2017 3
  • 4. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Java 9リリースまでのスケジュール (as of 2/17/2017) • 2016/05/26 Feature Complete(JDK9の仕様・実装確定) • 2016/12/22 Feature Extension Complete (その他マイナーな仕様・実装確定) • 2017/01/05 Rampdown Start (テストで露見したBugの修正開始) • 2017/02/09 All Tests Run(最終総合テスト開始) • 2017/02/16 Zero Bug Bounce(露見した全てのBugの手当て・方策確定) • 2017/03/16 Rampdown Phase 2(Bug修正最終段階) • 2017/07/06 Final Release Candidate(正式リリース版の最終候補確定) • 2017/07/27 General Availability(リリース版提供開始) 4 https://jdk9.java.net/
  • 5. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | JDK 9紹介
  • 6. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 主要機能 • Jigsaw • jshell: The Java Shell (JEP 222) • Javadoc機能改善 – HTML5(JEP 224) / Search (JEP 225) • Encapsulate Most Internal APIs (JEP 260) • Process API Updates (JEP 102) • Multi Release Jar Files (JEP 238) • Security強化・関連JEP • Deprecated/Removed機能
  • 7. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Jigsaw – JDK/JREのモジュール化 7 • Java 8 – Compact Profile 1, 2, 3, Fullの4種類を提供 • Java 9 – 任意のモジュールを組み合わせてランタイ ムが作成できる – 不要なモジュールをJREに含めないことで、 軽量化、セキュリティ向上が期待できる JEP 200: The Modular JDK http://openjdk.java.net/jeps/200
  • 8. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Java SE 9 – モジュールの導入(Project Jigsaw) • Javaプログラム構造の変更 – ”Module”の導入 Package Class & Interface public class sample { public void main(…) { string str: int x; void sampleMethod(); … Package Class & Interface public class sample { public void main(…) { string str: int x; void sampleMethod(); … Module 8
  • 9. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 9 モジュールの定義はmodule-info.javaで行う module com.foo.app { requires com.foo.bar; requires java.sql; } com.foo.app java.sqlcom.foo.bar module-info.java 依存性
  • 10. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 10 module-info.java: 公開範囲の宣言 module com.foo.bar { exports com.foo.bar.alpha; exports com.foo.bar.beta; } com.foo.bar com.foo.bar.alpha com.foo.bar.beta com.foo.bar.internal module-info.java
  • 11. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Jigsaw - jlink: The Java Linker (JEP 282) • jlink - Jigsawのためのコマンドツール • 必要なモジュールだけをまとめたカスタムJREを作成できる 11 jlink --modulepath mods;"C:¥Program Files¥Java¥jdk-9¥jmods" --addmods xxx --output yyy
  • 12. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 12 Javaコマンドでリンクされているモジュールを確認 $ java -listmods java.activation@9.0 java.annotations.common@9.0 java.base@9.0 java.compact1@9.0 java.compact2@9.0 java.compact3@9.0 java.compiler@9.0 java.corba@9.0 java.datatransfer@9.0 java.desktop@9.0 java.instrument@9.0 java.logging@9.0 java.management@9.0 java.naming@9.0 java.prefs@9.0 java.rmi@9.0 java.scripting@9.0 java.se@9.0 java.security.jgss@9.0 java.security.sasl@9.0 java.smartcardio@9.0 java.sql@9.0 java.sql.rowset@9.0 java.transaction@9.0 java.xml@9.0 java.xml.bind@9.0 java.xml.crypto@9.0 java.xml.ws@9.0 jdk.attach@9.0 jdk.charsets@9.0 jdk.compiler@9.0 jdk.crypto.ec@9.0 jdk.crypto.pkcs11@9.0 jdk.hotspot.agent@9.0 jdk.httpserver@9.0 jdk.jartool@9.0 jdk.javadoc@9.0 jdk.jcmd@9.0 jdk.jconsole@9.0 jdk.jdeps@9.0 jdk.jdi@9.0 jdk.jdwp.agent@9.0 jdk.jlink@9.0 jdk.jvmstat@9.0 jdk.localedata@9.0 jdk.management@9.0 jdk.naming.dns@9.0 jdk.naming.rmi@9.0 jdk.pack200@9.0 jdk.policytool@9.0 jdk.rmic@9.0 jdk.scripting.nashorn@9.0 jdk.sctp@9.0 jdk.security.auth@9.0 jdk.security.jgss@9.0 jdk.xml.bind@9.0 jdk.xml.dom@9.0 jdk.xml.ws@9.0 jdk.zipfs@9.0
  • 13. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | jshell: The Java Shell (JEP 222) 13 • JavaのREPL環境 (Read-Eval-Print Loop)を提供 • ちょっとしたJavaコード・新しいAPI、ロジックの確認に役立つ機能 jshell> int k = 14 k ==> 14 jshell> long fibonacci(int n) { ...> return n <= 1? n : fibonacci(n-1) + fibonacci(n-2); ...> } | created method fibonacci(int) jshell> fibonacci(3) $3 ==> 2 jshell> fibonacci(k) $4 ==> 377 jshell> for (int i = 1; i <= k; ++i) printf("%7d: %12d¥n", i, fibonacci(i)) 1: 1 2: 1 3: 2 4: 3 5: 5 ・・・
  • 14. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Javadoc機能改善 – HTML5(JEP 224) / Search (JEP 225) 14 • JavadocのHTML5対応 • Javadocに検索機能を追加 Java 8 Javadoc: https://docs.oracle.com/javase/8/docs/api/ Java 9 Javadoc: http://download.java.net/java/jdk9/docs/api/index.html
  • 15. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Encapsulate Most Internal APIs (JEP 260) 15 • 内部APIのカプセル化 • Java 9からはほとんどの内部APIはデフォルトでアクセスできなくなる • ただし、代替APIの提供が完了していない内部APIは(当分は)利用可能 • Java 9でもアクセス可能な内部APIは以下の通り – sun.misc.Unsafe – sun.misc.{Signal,SignalHandler} – sun.reflect.Reflection::getCallerClass – sun.reflect.ReflectionFactory – sun.misc.Cleaner
  • 16. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Multi Release Jar Files (JEP 238) • 1つのJarファイルの中で、複数のJavaバージョンを指定できる 16 META-INF Content Root A.class B.class C.class D.class Normal JAR META-INF versions -8 A.class B.class -9 C.class Content Root A.class B.class C.class D.class Multi Release JAR
  • 17. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Deprecated/Removed機能 17 • 以下の機能はJava 9からは非推奨(Deprecated)または削除(Removed) – 非推奨 • JEP 289: Deprecate the Applet API –アプレットはJava 9からは非推奨扱い – 削除 • JEP 241: Remove the jhat Tool • JEP 231: Remove Launch-Time JRE Version Selection • JEP 240: Remove the JVM TI hprof Agent
  • 18. Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | JDK9 移行のポイント 18
  • 19. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | • バグ修正 • 利用可能なアルゴリズムの変更 • セキュリティ改善 • サポート対象プラットフォームの 変更 • ネイティブコードの使用 • Properties の変更 • 非推奨の警告(@depricated) • デプロイ系の変更(browser) • 内部実装の変更 – GC アルゴリズム – G1GCデフォルト化 – 多くの内部API の使用不可 • パッケージ – ファイル名、内部ファイルの形式、 – レジストリのキー(Windows)、インス トール先(ディレクトリ) • ツールやファイルの排除 • 非推奨のメソッド、クラス、機能の 排除 19 JDK 9で想定される主要な非互換の原因
  • 20. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | JEP 260: Encapsulate most internal APIs • デフォルトで殆どの内部API をアクセスすることが出来なくなる • 幾つかの利用頻度の高い API は暫定的に利用可能を継続 – 代替できる public API がまだないことが前提 20 ほとんどの内部APIが利用不可になる
  • 21. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 殆どの sun.misc.* と sun.reflect.* API の利用不可に • 代替 public API がまだ存在しないものが一時的に残る – sun.misc.Unsafe – sun.misc.{Signal,SignalHandler} – sun.misc.Cleaner – sun.reflect.Reflection::getCallerClass – sun.reflect.ReflectionFactory • 上記以外の sun.{misc,reflect}の API が利用できなくなる – 例:sun.misc.Base64 21 sun.misc.Base64.Encoder sun.misc.Base64.Decoder java.util.Base64.Encoder java.util.Base64.Decoder
  • 22. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 内部API利用の確認、暫定の内部API利用 • JDK 8 に含まれている jdeps ツールを使って、内部 API の利用を検出 することが出来る – JDK 9 に含まれているバージョンの利用を推奨 • どうしても従来の内部API利用が必要な場合は、コマンドラインのフラグ 指定によって従来のライブラリ利用を指定、利用することが可能 – あくまで暫定の処置方法をご理解ください 22
  • 23. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | JEP 223: New Version String Scheme(バージョニング変更) • JDK 8 以前の version string は独自ルール • 新しい仕組みはセマンティック バージョニングを準拠し、従来の歴史的な 部分(1.x や u など)を排除 • JDK のファイル名も変更する • JDK 9以降の変更 – JDK8まではこれまでバージョニングを維持 23 JDK 1.9.0_25 から JDK 9.1.9 へ JDK <major version>.<minor version>.<security update>
  • 24. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | JEP 220: Modular Run-Time Images • 実行環境にモジュール化が導入されるため、JREのディレクトリ構成、ファイル構成 が変更される – ファイル名、ファイルの内部構造、Windowsのレジストリキー、インストール・ホルダ • JREのフォルダー構成及び上記の変更箇所に依存する実装はお勧めしません – 独自のライブラリ等は、別のホルダを作成し、明示的にクラスパスを指定することをお勧めします • 既存のアプリケーションで上記のようなコードが存在する場合は修正が必要 24 JREディレクトリ構成、ファイル構成の変更、rt.jar の排除
  • 25. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Java 9 EA版でのJREディレクトリ構成 25 • JDK 9 Early Access Build 153で確認したJRE/lib以下のディレクトリ構成 – JRE 8のディレクトリ構成とは異なる • lib/applet, lib/ext • rt.jarがなくなる
  • 26. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | コンパイル可能なバージョンの制限 JEP 182: Policy for Retiring “javac –source and –target options” • {-source,-target} 1.5 は JDK 8 で非推奨化 • JDK 9 では 1.6 以上をサポート、1.5より以前は非対応 • 新しいポリシーは”one plus three back” –例: JDK 9 は 6, 7, 8, 9 JDK 10 は 7, 8, 9, 10 26
  • 27. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | JavaDB の非搭載 • JavaDB は単純に Apache Derby のコピー • JDK 7 と JDK 8 で付属されていた • Apache プロジェクトからの直接入手に変更 27
  • 28. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Javaプラグイン実行時のメッセージ表示 28
  • 29. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | JDK9/JRE9でアプレットを起動した際に表示される メッセージ画面(日本語) • JRE9からはアプレットを起動すると以下のような警告メッセージが表示されます デスクトップ Javaコンソール * メッセージ全文(ポップアップと同 じ文面) 警告: Java Plug-inが非推奨であり、 今後のJavaリリースでの削除が考 えられます。このコンテンツの開発 者に連絡してこのプログラムの更 新を依頼してください。 29
  • 30. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | メッセージ画面(「発行者」が設定されている場合) 「発行者」が設定されている場合、 その値が警告メッセージのここに入る。 30
  • 31. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Java EE 8 修整提案
  • 32. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Java EE – What’s Next? 32 クラウドとマイクロサービスのための 新しいアプリケーション開発のスタイル
  • 33. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Java Platform, Enterprise Edition への提案仕様 • クラウド、マイクロサービス向けの 新しいアプリケーション開発を想定 • 実績あるテクノロジーで構成 • 包括的な構成 – プログラミング・モデル、パッケージング、 ポータビリティ • 標準ベース – 本内容は提案仕様 – JCPプロセスに沿ってコミュニティととも に検討を進める 33
  • 34. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | クラウド・アプリケーション開発で想定する各要素 異種クライアントとの連携 を実現する • 多言語化 • Mobile, REST, HTML5 ステートレス・サービスの 主流化 • マイクロサービスへの対応 • サービス個別の管理運用と スケーラビリティ 多彩なデータソースに 対応 • リレーショナルと ノン・リレーショナル User profile service Order service Partner service Catalog service Notification service Import service HTTP/2 REST JSON XHR Event JAX-RS/JSON Notifications JAX-WS RDBMS NoSQL DB TSDBData Streams Time SeriesEventsKey ValueJDBC 34
  • 35. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 35 Make Your Middle Tier Stateless Push all state and configuration down to highly available cloud services Application Server File System Application Server File System Application Server File System Application Server File System Application Instance File System Load Balancer Sticky to an Individual Instance Application InstanceApplication InstanceApplication InstanceApplication Instance Load Balancer NOT Sticky to an Individual Instance State Service Configuration Service Application Instance Key to Cloud Native Session State Shopping cart contents, page view data, personalization, etc Application Configuration Port numbers, file system paths, host names, etc Legacy Cloud Native
  • 36. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 36 Platform Architecture Orchestration – Deployment, Scheduling, and Standup BareMetal Orchestration Deployment Manager Local Service Impls Additional Local Classfiles Java EE Cloud Native App Container Container Container Java EE Cloud Native App JLink Local Service Impls Additional Local Classfiles Java EE Cloud Native App With Just Enough Container Container Container Java EE Cloud Native App
  • 37. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 37 Platform Architecture Orchestration – Inspection, Injection, and Wiring BareMetal Orchestration Container Config Cache Logging Platform Services Service Registry Java EE Cloud Native App Java EE Cloud Native App @Config @Cache @Logging @Service Name Impl Impl Impl Impl
  • 38. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Recent Java EE 7 compatibility updates: Congratulations!テクノロジーのフォーカスエリア:サマリー  リアクティブ・プログラミン グの導入  Unified event model  Event messaging API  JAX-RS, HTTP/2, Lambda, JSON-B, ... Programming Model  外部化されたState管 理へストアするAPI State  データストラクチャの変更 時に自動的にイベントを発 生させる Eventual Consistency  クライアント側のサー キットブレーカのサ ポート  回復用コマンド  クライアント側のヘル ス・レポートのフォー マットを標準化 Resiliency  新仕様 – インタフェース、 パッケージングフォーマッ ト、マニフェスト  ごく短命なインスタンス Serverless  Secret management  OAuth  OpenID Security アプリケーションとランタ イムをサービスとしてパッ ケージ  スタンドアロン型のイ ミュータブル実行バイナリ  多様な形態のアーカイブ Packaging  集約性の向上  テナントベースのルー ティングとデプロイ Multitenancy  コンフィグレーションを 外だしにする  コンフィグレーションへ アクセスする統一化 API Configuration  key valueとDocument DB のための永続性とクエリ・ インタフェース Key Value/Doc Store 38
  • 39. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 提案プラットフォームアーキテクチャ Java EE Packaging, Serverless, Multitenancy OS / Hypervisor Container Runtime Java SE Runtime Java EE Runtime Programming Model API Gateway Load Balancer HTTP/2 JSON-B Event API REST API Security API State API Config API Eventual Consistency Resiliency Key Value Store API 39 Key Value Database Logging Config State Security Notification Reliability,Monitoring ManagementandOrchestration SchedulingandElasticScaling
  • 40. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 40 Java EE 7 Connector JAXBJSP Debugging Managed BeansJSPConcurrency EE Interceptors JAX-WS WebSocket Bean Validation JASPIC ServletJMS JTADeployment Batch JACCDependency Injection JAXR JSTL Management CDI EJB JAX-RPC Web ServicesJSF JPA JSON-PCommon Annotations EL JAX-RS Web Services MetadataJavaMail
  • 41. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 修整版 Java EE 8 プロポーザル 41 No Change to Plan Propose to Drop Propose to Add  JSON <-> object mapping JSON-B 1.0 (JSR 367)  Flexible JMS MDBs  Improved XA support JMS 2.1 (JSR 368)  HTTP/2 support Servlet 4.0 (JSR 369)  Reactive enhancements  Server-sent events  Non-blocking I/O  Client-side circuit breakers JAX-RS 2.1 (JSR 370)  Action-based MVC framework MVC 1.0 (JSR 371)  Small-scale new features  Community-driven improvements JSF 2.3 (JSR 372)  REST-based APIs Management 2.0 (JSR 373)  JSON Pointer and Patch  Java Lambda support JSON-P 1.1 (JSR 374)  Authentication/authorization APIs  OAuth, OpenID support  Secret management Security 1.0 (JSR 375)  Standard for externalizing application configuration Configuration  Standard for client-side health reporting Health Checking  Bootstrap API for Java SE  Async events  Observer ordering CDI 2.0 (JSR 365)  Collection constraints  Date/Time support  Community-requested features Bean Validation 2.0 (JSR 380)
  • 42. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 42 Java EE 8 (Revised Proposal, 2016) Connector JAXBJSP Debugging Managed BeansJSPConcurrency EE Interceptors JAX-WS WebSocket Bean Validation JASPIC ServletJMS JTADeployment Batch JACCDependency Injection JAXR JSTL Management CDI EJB JAX-RPC Web ServicesJSF JPA Common Annotations EL JAX-RS Web Services MetadataJavaMail CDI JSON-B Security Bean Validation JSF JAX-RS JSON-P Servlet Health CheckConfiguration JSP
  • 43. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 43 Java EE Roadmap Java EE Communityとの協力 • サーベイからフィードバック • Java EE Next JSRsの策定 2016 Java EE 8 • Specs, RI, TCK の提供 • マイクロサービス・サポート (イニシャル) • Java EE 9 策定 • Java EE 9インプリメンテーショ ンの Early Access版提供 Java EE 9 • Specs, RI, TCK の提供 • モジュラー Java EEランタイ ム • マイクロサービス・サポー ト(エンハンスド) 2017 2018
  • 44. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 44 最新Java情報はこちらから!:Oracle Java & Developers https://builder.japan.zdnet.com/sp_oracle/
  • 45. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 45 今すぐTRY! Oracle Cloud無料トライアルのご案内 https://cloud.oracle.com/ja_JP/tryit
  • 46. Confidential – Oracle Internal/Restricted/Highly Restricted 46