JavaOne 2016 報告会 in 大阪

日時：2016/11/19(土) 13:00 〜 17:30
場所：日本オラクル株式会社 関西支社
https://kanjava.connpass.com/event/42668/


## JavaOne 2016概要とJava EEに関する新提案の件

発表者：伊藤 敬さん（日本オラクル） @itakash

### Java EEの今後
 
- クラウド、マイクロサービスのアプリケーション開発を想定
- 異種クライアントの共存
- ステートレス・サービスへの対応
- 多彩なデータソースに対応
- 実績のある技術で構成
- Programing Model
  - React
- Packaging
  - docker
- Serverless
- Key Value/Doc Store
- Eventual Consistency
- Configuration

### パッケージングの変更・追加
- Dockerモデルの採用
- マルチテナントへの対応
- Serverlessアーキテクチャの導入

### Event API Proposal for Java EE9 

- Asimple Event API
    - Reactiveプログラミングが書きやすくなる

### 変更提案

- サーキットブレーカー機能
- マルチテナント
- ヘルスチェック機能
- MVCは取り下げる

### Java EE Roadmap

- 2017年
    - Java EE8
    - マイクロサービスサポート（イニシャル）
    - Java EE9策定

- 2018年
    -　Java EE9
    -　 モジュラーJavaEEランタイム
    -　 マイクロサービスサポート

変更提案とロードマップに対するアンケートを収集。
アンケート結果はもうそろそろ出るらしい。

## JavaOneで登場したライブラリ

資料：https://docs.com/kazsharp/8019/javaone2016-kazsharp
発表者：佐々木さん @kazsharp

### jComprehension (List Comprehension) 

リストの内包表記
https://github.com/farolfo/jComprehension

### JPA Modeler

http://jpamodeler.github.io/

- JPAのためのグラフィカルツール
- GUIでエンティティを作成
- エンティティ間の関連も作成
- ER図の自動生成

### Mophia

https://github.com/mongodb/morphia

- MongoDB用のライブラリ（O/Dマッパー）
- Java EE9ではNoSQL用の標準ライブラリが追加される予定

### Lambda-logging-jcl

https://github.com/kazsharp/lambda-logging-jcl

- Log4j2のApache Commons Loggingブリッジの実装
- lambda対応
- [lambda式の遅延実行を利用したログ出力](http://qiita.com/kazsharp/items/b08ec29038f18403e62e)


## Java SE Update ～Jigsawをメインに～

資料：http://www.slideshare.net/skrb/javaone-2016-java-se-update
発表者：さくらばさん（Java Champion） @skrb

James Gosling…Java作った人
Mark Reinhold…OracleのJavaにとって重要人物
Stephen Chin…最近日本に来た
Brian Goetz…Lambdaチーム
寺田さん…日本MS、Javaチャンピオン

### Project Jigsawの話

#### Module

- JAR HELL問題への対応
    - 依存性について言語として対応する
    - PublicがPublicすぎる⇒Moduleで解決

##### 手順

- JARファイルに `module-info.java` を追加する
- 依存性とスコープを書く
-  `src` ルート直下に置く
- Build
    - Goodbye, Classpath
    - `-cp / --class-path`
    - Hello, Modulepath
    - `-p / --module-path`
- JLINK
    - JREをカスタムできる

スタンダードライブラリもモジュール化されていてモジュール用のコマンドツールも追加されている

### Project Panama

#### Vector API

- API for SIMD
- 配列を効率よく使えるようになる

#### Forien Function Interface

- JNIを使いやすくする
- JFFI⇒CやC++のコードを書かなくてもinterfaceやClassを作ってくれる

※参考
http://itpro.nikkeibp.co.jp/atcl/column/15/120700278/050900012/
http://qiita.com/hashiwa/items/9ae1f8ad8d2e8f916664


## 2016 エンタープライズ Java の最新動向と、雲の中の Java

発表者：寺田 佳央さん（Java Champion） @yoshioterada

#### Java EE Guardians
https://javaee-guardians.io/

- 元Oracle、インド人がリーダー
- JavaEEが下降気味になったのを問題問題定義


#### MVC完全撤退の危機について

⇒アンケート収集、結果次第で撤回の可能性はある

#### MicroProfile

https://microprofile.io/
https://www.infoq.com/jp/news/2016/11/microprofile-panel-javaone

- JavaEE技術におけるマイクロサービス対応
- Oracle以外の各社が推進
- Eclipseでの開発前提

#### クラウド化・マイクロサービス化

- マイグレーションパスを用意
- JavaEEの後方互換性を維持
- REST（JavaRX）対応
- JavaEE8…JavaEE9の準備
- JavaEE9…クラウド＆マイクロサービス、リアクティブプログラミング対応

#### モノリシックｖｓマイクロサービス

Agile、DevOps、CI/CDは当たり前でその先にマイクロサービスがある

- 分散コンピューティングを意識したシステム開発
- システムが落ちても全体に影響がないように設計する
- マイクロサービスを意識したJava F/W
    - SpringBoot
    - akka
    - MicroProfile

⇒これらに対してJava EEは標準化していきたい

#### 標準化技術

- API Gateway
- Service Registory/Discovery
    - 動的変化するサービス・エンドポイントへの接続
    - ロードバランサがR/Dに接続して裏側のサービスに振り分ける
- サーキット・ブレーカー
    - 特定サービスのち円・障害にも全体サービスを継続
    - サービスの切り離しと回復
- BulkHead（隔壁）パターン
    - 並列（スレッド）サービス呼び出し数を制限

※JavaEE9ではAPIGatewayは入らない

#### MSの事例

Cognitive ServicesのFace APIをマイクロサービス化したサンプル・アプリケーション事例紹介

MS　Cognitive Services
https://www.microsoft.com/cognitive-services/en-us/apis
https://github.com/yoshioterada/Face-Detect-Cognitive-Service-with-Java-EE
https://msdn.microsoft.com/ja-jp/magazine/mt595752.aspx

## 日本からJavaOneへ参加するには、そしてそのオトクな方法


発表者：じゅくちょー（関ジャバ会長） @jyukutyo

- 費用だいたい３０万円台

節約手段

- 移動を乗り継ぎにする⇒28時間ぐらいかかる
- JavaOneパスの割引を駆使（標準価格は20万5千円）

※2017年は9/30-10/6

#### JavaOneに関する情報

- Slack #j1jp
- Facebookグループ…毎年できる

#### 本編以外の楽しみ

- NullPointersの演奏⇒JavaOne向けに結成されたバンド
- JavaOneメシ⇒カロリー摂取するだけの食べ物

#### JavaOne以外のイベント

##### Devoxx
3/21-23
パス代$995

##### SpringOne Platform
2017/12/4-7

## JDK 9  Language Updates

発表者：きつねさん（OpenJDKコミッタ） @bitter_fox

### jshell

- Java REPL Tool

### javadoc

- HTML 5 Javadoc
- Simplefied Doclet API
- Javadoc Search
    - Javadocに検索窓
    - Java9からModuleベースになる

### Compiler

- `--releaseフラグ`
- オプションのフォーマット 
    - 複数文字列は `--` を採用
    - ただし今までのオプションは変更なし
- invokedynamic
    - `StringBuffer` から `StringBuilder` のようなケースでリコンパイルが不要
- Tiered Attribution 
    - 型推論の処理が効率化
    - ネストした型推論のコードでもコンパイル速度向上

### Java言語仕様

- `@SafeVarargs` on privete メソッド
- `Try-w-resources` でのfinal変数の使用
- 匿名クラスでのダイヤモンド構文
- 識別子 `_` のエラー化
- privateインターフェースメソッド