Your SlideShare is downloading. ×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Java SE 8 Fukuoka

2,720

Published on

Published in: Technology, News & Politics
0 Comments
14 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,720
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
19
Comments
0
Likes
14
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.1 祝 Java SE 8 正式リリース Yoshio Terada Java Evangelist http://yoshio3.com Twitter : @yoshioterada
  • 2. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.2 以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです 。また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むこ とはできません。以下の事項は、マテリアルやコード、機能を提供することをコミッ トメント(確約)するものではないため、購買決定を行う際の判断材料になさらない で下さい。オラクル製品に関して記載されている機能の開発、リリースおよび時 期については、弊社の裁量により決定されます。 Oracleは、米国オラクルコーポレーション及びその子会社、関連会社の米国及びその他の国における登録商標です。 文中の社名、商品名等は各社の商標または登録商標である場合があります。
  • 3. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.3 Java SE 6 Java SE 7 Java SE 8 Java SE 9 2006年12月 2011年07月 2014年03月 2016年 Java リリースの歴史
  • 4. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.4 Java SE 6 2006年12月 Java SE 6 の新機能 2006 年 12 月 11 日 Java SE 5 を改良したバージョン  ● Web サービス  ● JavaScript エンジン Rhino を組み込み  ● AWT/Swing ライブラリの改善  ● Java DB の統合  ● JDBC の改善   など 
  • 5. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.5 Java SE 7 2011年07月 Java SE 7 がリリースされるまで 2010 年 9 月 8 日 タイトル:Re-thinking JDK 7 Plan A: JDK 7 (as currently defined) Mid 2012 Plan B: JDK 7 : Mid 2011 (minus Lambda, Jigsaw, and part of Coin) JDK 8 : Late 2012 (Lambda, Jigsaw, the rest of Coin, ++) Plan B:早く実装が可能な一部機能を先にリリース
  • 6. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.6 Java SE 7 2011年07月 Java SE 7 の新機能 開発生産性向上と Java SE 8 の準備  ● Project Coin  ● Java NIO.2  ● Fork/Join Framework  ● InvokeDynamic バイトコード命令
  • 7. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.7 Java SE 8 2014年03月 Java SE 8 リリースまでの道のり1 2012 年 7 月 17 日 タイトル:Project Jigsaw: Late for the train I think the best choice is to defer Project Jigsaw to Java 9, and to aim for a two-year release cycle going forward. On this plan Java 8 will ship on time, around September 2013. Jigsaw の検討、実装、検証に時間が足りないため 次の Java SE 9 へ持ち越し Java SE 8 2013年9月
  • 8. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.8 Java SE 8 リリースまでの道のり2 2013 年 4 月 18 日 タイトル:Java 8: Secure the train As a consequence of this renewed focus on security the Java 8 schedule, with a GA release in early September, is no longer achievable. then resume a regular two-year release cadence, with Java 8 due in early 2014 and Java 9 in early 2016. Java開発者がセキュリティ脆弱性対応に集中し、 リリース日を2013 年 9 月から2014年初旬に変更 Java SE 8 2014年初旬
  • 9. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.9 Java SE 8 リリースまでの道のり3 2013 年 4 月 26 日 タイトル:Java 8: Hold the train The target release date for Java 8 is now 2014/3/18. Java SE 8 2014年03月 最終的なリリース予定日を 3/18 に決定
  • 10. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.10 祝 Java SE 8 正式リリース 2014 年 03 月 18 日
  • 11. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.11 JSR- 337 : Java SE 8
  • 12. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.12 Java SE 7 と Java SE 8 の関係 Java SE 7 の主要な新機能 Project Coin Java NIO.2 Fork/Join Framework InvokeDynamic Java SE 8 の主要な新機能 Lambda 式 Stream API Nashorn (JavaScript) 利用と 改善 Date & Time API Type Annotation Compact Profile JavaFX の統合 Java VM の統合
  • 13. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.13 Lambda Expression 関連 14:10∼15:00 徹底解説!Project Lambdaのすべて 吉田 真也さん (@bitter_fox) 15:10∼16:00 null書いたら負け! Java8コーディング作法 きしだ なおきさん (@kis)
  • 14. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.14 Java リッチクライアント開発技術 16:10∼17:00 JavaFX ‒ 8 True Stories about Java FX 8 櫻庭祐一さん(@skrb)
  • 15. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.15 JSR- 310 : Date & Time API 日付処理の開発容易性が向上
  • 16. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.16 Date & Time API の目的 java.util.Date java.util.Calendar java.util.TimeZone java.text.DateFormat これらの API の置き換え用の新しい API を定義 イミュータブル&スレッド・セーフ ISO-8601 の国際標準規格に準拠
  • 17. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.17 Date & Time API の主要なクラス LocalDateTime LocalDate LocalTime 人間的 (日時) ZonedDateTime Instant システム的(瞬間)
  • 18. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.18 プログラムでどのような時間処理が必要? どれを利用するかは 処理内容によって選ぶ必要があり
  • 19. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.19 LocalDate タイムゾーン・時間情報は無し LocalDateTime LocalDate LocalTime 日本で使用するクレジット・カードの作成から有効期限まで 作成 2014年6月14日 有効期間 2017年6月14日 有効期間:3年間 期限切れ 2018年1月1日 警告日付 3週間前 警告メール送信 3週間前の午前2時
  • 20. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.20 LocalDate 現在の年月日を取得 LocalDateTime LocalDate LocalTime 日本で使用するクレジット・カードの作成から有効期限まで 作成 2014年6月14日 LocalDate regDate = LocalDate.now();
  • 21. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.21 LocalDate 年月日の加減処理 (plus) LocalDateTime LocalDate LocalTime 日本で使用するクレジット・カードの作成から有効期限まで 作成 2014年6月14日 有効期間 2017年6月14日 有効期間:3年間 LocalDate regDate = LocalDate.now();! LocalDate expireDate = regDate.plusYears(3);
  • 22. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.22 LocalDate 年月日の前後比較 LocalDateTime LocalDate LocalTime 日本で使用するクレジット・カードの作成から有効期限まで 作成 2014年6月14日 有効期間 2017年6月14日 有効期間:3年間 期限切れ 2018年1月1日 LocalDate regDate = LocalDate.now();! LocalDate expireDate = regDate.plusYears(3);! LocalDate afterDate = LocalDate.of(2018, 1, 1);! if (expireDate.isBefore(afterDate)) {! …
  • 23. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.23 LocalDate 年月日の加減処理 (minus) LocalDateTime LocalDate LocalTime 日本で使用するクレジット・カードの作成から有効期限まで 有効期間 2017年6月14日 警告日付 3週間前 LocalDate expireDate = regDate.plusYears(3);! LocalDate warnDate = expireDate.minusWeeks(3);!
  • 24. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.24 LocalDate 年月日の調整 : TemporalAdjuster import static java.time.temporal.TemporalAdjusters.lastDayOfMonth;! …! LocalDate regDate = LocalDate.now();! LocalDate lastDay = regDate.with(TemporalAdjusters.lastDayOfMonth);! LocalDate lastDay = regDate.with(lastDayOfMonth); // ß スッキリ! import static java.time.temporal.TemporalAdjusters.next;! import static java.time.DayOfWeek.MONDAY;! …! LocalDate regDate = LocalDate.now();! LocalDate nextMonDay = regDate.with(TemporalAdjusters.next(DayOfWeek.MONDAY));! LocalDate nextMonDay2 = regDate.with(next(DayOfWeek.MONDAY));! LocalDate nextMonDay3 = regDate.with(next(MONDAY)); // ß スッキリ
  • 25. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.25 LocalDate 年月日に時間情報を付加 LocalDateTime LocalDate LocalTime 日本で使用するクレジット・カードの作成から有効期限まで 警告日付 3週間前 警告メール送信 3週間前の午前2時 LocalDate warnDate = expireDate.minusWeeks(3);! LocalDateTime sendMsgDateTime = warnDate.atTime(2, 0);! LocalDate から LocalDateTime への変換
  • 26. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.26 LocalDate Period : 日付間の差を取得 LocalDateTime LocalDate LocalTime Period period = Period.between(regDate, warnDate);! Long days = ChronoUnit.DAYS.between(regDate, warnDate);! System.out.println(! "警告送信まで" + period.getYears() + "年" ! + period.getMonths() + "ヶ月" ! + period.getDays() + "日. (" + days + "日)");! ! //警告送信まで2年11ヶ月10日. (1075日)
  • 27. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.27 LocalTime 時間処理:タイムゾーン・日付無し LocalDateTime LocalDate LocalTime LocalTime lTime = LocalTime.now();! LocalTime noon = LocalTime.of(12, 00);! if (lTime.isAfter(noon)) {! }! LocalTime dinnerTime = ! noon.plusHours(8).minusMinutes(30).withNano(0);! LocalTime trunTime = lTime.truncatedTo(ChronoUnit.MINUTES);! LocalDateTime ldateTime = lTime.atDate(LocalDate.now()); タイムゾーン・日付の情報が不要なナノ秒単位の時間操作
  • 28. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.28 LocalDateTime タイムゾーン情報無し LocalDateTime LocalDate LocalTime タイムゾーンが不要な日時処理 2014 年6 月13 日午前10時開店 2014 年6 月14 日午後1時10分開始 +1日3時間10分後
  • 29. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.29 LocalDateTime タイムゾーン情報無し LocalDateTime LocalDate LocalTime タイムゾーンが不要な日時処理 2014 年6 月14 日午後1時10分開始 次の日曜日に散歩 with
  • 30. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.30 LocalDateTime LocalDate + LocalTime LocalDateTime LocalDate LocalTime LocalDateTime ldatetime = LocalDateTime.now();! //2014-06-14T09:30:03.649! LocalDateTime appleOmoteOpen = !      LocalDateTime.of(2014, Month.JUNE, 13, 10, 0);! LocalDateTime javase8kyushu = !      appleOmoteOpen.plusDays(1).plusHours(3).plusMinutes(10);! //2014-06-14T13:10! LocalDateTime kyushuSampo = javase8kyushu.with(next(SUNDAY));! kyushuSampo = kyushuSampo.truncatedTo(ChronoUnit.DAYS);! //2014-06-15T00:00 タイムゾーン情報が不要な日時操作
  • 31. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.31 Instant Instant start = Instant.now();! bar();! Instant end = Instant.now();! ! // Instant の比較には Duration を使用 Duration dur = Duration.between(start, end);! long mills = dur.toMillis();! System.out.println("メソッドの実行時間" + mills); ある瞬間における時間を扱う Instant 瞬間の時間を操作
  • 32. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.32 ZonedDateTime LocalDateTime startJUG = LocalDateTime.of(2014, Month.JULY, 14, 13, 10);! ZoneId jap = ZoneId.of("Asia/Tokyo");! ZonedDateTime jpTimeZone = ZonedDateTime.of(startJUG, jap);! //2014-07-14T13:10+09:00[Asia/Tokyo]! ! String format = ! DateTimeFormatter.ofPattern(“yyyy/MM/dd (E) a HH:mm”).format(jpTimeZone); ! //2014/07/14 (月) 午後 13:10! ZoneId los = ZoneId.of(“America/Los_Angeles”); ZonedDateTime losTimeZone = jpTimeZone.withZoneSameInstant(los);! //2014-07-13T21:10-07:00[America/Los_Angeles] //ロス・サンフランシスコの時刻! LocalDateTime + ZoneId (UTC からのオフセット) ZonedDateTime タイムゾーンを含む日時を扱う
  • 33. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.33 ZonedDateTime LocalDateTime startJUG = LocalDateTime.of(2014, Month.JULY, 14, 13, 10); ! String formatter2 = ! DateTimeFormatter.ofPattern("Gy年MM月dd日(E) a HH:mm").format(jpStartDateTime);! //西暦2014年07月14日(月) 午後 13:10! ! JapaneseDate jdate = JapaneseDate.from(startJUG);! String formatter3 = DateTimeFormatter.ofPattern("Gy年MM月dd日(E)").format(jdate);! //平成26年07月14日(月) (ISO-8601 での実装を推奨) LocalDateTime + ZoneId (UTC からのオフセット) ZonedDateTime タイムゾーンを含む日時を扱う 日時の加減演算でサマー・タイム対応
  • 34. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.34 IoT の時代に Java !!
  • 35. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.35 今後 10 年
  • 36. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.36 500億のデバイス
  • 37. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.37 全てが繋がる 時代へ !!
  • 38. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.38 Java SE 8 Compact プロファイル 各APIにどのプロファイルで 利用可能か記載されている 参考:https://blogs.oracle.com/jtc/entry/a_first_look_at_compact
  • 39. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.39 デモ
  • 40. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.40 IoT with WebSocket
  • 41. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.41 LEGO(Java SE Embedded) & Java EE 7 WebSocket デモの構成 GlassFish v4.0.1 Java SE8/EE 7 Java SE8 Embedded LEGO MindStorms の操作命令を送信 LEGO MindStorms の状態情報を送信 WebSocket LEGO エンドポイント WebSocket サーバ エンドポイント WebSocket ブラウザ エンドポイント JSON JSON JSON JSON
  • 42. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.42 ブラウザからLEGOマインドストームを操作 WebSocket でリアムタイム IoT 通信 ブラウザからの命令  前後左右への移動  停止、スピードアップ・ダウン LEGO からの情報  超音波センサー・データの表示 JSON でデータ送受信し RMI に比べ低オーバヘッド
  • 43. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.43 Java SE 8/EE 7 だけで実現
  • 44. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.44 今後 10 年も Java !!
  • 45. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.45 Java SE 8 (JSR 337) 新機能 •  JSR-308 : Annotations on types •  JSR-310 : Date and Time API •  JSR-335 : Lambda expressions 更新機能 •  JSR-114 : JDBC Rowsets •  JSR-160 : JMX Remote API •  JSR-199 : Java Compiler API •  JSR-173 : Streaming API for XML •  JSR-221 : JDBC 4.0 •  JSR-269 : Pluggable Annotation-Processing API
  • 46. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.46 Language Core Libraries Virtual machine Security Platform Internationalisation
  • 47. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.47 カテゴリ JEP ID 新機能の概要 --/-- 126 Lambda 式 と 仮想的な拡張メソッド(default method) --/-- 138 Autoconf-Based のビルド・システム --/-- 160 Lambda-Form Representation for Method Handles --/-- 161 コンパクト・プロファイル --/-- 162 モジュール化への準備 --/-- 164 AES 暗号化のために CPU 命令の活用 --/-- 174 Nashorn JavaScript エンジン --/-- 176 Mechanical Checking of Caller-Sensitive Methods --/-- 179 Document JDK API Support and Stability vm/-- 142 Reduce Cache Contention on Specified Fields vm/gc 122 パーマネント領域の削除 vm/gc 173 あまり使用されない GC の組み合わせの禁止 JDK 8 : JEP に記載される拡張機能 一覧
  • 48. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.48 カテゴリ JEP ID 新機能の概要 vm/rt 136 Enhanced Verification Errors vm/rt 147 Reduce Class Metadata Footprint vm/rt 148 Small VM vm/rt 171 Fence Intrinsics core/-- 153 Launch JavaFX Applications core/lang 101 Generalized Target-Type Inference core/lang 104 Annotations on Java Types core/lang 105 DocTree API core/lang 106 Add Javadoc to javax.tools core/lang 117 Remove the Annotation-Processing Tool (apt) core/lang 118 Access to Parameter Names at Runtime core/lang 120 Repeating Annotations JDK 8 : JEP に記載される拡張機能 一覧
  • 49. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.49 カテゴリ JEP ID 新機能の概要 core/lnag 139 Enhance javac to Improve Build Speed core/lnag 172 DocLint core/lib 103 Parallel Array Sorting core/lib 107 Bulk Data Operations for Collections core/lib 109 Enhance Core Libraries with Lambda core/lib 112 Charset Implementation Improvements core/lib 119 javax.lang.model Implementation Backed by Core Reflection core/lib 135 Base64 Encoding & Decoding core/lib 149 Reduce Core-Library Memory Usage core/lib 150 Date & Time API core/lib 155 Concurrency Updates core/lib 170 JDBC 4.2 JDK 8 : JEP に記載される拡張機能 一覧
  • 50. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.50 カテゴリ JEP ID 新機能の概要 core/lib 177 Optimize java.text.DecimalFormat.format core/lib 178 Statically-Linked JNI Libraries core/lib 180 Handle Frequent HashMap Collisions with Balanced Trees core/i18n 127 Improve Locale Data Packaging and Adopt Unicode CLDR Data core/i18n 128 BCP 47 Locale Matching core/i18n 133 Unicode 6.2 core/net 184 HTTP URL Permissions core/sec 113 MS-SFU Kerberos 5 Extensions core/sec 114 TLS Server Name Indication (SNI) Extension core/sec 115 AEAD CipherSuites core/sec 121 Stronger Algorithms for Password-Based Encryption core/sec 123 Configurable Secure Random-Number Generation JDK 8 : JEP に記載される拡張機能 一覧
  • 51. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.51 カテゴリ JEP ID 新機能の概要 core/sec 124 Enhance the Certificate Revocation-Checking API core/sec 129 NSA Suite B Cryptographic Algorithms core/sec 130 SHA-224 Message Digests core/sec 131 PKCS#11 Crypto Provider for 64-bit Windows core/sec 140 Limited doPrivileged core/sec 166 Overhaul JKS-JCEKS-PKCS12 Keystores web/jaxp 185 JAXP 1.5: Restrict Fetching of External Resources ご参照:http://openjdk.java.net/projects/jdk8/features JDK 8 : JEP に記載される拡張機能 一覧
  • 52. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.52 最後に
  • 53. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.53
  • 54. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.54 Java Platform Standard Edition 8 ドキュメント http://docs.oracle.com/javase/jp/8/
  • 55. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.55 Java リリース・ノート http://www.oracle.com/technetwork/jp/java/javase/overview/8train-relnotes-latest-2153846-ja.html
  • 56. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.56 JDK 8 の新機能概要 http://www.oracle.com/technetwork/jp/java/javase/overview/8-whats-new-2157071-ja.html
  • 57. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.57 JDK 8 の互換性・非互換性の情報ガイド http://www.oracle.com/technetwork/java/javase/8-compatibility-guide-2156366.html
  • 58. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.58 JDK 8 リリース時の既知の問題 http://www.oracle.com/technetwork/jp/java/javase/8-known-issues-2157115-ja.html
  • 59. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.59 Java サポート・ロードマップ http://www.oracle.com/technetwork/jp/java/eol-135779-ja.html
  • 60. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.60 Java チュートリアル http://docs.oracle.com/javase/tutorial/tutorialLearningPaths.html
  • 61. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.61 is Back
  • 62. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.62

×