JavaOne 2013 サンフランシスコ報告会 Tokyo

JavaOne 2013 サンフランシスコ報告会 Tokyoに行ってきました。

Java SE のアップデート(櫻庭 祐一氏)

Nandini Ramani 副社長の話

JavaSE/ME統合自体は2011年に発表していること。
重要なのはNandiniがIoTを担ぎ出してきたこと。
→Oracleが力を入れている。

教育用にRaspberry Piはくる。
LEGO Mindstorm、Arduinoも若い人にはいいのでは。

JavaDayTokyoにはロードマップにJDK8.1と8.2があったが、今回は飛ばされている。
JDK8.1に書いてあったJMC 6が個人的に重要。JDK8に入ってくるかもしれないが、おそらく9ではないか。もしくはEE8

Brian Goetzの話

Java 並行処理プログラミングの本の作者

Java並行処理プログラミング ―その「基盤」と「最新API」を究める―

Java並行処理プログラミング ―その「基盤」と「最新API」を究める―

Project Lambdaとは言っても

  • Lambda式
  • 型推論
  • Method Reference
  • Default Method
  • Stream

といろいろある。

Stream

注目すべきはStream。
マルチコアのためにStreamが重要。
Streamを実装するにも匿名クラスが面倒なのでLambda式が必要となった。

Streamは

  • 機能拡張版Iterator
  • 関数型言語の考えを導入

Stream自体は値を持たず、リストをなめていくだけ。

xxx.stream()
.filter(p->p.isXX())
.map(p->p.getXXX())
.redue(0, (x,y)->x+y);

の場合、実際のfilterとmapの処理はreduceの際に行われる。(処理遅延)
これによりパフォーマンスがかなりよくなっている。

Stephen Colebourne, Roger Riggsの話

Date&Time APIの話

Stephen ColebourneがDateとCarendarを嫌ってるので、全て置き換えたがっている。

Date/Calendarの置き換え
機能豊富/クラス大量
→いろいろ結局みんなZonedDateTimeを使うのではないか。

Alex Buckley, Joseph Darcyの話

Enhanced Metadataの話
要するにアノテーションのこと

SE8では、@Pathが複数書ける。

@Path("xxx"), @Path("yyy")
class XXX ...

いろんなところにアノテーションが入れられるようになった。
書けるようにはなっても、それをチェックするところがないから微妙。。。

NullをListに入れたくない場合

SE7
@NonNull List f;

SE8
List<@NonNull String> f;

John Rose, Gary Frost

Project Sumatraをやってる2人

Project Sumatra

GPGPU for Java
まだOracleとAMDの方向性が合ってない印象

Mark Reinholdの話

Project Jigsawをやっている人

Project Jigsaw

Javaをモジュール化しましょうという話。

jlinkというコマンドが新しくできた。
モジュールをリンクできる。

正直まだ微妙な感じ。

まとめ

JavaSE8

とにかくLambda
Date&TimeAPIもにぎわってた

JavaSE9

未だに曖昧模糊

JavaFX のアップデート(青江 崇氏)

JavaFXとは

モダンなGUIツールキット

  • FXMLの導入によるプレゼンとロジックの分離
  • アニメーション、エフェクト
  • CSSによるスタイリング
  • WebKitベースのブラウザコンポーネント

SE8からは標準コンポーネントに

FXML(HTMLっぽいやつ)の属性とJavaのプロパティが自動で紐付いたりする。

JavaFX8の新機能

  • 画面のテーマが新しくなった
    フラットデザイン風のとか
  • Lambdaを使用してコンパクトに書ける
  • 3Dを本格的に使えるようになった。これまでは限定的なサポートだった。
  • DatePickerの追加 Date&Time APIにも対抗
  • SwingNode
    JavaFxの上にSwingが乗せられるようになった
    SwingコンポーネントをSwingNodeでくるんで追加できる
  • 基本APIの強化
  • フルスクリーン機能の強化
  • 印刷APIの追加

などなど

JavaFXの向かう先

  • 採用事例が増え、ライブラリ、フレームワークも増えている
  • Windows、Mac、Linuxすべてで使えるGUIツールが減ってきている
    AdobeAirもLinuxを切り捨てたし、最近はAdobeがあまり力を入れていない
  • 組み込み機器向けGUI
  • IoT時代におけるGUI開発の主役になる可能性も

Java EE のアップデート(井上 誠一郎氏)

パーフェクトJavaの著者

パーフェクトJava (PERFECT SERIES) (PERFECT SERIES 2)

パーフェクトJava (PERFECT SERIES) (PERFECT SERIES 2)

  • 作者: アリエル・ネットワーク株式会社,井上誠一郎,永井雅人,松山智大
  • 出版社/メーカー: 技術評論社
  • 発売日: 2009/09/24
  • メディア: 大型本
  • 購入: 26人 クリック: 360回
  • この商品を含むブログ (35件) を見る

EE7の目玉機能

  • WebSocket
  • JSON標準API
  • Java Batch
  • Concurrency Utilities

CDI(Contexts and Dependency Injection)

  • DIの標準規格
  • JavaEE6で登場

JPA(Java Persistence API)

  • O/Rマッパーの標準規格
  • Hibernateも今ではJPA実装の一つ
  • JPA実装は独自実装を持つのが実情

JAX-RS

  • RESTfulなURLルーティングやHTTP処理の標準規格
  • アノテーションでURLとクラスやメソッドを対応づける
  • EE7のJAX-RS2.0で非同期APIとクライアントAPI追加

JavaOne2013のJavaEE概論

  • ProjectAvatarのオープンソース化が発表されたが、それほど盛り上がらず
  • EE全体的にも盛り上がらず
  • EEの扱いが軽い印象
  • MEにスポットライト

Java EEセッションのピックアップ

Java Caching

  • 12年かけてJCacheのスペックが纏まりそう
  • 今年の12月にスペック確定予定
  • javax.cacheパッケージのAPI
  • アノテーションはEE8とSpring4で実装予定
  • 実装:Ehcache、Oracle Coherence

JTA(Java Transaction Processing)

  • JTAが1.1から1.2に10年ぶりのバージョンアップ
  • CMT(コンテナによるトランザクション管理)がEJBの専売特許ではなくなる
  • CDI管理のBeanをCMT可能
  • 要はSpringの@Transactional

WebSocket

  • プログラマブルAPIとアノテーションAPIの両方あり
  • 同期処理APIと非同期処理APIの両方あり

Jersey 2 MVC

  • JerseyはJAX-RS規格の実装
  • JAX-RS自体はMVCではない
  • EEのMVCはJSFなので、JAX-RSがそこは踏み込めない
  • Jerseyは独自拡張でMVCを提供
  • Jersey MVCはSpring MVCと同じアーキテクチャ
  • ビュー処理のサポートテンプレートエンジン:JSP、Freemarker、Mustache

Spring

  • Spring Source社からPivotal社へ
  • ソースコードがGitHubへ
  • Spring4.0は、Java8およびJavaEE8対応
  • SpringのJdbcTemplateなどはJava8のLambdaと相性が良い
  • WebSocketやJava BatchでJavaEEと協力関係
  • Spring DataでNoSQLやSolrに対応
  • Spring for Hadoop
  • Spring XD(ストリームデータ処理)
  • WebSocket上にSTOMP(Simple(or Streaming) Text-Oriented Messaging Protocol)