JavaOne 2015 報告会 @名古屋

参加しました。主催のなごやかJavaさん、演者の桜庭さん、伊藤さん、会場を提供くださった日本オラクルさん、ありがとうございました。

1. JavaOne2015キーノート&全般

by 伊藤さん@日本オラクル

  • Java20週年
  • JavaOne4Kidsという1dayセッションに8歳から15歳くらいまでの450人の子どもたちが参加。htmlからscratch、ラズパイ等々のプログラミングを楽しむ。
  • 日本人Speakerが10名以上。素晴らしい。
  • Javaの現状
  • 全世界で1000万人のJava開発者。Java8、IoTが開発者増を後押し。OpenJDKのアクティブコミッター数の増加5年前に比べて136%増、Javaユーザーグループ(正式に登録されているもの)が倍増(非公式のものを含めればもっと多い)
  • Java Championの増加5年で55%、JCPに参加している非営利団体が1年で16%増。
  • JCPの門戸拡大。営利団体の会費を無料にする方向で策定作業中。
  • 各種調査団体によるプログラミング言語利用者調査でも1位ないし上位。
  • Java SEの進捗。Java8のu60が出て、次はJava9。Java9は延伸されて2017年3月にリリース。
  • Java ME Embeddedの進捗。今8.2。各種デバイスへの対応や細かいフィーチャーの追加など。
  • Java ME Embeddedの状況。搭載デバイスの増加。IoT用のクラウド各種製品やサービスの充実
  • Java EEの進捗。Java EE 8のリリースは2017年。GlassFishJava EE準拠のアプリケーションサーバ)も入る。
  • Javaマーケットにおけるトレンド:DevOps。450セッションのうち107がDevOps。自働化ツールの定着、クラウド環境の利用、実践における最適化。
  • Javaマーケットにおけるトレンド:Microservice。細かい機能をReSTで繋ぐ。
  • JavaOne 2016に行きましょう!
  • 札幌や岡山のコミュニティはどのような活動を?
  • Java-doが2w毎に活動されてたり。夜あるいは週末。
  • Scalaの話?
  • Microserviceの事例(gilt.com)では、マイクロサービス書くにはScalaが使いやすい、フロントエンドはPlay framework、と紹介。
  • JVM言語のセッションもある。ScalaClojureが人気ある印象。Groovyも。

2. Java SE ハイライト

by 桜庭さん@Java in the Box

2.1 Mark Reinhold/Java SEのスペックリード
  • Alex Buckley、Alan Bateman、Mandy ChungとともにコアチームでProject Jigsawに注力。
  • なぜProject Jigsawなのか?classpath問題と標準ライブラリの肥大の問題。
  • classpath問題:JAR Hell。JARがない、バージョン違いのコンフリクト、バージョンアップで非互換。内側のクラスの変更の影響。
  • 今のJavaではJARファイルの依存性が書けない、JARファイルにはバージョンがない(慣習として名前に付けてるだけ)、クラスの可視性の問題でPublicが丸見え過ぎる。今一番問題なのはunsafe。いつ使えなくなるのか?
  • Moduleで解決しようとしている。
  • シンプルなアイデア。Module extends JAR { dependency, exportation, version } module-info.javaに書く。JavaDocに似たような感じ。一時期XMLで書くという話があったが、いつのまにか普通のソースっぽい書き方に戻った。
module com.foo.bar {
	// module dependency
	requires com.foo.baz;
	// package exportation
	exports com.foo.bar.alpha;
}
  • コンパイルするときjavac -mp modsと書けば解決してくれる。
  • moduleじゃないJARは-cpで書けば今まで通りに扱われる。-mpで指定されたmoduleのJARではexportsされていないclassは不可視。
  • moduleはjarコマンドで作る。オプションの追加。
  • OpenJDKのJigsawのところに説明がある。
  • 実行 java -mp mods -m com.foo.bar/com.foo.bar.alpha.Alpha
  • OSGI車輪の再発明という声もあるが、標準でサポートされるのはよいこと。現在の出来栄えは完璧じゃないけどまあ、ver1.0はこんなもんかなと。
  • 標準ライブラリ(rt.jar)の肥大問題。
  • jdeps(依存関係の表示)、jlink(カスタムJREの作成)
2.2 Robert Field/Project Kullaのスペックリード
  • Project Kulla:jshell、REPLを提供する。
  • jshellの動機?ScalaやGroovyでできるし、ちょっと確認したいときに便利だから。
