Enviar búsqueda
Cargar
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
•
4 recomendaciones
•
2,026 vistas
P
PE-BANK
Seguir
日本オラクル株式会社 オラクルユニバーシティ ビジネス推進部所属 岡田 大輔 (おかだ だいすけ)氏
Leer menos
Leer más
Tecnología
Denunciar
Compartir
Denunciar
Compartir
1 de 71
Descargar ahora
Descargar para leer sin conexión
Recomendados
Java9 and Project Jigsaw
Java9 and Project Jigsaw
takezoe
20140518 JJUG MySQL Clsuter as NoSQL
20140518 JJUG MySQL Clsuter as NoSQL
Ryusuke Kajiyama
MySQLのNoSQL機能 - MySQL JSON & HTTP Plugin for MySQL
MySQLのNoSQL機能 - MySQL JSON & HTTP Plugin for MySQL
Ryusuke Kajiyama
Oracle GoldenGate R12.2 セットアップガイド
Oracle GoldenGate R12.2 セットアップガイド
オラクルエンジニア通信
MySQL de NoSQL Fukuoka
MySQL de NoSQL Fukuoka
Ryusuke Kajiyama
jjugccc2018 app review postmortem
jjugccc2018 app review postmortem
tamtam180
Oracle GoldenGate入門
Oracle GoldenGate入門
オラクルエンジニア通信
Oracle GoldenGate Studio概要
Oracle GoldenGate Studio概要
オラクルエンジニア通信
Recomendados
Java9 and Project Jigsaw
Java9 and Project Jigsaw
takezoe
20140518 JJUG MySQL Clsuter as NoSQL
20140518 JJUG MySQL Clsuter as NoSQL
Ryusuke Kajiyama
MySQLのNoSQL機能 - MySQL JSON & HTTP Plugin for MySQL
MySQLのNoSQL機能 - MySQL JSON & HTTP Plugin for MySQL
Ryusuke Kajiyama
Oracle GoldenGate R12.2 セットアップガイド
Oracle GoldenGate R12.2 セットアップガイド
オラクルエンジニア通信
MySQL de NoSQL Fukuoka
MySQL de NoSQL Fukuoka
Ryusuke Kajiyama
jjugccc2018 app review postmortem
jjugccc2018 app review postmortem
tamtam180
Oracle GoldenGate入門
Oracle GoldenGate入門
オラクルエンジニア通信
Oracle GoldenGate Studio概要
Oracle GoldenGate Studio概要
オラクルエンジニア通信
GoldenGateテクニカルセミナー1「市場のトレンドと最新事例のご紹介」(2016/5/11)
GoldenGateテクニカルセミナー1「市場のトレンドと最新事例のご紹介」(2016/5/11)
オラクルエンジニア通信
Oracle GoldenGate FAQ
Oracle GoldenGate FAQ
オラクルエンジニア通信
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
Yahoo!デベロッパーネットワーク
サンプルアプリケーションで学ぶApache Cassandraを使ったJavaアプリケーションの作り方
サンプルアプリケーションで学ぶApache Cassandraを使ったJavaアプリケーションの作り方
Yuki Morishita
sbt, past and future / sbt, 傾向と対策
sbt, past and future / sbt, 傾向と対策
scalaconfjp
Oracle GoldenGate導入Tips
Oracle GoldenGate導入Tips
オラクルエンジニア通信
Oracle GoldenGate for Big Data 12.2 セットアップガイド
Oracle GoldenGate for Big Data 12.2 セットアップガイド
オラクルエンジニア通信
Nashorn in the future (Japanese)
Nashorn in the future (Japanese)
Logico
MySQL Cluster7.3 GAリリース記念セミナー! MySQL & NoSQL 圧倒的な進化を続けるMySQLの最新機能!
MySQL Cluster7.3 GAリリース記念セミナー! MySQL & NoSQL 圧倒的な進化を続けるMySQLの最新機能!
yoyamasaki
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介
AdvancedTechNight
Apache Geode で始めるSpring Data Gemfire
Apache Geode で始めるSpring Data Gemfire
Akihiro Kitada
States of Dolphin - MySQL最新技術情報2013秋 -
States of Dolphin - MySQL最新技術情報2013秋 -
yoyamasaki
Oracle code one 2018 報告会概要
Oracle code one 2018 報告会概要
Chihiro Ito
Vespa 機能紹介 #yjmu
Vespa 機能紹介 #yjmu
Yahoo!デベロッパーネットワーク
[A23] Oracle移行を簡単に。レプリケーションテクノロジーを使いこなす by Keishi Miyachi
[A23] Oracle移行を簡単に。レプリケーションテクノロジーを使いこなす by Keishi Miyachi
Insight Technology, Inc.
第九回中国地方DB勉強会 in 米子 MySQL 5.7+
第九回中国地方DB勉強会 in 米子 MySQL 5.7+
Ryusuke Kajiyama
Percona ServerをMySQL 5.6と5.7用に作るエンジニアリング(そしてMongoDBのヒント)
Percona ServerをMySQL 5.6と5.7用に作るエンジニアリング(そしてMongoDBのヒント)
Colin Charles
Java 17直前!オレ流OpenJDK「の」開発環境(Open Source Conference 2021 Online/Kyoto 発表資料)
Java 17直前!オレ流OpenJDK「の」開発環境(Open Source Conference 2021 Online/Kyoto 発表資料)
NTT DATA Technology & Innovation
[D37]MySQLの真のイノベーションはこれだ!MySQL 5.7と「実験室」 by Ryusuke Kajiyama
[D37]MySQLの真のイノベーションはこれだ!MySQL 5.7と「実験室」 by Ryusuke Kajiyama
Insight Technology, Inc.
Let's Start Contributing to OpenJDK from Today!(Oracle Groundbreakers APAC Vi...
Let's Start Contributing to OpenJDK from Today!(Oracle Groundbreakers APAC Vi...
NTT DATA Technology & Innovation
今年はJava進化の年!今知っておくべき新しいJava
今年はJava進化の年!今知っておくべき新しいJava
Takashi Ito
コンテナ環境でJavaイメージを小さくする方法!
コンテナ環境でJavaイメージを小さくする方法!
オラクルエンジニア通信
Más contenido relacionado
La actualidad más candente
GoldenGateテクニカルセミナー1「市場のトレンドと最新事例のご紹介」(2016/5/11)
GoldenGateテクニカルセミナー1「市場のトレンドと最新事例のご紹介」(2016/5/11)
オラクルエンジニア通信
Oracle GoldenGate FAQ
Oracle GoldenGate FAQ
オラクルエンジニア通信
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
Yahoo!デベロッパーネットワーク
サンプルアプリケーションで学ぶApache Cassandraを使ったJavaアプリケーションの作り方
サンプルアプリケーションで学ぶApache Cassandraを使ったJavaアプリケーションの作り方
Yuki Morishita
sbt, past and future / sbt, 傾向と対策
sbt, past and future / sbt, 傾向と対策
scalaconfjp
Oracle GoldenGate導入Tips
Oracle GoldenGate導入Tips
オラクルエンジニア通信
Oracle GoldenGate for Big Data 12.2 セットアップガイド
Oracle GoldenGate for Big Data 12.2 セットアップガイド
オラクルエンジニア通信
Nashorn in the future (Japanese)
Nashorn in the future (Japanese)
Logico
MySQL Cluster7.3 GAリリース記念セミナー! MySQL & NoSQL 圧倒的な進化を続けるMySQLの最新機能!
MySQL Cluster7.3 GAリリース記念セミナー! MySQL & NoSQL 圧倒的な進化を続けるMySQLの最新機能!
yoyamasaki
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介
AdvancedTechNight
Apache Geode で始めるSpring Data Gemfire
Apache Geode で始めるSpring Data Gemfire
Akihiro Kitada
States of Dolphin - MySQL最新技術情報2013秋 -
States of Dolphin - MySQL最新技術情報2013秋 -
yoyamasaki
Oracle code one 2018 報告会概要
Oracle code one 2018 報告会概要
Chihiro Ito
Vespa 機能紹介 #yjmu
Vespa 機能紹介 #yjmu
Yahoo!デベロッパーネットワーク
[A23] Oracle移行を簡単に。レプリケーションテクノロジーを使いこなす by Keishi Miyachi
[A23] Oracle移行を簡単に。レプリケーションテクノロジーを使いこなす by Keishi Miyachi
Insight Technology, Inc.
第九回中国地方DB勉強会 in 米子 MySQL 5.7+
第九回中国地方DB勉強会 in 米子 MySQL 5.7+
Ryusuke Kajiyama
Percona ServerをMySQL 5.6と5.7用に作るエンジニアリング(そしてMongoDBのヒント)
Percona ServerをMySQL 5.6と5.7用に作るエンジニアリング(そしてMongoDBのヒント)
Colin Charles
Java 17直前!オレ流OpenJDK「の」開発環境(Open Source Conference 2021 Online/Kyoto 発表資料)
Java 17直前!オレ流OpenJDK「の」開発環境(Open Source Conference 2021 Online/Kyoto 発表資料)
NTT DATA Technology & Innovation
[D37]MySQLの真のイノベーションはこれだ!MySQL 5.7と「実験室」 by Ryusuke Kajiyama
[D37]MySQLの真のイノベーションはこれだ!MySQL 5.7と「実験室」 by Ryusuke Kajiyama
Insight Technology, Inc.
Let's Start Contributing to OpenJDK from Today!(Oracle Groundbreakers APAC Vi...
Let's Start Contributing to OpenJDK from Today!(Oracle Groundbreakers APAC Vi...
NTT DATA Technology & Innovation
La actualidad más candente
(20)
GoldenGateテクニカルセミナー1「市場のトレンドと最新事例のご紹介」(2016/5/11)
GoldenGateテクニカルセミナー1「市場のトレンドと最新事例のご紹介」(2016/5/11)
Oracle GoldenGate FAQ
Oracle GoldenGate FAQ
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
サンプルアプリケーションで学ぶApache Cassandraを使ったJavaアプリケーションの作り方
サンプルアプリケーションで学ぶApache Cassandraを使ったJavaアプリケーションの作り方
sbt, past and future / sbt, 傾向と対策
sbt, past and future / sbt, 傾向と対策
Oracle GoldenGate導入Tips
Oracle GoldenGate導入Tips
Oracle GoldenGate for Big Data 12.2 セットアップガイド
Oracle GoldenGate for Big Data 12.2 セットアップガイド
Nashorn in the future (Japanese)
Nashorn in the future (Japanese)
MySQL Cluster7.3 GAリリース記念セミナー! MySQL & NoSQL 圧倒的な進化を続けるMySQLの最新機能!
MySQL Cluster7.3 GAリリース記念セミナー! MySQL & NoSQL 圧倒的な進化を続けるMySQLの最新機能!
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介
Apache Geode で始めるSpring Data Gemfire
Apache Geode で始めるSpring Data Gemfire
States of Dolphin - MySQL最新技術情報2013秋 -
States of Dolphin - MySQL最新技術情報2013秋 -
Oracle code one 2018 報告会概要
Oracle code one 2018 報告会概要
Vespa 機能紹介 #yjmu
Vespa 機能紹介 #yjmu
[A23] Oracle移行を簡単に。レプリケーションテクノロジーを使いこなす by Keishi Miyachi
[A23] Oracle移行を簡単に。レプリケーションテクノロジーを使いこなす by Keishi Miyachi
第九回中国地方DB勉強会 in 米子 MySQL 5.7+
第九回中国地方DB勉強会 in 米子 MySQL 5.7+
Percona ServerをMySQL 5.6と5.7用に作るエンジニアリング(そしてMongoDBのヒント)
Percona ServerをMySQL 5.6と5.7用に作るエンジニアリング(そしてMongoDBのヒント)
Java 17直前!オレ流OpenJDK「の」開発環境(Open Source Conference 2021 Online/Kyoto 発表資料)
Java 17直前!オレ流OpenJDK「の」開発環境(Open Source Conference 2021 Online/Kyoto 発表資料)
[D37]MySQLの真のイノベーションはこれだ!MySQL 5.7と「実験室」 by Ryusuke Kajiyama
[D37]MySQLの真のイノベーションはこれだ!MySQL 5.7と「実験室」 by Ryusuke Kajiyama
Let's Start Contributing to OpenJDK from Today!(Oracle Groundbreakers APAC Vi...
Let's Start Contributing to OpenJDK from Today!(Oracle Groundbreakers APAC Vi...
Similar a Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
今年はJava進化の年!今知っておくべき新しいJava
今年はJava進化の年!今知っておくべき新しいJava
Takashi Ito
コンテナ環境でJavaイメージを小さくする方法!
コンテナ環境でJavaイメージを小さくする方法!
オラクルエンジニア通信
Jjug springセッション
Jjug springセッション
Yuichi Hasegawa
Scalaの現状と課題
Scalaの現状と課題
Kota Mizushima
Java in the World of Container by David Buck
Java in the World of Container by David Buck
オラクルエンジニア通信
Scalaでのプログラム開発
Scalaでのプログラム開発
Kota Mizushima
これからのJDK/JVM 何を選ぶ?どう選ぶ?
これからのJDK/JVM 何を選ぶ?どう選ぶ?
Takahiro YAMADA
JavaOne2015報告またはこれからのJava
JavaOne2015報告またはこれからのJava
なおき きしだ
Isomorphic web development with scala and scala.js
Isomorphic web development with scala and scala.js
TanUkkii
Beginning Java EE 6 勉強会(1) #bje_study
Beginning Java EE 6 勉強会(1) #bje_study
Toshiaki Maki
Dot netcore multiplatform 2
Dot netcore multiplatform 2
shozon
企業システムで使えるマイクロサービスの特長と実践 (Oracle Cloudウェビナーシリーズ: 2021年4月15日)
企業システムで使えるマイクロサービスの特長と実践 (Oracle Cloudウェビナーシリーズ: 2021年4月15日)
オラクルエンジニア通信
20161119 java one-feedback_osaka
20161119 java one-feedback_osaka
Takashi Ito
Java Day Tokyo 2014 まとめ (chen)
Java Day Tokyo 2014 まとめ (chen)
Appresso Engineering Team
Open stack reference architecture v1 2
Open stack reference architecture v1 2
Dell TechCenter Japan
実行可能JavaFXアプリケーションJAR(発表直前版)
実行可能JavaFXアプリケーションJAR(発表直前版)
torutk
Oracle Database / Exadata Cloud 技術情報(Oracle Cloudウェビナーシリーズ: 2020年7月9日)
Oracle Database / Exadata Cloud 技術情報(Oracle Cloudウェビナーシリーズ: 2020年7月9日)
オラクルエンジニア通信
SQL Server 使いのための Azure Synapse Analytics - Spark 入門
SQL Server 使いのための Azure Synapse Analytics - Spark 入門
Daiyu Hatakeyama
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
Takahiro YAMADA
What is java_se_7
What is java_se_7
TakumiIINO
Similar a Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
(20)
今年はJava進化の年!今知っておくべき新しいJava
今年はJava進化の年!今知っておくべき新しいJava
コンテナ環境でJavaイメージを小さくする方法!
コンテナ環境でJavaイメージを小さくする方法!
Jjug springセッション
Jjug springセッション
Scalaの現状と課題
Scalaの現状と課題
Java in the World of Container by David Buck
Java in the World of Container by David Buck
Scalaでのプログラム開発
Scalaでのプログラム開発
これからのJDK/JVM 何を選ぶ?どう選ぶ?
これからのJDK/JVM 何を選ぶ?どう選ぶ?
JavaOne2015報告またはこれからのJava
JavaOne2015報告またはこれからのJava
Isomorphic web development with scala and scala.js
Isomorphic web development with scala and scala.js
Beginning Java EE 6 勉強会(1) #bje_study
Beginning Java EE 6 勉強会(1) #bje_study
Dot netcore multiplatform 2
Dot netcore multiplatform 2
企業システムで使えるマイクロサービスの特長と実践 (Oracle Cloudウェビナーシリーズ: 2021年4月15日)
企業システムで使えるマイクロサービスの特長と実践 (Oracle Cloudウェビナーシリーズ: 2021年4月15日)
20161119 java one-feedback_osaka
20161119 java one-feedback_osaka
Java Day Tokyo 2014 まとめ (chen)
Java Day Tokyo 2014 まとめ (chen)
Open stack reference architecture v1 2
Open stack reference architecture v1 2
実行可能JavaFXアプリケーションJAR(発表直前版)
実行可能JavaFXアプリケーションJAR(発表直前版)
Oracle Database / Exadata Cloud 技術情報(Oracle Cloudウェビナーシリーズ: 2020年7月9日)
Oracle Database / Exadata Cloud 技術情報(Oracle Cloudウェビナーシリーズ: 2020年7月9日)
SQL Server 使いのための Azure Synapse Analytics - Spark 入門
SQL Server 使いのための Azure Synapse Analytics - Spark 入門
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
What is java_se_7
What is java_se_7
Último
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
Último
(8)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
1.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | Java ヂカラ 日本オラクル株式会社 オラクルユニバーシティ ビジネス推進部 岡田 大輔 2018 年 11 月 16 日 Java プログラミングのこれまでとこれから。
2.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | 以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また、 情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。 以下の事項は、マテリアルやコード、機能を提供することをコミットメント(確約)するもの ではないため、購買決定を行う際の判断材料になさらないで下さい。オラクル製品に関 して記載されている機能の開発、リリースおよび時期については、弊社の裁量により決 定されます。 Oracle と Java は、Oracle Corporationおよびその子会社、関連会社の米国おそびその他の国における登録商標です。 文中の社名、商品名等は各社の商標または登録商標である場合があります。 2
3.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | Duke, the Java Mascot Manifest the Future (FY15) Cloud Master (FY16) Future Builder (FY17) Java 9 Builder (FY18) Classic Duke Duke のデザイン Duke はオープンソース (BSD ライセンス) なのでBSDラインセンス下であれば 自由にデザインを改変可能ですが、オラクルでは、通年で使用可能な Classic Duke と毎年異なるデザインの Annual Duke のみを使用しています。(単なる 社内ルールなのですが…。) 新デザインは毎年秋頃に米国サンフランシスコ で開催される Oracle Code One で発表されます。 3 Java Duke Racer (FY19)
4.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | 本日お話したいこと はじめに: Java プログラミングのこれまでとこれから つぎに: Java プログラミングのこれまでとこれから 最後に: Oracle University 教育サービスご紹介 1 2 3 4
5.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | Java プログラミング。 ちゃんとできますか? Java プログラミングのこれまでとこれから。 前編 5
6.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | 質問。 現在お使いの Java のバージョンはどれですか? では、現在無償で利用可能な Java のバージョンは? 6 • Java は Oracle JDK または OpenJDK 環境を指します。 • 無償で利用可能 = Public Update が提供されていることとします。 セキュリティパッチの適用なしで運用したりしませんよね?
7.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | 7 Java SE のあゆみ • 1996 • Java 誕生 • 1998 • Collections • 2002 • JCP • 2006 • JVMTI • 2014 • Lambda • 1997 • JDBC • 2000 • HotSpot • 2004 • Generics • 2011 • Oracle 買収 • 2017/9/21 • Module System 1.0 1.2 1.1 1.3 1.4 5.0 6 7 8 9 無償サポート終了 無償サポート終了 現行バージョン 無償サポート終了 • 2018/3/20 • var (Local Variable Type Interface) 10 無償サポート終了 • 2018/9/25 • LTS Release 11 現行バージョン
8.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | おさらい: Java SE 8 までの主な新機能 • Java SE 5 (2004.5 ) – BigDecimal クラスによる浮動小数点演算の強化 – 総称型 (Generics) の追加によるコンパイラによる型安全性の向上 – 注釈 (Annotation) によるメタデータ機能の追加 – 列挙型 (enum)、オートボクシング・アンボクシング、拡張 for 文、静的イン ポート、可変長引数による拡張 – Unicode 4.0 および補助文字サポート – JAR ファイルの高圧縮形式(Pack200)サポート • Java SE 7 (2011.7) – Project Coin (JSR 334) – InvokeDynamic (JSR 292) – NIO.2 (JSR 203) – JDBC 4.1 – Fork-Join フレームワーク (JSR 166y) – JAXP, JAXB, JAX-WSの更新 – JavaFX 2.0 – ClassLoader の改善 – G1GC の導入 • Java SE 6 (2006.12) – AWT、Swingの高速化 – JDBC 4.0 – JAXP (Java API for XML Processing) 1.4 – Executors フレームワーク (JSR166) – Webサービス – Windows システムトレイの サポート – Windows Aero のルック・ アンド・フィール – テキストのUnicode正規 (java.text.Normalizer) • Java SE 8 (2014.3) – Project Lambda • ラムダ式 (JSR 335) • Stream API – Type Annotation (JSR 308) – Date and Time API (JSR 310) – 高速 JavaScript エンジン (Nashorn) – JavaFX 8 – Hotspot と JRockitの統合 8 ラムダ式は言語仕様の変更を伴う 重要な新機能
9.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | Java SE 9 の主要な新機能と機能変更 BehindthescenesNewfunctionality SpecializedNewstandards HousekeepingGone • Store Interned Strings in CDS Archives • Improve Contended Locking • Compact Strings • Improve Secure Application Performance • Leverage CPU Instructions for GHASH and RSA • Tiered Attribution for javac • Javadoc Search • Marlin Graphics Renderer • HiDPI Graphics on Windows and Linux • Enable GTK 3 on Linux • Update JavaFX/Media to Newer Version of GStreamer • Jigsaw –Modularize JDK • Enhanced Deprecation • Stack-Walking API • Convenience Factory Methods for Collections • Platform Logging API and Service • jshell: The Java Shell (Read-Eval-Print Loop) • Compile for Older Platform Versions • Multi-Release JAR Files • Platform-Specific Desktop Features • TIFF Image I/O • Multi-Resolution Images • Process API Updates • Variable Handles • Spin-Wait Hints • Dynamic Linking of Language-Defined Object Models • Enhanced Method Handles • More Concurrency Updates • Compiler Control • HTTP 2 Client • Unicode 8.0 • UTF-8 Property Files • Implement Selected ECMAScript 6 Features in Nashorn • Datagram Transport Layer Security (DTLS) • OCSP Stapling for TLS • TLS Application-Layer Protocol Negotiation Extension • SHA-3 Hash Algorithms • DRBG-Based SecureRandom Implementations • Create PKCS12 Keystores by Default • Merge Selected Xerces 2.11.0 Updates into JAXP • XML Catalogs • HarfBuzz Font-Layout Engine • HTML5 Javadoc • Parser API for Nashorn • Prepare JavaFX UI Controls & CSS APIs for Modularization • Modular Java Application Packaging • New Version-String Scheme • Reserved Stack Areas for Critical Sections • Segmented Code Cache • Ahead-of-Time Compilation • Indify String Concatenation • Unified JVM Logging • Unified GC Logging • Make G1 the Default Garbage Collector • Use CLDR Locale Data by Default • Validate JVM Command-Line Flag Arguments • Java-Level JVM Compiler Interface • Disable SHA-1 Certificates • Simplified Doclet API • Deprecate the Applet API • Process Import Statements Correctly • Annotations Pipeline 2.0 • Elide Deprecation Warnings on Import Statements • Milling Project Coin • Filter Incoming Serialization Data • Remove GC Combinations Deprecated in JDK 8 • Remove Launch-Time JRE Version Selection • Remove the JVM TI hprof Agent • Remove the jhat Tool JDK 9 で デフォルトになった 機能 新しく追加 された機能/ ツール群 新しい 技術標準への 対応 変更を必要と する高度な 新機能 ライブラリの 改善や内部的な 実装変更など JDK 9 で 削除されたもの 9
10.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | Java SE 10 (18.3) の主要な新機能と変更点 • JEP 286: Local-Variable Type Interface – ローカル変数の型推論 10 var list = new ArrayList<String>(); // infers ArrayList<String> var stream = list.stream(); // infers Stream<String> var は、予約語ではなく型名 (var というクラス) • var var = 1; は可能 • 既存クラスに var クラスが存在する場合は要注意 (Java の命名規則などを考えると var クラスは存在しないと思いたい…) • JEP 307: Parallel Full GC for G1 G1 GC のフルGC を並列化 • JEP 313 Remove Native-Header Generator Tool javah の削除 (javac で代替可能) • JEP 314: Additional Unicode Language Extensions java.util.Locale 他で BCP47 言語タグの Unicode 拡張を実装 • JEP 322: Time-Based Release Versioning 時間ベースのリリースに対応したバージョン記述 $FEATURE.$INTERIM.$UPDATE.$PATCH (6 ヶ月ごとのリリースで $FEATURE が増え、メンテナンスリリースで $UPDATE が 増える。$INTERIM は原則として 0) • JEP 296: Consolidate the JDK Forest into Single Repository OpenJDK のリポジトリを統合 • JEP 301: Application Data-Class Sharing クラスデータ共有(CDS) をアプリケーションクラスでも使用可能に • JEP 312: Thread-Local Handshakes VM 全体のセーフポイントを使用せずに個々のスレッドでコールバックを 実行する方法を提供 • JEP 204: Garbage Collector Interface JVM から GC を独立させるためのインタフェース • JEP 316: Heap Allocation on Alternative Memory Device NV-DIMM などの代替メモリー・デバイスに Java オブジェクト・ヒープを割当て可能に
11.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | Java SE 11 (18.9) の主要な新機能と変更点 • JEP 323: Local-Variable Syntax for Lambda Parameters – ローカル変数の型推論がラムダ式でも使用可能に 11 list.stream().map((var s) -> s.toLowerCase()) .collect(Collectors.toList()); • JEP 330: Launch Single-File Source-Code Programs > java HelloWorld.java が可能に! • JEP 321: HTTP Client (Standard) Java SE 9 で Incubator Module だったものが標準化 • JEP 327: Unicode 10 Unicode 10 をサポート。 … ということは、.properties ファイルで絵文字を使用可に! • JEP 320: Remove The Java EE and CORBA Modules Java SE に同梱されていた JAX-WS, JAXB, CORBA 関連のモジュールを削除 • JEP 335: Deprecate the Nashorn Scripting Engine Java SE 8 で導入された Nashorn は今後削除される。 今後は GraalVM の使用を推奨。 • JEP 318: The Epsilon Garbage Collector “no-op” ガベージコレクタ。メモリ回収を行わない。 Experimental なので使用できるシーンは限られる • JEP 333: ZGC A Scalable, Low Latency Garbage Collector Pauseless GC。大規模メモリ環境で低レイテンシが求められる場合に有効だがこ れも Experimental。利用の際は要事前検証。 • JEP 332: Transport Layer Security (TLS) 1.3 TLS 1.3 をサポート • JEP 328: Flight Recorder Oracle JDK の商用機能だった超高性能プロファイラがオープンソース化。 この機能が役に立つのはこういう場合 (ラムダ式で var を使った引数に注釈 (Type Annotation)を追加できる) list.stream() .map((@Notnull var s) -> s.toLowerCase()) .collect(Collectors.toList());c
12.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | 今ドキの Java でかけますか? ところで。 Java 書けてますか? 12
13.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | • よくあるコード • 状況 – Item クラスをカプセル化してアクセサメソッド (setter/getter)を実装。 • 何が問題? – インスタンス変数の値をアクセサメソッドを介し てかんたんに取得できると、振るまいはインス タンス変数とは別の場所に実装されてしまう • 責務の分割が不十分に • 結果としてコードの重複などが発生しやすい 13 ウォーミングアップ: オブジェクト指向プログラミング こんなコード書いていませんか? - その 1 1. public class Main { 2. public void method(Item item) { 3. int value = item.getAmount(); 4. item.setAmount(value + 1); 5. } 6. } 7. public class Item { 8. private int amount; 9. public void setAmount(int amount) { 10. this.amount = amount; 11. } 12. public int getAmount() { 13. return amount; 14. } 15. } Itemクラスとは別の場所に 振るまいが実装されている
14.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | • こう書く。 • どう書く? – 別のクラスで実装していた振るまいを Item クラスの振るまいとして実装する (単一責任の原則) 14 ウォーミングアップ: オブジェクト指向プログラミング クラスの責務を考えた実装とは? 1. public class Main { 2. public void method(Item item) { 3. item.addAmount(1); 4. } 5. } 6. public class Item { 7. private int amount; 8. public void addAmount(int value) { 9. amount = amount + 1; 10. } 11. } Tips: 基本ルールは「求めるな。命じよ。」 インスタンス変数に対する単純なアクセサメソッドの公開は本 当に必要なのか?を確認
15.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | 今までの経験があれば対処できる? • Java でサマータイムを扱うには? – Date and Time API (Java SE 8 〜) • java.time.ZonedDateTime … タイムゾーン付で日付と時刻を扱うクラス 実務経験だけでは対処が難しいことも 1. LocalDateTime localDateTime = LocalDateTime.parse("2018-11-04T01:59:59"); 2. ZonedDateTime zonedDateTime = localDateTime.atZone(ZoneId.of("America/New_York")); 3. System.out.println(localDateTime + "->" + zonedDateTime); 4. System.out.println(localDateTime.plusSeconds(2L) + "->" + zonedDateTime.plusSeconds(2L)); [出力結果] 2018-11-04T01:59:59->2018-11-04T01:59:59-04:00[America/New_York] 2018-11-04T02:00:01->2018-11-04T01:00:01-05:00[America/New_York] [注]: java.time.ZonedDateTime は JDK 付属の tz database を参照するため、IANA 管理の tz database 情報の 反映にタイムラグがある (更新には JDK の更新 or Time Zone Updater Tool を使用)。 また、他の実装系との整合性を取るために java.time.OffsetDateTime を使うケースもあり。この場合は夏時間 の適用ルール (ZonedRules) を実装した java.time.TemporalAjduster を用意する必要がある。
16.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | 1. public class JDTAdjuster implements TemporalAdjuster { 2. // 定数宣言 3. 4. @Override 5. public Temporal adjustInto(Temporal temporal) { 6. if (!(temporal instanceof OffsetDateTime)) { 7. throw new IllegalArgumentException(temporal 8. + "is not an instance of java.time.OffsetDateTime"); 9. } 10. OffsetDateTime offset = (OffsetDateTime) temporal; 11. if ((offset.getYear() >= JDT_START_YEAR) && isInSummerTime(offset)) 12. return offset.withOffsetSameInstant(ZoneOffset.ofHours(DST_OFFSET)); 13. return offset.withOffsetSameInstant(ZoneOffset.ofHours(REGULAR_OFFSET)); 14. } 15. 16. private boolean isInSummerTime(OffsetDateTime offsetDateTime) { 17. // Daylight Saving Time の判定 18. } 19. } 16 TemporalAdjuster を使って夏時間適用ルールを自前で実装する 今ドキの Java ならこんな書き方: サマータイムを扱うには? この TempralAdjuster を使用するには次のように書く TemporalAdjuster jdtAdjuster = new JDTAdjuster(); OffsetDateTime offsetDateTime = OffsetDateTime.parse("2020-05-10T02:00:01+09:00"); System.out.println(offsetDateTime + " -> " + offsetDateTime2.with(jdtAdjuster));
17.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | 1. private List fileToList(String fileName) throws Exception { 2. String line; 3. List lines = new ArrayList(); 4. BufferedReader reader = null; 5. try { 6. reader = new BufferedReader(new FileReader(fileName)); 7. while((line = reader.readLine()) != null) { 8. lines.add(line); 9. } 10. reader.close(); 11. } catch(Exception e) { 12. throw new CustomException(); 13. } 14. return lines; 15. } 17 「ファイルの全行を読み込む」: J2SE 1.4 相当の知識で何となく書くと… 今ドキな書き方はバージョンによっても変わる: こんなコード書いていませんか? どのチェック例外が発生するかわからない … カスタム例外だけをスローするとエラーの原因がわからない ( → エラーの原因が隠蔽されると保守性が低下する) 総称型を使っていない (→ 型安全でない) 例外が発生すると reader は close されずリークの遠因に
18.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | 1. private List<String> fileToList(String fileName) throws CustomSystemException { 2. List<String> lines = new ArrayList<String>(); 3. BufferedReader reader = null; 4. try { 5. reader = new BufferedReader(new FileReader(fileName)); 6. String line = null; 7. while(reader.readLine() != null) { 8. lines.add(line); 9. } 10. } catch (FileNotFoundException e) { 11. throw new CustomSystemException(FILE_NOT_FOUND, e); 12. } catch(IOException e) { 13. throw new CustomSystemException(FILE_READ_ERROR, e); 14. } finally { 15. try { 16. if (reader != null) reader.close(); 17. } catch(IOException e) { 18. System.out.println("ERROR at closing Reader: " + e.getMessage()); 19. } 20. } 21. return lines; 22. } 18 今ドキな書き方はバージョンによっても変わる: 当時は「正しい」とされた書き方 発生するチェック例外を明示 総称型を使う try-catch では finally 句でのリソースクローズ処理が必須 (→ 実装時にテスト必須) カスタム例外に翻訳する場合は、発生源の例外情報も含める 「ファイルの全行を読み込む」: Java SE 6 相当の知識で書くと…
19.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | 今ドキな書き方はバージョンによっても変わる: 新しい機能を適切に使う 「ファイルの全行を読み込む」: Java SE 7 ではスッキリ書ける 1. private List<String> fileToList(String fileName) throws CustomException { 2. List<String> lines = new ArrayList<>(); 3. try(BufferedReader reader = new BufferedReader(new FileReader(filename))) { 4. String line; 5. while((line = reader.readLine()) != null) { 6. lines.add(line); 7. } 8. } catch(FileNotFoundException e) { 9. throw new CustomException(FILE_NOT_FOUND, e); 10. } catch(IOException e) { 11. throw new CustomException(FILE_READ_ERROR,e); 12. } 13. return lines; 14. } 総称型 + ダイヤモンド演算子を使用 (型安全性) try-with-resources でリソースは自動クローズ ( → リソースのクローズは API レベルで担保) 19 バージョン毎に適した Java プログラミングを正しく行うことで 見通しのよい、保守性の高いコード を書くことができる = 実装・テスト工数を削減 することができる
20.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | try-with-resources のコード例 • JSR 334: Project Coin 1. Switch 文での String の使用 2. Multi-catch 3. try-with-resrouces 文 4. ダイヤモンド演算子 5. アンダースコア付きリテラルとバイナリリテラ ル 20 おさらい: Java SE 7 の新機能 class MyResource implements java.lang.AutoCloseable { @Override public void close() throws Exception { // ... } } try (MyRecourse r1 = new MyResrouce(); MyResource r2 = new MyResoruce() ) { // ... } catch(MyException1 | MyException2 e) { e.printStackTrace(); } Reader/Writer などの File I/O 関連 API や JDBC API (Java SE 7 以上)、 および Stream API (Java SE 8) は AutoCloseable 対応 複数のリソースをオープンする場合は、 セミコロンで区切る (クローズはオープンと逆順) catch 句の処理内容が同じ場合はまとめて 記述することができる (Multi-catch)
21.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | 今ドキな書き方はバージョンによっても変わる: バージョンごとに適切な API を使う 「ファイルの全行を読み込む」: Java SE 7 NIO.2 を利用する 1. private List<String> readFile(String filename) { 2. try { 3. return Files.readAllLines(Paths.get(filename), Charset.defaultCharset()); 4. } catch (IOException e) { 5. throw new SytemException(FILE_READ_ERROR, e); 6. } 7. } 21 Java SE 7 の NIO.2 ではファイルのすべての行を読み込むためのメソッドが API として提供されている = さらに実装・テスト工数を削減可能 • メソッド呼び出しのみでファイル読み込み処理を実装できてテストは原則として不要 • 万が一実装に問題がある場合もパッチ適用で改善可能
22.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | おさらい: Java SE 8 の新機能 関数型プログラミング in Java • 関数型プログラミング (Functional Programming) is … • 関数 is … • 関数型プログラミングと Java : – Java SE 8 からは 関数型プログラミングの要素が取り入れられた • コア API (コレクション・フレームワークなど) に関数型プログラミングをサポートするメソッドが追加 された (Collection::removeIf や List::replaceAll など) • 関数スタイルでデータ処理を行うための API が追加された (Stream API) 22 関数を使って (つなぎ合わせて) プログラミングすること 入力に対して一意の出力を持つ処理 関数の評価が他に影響を及ぼさない
23.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | • これは関数 • これは関数 … ではない 23 関数 is 何? - コードで確認 1. public class Calc { 2. private int x; // メソッドの影響を受けない 3. public int multiply(int a, int b) { 4. return a * b; 5. } 6. } 1. public class Calc { 2. private int x; 3. public int multiply(int y) { 4. return x *= y; // 変数に影響する 5. } 6. } ⭕ 入力に対して一意の出力を返す ⭕ 関数の評価が他に影響を及ぼさない ⭕ 入力に対して一意の出力を返さない ⭕ 関数の評価が他に影響を及ぼす 関数を使うほうがコードの安全性を保ちやすくテストもしやすい 互いが依存しないので並列プログラミングにも向いている
24.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | 関数のもう一つの特性 • 関数を引数として扱うことができる (高階関数) – 関数を引数で渡すときの書き方がラムダ式 – 関数を引数で渡す? • Java はオブジェクト指向プログラミング言語なので関数 (メソッド) をそのまま渡せない • 関数をあらわすオブジェクト作った = 関数型インタフェース – 関数の入力と出力をインタフェースメソッドとして記述する – Java SE 8 のコア API として汎用関数型インタフェース (java.util.function パッケージ) を提供 24 list.stream().filter(data -> data.contains("c")).forEach(System.out::print); メソッド引数として「関数」を渡している
25.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | 関数型インタフェース • 単一の abstract メソッドを持つインタフェース (SAM インタフェース) – static メソッドやデフォルトメソッド、private メソッドは定義可能 – java.lang.Object クラスの public メソッドも定義可能 25 One Point: Java SE 8 と Java SE 9の新機能 (インタフェース関連) • static メソッド (SE 8 〜) • static キーワードを使用して宣言された メソッド • オーバーライド不可 (継承されない) • メソッド呼び出し方法: InterfaceType.method(); • デフォルトメソッド (SE 8 〜) • default キーワードを使用して宣言された メソッド • デフォルトメソッドの解決ルール: • スーパークラス > インタフェース • サブタイプ > スーパータイプ • 競合した場合は、実装クラスでオーバーライド • private メソッド (SE 9 〜) • default メソッドから呼び出し可能な実装メソッ ド • 実装クラスからは呼び出せない
26.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | 関数型インタフェース • これは関数型インタフェース? 26 1. @FunctionalInterface 2. public interface MyFunction { 3. private void hello() { 4. System.out.println("Hello Static!!"); 5. }; 6. int calc(int a, int b); 7. String toString(); 8. } private メソッド (Java SE 9 〜) これは 関数型インタフェース Object クラスの public メソッド
27.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | ラムダ式 • 関数型インタフェースを実装するクラスのインスタンス化を簡略化するた めの構文 – 関数型インタフェースのメソッドにフォーカスして実装を記述できる 27 (x, y) -> x + y x + y を返す (メソッド本体) x と y を引数にとって (引数リスト) メソッド名はどうやって決まる? → 関数型インタフェースは、SAM インタフェースなので実装するメソッドの名前や引数 の型、戻り値はひとつだけ。だから推論可能。 変数 x と変数 y はどこで宣言している? → ラムダ式中の x や y は引数名をあらわす。(任意の変数名をつけて OK)
28.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | • ソート処理の実装で考えてみる (java.util.Comparator = 関数型インタフェース) – 無名クラスでインスタンス化 – ラムダ式だとこうなる 1. Arrays.sort(array, (String a, String b) -> { return a.compareToIgnoreCase(b); } ); 1. Arrays.sort(array, new Comparator<>() { 2. @Override 3. public int compare(String a, String b) { 4. return a.compareToIgnoreCase(b); 5. } } ); ラムダ式は何を簡略化している? 28 注意: 無名クラスを使った実装とラムダ式を使った実装は厳密には同じではありません。ラムダ式になれるための中間思考としてとらえてください。 クラス 変数 メソッド メソッド 無名クラスのイメージ ラムダ式のイメージ Java SE 9: 無名クラスでも ダイヤモンド演算子を使える
29.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | • 無名クラス – コンパイルするとクラスファイルが生成 される (X$1.class) • ラムダ式 – コンパイルしてもクラスファイルが生成 されない – ラムダ式をあらわすコードは動的に生 成される (InvokeDynamic) 29 閑話休題: バイトコード (CAFEBABE) の世界 public static void main(java.lang.String...); Code: 0: iconst_4 // (省略) 26: invokedynamic #7, 0 // InvokeDynamic #0:compare:()Ljava/util/Comparator; 31: invokestatic #8 // Method java/util/Arrays.sort:([Ljava/lang/Object;Ljava/util/Comparator;)V 34: return private static int lambda$main$0(java.lang.String, java.lang.String); Code: 0: aload_0 1: aload_1 2: invokevirtual #9 // Method java/lang/String.compareToIgnoreCase:(Ljava/lang/String;)I 5: ireturn ラムダ式のバイトコード ラムダ式は、コンパイル対象のクラスのメソッドとしてコンパ イルされる • this はコンパイル対象のクラスを指す • クラスは実行時に invokedynamic によってオンメモリで生成される
30.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | Stream API とは? • データをパイプライン形式で処理するための API (Java SE 8 〜) – ストリームに対して関数操作を行った結果をストリームで返す (中間操作) – 処理結果をデータとして返す (終端操作) • 中間操作も終端操作もメソッド引数は関数型インタフェースを取るものが多い 30 Stream の生成 中間操作 終端操作 Stream.of() Arrays.stream(T) Collection.stream() … ※ 中間操作は遅延評価 forEach() reduce() collect() max(),min(),average() count(),sum() … filter() map() flatMap() peek() …
31.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | 今ドキな書き方はバージョンによっても変わる: バージョンごとに適切な API を使う 「ファイルの全行を読み込む」: Java SE 8 NIO.2 は Stream を返せる 1. private Stream<String> readFile(String filename) { 2. try { 3. return Files.lines(Paths.get(filename), Charset.defaultCharset()); 4. } catch (IOException e) { 5. throw new SytemException(FILE_READ_ERROR, e); 6. } 7. } 31
32.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | 今ドキな書き方はバージョンによっても変わる: バージョンごとに適切な API を使う Stream API でファイルに含まれる単語を抽出してみる 1. Stream<String> content = readFile("path_to_file"); 2. var words = content.flatMap(line -> Stream.of(line.split(“ ”))) // スペースを区切り文字にして要素をストリームに .filter(word -> word.length() > 3) // 長さが 3 より大きい単語を抽出 .map(String::toLowerCase) // ストリームの要素を小文字に .distinct() // 重複除外 .sorted((x, y) -> x.length() - y.length()) // 文字数が短い順にソート .collect(Collectors.toList()); // 各要素を List に格納して返す 32 Java SE 10: ローカル変数の 型名は推論可能
33.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | まとめ: 関数型プログラミング in Java • Java SE 8 で関数を扱うために関数型インタフェースを提供している – 目的は安全なコードを早く、効率的に記述したい • オブジェクト指向プログラミングだけで用が足りるならそれで OK でも昨今の開発事情を考えるとたぶんそれは厳しい – テストを効率化したい! – 並列処理を効率化したい! – より安全にシンプルなコードを書きたい! – 関数型インタフェースをインスタンス化するためにラムダ式を使える • Collection や Stream API では関数オブジェクトを引数に取る処理が追加された – 使わなくても同じようなコードを書けるけど煩雑 – 関数型プログラミングを考え方を理解していないと API を活用できない • Java プログラミングの基礎知識は必須。コードも読めないし書けない 33
34.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | 前編のまとめ • スキルアップ。必要です。 –Java は時代とともに必要な機能を取り入れて進化し続けています –あたらしい機能は、あたらしいバージョンで提供されます • 言語仕様の変更や追加をともなう変更点はとくに。 –知識が古いままだと新機能の利点を享受できない場合も 34
35.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | Java SE のリリースサイクル Java プログラミングのこれまでとこれから。 後編 35
36.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | 36 Java SE のあゆみ (再掲) • 1996 • Java 誕生 • 1998 • Collections • 2002 • JCP • 2006 • JVMTI • 2014 • Lambda • 1997 • JDBC • 2000 • HotSpot • 2004 • Generics • 2011 • Oracle 買収 • 2017/9/21 • Module System 1.0 1.2 1.1 1.3 1.4 5.0 6 7 8 9 無償サポート終了 無償サポート終了 現行バージョン 無償サポート終了 • 2018/3/20 • var (Local Variable Type Interface) 10 無償サポート終了 • 2018/9/25 • LTS Release 11 現行バージョン
37.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | 37 Java って 有償化したの?
38.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | 38 Java Is Still Free 参考: Java Is Still Free / 日本語訳: Java は今も無償です • 有償化したの? – 今まで通り最新版の無償更新は入手可能です – 今まで通り無償期間に取得したものはそのまま継続して利用可能です – 今まで通り年4回の更新版 (1, 4, 7, 10 月)を適用できます • Java アプレットは2019年1月(有償版は3月)で終了? – Java Plugin の定期更新は終了します • そもそも、主要ブラウザベンダーは年内でサポート終了の可能性が…
39.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | 課題 1. 大規模な機能の完成まで度々延期されるリリース 2. リリースされず蓄積している完成した中小の機能 3. 制限のある無償版の再配布 リリースに対する要望 1. 完成した機能は計画的に素早くリリース 2. シンプルかつ再配布可能な無償版のライセンス体系 39 リリースモデルの変更に至る背景: JDK 9 までの課題と今後のリリースへの要望 24 55 91 12 17 0 20 40 60 80 100 JDK 7 JDK 8 JDK 9 JDK 10 JDK 11 2011年7月 2014年3月 2017年9月 2018年3月 2018年9月 JDK 9は過去最多の機能追加 3年6ヶ月 2年8ヶ月 6ヶ月 6ヶ月 LambdaCoin Jigsaw JDK7 Plan B JDK7 Plan A Coin Coin Lambda JDK8 Plan B Jigsaw JDK9 Milling Coin
40.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | 従来のモデル メジャー・リリース 2年に一回機能追加 (目標) • 実際には不定期 (8は8ヶ月遅れ、9は1年6ヶ月遅れ) リリース内容 • 仕様書 • 互換テスト • リファレンス用ソースコード ベンダー各社によるバイナリ生成 新しいモデル フィーチャー・リリース 6ヶ月に一回機能追加 (固定) リリース内容 • 仕様書 • 互換テスト • リファレンス用ソースコード (Oracleの商用機能も含む) ベンダー各社によるバイナリ生成 あたらしい Java SE リリースモデル 40
41.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | 計画的なリリースに: Java SE の新しいリリース・モデル 3年6ヶ月 2年8ヶ月 Java SE 7 Java SE 8 2014年 3月 2011年 7月 2017年 9月 9 10 11 12 13 14 15 16 17 18 19 3月 9月 3月 3月9月 9月 3月 9月 3月 9月 2018年 2019年 2020年 2021年 2022年 3年に一度のバージョンに LTS (Long Time Support)を設定 6カ月に一度 機能追加 完成した機能 からリリース 定期的 不定期 大規模な機能の実装の 完成に左右されていた 完成している 中小の機能は 待機 41
42.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | 従来のモデル メジャー・リリース 後継版リリース後およそ1年間無償更新 年4回のリリース (1月,4月,7月,10月) 商用機能は利用不可 ライセンス: Oracle BCL (Binary Code License) ダウンロード: http://www.oracle.com 新しいモデル フィーチャー・リリース 後継版リリースまで無償更新 年6回のリリース (1月,3月,4月,7月,9月,10月) • 3月と9月に機能追加 商用機能も利用可能 ライセンス: GPLv2 + Classpath Exception • 公式 OpenJDK バイナリ ダウンロード: http://jdk.java.net なにが提供されるの?: Oracle が配布する無償用バイナリ 42 Java 11 以降の Oracle JDK OTN ライセンス下で無償利用可能。 ダウンロードは OTN から
43.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | Oracle が配布するバイナリの更新サイクル 9 9 9 10 10 10 Java SE 11 LTS (18.9) (有償更新) 11 12 12 13 13 14 14 15 15 16 16 Java SE 17 LTS (21.9) (有償更新) 17 18 18 Java SE 8 (有償更新) Java SE 7 (有償更新) Java SE 6 (有償更新) Java SE 8 無償更新 Non-corporate 3月 9月 3月 9月 3月 9月 3月 9月 3月 9月 2018年 2019年 2020年 2021年 2022年 2025年 3月 2026年 9月 2022年 7月 2018年 12月 2014年 3月 2019年 1月 2020年 12月 2017年 9月 6ヶ月に一度 機能追加 3年 8u20 (2014年8月) 8u40 (2015年3月) 8u60 (2015年8月) 限定機能追加 Interchangable: Oracle JDK とOpenJDKの機能的差分をなくす 無償更新 有償更新 無償更新 OpenJDKビルド from Oracle Oracle JDK バイナリ 43
44.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | OpenJDK で使用可能になる Oracle JDK の商用機能 • Application Class-Data Sharing (Java SE 10) – http://openjdk.java.net/jeps/310 • ZGC (Z Garbage Collector) – http://openjdk.java.net/projects/zgc/ • Java Flight Recorder – http://openjdk.java.net/jeps/328 • Java Mission Control – http://openjdk.java.net/projects/jmc/ • Usage Logger – 公開に向けて作業中 JDK 11 から Oracle が配布する バイナリでサポートされない機能 • 含まれない機能 – 自動更新 – JavaFX (OpenJFX で引き続き利用可能) – Java Web Start と Web ブラウザ用 Java plugin • 利用できない形式 – 32ビット版バイナリ – 単独のJRE (JDK から jlink を利用して生成) 44 Oracle が配布するバイナリの変更点
45.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | Oracle のバイナリ・リリースのまとめ 現行のモデル 新しいモデル 無償版 機能の追加 メジャー・リリース 2年に一回 (目標) – 実際は不定期 フィーチャー・リリース 6ヶ月に一回 (固定) コードの管理 バージョン毎のマルチラインで管理 シングルラインで管理 機能追加とメンテナンスを継続的に行う 定期更新 内容 メンテナンス + 限定機能更新 メンテナンスのみ 回数 年4回 (1月, 4月, 7月, 10月) バイナリ Oracle JDK http://www.oracle.com/technetwork/java/javase/downloads/ • Oracle Binary Code License • 商用機能除く OpenJDK http://jdk.java.net/ • GPLv2 + Classpath Exception • JDK 8の商用機能も含む 長期サポート (有償) 対象のリリース すべてのメジャー・リリース 3年ごとのフィーチャー・リリース 定期更新 期間 Oracle Lifetime Support Policy 準拠 (最低8年) 内容 メンテナンス + 限定機能更新 メンテナンスのみ 回数 年4回 (1月, 4月, 7月, 10月) バイナリ Oracle JDK https://support.oracle.com 45
46.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | Confidential – Oracle Internal/Restricted/Highly Restricted 46 使用中の JDK は そのまま 使い続けられる?
47.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | 考慮事項: ソフトウェアの脆弱性 対策をしていないシステムは狙われやすい 脆弱性修正済みパッチを適用するのが効果的な対策方法 47
48.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | いつまで公式アップデートは提供される? 公式アップデート終了のスケジュール リリース 利用開始 (GA) 公式アップデート終了 の通知 公式アップデートの終了 (EoPU) 5.0 2004年5月 2008年4月 2009年10月 6 2006年12月 2011年2月 2013年2月 7 2011年7月 2014年3月 2015年4月 8 2014年3月 2017年9月 2019年1月 (non-corporate desktop use 2020年12月) 9 2017年9月 2017年9月 2018年3月 10 (18.3) 2018年3月 2018年3月 2018年9月 48 http://www.oracle.com/technetwork/java/eol-135779.html
49.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | 最新バージョンへ OpenJDKビルド from Oracle 49 公式アップデート終了後の更新版入手のオプション 商用ライセンスの購入 JDK 8 でバージョン固定 こちらがオススメ
50.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | 最新バージョンへの乗り換えの前に… 利用する機能に依存する選択肢 • Java Plug-in と Applet の利用 – 有償版でも定期更新は2019年3月まで – 動作している間に別のテクノロジーに移行することを推奨 • Java Web Start の利用 – 公式アップデート終了後、Java SE 8 の有償版で引き続き更新版の入手 – Java SE をバンドルしたアプリケーションとして配布することを推奨 • 32ビット版バイナリの継続利用 – 公式アップデート終了後、Java SE 8 の有償版で引き続き更新版の入手 50
51.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | Java の商用サポート期間 リリース 提供開始 (GA) Premier サポート終了 Extended サポート終了 Sustaining サポート Java SE 5.0 2004年 5月 2011年 5月 2015年 5月 あり Java SE 6 2006年12月 2015年12月 2018年12月 あり JRockit 6 2009年 6月 2015年12月 2018年12月 あり Java SE 7 2011年 7月 2019年 7月 2022年 7月 あり Java SE 7 Deployment Technology 2016年 7月 設定なし あり Java SE 8 2014年 3月 2022年 3月 2025年 3月 あり Java SE 8 Java Web Start 2022年 3月 2025年 3月 あり Java SE 8 Java Plug-in 2019年 3月 設定なし あり Java SE 9 (non-LTS) 2017年 9月 2018年 3月 設定なし あり Java SE 18.3 (10) (non-LTS) 2018年 3月 2018年 9月 設定なし あり Java SE 18.9 (11) (LTS) 2018年 9月 2023年 9月 2026年 9月 あり Java SE 19.3 (12) (non-LTS) 2019年 3月 2019年 9月 設定なし あり 51 https://www.oracle.com/us/assets/lifetime-support-middleware-069163.pdf 注: Deployment Technology: Java Plug-in と Java Web Start
52.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | Java SE 9 以降へのアップグレードを見据えた これからの開発 • 非推奨 API の利用は避ける – @Deprecated(“forRemoval=true“)となった API には特に気をつけよう • 内部 API の利用は控え、Java Platform Module System に移行する – アプリケーションのモジュール化は必須ではない – 明記されている API のみを利用しよう • https://docs.oracle.com/javase/10/docs/api/overview-summary.html • 不要なモジュールは外す • 利用しない新機能は気にしない – アップデート・リリースは確認しよう • 一つのJarファイルで複数の Java SE のバージョンに対応させる • セキュリティ・ロードマップも確認 – https://www.java.com/en/jre-jdk-cryptoroadmap.html 52
53.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | • Module System (Jigsaw) 何のため? JDK 9 以降で大きく異なる機能 構成の確実性 依存関係を宣言することにより、エラーを起こしやす いクラスパスのメカニズムを置き換える 強力なカプセル化 public タイプに対するアクセスコントロールを実現 (内部向けパッケージへの外部からのアクセスを制限) Module 宣言 public ≠ すべてアクセス可能 依存関係が解決された (= 必要なモジュールで 構成された) カスタム JRE をビルドすることが できる 53 • 関連する JEP (JDK Enhancement Proposal) – JEP 261: Module System – JEP 200: The Modular JDK – JEP 201: Modular Source Code – JEP 220: Modular Run-Time Images – Plus • JEP 260: Encapsulate Most Internal APIs • JEP 282: jlink: The Java Linker JDK 9 では Module System の導入によって JDK の仕組みが大きく変更さ れています。 それに伴い内部 API へのアクセスが使用不可になったり、Deprecated な API の削除など後方s互換性に制限が出てきます。
54.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | jdk1.8.0 jdk-9 Java SE 9 からの変更点: JDK ディレクトリ構成の変更 (JEP 220: Modular Run-Time Images) $JAVA_HOME bin - 実行コマンド lib tools.jar rt.jar include db jre src.zip $JAVA_HOME bin - 実行コマンド conf - 設定ファイル jmod - モジュール定義 (コンパイル済み) lib - 内部実装 (直接参照や変更不可) *.properties, *.policy など (必要に応じて変更可能) include legal – モジュール単位のcopyright や license src.zip 54
55.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | Java SE 9 からの変更点: JDK/JRE: 廃止された機能 • tools.jar(JDK) と rt.jar(JRE) • Extension メカニズム (JEP 261) – java.ext.dirs システムプロパティがセットされていると起動エラー – lib/ext ディレクトリが存在すると起動エラー • Endorsed Standards Override メカニズム – java.endorsed.dirs システムプロパティがセットされていると起動エラー – lib/endorsed ディレクトリが存在すると起動エラー • JRE バイナリは提供されなくなる (Java 11) – jlink でビルドは可能 55
56.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | Java SE 9 からの変更点: JEP 260: Encapsulate Most Internal APIs • 内部 APIの大半はカプセル化され使用不可に – 広く使われてしまっていた内部 API (Critical APIs) は代替が提供されるまでは 使用可能 • 内部実装の静的な利用の確認方法 – -jdkinternals オプションで jdeps を実行 • リフレクションを使用した内部実装の動的な利用の確認方法 – 実行時の java.lang.IllegalAccessException の情報を活用する • カプセル化の解除用オプションでアクセス可能 – 実際に削除されているAPIもある – : 内部実装APIの互換性は保障されない (通知なしに変更される可能性あり) 56
57.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | Java SE 9 からの変更点: JEP 277: Enhanced Deprecation • @Deprecated 注釈に属性を追加可能に – since: いつから非推奨になったか – forRemoval: 将来のリリースで削除される予定か @Deprecated(since=9, forRemoval=true) 57
58.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | 参考: JDKに付属するツール • 非推奨 API の確認 – ソースコード内の利用: javac の –deprecation オプション – バイナリ内の静的な利用: jdeprscan コマンド • 内部 API の利用の確認 – バイナリ内の静的: jdeps コマンドの -jdkinternals または --jdk-internals オプション – バイナリ内の動的: java コマンドの --illegal-access=<warn or debug> オプション • 必要なモジュールのみで構成するカスタムJREの生成 – jdeps で必要なモジュールの確認 – jlink で不要なモジュールの削除 • マルチ・リリース JAR ファイル – jar コマンドの --release オプション 58
59.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | In the future … • Project Amber – JEP 325 Switch Expressions (Java 12) – JEP 326 Raw String Literals (Java 12) – JEP 286 Local-Variable Type Inference (var) (JDK 10 でリリース済み) – JEP 323 Local-Variable Syntax for Lambda Parameters (JDK 11) • Project Loom – Fiber と Continuations を使った並列処理 • Project Panamas – JVM と ネイティブコードの相互接続 (ベクター演算のサポート) • Project Valhalla – Value Type と Generic Specialization (プリミティブ型 参照型) 59
60.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | 後編のまとめ • スキルアップ。やっぱり必要です。 –Java SE 9 は実は重要なリリースです • Module System の導入による機能変更の影響が大きいのでしっかり把握。 –JVM まわりの変更点は、開発者も運用担当者も押さえておく • 非推奨になる API や内部 API はなるべく使用を避けましょう –Java プログラミングの基礎知識がないと新機能や変更点の評価も難しい… • リリースモデルの変更も押さえておきましょう –現時点での Java SE 9 以降の現実的な移行先は Java SE 11 (JDK 11) です • 利用する機能によっては JDK 8 + 有償サポートも選択肢に。 60
61.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | Oracle University 教育サービスご紹介 研修コースと認定資格 61
62.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | アプリケーション・アーキテク チャ設計の考え方を理解したい データベースで SQL がどのように処理されるかを理解し 効果的な SQL チューニングの方法を理解したい JVM の仕組みを 詳しく理解したい アプリケーションサーバーのアーキテクチャや運用管理方法を理解したい Java EE アプリケーションの 開発方法を理解したい Java によるオブジェクト指向をしっかり理解したい ラムダ式や Stream API を使った プログラミングを理解したい より実践的なスキルを 手を動かしながら定着させたい Java EE システム開発のためのラーニングパス - 正しく技術を理解するために - Java SE 8 プログラミング I (3日間) Java SE 8 プログラミング II (3日間) Java EE 7 アプリケーション開発 (5日間) Oracle WebLogic Server 12c: 管理 I (5日間) Java EE エンタープライズ・ アプリケーションの設計 (5日間) Java SE 8 新機能 (2日間) 62 Java オブジェクト指向 プログラミング (3日間) Oracle Database 12c: 管理 ワークショップ (5日間) UNIX/Linux 入門 (3日間) Webシステム構築 クイック・スタート (3日間) Oracle Database 12c: SQL 基礎 I (3日間) 開発に必要になる技術要素を詳しく学習したい 高度な技術を詳しく学習したい Java パフォーマンス・チュー ニング (3日間) Oracle WebLogic Server 12c: トラブルシューティング (2日間) スキル強化 ワークショップ - Java 実装編 - スキル強化 ワークショップ - Middleware 実装編 - スキル強化 ワークショップ - SQL チューニング編 - Oracle Database 12c: SQL チューニング ワークショップ (3日間) Web システムの全体感を 知りたい OS の操作方法を覚えたい データベースの基本と SQL の 書き方を覚えたい
63.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | おすすめ研修コース (1) Java オブジェクト指向プログラミング 概要 このコースでは、Java によるオブジェクト指向プログラミングにフォーカスして説明します。クラスとインスタンス、カプセル化、 継承、ポリモフィズムなど、オブジェクト指向プログラミングに不可欠な知識から、デザインパーターンなどオブジェクト指向に おける設計の考え方と UML の書き方を、演習を通して実践的に身につけることができます。 【注】このコースは、「Java SE 7/8 プログラミング I」コースをカスタマイズして実施します。 学習トピック Java 言語入門 Java 言語の文法 オブジェクト指向プログラミング 1 オブジェクト指向の概念の理解 クラスの定義とインスタンス化 メソッド・コンストラクタの定義と オーバーロード static 変数と static メソッド オブジェクト指向プログラミング 2 継承 メソッドのオーバーライド インタフェースの使用 参照型の型変換 例外処理 java.lang パッケージ デザインパターンと UML Composite / Factory Method / Strategy / Singleton / Adapter / Builder / Visitor / Observer / Command / Façade UML の基本的な書き方 (ユースケース図, クラス図, シーケンス図) 受講前提条件 • 「Java プログラミング for ビギナーズ」受講相当の知識 • 「Java SE 7/8 プログラミング I 」受講相当の知識 (推奨) コース日数 3日間 63 ※1 太字でハイライトした章に重点をおいて講義を行いま す。 ※2「デザインパターンと UML 」の章は、補足資料を使用 します。それ以外の章は「Java SE 7 プログラミング I」コー スのテキストを使用します。
64.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | 64 おすすめ研修コース (2) Java SE 7 New Features Java SE 8 までをじっくりキャッチアップ。 オラクルユニバーシティでは、Java SE 7 / 8 の新機能を効率的に学習することができる研修コースを提供し ています。Java SE 7 / 8 で加わった新機能をわかりやすい講義と実機演習を通してをじっくり・しっかり身に つけることができます。 コース 概要 このコースではJava SE 7の主な変更点と新機能の詳細を説明します。このコースはJava SE 6ある いはそれ以前のバージョンのJava SEを使用した開発経験があるJava技術者が対象になります。 コースの受講者は、Java SE 7の変更点と新機能を深く理解し、Java SE 7を使用したアプリケー ション開発を行えるようになります。 学習 内容 言語仕様に対する小さな変更(JSR 334) 動的言語呼び出しのサポート(JSR 292) 並行処理とコレクションにおける拡張(JSR 166Y) ネットワークとファイルシステムアクセスに関する拡張 (JSR 203) JDK 7におけるその他の拡張 日数 2日間 Java SE 8 新機能 コース 概要 このコースでは、Java SE 8の主要な変更点および機能拡張について詳しく学習します。新機能の 概要を理解するとともに、ラムダ式、コレクションを操作するためののStream API、日時操作のため の新しい Data and Time APIの使用方法を学習することができます。 学習 内容 Java SE 8での変更点の概要 関数型インタフェースとラムダ式 java.util.funcation パッケージ Stream API によるコレクション操作 並列 Stream Date and Time APIの使用 Nashornを使用したJavaでのJavaScript処理 Mission Control および Flight Recorder の概要 日数 2日間
65.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | おすすめ研修コース (3) Java パフォーマンス・チューニング 概要 このコースでは、Java SE 7で導入されたG1 GCをはじめとした様々なガベージコレクションの仕組みを理解するとともにJVM の最適化手法について学習することができます。また、Java Flight RecorderおよびJava Mission Controlを使用したアプリケ ーションのプロファイリングやモニタリングを方法を学習することができます。 学習項目 パフォーマンス・チューニングの基本的なアプローチ 世代別ガベージコレクションの仕組み G1 GCの仕組み アプリケーションおよびJVMレベルでのモニタリング Java Flight RecorderおよびMission Controlを使用したアプリケーショ ンのプロファイリングとモニタリング オペレーティングシステム・レベルでのパフォーマンス監視 ガベージコレクション方式の選択によるチューニング アプリケーションのチューニング 受講前提条件 • 「Java SE 7/8 プログラミング I 」の受講または受講相当の知識 • 「Java SE 7/8 プログラミング II 」の受講または受講相当の知識 (推奨) コース日数 3日間 65
66.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | スキル強化ワークショップ 66 問題発生 なぜ 起こる? どう 直す? どう 防ぐ?コース 概要 このコースでは、適切なシステム化を行うために理解しておきたい実装、および設計のポ イントについて学習します。単純な実装レベルの注意事項から設計時における注意事項 まで、開発現場で実際に起こりがちな事象を題材に、それを見逃すとどうなるか?解決す るにはどうするかをワークショップ形式の演習と経験豊富な講師によるわかりやすい講 義を通して理解することができます。 ねらい 実際に起こりえる事象に対する対応方法をワークショップ形式で体験することで • 事象の調査方法など現場対応能力を向上させる • 設計や実装で陥りがちなミスを理解する • 本来どのように設計・実装するべきかを理解する 設計・システム化能力の強化につながるエッセンスを 実例から学ぶことができます 設計・システム化能 力の強化 Java EE ベースのシステム開発を行うために押さえておきたい勘所を押さえる
67.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | スキル強化ワークショップ - Java実装編 - 67 コース 概要 このコースでは、アプリケーションの実装に関する考慮事項について学習します。テーマ別に、陥りがちな実装上 のミスとそれが引き起こす事象について理解すると共に、設計時・実装時においてどのように考慮することが望ま しいかについて理解を深めます。講義はワークショップ形式で実施し、問題のあるアプリケーションの実装の確認 からプログラム修正による解決までを体験しながら学習することができます。 コース 内容 マルチスレッドに関する問題 誤った例外の扱い リソース・リーク 文字列の操作とローカライズ デザインパターン コーディングのアンチパターン 日数 3日間 価格 担当営業までご相談ください
68.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | Javaプログラミングスキルを客観的に証明する世界共通の認定資格です。 Oracle 認定 Java 資格 設計者の意図を正しく理解して独力で 機能実装が行えるレベル (中上級Javaプログラマ向け) Gold資格は、コレクションAPI, ファイルI/O, 並行処理、JDBCなどのコア・ライブラリを使 用方法と Java SE 8 の新機能である Lambda 式や Stream API を使用した関数スタイ ルのプログラミング方法を理解していることを証明します。 加えてデザインパターンについても問われるため設計から実装までの包括的なスキル を身につけていることを証明します。 (Global資格: Oracle Certified Professional, Java SE 8 Programmer) 上級者の指導のもとで実装コードや テストコードを書けるレベル (初級Javaプログラマ向け) Silver資格は、Java言語の基本文法とオブジェクト指向プログラミング(クラス、インタ フェース、例外処理)を理解しているかどうかが主な出題項目です。また、基本的な Lambda 式の書き方やDate and Time API の基礎を含めたプログラミングのために必要 とされる仕様を詳細に理解していることを証明します。 (Global資格: Oracle Certified Associate, Java SE 8 Programmer) Javaによるオブジェクト指向 プログラミングを覚えたレベル (言語を初めて学ぶプログラマ向け) Bronze資格は、Java言語の基本文法(変数宣言や制御文)とクラスや メソッドの定義などJavaプログラミングの基本を理解しているかどうか が主な出題項目です。言語初学者が理解するべき基礎項目を理解し ていることを証明します。 Oracle Certified Java Programmer, Gold SE 8 Oracle Certified Java Programmer, Silver SE 8 Oracle Certified Java Programmer, Bronze SE 7/8 「なんとなく書ける」から「理解し て書ける」へ 標準に準拠した確かな実装スキルは、生 産性や保守性の向上に貢献することがで きます。 Oracle 認定 Java 資格は、Java プログラ ミングスキルを客観的に証明する 世界共通の認定資格です。 • Java SE プログラミング・スキルを 網羅的に証明 • Bronze, Silver, Goldとスキルを段 階別に認定 • 世界共通*の認定資格 = 技術者同士の共通プロトコル * Silver/Gold 資格は Global 資格と同時認定されます。Bronze 資格は日本のみの資格です。 68
69.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | 「実務で役立つ資格」 「キャリア形成に役立つ資格」 第 1 位 新バージョンの試験を 選択する受験者の割合 資格試験の年間受験者数 2013 年から 4 年間で約 2.5 倍に Oracle 認定 Java 資格の価値 #1 【出典】IT技術資格に関する意識調査 - 株式会社アイ・ティ・アール (2016 年) X2.5 92% Java SE 資格試験に占める Java SE 8 試験受験者の割合 (2017 年) 本資格試験は単に資格を取得して終わるようなものではなく、実務にも活用できる 非常に実践的な内容になっていると思います。 OCJP Gold 資格試験はデザインパターンの基礎もその試験範囲に入っているため コーディングスタイルを初めとした開発標準を規定するアーキテクトといった指導的 な立場にある場合に、自分の力を客観的にはかる道具として取っておくことには大 きな メリットがあると思います。 単純に Java の文法を丸暗記しただけでは取得できないものとなっています。体当 たりで覚えざるをえなかった Java 文法などを体系的に学ぶことで平均的な Java プ ログラマから頭一つ抜けた存在になれると思います。 【資格取得者の声】 69
70.
Copyright © 2018,
Oracle and/or its affiliates. All rights reserved. | 70
Descargar ahora