« Back to Home

Blog

JavaOne 2012 San Francisco レポート(4日目)

2012-10-03 22:45:30 +0900

Java標準JSON APIがいよいよ登場

[caption id="attachment_684" align="alignleft" width="360"]Taylor Street Cafe 設営を完了して開催を待つ
Taylor Street Cafe[/caption]

2012/10/03(水):4日目になると、そろそろ疲れが出てきました。学生の頃は、毎日こんな生活をしていたんですね。今やとても信じられないです・・・。

ところでヒルトンの脇、テイラーストリートにはTaylor Street Cafeが設置されていました。1日目のキーノート後には、ここでイベントも行われていましたが、疲労困憊だった私は早々に退散したのでした。
たまにDukeくんも登場し、空き時間などにはにぎわっていたようです。

JSR 353: Java API for JSON Processing

XMLを扱う標準APIにJAXP(Java API for XML Processing)があります。
それに対してJSR353は、JSONを扱う標準API、JSON-P(Java API for JSON Processing)を策定するものです。ちなみにこのJSR353のEG(Expert Group)には、日本から山本裕介さんが参加されています。

JSON-Pは、JAXPと同様にStreaming APIとObject model APIから成り、パースや書き出しなどを行うことができます。なぜ今まで標準APIが無かったのか不思議なくらいですが、漸くそれが導入されるわけです。これでJSONを扱うプログラム同士の互換性が高まることと思います。

現状でJSONを扱うライブラリと言えばJacksonが有名ですね。こういったデータ処理系のAPIは、とかく実装のパフォーマンス面で優劣の差がついてしまうことが多いものです。Jacksonのような高速なサードパーティのライブラリに負けないパフォーマンスを期待しています。

なお、JSON-Pのリリースは、JavaEE7に合わせ2013年春になります。
そしてJAXBに対応するJSON-B(Java Architecture for JSON Binding)の策定も行われる予定であるとか。

What's New in JSF: A Complete Tour of JSF 2.2

今回のJSFのアップデートでは、HTML5を使い始めることを前提にしています。
今後もHTMLのバージョンアップ等、マークアップそのものの仕様が更新されることを視野に入れ、jsf:という接頭辞をつけた属性をJSFエンジンに解釈させることにし、それ以外の要素・属性はそのままレスポンスに反映されるようにします。

また、新しく"Flow"の概念を取り入れます(私は使ったことがないですが、SpringにWeb Flowという機能があるそうです)。Webアプリケーションにあける一連の画面遷移、例えば会員登録機能であれば情報入力画面・確認画面・登録完了画面といった遷移を、1つの単位として扱うことができるようになります。

こちらもJavaEE7に合わせて、2013年春のリリース予定です。

JavaOne 2012 San Francisco レポート

JavaOne 2012 San Francisco レポート(3日目)

2012-10-02 22:18:58 +0900

JavaSE8のLambda,JavaSE9のJigsaw

2012/10/02(火):3日目は、JavaSEのセッションを中心に参加しました。
JavaOneのセッションは、サンフランシスコ ユニオンスクエアにある3つのホテル、Hilton, Parc55, Nikkoで開かれており、HiltonではJavaSE、Parc55ではJavaEE、NikkoではJavaME関連のセッションが主です。私はMEはさっぱりなのでHiltonとParc55にしか足を踏み入れませんでしたが、Nikkoも少し覗いておけばよかったかなと思っています。

[caption id="attachment_619" align="alignright" width="1000"]Hilton San Francisco Union Square 主にJavaSE関連のセッションが開かれた
Hilton San Francisco Union Square[/caption]

Jump-Starting Lambda Programming

これはとても楽しいセッションでした。

Lambdaの導入に至る自然な流れとして

  1. 振る舞いを引数として与えること
  2. 増え過ぎたボイラープレートコードの除去
  3. Fluent API(パイプライン)の使用

これを簡単で巧く作られたプログラミング例から説明していました。

私の記憶では、コレクションAPIへ追加する必要のあるメソッドはIterableに追加することになっていたはずですが、Iterableに直接メソッドを多数追加するのを止め、新しいクラス、Streamを使うことになったようです。シーケンシャルに処理を行う場合はstream()、パラレルに処理を行う場合はparalell()をコールしてパイプライン処理を開始します。

The Modular Java Platform and Project Jigsaw

JavaSE8のスペックリード、レインホールドさんのセッション。

module-info.javaに関して、新しくexports, viewsが定義される予定だそうです。
その他は内容的に大きく変化があったわけではないため、リリースがJavaSE8からJavaSE9へ見送られたことなど,既知の話題が大半でした。

キーノートで失敗した、Jigsawでモジュール化されたJavaFXアプリケーションをRaspberry Piにインストール・起動するデモに、このセッションで再チャレンジ。一度目はうまく行かずモジュールリポジトリを作り直したりしていましたが、最終的には起動に成功し、安堵(?)のどよめきと拍手が起こりました。

JavaOne 2012 San Francisco レポート

JavaOne 2012 San Francisco レポート(2日目)

2012-10-01 22:48:27 +0900

JPA2.1でインデックス・外部キーを扱えるように

[caption id="attachment_599" align="alignright" width="1000"]Taylor street 街のいたるところにJavaOneの文字が[/caption]

2012年10月1日(月):2日目からは、3つのホテルでセッションが開かれました。だいたい1日あたり6コマくらい参加したのですが、私個人としてはこの2日目は少し外したなというか、選択を誤ったなと思うセッションの多い日でした。

