関西Javaエンジニアの会スペシャル!
JavaOne 2012に参加してきた!


関西Javaエンジニアの会がとても面白そうだったので、参加してきました!!
スピーカーの方も豪華ですごかった。そして、じゃんけんに勝ってJavaOneグッズを貰っちゃった。。
JavaOne タンブラーをGet

関西Javaエンジニアの会スペシャル! JavaOne 2012
開催日:2012年12月1日

内容は
JavaOneサンフランシスコの報告やJava8のlambdaなど


JavaOne 2012 サンフランシスコの報告

寺田さん @yoshioterada

JavaOne 2012の紹介されていたもので自分の中で気になったものをメモ

-Nashorn
JVM上で動くJavaScript エンジン
Rhinoに後継(パフォーマンスが良くなる)

-JavaFX Scene Builder
JavaFx用のGUIツール

-NetBeans 7.3 Beta
HTML5, JavaScript, CSS の開発環境を提供
Chromeのエクステンションを提供。(ホットリロードに対応。)
JavaFXを利用するのにも今のところはNetBeans

各プロジェクトの状況

Java SE 8
Lambda式の追加
JavaScriptエンジン統合
JavaFX

Java SE 9
Jigsaw(モジュール化)対応

Java EE 7
HTML5シンプル化

Java EE 8
クラウド化、モジュール化

単純にJavaOneに参加してみたいという思いが強くなったーーー
来年は東京開催のやつには参加しよう!!


Lambdaについて

さくらばさん @skrb
Java in the Box や IT Pro Java 技術最前線 の方。

lambdaを表すと
・Background
・Lambda Syntax
・Iteration API

【lambdaの構文】
(引数, 引数) -> {処理}

こんな感じのAdderインターフェースがある
interface Adder { int add (int x, int y); }

それを lambda で実装する場合、以下のように出来る。
Adder adder1 = (int x, int y) -> { return x + y; };

型推論があるから型を省略、returnも省略出来る
Adder adder2 = (x, y) -> x + y;

※引数なしの場合は () -> 1 + 2;
lambda の Iterator API(Stream API)

【lambdaの前に事前知識としてイテレータとは….以下の2つがある】
・拡張for文(外部イテレータ)
・Iteratorクラスのforeachメソッド(内部イテレータ

【Stream API(終了の制限のないコレクション) 以下のようなメソッドがある】
・filter
・sorted
・map
・reduce

【使用方法】
サンプルとして以下を考える。
「色」と「重さ」のフィールドを持ったShapeクラスのListからカラーが青の重さの合計を計算する。

@irofさんのサンプル https://gist.github.com/4180737

List shapes = new ArrayList();
shapes.add(new Shape("blue", 10));
shapes.add(new Shape("red", 30));
shapes.add(new Shape("blue", 50));
shapes.stream()
      .filter(s -> s.getColor()==Color.BLUE)
      .map(s -> s.getWeight())
      .reduce(0, (l, r) -> l + r);

・filter,map,reduceと 3回ループするように見えるけど filter や mapではループしない。reduceのところで一度ループする
・reduce メソッドは コレクションクラスの各要素を1つずつ処理していく
・stream()のところはparallel()に変更もできる(並列処理が出来る)

【「Default Method」について(インターフェースに対しての追加機能)】
これは使えそう!!!!インターフェースを実装しなくても、デフォルトを返すことができる。でも、意識して使わないとカオスにはなりそうだなー。インターフェース未実装のコンパイルエラーがでないようになりそうだし。

インターフェースにabstractメソッドだけではなくてdefault修飾子を付けられる。
interface foo {
    void sayHello();
    default void sayGoodBye() {
        System.out.println("Default Good Bye");
    }
}

【おまけ】
lambdaで実装した処理をPerlだったらどんな感じかなということで実装してみた。
パッと見、lambdaのメソッドチェーンで書かれているものが直感的で分かりやすいかなーー?!
そして、初めてGistも使ってみた。Gistに書くのいいねー!すぐに共有できるしシンタックスも充実してるし。

なんか、話を聞いているうちに、関数型言語への思いが増大していったー!!


javaEE7 のHTML5対応

寺田さん @yoshioterada
まず、、、最初に言われたのが、
Struts と Tomcat はやめようキャンペーン中」とのことでした!!!笑

http://yoshio3.com/2012/11/12/websocket-twitter-timeline-sample/

-JSF2.2 (Webコンポーネントライブラリ)
XHTML形式で扱える。デザイナー・エンジニア双方が同時に扱える。
プログラマ側が扱うフィールドなどの情報もタグ内に埋め込むことできる。
開発工程でデザイナーが更新したデザインをいちいちWebアプリサーバのコンテナに持っていかなくても扱うことが出来る。
ブラウザ上でタグを変換することが出来る

-サードベンダのコンポーネント
ICEfaces
PRIMEFaces

-WebSocket
TCPベース
双方向、全二重通信

通信の基本的な流れ
1,コネクション確立
2.双方向にメッセージのやりとり
3.コネクション切断

以下のようなアノテーションが提供されている
@websocketEndpoint(“[URL]”)
@webSocketMessage

-Project Avatar
HTML5 アプリ構築フレームワーク
モジュール化対応、JavaScriptフレームワーク
軽量なサーバ・アーキテクチャ(Thin-Server アーキテクチャ)
JavaScript と JavaEEを結びつけることが出来るのが Project Avator

【JSFの感想】
JSFは個人的にもとてもいいViewのライブラリだと思う。自分自身も使ってみた経験から、JavaScriptをガリガリ書かなくてもリッチなコンテンツも作れるし、HTMLのタグ内に属性として追加することもできるから、テンプレートとサーバの処理が分割できるってところはいいよねー!
よくある、デプロイしないとテンプレートのデザインが見れないっていうのが解決できそう。


JavaFXについて

さくらばさん @skrb

・Brand New GUI Library for Java(次の時代のGUIJava)
・Swingの後継 + Java 2D + α
・Java SE 8 includes javaFX
・基本的にはNetBeansの方にも

【Swing とは何が違うの?】
FXML(MVCのViewの部分をFXMLで書く)
Scene Builder 1.0 (Scene Builder)でViewを作る(Linux版も出た)

Swingだったら -> JCOmponent

JavaFXだったら -> Node

  • ControlShape
  • Browser
  • Chart
  • Media
    1. Chart
    2. CSS
    3. Animation / Effect

groovy G*のレポートについて

@kiyOtakaさん

JavaOneの中でG*関連の報告をしてくださいました。

javaOne Report for G*

【Groovy 2.0新機能】
静的Groovy
@TypeChecked アノテーション
@CompileStatic アノテーション
@Log アノテーション

G*のアドベントカレンダーもあるとのことだったので、見てみようと思う!!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です