2.3 Michael Mcmahon/新しいHTTPクライアント
  • HTTP/2、WebSocket、非同期通信をサポート
2.4 Brian Goetz/Project Valhalla
  • 低レイヤでの性能の改善。
  • 例えば今CPUはマルチコア化している。それを活かすために並行処理の効率のよい関数型を取り入れた。
  • 別の問題として、キャッシュとメインメモリの速度差。キャッシュミスはパフォーマンス上のペナルティになる、そんなレベルのプログラミングがなされる時代になってきた、という認識・前提。Javaはメモリ管理が隠蔽されていることもあり、キャッシュを意識したプログラミングはできない。このジレンマを解決するのがValhalla。
  • 例えばクラスの配列はポインタの配列でオブジェクト自体はメモリのどこかにある。というようなおおらかさではキャッシュに載らない。キャッシュに載せるために参照を挟まないValue Typeを導入する。Value Typeはimmutable。こういうところでもimutableを重視するプログラミング(関数型とか)が重要になってくる。
  • プリミティブ型と参照型の中間の位置付けにValue型がくる。複素数とかBig Intとかベクトル型とかタプルとか、プリミティブ型オプションとか。
  • Specialization。ジェネリクスのプリミティブ型に対する特殊化。Javaジェネリクスは型消去でObject型にするためプリミティブ型を扱いづらい。オートボクシングのオーバーヘッド、対応するObject型になると前述の通りキャッシュに載らない問題。
  • IntStream, FunctionalInt, OptionalIntとかは黒歴史化する?
  • まだ残課題がある。10に入るのか11まで残るのか。
  • SE9では言語仕様はあまり変わらないが、JVMとか標準ライブラリにかなり手が入るので、動作確認は念入りにやったほうがよいですよ。
  • CDI(依存オブジェクト注入)とかJSONとかがSE単体で使えるようになりますよ。

3. Java EE ハイライト

by 伊藤さん@日本オラクル

  • あれ、EE使わない人多い?
  • EE7が策定されて2年、対応した商用アプリケーションサーバーも出揃ってきた状況で、次期バージョンEE8のファーストドラフトが出てきた。ここを概観してみましょう。
  • 特徴:Web系の最近の標準に合わせてきている。JSONB、HTTP/2。EJBなどバックエンド側にはあまり動きはない。全世界のコミュニティに対するアンケートからのフィードバック。
  • 主要テーマ:HTML5/Webティア機能拡張、容易な開発/CDIの活用、クラウドの実行・管理環境化
  • HTML5/Webティア機能拡張:JSONバインディングJSON処理機能拡張、ActionベースのMVC、HTTP/2サポート、
  • JSON Binding:XMLの時と似た感じでマーシャル/アンマーシャル。既存の実装の成果を活用。
  • JSON Processing:新しい標準への対応。JSONポインタ、JSONパッチなど。
  • MVC:Component-basedとAction-based。EE8ではアクションベースのものが入る。既存技術の組み合わせで実現。モデルはCGI Bean、ViewはFaceletsかJSP、コントローラーはJAX-RSリソースメソッド。それぞれをアノテーションで示す。
  • HTTP/2対応:TCP接続を多重化。Streamと呼ばれるデータ単位の送受信。バイナリ送受信。Server Push。ヘッダ圧縮。
  • JAX-RSHTML5のServer-sent Eventsに対応。
  • 開発をより容易に:CDI 2.0。SEでも使える、EEのなかのいろんなところで使う。モジュラリティ:CDIライトとフルCDIが選択的に使える。CDI for SEとCDI for EEとそれらの共通部分としてのCDIコア。それらの組み合わせの使い分けができる、というのが現時点でのアイデア(ファーストドラフト。今後変わるかもしれない。)
  • JavaEE Security 1.0ではCDIインターセプタを用いた認証処理を行う(案)。
  • JMS2.1 使い勝手の改善。
  • インフラのモダナイズ。オンプレミスでもクラウドでも。マネジメントAPIの強化、など。
  • JSRは公開されており、進捗やタスクも見れます。仕様策定に参加できます。
  • JavaEE7徹底入門 12/16発売。充実した内容になってます。

4. 写真で分かるJavaOne

