ウィリアムのいたずらの開発日記

ウィリアムのいたずらが、コンピューター関係について、思ったことを好き勝手に書いているブログです。

JavaEEはリアクティブ、マイクロサービスに行くみたいよ(MVCはぶっち)

2016-10-16 13:08:13 | JavaとWeb
きのう(10月15日)JavaOne2016報告会に行ってきた!
その内容をメモメモ
(表題の件は、中ごろの寺田さんの発表の印象)




■ごあいさつとOverview
JavaOne サンフランシスコ 2016年9月18日~22日
・セッションのほうが中心:テクニカルカンファレンスとして成熟
・土曜日:JavaOneForKids 金曜日:Javaチャンピオン サミット
・Java Your Next(Cloud)
 クラウドに向かうぞというのは、だれでもわかっていること
 キーノート
  1時間丸まるゲストスピーカー:火星に行く話
 ジョージサーブから
  JavaSE9は4ヶ月遅れる
  Dockerコンテナベース:現在のインストーラーベースに加え
   →詳細はわからない
 アニールガー:JavaEE系
   →詳細は寺田さんへ
   EE8リバイス、
   EE9の提案
     来年末までにEE9の骨組み
     18年末までには、マイクロサービス化されたもの提供
 そのために2016年
   コミュニティに提案
 日本からの登壇者 5名
   松田、損保ジャパン、富士通、日立、NEC
   木曜日、コミュニティーキーノート、
    スターウォーズの学芸会のり(JUGのリーダーとか
     ゴスリンさんは台本よみまくり!
 JavaOne4Kids
 サーベイ:glassfish.org (英語で)
 来年は10月1日~5日

■JavaSE Feedback
・スライドは公開予定です
・自己紹介
 HeapStatsの開発 JavaのHeapのプロファイリング
  →賞をいただいた、セッションで発表

・JavaSEの未来
 スケジュール
  JDK9:延長かかった(まえに)
     全然機能完了してない
     また延長きまった 2017年7月23日
  JDK10:スケジュールあがっていない

 JDK9セッション:いっぱいあった、よかったけど・・・

・主な機能
 JDK9
  Project Gigsaw
  Project Kulla(JShell)
  Reactive Stream
 JDK10以降
・Project Valhalla
・Project Panama

・ジグソーに関して
 jarの依存性が複雑→かけたとき・同じ名前の競合
 →新しいコンテナ
 JDK内部のモジュール化;これがジグソー
  Jlink:必要最低限のJRE
 結構更新された
  英語表示でヘルプを出す(日本語だと古い)

・Project Kulla(JShell)
  REPL for Java→CLI上で実行できる
   :教育

・Reactive Stream(The Flow API)
 Reactive programming:依存j関係と関数の国あわせ
 Reactive Streams

・Project Valhalla
 バリューらいぷのシンプル化
 (今回はキャンセル)

・Project Panama
 ネイティブコードを操作しやすく

・9の変更点
 ジグソーの変更によるもの
  大半の内部APIがカプセル化
   jdepsを使って影響あるか、確認を推奨
  →ライブラリが影響受けていないか
 Critical APIはpublic

 クラスローダーメカニズム
  クラスの継承
  モジュール化してクラスパスで配置しろ
  削除済み、非推奨オプションをVMで使うと、起動できない
  3世代前まではコンパイルできるけど、それ以前は指定できない
  バージョンを確認して起動する
    バージョンの表記方法かわる
    JDKのディレクトリ構造が変わる
  Webに関して
    AppletAPI非推奨
    セキュリティ
  暗号化の変更 
   JKSからPKCS12
   証明書が変わる
  ロギング方法
   パーサーはだいたい全滅
   でこレーター
   出力方法は変わる

・範囲が狭いがささったらいたい
  非推奨APIを削除
  グラフィック関係
  Thread.stop
  toArrays()はくローンを返していたのに、
  1文字のめいめい禁止
  String 内部データがcharからbyte[]へ
   →ライブラリで
  GCの組み合わせ
   →G1GC
  jcmdの機能強化
  JavaDBの廃止など

■JavaEEの今後について 寺田さん
・マイクロソフトの社員です(^^;)
・この資料、110か20か。。。
 なぜこんなに?
  Java Oneの内容
   3つのセッションをまとめた
     知っている前提でしゃべっている
      マイクロサービス:しらないと全員置いてきぼり→つくりかえた
 エンタープライズJava→従来セッション減らされた
 マイクロサービス(300セッション中、50~60セッション)とReactiveが採用

・あジャンだ
  よかったこと
  やばいぞ
  これからどうなる

・よかったこと
 日本企業がJavaOne基調講演で数多く登壇

・JavaEE
  いい印象を持ってる人:シーン
   →オラクルさんがんばんないと・・・
 JavaEE GUARDIANS
  去年の秋ぐらいからストップした
  JavaEEの将来が危ないという情報が流れた https://javaee-guardians.io
 →オラクルさんに届いた
  アニールガー:ことしのJavaOneで語ります
   JavaEE8 MVC採用をドロップ
  クラウド、マイクロサービスは詳しく出ていない
   →やばいんじゃない?
 火星の話をするよりも、不安を払拭するためにJavaEEの話をすべき

 ブレークアウトセッションの参加で不安は払拭・戦略的にはよい方向へ
 (詳細はのちほど)

 でも、べつの不安が!!
 9月22日 ヒルトン サンフランシスコ フィナンシャル ディスとリクと
 MicroProfile https://microprofile.io/
 ベンダー・コミュニティーが集結
  ぱやら
  レッドハット
  TOM EE tomcat+webプロファイル
 →いままでJavaEEを推進してきたベンダーが入ってる

 背景
  各ベンダーの個別会話から始まった
  JavaEE技術におけるマイクロサービス対応
  マイクロサービス重要だよね!
  将来のJava大丈夫という思い
  JavaEEをよりよく、より早く
 MicroProfile1.0
  アジャイル的な方法で
 →いままでのJavaEEの仕様から出るのが長い
   →実装依存はある
  JSRに登録
  やりたいことを取り上げて、一個づつつぶしていくという考え方
 標準化には時間を要す!!
   Spring,Netflix 標準化はイノベーションではない(両方必要)
 開発の進め方・戦略はMicroProfileの方が時代に適応!!(個人的に支援)
  オープンでやっている

 MicroProfile.io or/and JavaEE 8/9

・JavaEE 戦略的にはよい!!
 個々に記載する内容は、あくまでも提案内容(未決定)!!

 Cloud対応(Microservice対応)

・2年前と世界が変わった
  クラウド化・マイクロサービス化
   マイグレーション・パスを用意
   JavaEEの後方互換性を維持
   REST(JAX-RS)は、今後重要→いままで以上
    いままでは、サーバー:待ち受け口を作るのが多かった
    今後、クライアント側:呼び出しでもRESTが重要
     非同期ノンブロッキングでつなぐ

・JavaEE9がメイン
  JavaEE8はつなぎ
  JavaEE9はクラウド

 JavaEE8の提案内容
  マネジメントAPIとJMS,MVCはドロップアウト
   JMS2.0のまま
  コンフィグレーションとヘルスチェック

 今後はリアクティブプログラミング
 リアクティブ宣言
  即応性
  耐障害性
  弾力性
  メッセージ駆動

 EE8では非同期、ノンブロッキング
 http2.0→複数のレスポンス

・JAX-RS 2.1 クライアント側の大幅な更新
 リアクティブ・プログラミング
  非同期処理の改善:実装方法の改善
  ノンブロッキング対応:リソース消費を防ぐ

  RESTでよんでいく

・JAX-RS 2.0の非同期処理(コールバック地獄)
 EE8
 JAX-RS 2.1 Completable-Future<T>を利用
  非同期処理をより簡単に、RxJavaも利用可
  Jersey(じゃーじー)では

 JAX-RS 2.1:ノンブロッキング対応

 ヘルスチェック
  サービスが生きているかどうかを監視できる

 コンフィグレーション:外部設定
  設定情報を分けて管理する
  Apache Tamayaなどを参考

 マルチ手ナンシー対応
  テナントごとにカスタマイズ
  マルチテナンシー対応:データ・アクセス
   データソースの実装も変えないと・・

 セキュリティ JSR375
  EE8とEE9(メインは9)

  OpenID コネクト

・JavaEE9 マイクロ・サービス
  ラジブさん
 マイクロサービス開発の標準にしたい
 MicroService

 今まで:モノリシック(一枚岩)
   小さなプロジェクトなら楽
   一回作ったら、変えられない
   プロジェクトの全体はあくが大変になる

 マイクロサービス
  それぞれの機能を分けて作る:疎結合
  個々のサービスで個々のプログラミング
  どっちを適用すべきか→必要なところで

 標準的な実装がない
  開発者が選択→標準化

 マイクロサービス・デザイン・パターン
  APIゲートウェイ:標準化するものではない
  サービスレジストリ・ディスカバリ
     →サービスを登録する→ロードバランサが問い合わせ
  サーキットブレーカー
     →負荷が高い・障害発生:リクエストをきる
   JAX-RSクライアントAPI拡張、アノテーション
   バルクヘッド
 ポリグロット・パーシステンス
  JPA:RDBの永続化
   →NoSQL:カテゴリーわけをしたAPI
    カテゴリ指定(Key/Valueの例)
  JPAと似たような感じ

 CQRS:データの参照と更新を分離
  分散アプリではリードはリード、ライトはライトでわける

  Tolerant Reader(寛容な読み込み)→実装者が考慮(EE9未対応)

 チェインド・サービス

 非同期メッセージング
  kafka,RabbitMQ
  pub,sub用意

 サービスインスタンス
  JavaEE9 JavaSE9のあと
       1つのJarファイル(Jigsawを使って
   A,Bが繋がっている場合、分けるとパフォーマンス悪くなる
     →プロビジョン方法の提供
   グルーピング

 コンシューマードリブン: EE9未対応
  Spring Cloud Contract、Pact

 ドメインイベント
  マイクロサービス:分散ネットワーク
  分散環境でのトランザクション

・その他
 クラウドプロバイダが提供するサービスを呼び出せる
 Auto Scale
 JavaEE9のリアクティブ対応:包括的なAPIを提供
   JDK9のFlowAPI

・動画もある(英語)

・MicrosoftがJavaOneに出展
・IBMさんがJavaをもう一度すばらしいものにしましょうよ
・コグニティブサービス

 マイクロソフトのビデオもみられる

 アイデアひとつでできる

 もうつぶやいている
 JJUG CCCで紹介したい。足を運んでくれれば・・

■JavaOne2016総括
・自己紹介
・標準Java:特に進展なし
 JavaME,JavaFXはキーノート発表なし
 JavaME:SE Embeded
・今後への懸念
 JavaEE Guardians
 ロードマップは出たけど、リリースできるの?
 問題はEEだけではない
・Make Java Great Again IBM
 IBM SDK For Javaをオープンソースへ
 OpenJ9→OpenJ9ベースのOpenJDKがでてくる
 OMRの上にかぶせてOpenJ9
 Eclipse OMR
  JITコンパイラ、GC,スレッドライブラリなど、言語に非依存な形で提供
  CRubyで提供。CPythonは公開予定有り
 →COBOLもマイクロソフトCMRと同じアイデア
 Apache Harmony論争再び?
 JavaVMがIBMを主導したい?→戦いの場でないものはオープンソースにしたい
 だれがJavaを偉大にするのか

 標準Javaが遅い:誰かが追い越していく
 OSSとコミュニティが進化を加速していく
 標準が前に進まないなら、別の標準
 コミュニティーキーノート
  エピソード21:コーダーの覚醒
  相変わらずの学芸会のり
  ベンダー主導の情報発信の場→コミュニティ交流する場
 JavaOne
  エンタープライズ職が強い

・トレンド
 DevOps,クラウド、マイクロサービス、リアクティブ
 アジャイルは常識:リリースサイクルの話
 DevOps:Jenkinsが一般的 一週回って次の課題
 コンテナ前提:Docker
  パイプライン設計、テスト時間を短くするには、メトリクスが重要
  テスト時間をどれだけ短く。メトリクス
 クラウド:使って当たり前。サーバーレス
 マイクロサービス:分けたサービスをどう管理するか
 イベントソーシング
 疎結合を優先し、非同期処理での不整合を許容する
  Amazonは処理に失敗したらクーポン出してるよ
 Reactive
  用語定義やメリットの議論が継続的
  通信するという概念がボトルネックに

・未来予測
 数千数万のサービスで構成されたシステム
  境界線があいまい
  サーバーレスの延長
 サービスの制御は、全てプラットフォームに任せる

・まとめ
 誰がJavaを偉大にするのか
  コミュニティやOSSと協業できる企業
 JavaOneはコミュニティの交流の場として機能している
  もちろん、行く価値はあります

・おしらせ
 12月3日 JJUG CCC Fall

■Road to Duke's Choice Award
・自己紹介
・Heap Stats
・おことわり:思いで話メイン。主観が入ってるかも。技術的な話しない
・Duke's Choice Award
  4つもらえる:参加チケット、Duke像、バッジ、Oracleプレスリリース登場権?
・HeapStatsって何?
  JDP:マルチキャストで飛ばす
・挑戦の歴史
 2014年のJavaOne
   申請;落選
 2016年
   再挑戦
 意識したこと
  バズワード入れてみた(IoT,ARM)
  審査員がぐっときそうな技術 JavaFX
  Javaへの暑い思い
 受賞
・連絡
  英語でメールがきます
  副賞は来年に繰り越し可能
  住所と電話番号
  授賞式まで内緒にしててね
・授賞式
  JavaOne期間中
  関係者全員で行ってよい
  事前打ち合わせなし
・トリビア
  Duke像はさわれない
  2回ステージ
  英語しゃべらなくてOK
・変わったこと
  GitHubのStar数増えた
  HeapStatsが記事にでた
・つづき
 Java Community Keynote
  HeapStatsが登場
・コミュニティの中でのHeapStats
  コミュニティ、メディア
・HeapStatsを作ったきっかけ
 Javaのメモリーリークディテクター作って
・ポリシー
 軽く・速く

■(LT)SideStory
・学芸会に参加して・・・
・ばんゆう:むこうみずのゆうき
ジャンル:
ウェブログ
この記事についてブログを書く
この記事をはてなブックマークに追加
« 竜王戦挑戦者変更と発表及び... | トップ | IoTでのPIC、mbed,Arduino,Ra... »
最近の画像もっと見る

あわせて読む