数多くのセッションの中から、自分が本当に聴きたい内容のセッションを選び出すのは、実はかなり根気のいる作業です。
セッションの一覧には予めタイトルと説明が付けられているので、本来はそれらをよく読んだ上で選択すべきなのですが、私はそこを端折って取りあえずセッションのタイトルだけを見て、それらしいものを選定していったのでした。

What's new in Java Message Service 2.0?

JMS1.1では単純なメッセージの送信だけで、13行ものコードを書く必要がありました。しかもそのコードの大部分はボイラープレートコードと呼ばれる、決まりきったものでした。そこでJMS2.0では、シンプルに使いやすくすることを目標にしています。

  1. まず新しいAPIを定義して、メッセージの送受信が単純なメソッドの呼び出しでも行えるようにしました
  2. 更にJavaEE6で導入されたCDIを使用して、コンテキストオブジェクトがDIされるようにしました

これで単純なメッセージの送信だけであれば、わずか3行ほどのコードで実装することが可能になります。

他にも非同期送信やアノテーションによるリソースクラスの定義など、いくつかの機能が追加されています。

Java Persistence 2.1: What's New

JPA2.1について、JavaEE7のスペックリード、デミシェルさんのセッションでした。

まず大きなトピックとしては、新しいアノテーション @Index, @ForeignKey により、文字通りインデックスと外部キーを扱えるようになることが挙げられます。

その他、以下が主な変更点と言えるでしょう。

  • 不同期コンテキストが導入され、JTAと連動しない永続化が可能になります
  • また、属性毎にコンバータを定義することができるようになり、より柔軟なマッピングが可能になります
  • コンテナレベル,アプリケーションレベルでのマルチテナンシーをサポートします

JavaOne 2012 San Francisco レポート

JavaOne 2012 San Francisco レポート(1日目)

2012-09-30 22:29:43 +0900

大きな路線変更は無し。JavaEEはHTML5 + JavaScriptにフォーカス

2012年9月30日(日)から10月4日(木)までの5日間、米国サンフランシスコでJavaOneが開催されました。その様子をレポートしていきます。

私は当日の朝、サンフランシスコ国際空港に到着しました。一旦ホテルに荷物を預けて会場に向かったのですが、日中はとにかく暑かったです。日差しも日本の真夏より強く、サングラス無しでは屋外で眼を開けられないほどでした。

Strategy Keynote / Technical Keynote

[caption id="attachment_568" align="alignleft" width="1000"]Masonic Center San Francisco メイソニック・センター[/caption]

2012年9月30日(日):1日目には夕方から2つのキーノートが行われました。会場はサンフランシスコ市街、ノブヒルにあるメイソニック・センターです。

より生産性を高めていくこと・Project Jigsawを中心としたモジュール化や、マルチテナンシーのサポートをはじめとするCloud対応を目標にしていくことなど、今までに引き続く方針の再確認が行われ、特に大きな路線変更はありませんでした。

JavaSE8にはいよいよLambdaが入ります。そしてJavaSE7で導入済みの新しい処理命令 invokedynamic を使用し、一から実装し直されたJavaScriptエンジン"Nashorn"が投入されます。地味ですが個人的に見逃せないのは "Remove PermGen"(HotRockitの一環) ですね。

一方JavaEEの分野では、特に HTML5 + JavaScript を重視しているようです。
HTML5の開発ツールを構築する新しいプロジェクト、Project Easelが発表されましたし、JSON, WebSocket, Server-Sent Events のための仕様が次々に策定されています。
そしてProject Avatarの概要が明かされました。HTML5とJavaScriptを軸にした新しいコンセプトのWebアプリケーション仕様です。Avatarの実装イメージとして、ビッディング表示にServer-Sent Events,チャットにWebSocketをそれぞれ使用したオークションアプリのデモが行われました。

[caption id="attachment_570" align="alignright" width="321"]JavaFX Schedule Builder JavaFX Schedule Builder[/caption]

またJavaFXの分野では、なにやら怪しげな装置が登場し、JavaFXで書かれたJavaOneのスケジュール管理アプリを動かすデモが行われました。この装置は2日目以降、会場のあちこちに設置されて興味を集めていました。

Raspberry Piに、Jigsawでモジュール化されたこのアプリケーションを実際にインストールして起動させるというデモを見せようとしていたのですが、エラーで起動しないという一幕も・・・。(3日目に行われたJigsawのセッションで再チャレンジして、今度はうまく動きました)

JavaOne 2012 San Francisco レポート

Java, Moving Forward

2012-08-03 09:28:37 +0900

前回に引き続き、社内勉強会用に作成した資料を公開します。

今回は「Javaの現在と未来」2回シリーズの2回目です。「Javaの未来」として、Core JavaとEnterprise Javaそれぞれの分野の次の仕様、JavaSE8とJavaEE7について取り上げました。

http://www.slideshare.net/akirakoyasu/java-moving-forward

今回取り上げた内容は以下の通りです。

JavaSE8
  • Project Jigsaw
  • Project Lambda
  • HotRockit(紹介だけ)
  • Nashorn(紹介だけ)
JavaEE7
  • PaaS対応
  • JAX-RS 2.0
  • JCache

ところが、7/18時点でProject Jigsawに関してはJavaSE8での提供を見送り、JavaSE9に含めるという提案がなされました。Project Jigsaw: Late for the train

個人的には、JigsawとLambdaがJavaSE8の目玉だと思っていましたので、とても残念です。とは言えLambdaはJavaに大きな変化をもたらすものです。JavaEE7のPaaS対応についても見逃せません。期待して待つことにしましょう。