5/17(水)。
仕事は有給休暇を取って品川までJava Day Tokyo 2017に行ってきた。
http://www.oracle.co.jp/events/javaday/2017/
参加するのは今年が初めて。
平日の朝、スーツを着ずに会社とは別の方向に向かうのは新鮮である。
D1-KY Java Day Tokyo 2017 基調講演
最初はOracleの社長の話。
Javaすごいって話。
日本のITは人手不足。2017年は21.9万にも不足しているとのこと。人材は90万人。
Javaで生産性向上しようとか。
そのあとは、Oracleの外国人の方々。
同時通訳のイヤホンを初めて使った。
JavaはOracleに買収されてから、Javaが存続するかの話題が減ったらしい。
オープンソースのOpenJDKに支えられていて、いろんなプラットフォームに展開されている。
みんなも参加しよう。
その他、Java9の新機能の話。
お昼休憩
ステッカー欲しさに、Java認定試験のサンプル問題に挑戦。
Upgrade Java SE 7 to Java SE 8 OCP Prorammerを選択。
5問中1問正解。。。。 ラムダ式とか全然わからなかった。
Java7で止まってしまっているのを改めて実感。
D1-A1 Java 9 and Beyond: Java Renaissance in the Cloud
Java9の話。あまりついていけなかった。
D1-B2 Java EEにおけるフロントエンド開発とJSF2.3アップデート
最初にここ数年よくある話で、Struts, seasar2のEOLに伴い、JavaEEに移行が増えているという話。
説明は、淡々とアップデート内容を話していく感じ。
- JSFの特徴
- Webアプリケーション開発のフロントエンド開発に求められているもの
これもよく聞く話。
JSF1にトラウマがあるだけにJSF2.3のアップデートの内容を聞いてると、
現状のJSF2.2もいまいちで2.3もまだまだという感じに思えてしまう。
D1-A3 Introduction to Shell: Official REFL Tool for Java Platform
- 概要
- 利用できるコード
説明後にQAの場があったが、スクリプトファイル化出来るかというのが多くあった。
なんとかすればできなくもないというのが回答。
RubyやPythonなどのスクリプト言語のようにJavaのバッチをスクリプトで書きたいという需要があるのかなと思った。
確かにビルド、パッケージングなど面倒なので出来ると便利だなと思った。←出来ないわけだが。
D1-C4 Java EE開発者のための今から取り組むMicroservice開発
今はマイクロソフトの寺田さんのセッション。
Javaならではの話ではないけど、マイクロサービスに取り組むにあたって気をつけるべきことの話。
マイクロサービス化は必要か
- 考えて作らないと管理できなくなる
- マイクロサービスでなければいけないのかは考える必要がある
- 提唱者もやりすぎも気をつけるようにすべき
寺田さんの考え
- 耐障害性のためが一番ではないかと思ったとのこと
なぜ、必要なのか考える必要がある。
運用するにもDevOpsができていることが前提というのが印象的。
とはいえ、マイクロサービスに限らず取り組んだ方がいいのもあるということで
初級、中級の内容を話してくれた。
- 初級
- 新機能は既存に追加しない。そこからマイクロサービス化。
- ソース管理
- サービス毎にリポジトリを分ける
- アプリケーションサーバ
- warから実行可能jarに
- 共有ライブラリ呪縛からの解放
- プライベートリポジトリを建てる。
- ビューとロジックを分離する
- 中級
- 非同期処理
- どこでも動くサービスを作る
- セッション管理
- アプリケーションサーバ依存の排除
- サーバHTTPセッション共有 → Inmemory Grid
- 運用監視は重要
- 外のシステムでログを見れるようにしましょう
- Elasstic Searchとか
- 各システム内に行かないと見れないようにしない
- データベース管理
- サービス毎にデータベースを分けていく
- データベース連携 → メッセージ連携
- CQRS
- ReadとWriteを分ける
- Event Hub
- サービス導入
- ホット・デプロイから継続的デプロイ
- すべての変更を自動的に本番での検証
- 障害は起きる
- 起きても大丈夫なように作る
- マイクロサービスはサービスも増えるため、障害にはさらに敏感になる必要がある
D1-D5 Spring Framework 5.0によるReactive Web Application
Reactive Javaというキーワードは聞いたことあったけど、少し内容がわかったきがする。
- Reactive
- non-blocking
- event-driven
- back pressure
- ブロッキング
- SpringがReactive対応する理由
- マイクロサービスで少ないリソース、早くで動作するため
- slow client(遅い回線からのクライアント) の処理をさばく
- Web Socket
- HTTP/2 *スケーラビリティ、安定性
- Reactiveにするための方法
- ブロッキング処理をコールバックなイベント処理に。
- Reactive Stream
- Publisher (ストリームのデータ)
- Subscriber (Publisherを呼び出すクラス)
- backpressureで読み出す量を調整する
Spring5.0ではSpring MVCと同じような感じで書ける Spring WebFluxで対応。
基本Netty. Servlet 3.1でも実装しているのでTomcatでも動くとのこと。
WebFluxを使うかはさておき、JavaEEよりSpringの方がやはりいいかなと思った。
ここで18時。
最後のスペシャルセッションは参加せず、帰宅しました。
今仕事では使ってない技術ですが、イベント参加することで新しい技術に触れたり
先を行く人の話をきくことで、新鮮な気持ちになれた。