Recommended
PDF
PDF
PDF
Deep dive into instanceof
PDF
PDF
KEY
PDF
PDF
ClassLoader Leak Patterns
PPT
PDF
PDF
Javaはどのように動くのか~スライドでわかるJVMの仕組み
PPTX
PDF
PDF
Javascriptのあれやこれやをまとめて説明してみる
PDF
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
PDF
PDF
Javaで1から10まで書いた話(sanitized)
PDF
「愛されたい!」と思ったときにJavaで書くRubyクラス
PPT
PDF
Laravel_オープンソースカンファレンスhokkaido_JP_2014
PPT
Glass fishで作ったアプリをweblogicに移植してみた
PDF
PDF
PDF
PDF
JavaScriptユーティリティライブラリの紹介
PPTX
Phpフレームワーク 「laravel」でブログを作ろう
PDF
PDF
OSC2011Tokyo/Fall OpenStack Swift入門
PPTX
PDF
More Related Content
PDF
PDF
PDF
Deep dive into instanceof
PDF
PDF
KEY
PDF
PDF
ClassLoader Leak Patterns
What's hot
PPT
PDF
PDF
Javaはどのように動くのか~スライドでわかるJVMの仕組み
PPTX
PDF
PDF
Javascriptのあれやこれやをまとめて説明してみる
PDF
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
PDF
PDF
Javaで1から10まで書いた話(sanitized)
PDF
「愛されたい!」と思ったときにJavaで書くRubyクラス
PPT
PDF
Laravel_オープンソースカンファレンスhokkaido_JP_2014
PPT
Glass fishで作ったアプリをweblogicに移植してみた
PDF
PDF
PDF
PDF
JavaScriptユーティリティライブラリの紹介
PPTX
Phpフレームワーク 「laravel」でブログを作ろう
PDF
PDF
OSC2011Tokyo/Fall OpenStack Swift入門
Similar to LLoT2016 Java Update
PPTX
PDF
PDF
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
PDF
今年はJava進化の年!今知っておくべき新しいJava
PPTX
PPTX
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
PDF
PDF
JDK9 新機能 (日本語&ショートバージョン) #jjug
PDF
PDF
静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料)
KEY
PDF
Javaのカルチャーとグロース - MANABIYA 2018
PDF
PDF
PPTX
KEY
関ジャバ JavaOne Tokyo 2012報告会
PDF
JavaOne2015報告またはこれからのJava
PDF
PDF
PDF
JavaOne 2015 JDK Update (Jigsaw) #j1jp
More from torutk
PDF
Jjugccc2017spring m6 javafx
PPTX
JJUG CCC 2016 Fall: World is not a square, rendering world coastline map with...
PDF
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
PPTX
Java FXグラフィックスとアニメーション入門(JJUG CCC 2015 Spring G-7)
PDF
PPTX
実行可能JavaFXアプリケーションJAR(発表直前版)
PPTX
Jjug night seminar201208_lt_cxxからjvm起動
PPT
PPT
LLoT2016 Java Update 1. 2. 3. 4. 5. 6. 7. 8. Javaが生まれてこの方
1.0 1.1 1.2 1.3 1.4 5 6 7 8 9
2016-08-27 LLoT Language Update - Java 8
1995 1996 1998 2000 2002 2004 2006 2011 2014 2017(予)
1.1
インナークラス
1.4
assert
5
ジェネリクス
オートボクシング
列挙型
拡張for文
可変長引数
アノテーション
static import
7
try-with-resource
例外マルチキャッチ
数値リテラル表記
switch文にString
言語仕様
8
ラムダ式
interfaceに実装可
9. Javaが生まれてこの方
1.0 1.1 1.2 1.3 1.4 5 6 7 8 9
2016-08-27 LLoT Language Update - Java 9
1995 1996 1998 2000 2002 2004 2006 2011 2014 2017(予)
1.1
インナークラス
1.4
assert
5
ジェネリクス
オートボクシング
列挙型
拡張for文
可変長引数
アノテーション
static import
7
try-with-resource
例外マルチキャッチ
数値リテラル表記
switch文にString
言語仕様
8
ラムダ式
interfaceに実装可
10年に1回、大きな改訂
10. Javaが生まれてこの方
1.0 1.1 1.2 1.3 1.4 5 6 7 8 9
2016-08-27 LLoT Language Update - Java 10
1995 1996 1998 2000 2002 2004 2006 2011 2014 2017(予)
1.1
国際化
リフレクション
JDBC
1.2
Swing/Java2D
CORBA
1.3
JNDI
Sound
Timer
1.4
正規表現
ロギング
XML
SSL/TSL
Preference
イメージI/O
NIO
標準ライブラリ
7
NIO.2
8
Stream
日時
JavaFX
5
並行処理
JMX
11. Javaが生まれてこの方
2016-08-27 LLoT Language Update - Java 11
標準ライブラリの成長
0
50
100
150
200
250
0
500
1000
1500
2000
2500
3000
3500
4000
4500
1.0.2 1.1 1.2 1.3 1.4 5 6 7 8
パッケージ数
クラス数
Javaバージョン
クラス数
パッケージ数
12. Javaが生まれてこの方
• 互換性のポリシー
2016-08-27 LLoT Language Update - Java 12
Java バージョンNで提供するAPIを使う
プログラムは、再コンパイルせずに
JavaバージョンN+1で動作すべきである。
提供するAPIは前もって予告(deprecate)
したうえで削除することが可能。
→ deprecateはあるが削除されたAPIはない
13. Javaが生まれてこの方
• 互換性のポリシー
2016-08-27 LLoT Language Update - Java 13
Java バージョンNで提供するAPIを使う
プログラムは、再コンパイルせずに
JavaバージョンN+1で動作すべきである。
提供するAPIは前もって予告(deprecate)
したうえで削除することが可能。
→ deprecateはあるが削除されたAPIはない
コンパイルしたクラスファイルは
新しいJavaバージョンでも動くよ。
標準APIは消さないから20年前の
コードも動くよ
14. Javaが生まれてこの方
1.0 1.1 1.2 1.3 1.4 5 6 7 8 9
2016-08-27 LLoT Language Update - Java 14
1995 1996 1998 2000 2002 2004 2006 2011 2014 2017(予)
Java仮想マシン
Classic VM
HotSpot VM
JIT コンパイラ
Adaptiveコンパイラ、世代別GC
CMS GC
G1GC
15. Java Update – Java SE 8
• ラムダ式
• interfaceへstatic/defaultメソッド(実装記述)
• タイプアノテーション
2016-08-27 LLoT Language Update - Java 15
• Intel CPUのAES-NI対応
• Streams API
• Date and Time API
• JavaFX
言語仕様
標準ライブラリ
仮想マシン
16. Java Update – Java SE 8
• ラムダ式
インタフェースのインスタンスを生成(従来)
2016-08-27 LLoT Language Update - Java 16
class クラス名 implements インタフェース名 {
戻り値型 メソッド名(引数リスト) {
処理
}
}
インタフェース名 変数名 = new クラス名();
17. Java Update – Java SE 8
• ラムダ式
インタフェースのインスタンスを生成
2016-08-27 LLoT Language Update - Java 17
インタフェース名 変数名 = (引数リスト) -> {処理};
18. Java Update – Java SE 8
• ラムダ式
コールバック処理(オブザーバーパターン)を
匿名クラスで実装
2016-08-27 LLoT Language Update - Java 18
button.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
model.execute();
}
});
19. Java Update – Java SE 8
• ラムダ式
コールバック処理(オブザーバーパターン)を
ラムダ式で実装
2016-08-27 LLoT Language Update - Java 19
button.setOnAction( event -> model.execute() );
• コマンドパターン
• ストラテジーパターン
• テンプレートメソッドパターン
などにも適用可
20. Java Update – Java SE 8
• インタフェースへの実装
従来、メソッドはシグニチャ定義のみ
実装を持つ次の2種類のメソッドを定義できる
1)staticメソッド
2)defaultメソッド
2016-08-27 LLoT Language Update - Java 20
21. Java Update – Java SE 8
• インタフェースへの実装
1)static メソッドの実装
2)defaultメソッドの実装
2016-08-27 LLoT Language Update - Java 21
interface HelloEntry {
static void main(String... args) {
System.out.prinln(“I’m an interface.”);
}
}
interface Greet {
default void greet() {
System.out.prinln(“Hello an interface.”);
}
}
22. Java Update – Java SE 8
• インタフェースへの実装
メリット)既存のインタフェースにメソッドを追加
しても壊れない
2016-08-27 LLoT Language Update - Java 22
interface Alfa
void m1();
class Bravo
void m1() {
処理;
}
void m2(); を追加すると
Bravoがコンパイルエラー
default void m2() {
処理;
}
の追加ならBravoは壊れない
23. JavaFX 8
NASA Tracking and Orbit Determination Quality Viewer
2016-08-27 LLoT Language Update - Java 23
https://dzone.com/articles/nasa-conjunction-assessment
Java Update – Java SE 8
24. Java Update – Java SE 9
大きな変更
• 新たなモジュール機能を搭載
標準ライブラリをモノリシックからモジュール化
• REPL環境
2016-08-27 LLoT Language Update - Java 24
25. Java Update – Java SE 9
モジュール化(Jigsaw)
• 依存関係、バージョン番号を付与した新たな構造
• Java標準ライブラリをモジュール化
• アプリケーションもモジュールとして作成可
• アプリケーションの実行に必要な
モジュールだけを抽出して配布
2016-08-27 LLoT Language Update - Java 25
26. Java Update – Java SE 9
REPL環境
2016-08-27 LLoT Language Update - Java 26
27. 28. 29. Java Update – Java SE 8
• メソッド参照
インタフェースのインスタンスを生成する別な方法
2016-08-27 LLoT Language Update - Java 29
インタフェース名 変数名 = 変数名::メソッド名;
インタフェース名 変数名 = クラス名::メソッド名;