桜庭さん@javainthebox

  • パロアルトとスタンフォードはすぐ隣。そこから南あたりがいわゆるシリコンバレー
  • ゴールデンゲートブリッジはゴールデンゲートに架かっている橋だからゴールデンゲートブリッジという名前で色は赤。
  • ラクオープンワールドとJavaOneを同時にやっている。
  • OOWの会場はインテルやアップルのカンファレンスで使う。OOWの会場の中を通る8車線の道路を封鎖して休憩所として開放する。かたやJavaOne会場は1車線で、しかもそのあたりはあまり治安がよくなく浮浪者も多い。
  • JavaOneは日曜日始まり。初日の午前中はコミュニティーセッション。これはあまりクオリティ高くない。午後からキーノート。
  • 翌日からカンファレンスセッション。朝8時代から夜までやる。昔は11時くらいまでやってた。
  • 水曜日の夜にアプリシエイションイベント。木曜の昼にコミュニティキーノートでお弁当が出る。木曜の午後は人気セッションの再演とかやって早めに終わる。
  • キーノートではマーク・ラインホルトが存在感。二十周年祈念ケーキのできがあまりにひどい。JavaOneのキーノートの後OOWのキーノート。キーノートが終わらないとレセプションが始まらないのだけど、ラリー・エリクソンの話が終わらない。
  • レセプションは8車線道路でフリーの食事とビール。寒くて震えながらビールを飲む。
  • セッション毎のアンケートが従来の紙ベースからタッチ機器になった。裏を見たらラズパイがガムテープで貼り付けられたような粗雑な作り。
  • 従来プロのバンドが演奏してたところをコミュニティベースのバンドNullPointersが演奏。
  • アプリシエーションイベントはサンフランシスコ湾の中にある島で行われる。JavaOneとOOW合わせて2万人くらい?が参加。カンファレンス会場からバスで移動するんだけど渋滞。イベントのゲストでエルトン・ジョンBECKが演奏。パビリオンとかもある。夜中まで遊ぶ。翌日のセッションはちょっと遅めに始まる。
  • コミュニティ・キーノートでもnull pointersが演奏。ランチ食べながらパーティと思って楽しんでね、ということでお酒も出た。キーノートは寸劇仕立て。暴れるデュークから世界を救うキーワードを探して過去を旅する。世界各地のJava User Groupの人たちが出演。キーワードはKids are futureで関係者の子供が出演してデュークをいさめてめでたしめでたし。20周年ケーキが再登場。こちらは比較的ましな見た目。味もわりとましで、これはアメリカでは極めてめずらしいこと。
  • 日本からの参加者でカニパーティ。サンフランシスコは全米屈指の美食の街で、ある程度お金をだせば美味しいものが食べられる。カニも美味しいものだった。
  • JavaOneでもっとも手軽な食事はファーストフードだけど、チェーン店はホームレスのたまり場になっているので気をつけてください。
  • 木曜に終わってすぐ日本に帰って金曜日に仕事をするなんてむなしいので、もう一日滞在して観光とかしたらいいですよ。

5. ライトニングトーク

5.1 Java EE 8を先取る/うらがみさん
  • SSEとMVC1.0気になってる。2017年まで待てない。
  • JAX-RSの参照実装であるJerseyで試す。glassfishにはもう入っているので使えます。
  • MVC1.0の参照実装はOzark。
  • まとめ。今からでも一部機能は試せる。素振りしてこそ使う使わないの判断できます。
5.2 Jigsaw以外のJava SE9の改善点/もがみさん
  • JEP(JDK Enhancement Proposal. Oracle JDKとOpenJDKのエンハンスメント提案)を見てみると、Projectなんちゃらとか名前のつく大きなもの以外でもいいものがある。
  • 実行時パフォーマンス改善。
  • コンパイルパフォーマンス改善。
  • jshellやJavaDoc検索やベンチマークツール。
  • 複数バージョンのJavaをターゲットにしたライブラリの開発をしやすくするいろいろ。
  • イミュータブルなコレクション生成を簡単に。
  • まとめ。JEPに目を通そう。多くの改善ある。

かんそう

  • Java SE8、データをキャッシュに載せるためのエンハンスとか!ぐるっと回ってC言語に帰ってきた(でも生Cみたいなunsafeなものにはしない)感がすごい。でも、そのときどきのトレンドに真面目に取り組んでいてすばらしい。
  • 久しぶりにこういう勉強会に参加したけどよい刺激。なごやかJavaさん、伊藤さん桜庭さん、日本オラクルさんありがとうございます。