目次
JJUG CCC 2012 Springに参加してきました。 昨年のFallに続き、2回目です。 概要や、タイムテーブルはこちらを御覧ください。 今回は、午後一から参加しました。 色々と迷いましたが、つぎのを聞いて来ました。
- HotSpot vs JRockit ~ HotRockit到来の前に予習しよう!
- Play! Framework - モダンで高速なWeb開発
- Grails/Groovyの開発活用術
- Scala 最新状況報告
- From Swing to JavaFX SwingからJavaFXへのマイグレーションガイド
JRockitは使ったことがなく(たぶん)、新鮮でした。いろいろなコマンドが用意されているなぁと。 あと、jvisualvmの使い方も知らないこともあったのでいい話が聞けました。 プレゼンに慣れているようで、プレゼン中に、コマンドラインの拡大+コマンドのオプションに赤い下線を入れるなど、どうやってやっているのか、プレゼンの内容よりも気になってしまったのが本音です
Playは今回の目玉の一つでした。まだ、手元でPlayを触り始めたばかりだったので、概観がつかめたのが良かったです。 あとでスライドを見なおさないと。 頭がどうしてもServlet、JSPのため、未だにPlayに切り替えができてないので、もっと触ってみないとなぁと。 ちなみに、紆余曲折してまして、Play 1.2.4→Play 2.0(Javaアプリ)→Play 2.0(Scalaアプリ)と心変わりしまくりで、まだ完全に作ってないのに、ふらふらしてます。。。
GrailsはGrailsを現場にどのように投入していくのがいいかという、技術よりは、政治的な話でしたが面白かったです。 実際に、あまり有名でないプロダクトを現場に導入するのに、Javaだからと無理やり説得してみたりw、開発コストがこれくらい下がりますという話をしてみたりと、いろいろやられているようでした。 あと、PlayのあとにGrailsということもあり、すこしPlayを意識した話もされていました。
ScalaはScalaDaysの話+Scalaの最近の動向ということで、ある程度Scalaを知っている人がターゲットのようでした。 少し触っただけなので、何となく分かる部分もありましたが、最後の方はついていけてないです、すみません。。。 一番感じたのは、発表者の水島さんのScalaに対する愛情でしょうか。
最後は桜庭さんのJavaFXのお話です。 一応、昔、JFreeChart+Swingでちょっとしたものを作ったことがあるので面白かったです。 プレゼン自体もJavaFXで作成されていたり、オープニングがStarWars風だったりと凝ったプレゼンでした。 JavaFXとしては、JavaOneでも聞いたのですが、グラフやHTMLがリッチに書けるようになったことがびっくりです。
実際のSwingアプリからJavaFXへの移行に関して、注意する点などがわかりやすく聞けました。 FXMLは確かに便利ですよねぇ。レイアウトをJavaで組むのがすごくめんどくさかったもんなぁ。
さて、簡単ですが、感想でした。 今回一番残念だったのは、長丁場の割に電源の確保が難しかったことでしょうか。 ツイートしたり、メモ取ったりしたかったのですが、電源が乏しいので、Wi-fiオフにしてメモ取るのが限度でした。。。
場所:オリンピック記念青少年総合センター
日時:2012/05/28 10:00 - 19:00
◎13:10 - 14:00 C-1 HotSpot vs JRockit ~ HotRockit到来の前に予習しよう! 谷本 心 @cero_t
◯HotSpot from Sun
◯JRockit from BEA
今は、どちらもOracle
◯違いは?
1.歴史
2.プラットフォーム
JRockitはMacではNG。Solarisは一部。
2.1Oracleさん曰く
Solaris/Mac → HotSpot
Windows/Linuxのサーバ → JRockit
Windows/Linuxのクライアント → HotSpot
2.2谷本さんは?
WebLogic → JRockit
1.4、5の時の開発環境はJRockit
当時はJRockitの解析ツールがカッコ良かった
3.解析ツール
3.1コマンドラインツール
プロセス
HotSpot : jps
JRockit : jrcmd
スレッドダンプ
HotSpot :jstack
JRockit : jjrcmd <pid> print_threads
ヒープ解析
HotSpot:jmap -histo <pid>
JRocket:jrcmd <pid> heap_diagnostics
HotSpot:
JRockit:jrcmd <pid>
他にもJRockitは色いろある。
print_utf8poolとか(内部の文字列が出てくる)
3.2GUIツール
HotSpot:jvisualvm NetBeansベース
JRockit:Mission Control Eclipseベース
メモリリークの解消をツールを使ってみてみましょうデモ。
・hprofファイルを吐き出して、jvisualvmで読みこむのが楽な方法
・jrmcはヒープダンプファイルを読み込む機能がない。
memleakというツールがある。アプリを起動してから、プロセスを右クリックして選択可能。
タイプグラフや割当てトレースみたいなものが使えるよ。
フライトレコーダーというのもあるよ。
4.HotRockitの紹介
まだいつ出るのかなぁという状態だけど、HotSpotにJRockitのツールも使えるようになるVMが出る模様。(2013?)
※デモ中に画面拡大した時に、赤線でラインを引いているのがすごく気になった。(便利なツールなのかな?そこだけ?)
◎14:15 - 15:05 C-2 Play! Framework - モダンで高速なWeb開発 池田尚史 @ikeike443
◯自己紹介
Play!Frameworkコミッター
日本Playframeworkユーザ会
◯アンケート
メイン言語は?Java多数
触ったことある?半分くらい?
Play1?Play2?半々くらい
プロダクションで使ってる人?3人
◯Playframeworkって?
JEEではないよ。
Webだよ。
ServletとかXML使ってないよ。
◯JEEは難しいよね。RailsとかDjangoから流れてくると。
◯Webフレームワーク
なので、Webアプリが作れればいいよね。
開発すべきものに注力して、抽象化とかを頑張らないようにと。
◯ライブコーディング!
Play2.0のScalaアプリみたい。
プロジェクト作成~編集して起動まで。
エラーを起こして、エラーがどのように表示されるか。
エラーのリンクをクリックして、エディタを起動するということも可能みたい。
TODOとかで、まだ終わってないのも記述可能。
パラメータとControllerの関数の引数が勝手にひもづけられますよと。
◯歴史
Servletとかもあった。
1.2からNetty、Websocket、Scalaサポート
2.0.1:Scalaで書き直し。Netty+Akkaで非同期
◯1と2のちがいは?
・Play1
Javaで書かれたJavaのフレームワーク。Scalaはプラグインサポート
・Play2
Scalaで書かれたScala/Javaのフレームワーク
◯Playの特徴
ステートレスとかノンブロッキングとかリアクティブとか
・高生産性
XMLがないし、unzipするとすぐ使えるよ。
ホットスワップできるよ。
CoffeeScript、LESSサポートも。assetsに入れとくとコンパイルしてくれて静的コンテンツにしてくれる。(Railsにも似たようなのあったっけか?)
・ステートレス
HttpSessionがない→必要ならMemcachedとかで管理してね。
「デプロイ→ニーズ・状況に応じて即時スケールアウトという時代じゃないか?」という主張
Playはステートレス養成ギブスであり、時代の要請にマッチ
・広範囲な型安全
コンパイルしてエラー検知
・ノンブロッキングI/O
非同期処理が手軽に書けるように考えられている。
→リアルタイムWebの時代
NettyやAkkaにより実現されてるのがいい
Akkaを使ったアプリを書くと、長い処理のActorを別サーバにするなども設定で変更が可能。
◯テスタビリティ
BDDフレームワーク(Specs2?)
Viewもテストできるぞと。
◯事例
Klout:ソーシャルスコアリング
イギリスのガーディアン:コンテンツAPIの実装がPlay2
MinecraftのWebサイト
◎15:20 - 16:10 C-3 Grails/Groovyの開発活用術 ~Java EE資産を活かして開発を加速する~(仮) 上原潤二 山本剛
◯充電中のためお休み
◎16:25 - 17:15 C-4 Scala 最新状況報告 ~或いはScala Days 2012リポート~ 水島宏太
◯自己紹介
言語を作るのが夢みたい。
◯Scala最新状況報告
ScalaDaysの雰囲気を伝えるよと。(どっちかというと、旅行記かも)
◯Scala?
・オブジェクト指向関数型言語
ハイブリッドじゃなくて、統合したもの
・強力な静的型付け
NullPointerExceptionなども起きにくい
・超強力なコレクションフレームワーク
・Javaと同等の実行速度
・コードが簡潔(1/4くらい)
◯Scala採用企業
Twitter、Amazon.com(どこに使ってるかは不明)、Foursquare、LinkedIn、VMWare、Klout、Tumblrなど
◯Scalaのバージョンは?
2.10が開発版。2.9.2がステーブル版。
◯開発体制
Typesafe+世界のContributor
Typesafeメンバの議決でいろいろ決定
githubでオープンに開発
◯ScalaDays2012の目玉
豪華ゲスト(私は、わからなかった)
Scala2.10の新機能紹介
今後のScala、多数の応用例
◯ScalaDays2012を見ての方向性
・All-in-oneパッケージの提供
Typesafe Stackの提供
重要なツール
sbt(Simple Build Tool)
gitter8(プロジェクトテンプレート生成ツール。githubを元に色々取ってくる?)
Akka
Play 2.0 Framework
・学習コストの削減
言語機能のモジュール化
高度な開発者が使う昨日はデフォルトOff
・バイナリ互換性問題への対処
・Minor Release間での互換性を維持
MIMAでジドウテキに非互換性を検出
・Major Release間では互換性は保証しない。
No more java.util.Date
ソース互換性は「概ね」保証される
deprecatedは次期メジャーバージョン時に削除される。
・Scala IDEへの注力
インクリメンタルにコンパイルしてくれるから、遅いのも気にならなくなるかも。
デバッガとか、できるよと。
・さらなるパフォーマンス改善
Value classes
AnyValを継承したクラスが作成可能
該クラスのオブジェクトがインライン化
Pimp my libraryによるヒープ使用料が0に!
◯2.10最新機能紹介
"1+2=#{1+2}"ができない
s"1+2=${1+2}"ができるように String = 1 + 2 = 3
f"1=${1}%03d"もできるようにSring = 1 = 001
自分でStringコンテキストにメソッド追加できるらしい(聞き取った日本語が合ってるか?)
とか。(かなり不安。。。まだまだわかってない。。。)
◎17:30 - 18:30 BOF-B-1 From Swing to JavaFX SwingからJavaFXへのマイグレーションガイド 櫻庭 祐一
◯JavaFX
次世代のJava GUI Library
Swing+Java2D+α
JavaSE8から標準(JavaFX3.0)
◯サンプル
クラス名がいろいろ変わってる。
◯はまりそうなところ
コンテナへの追加がちょっと違う
イベントリスナは1種類のみになった。(Genericsを使うようになったよと。)
◯Bind
値が変わるとModelが勝手に検知して変わるみたい。
双方向もあり。これだとEventを書かなくても良くなりつつ有るよと。
◯シナリオベースでマイグレーション考えましょう
1.JavaFX in Swing
JavaFXにSwingを埋め込むことはできないぞと。
SwingでできないことをJavaFXでやりますよと。
おー、グラフが動く。JavaDocのHTMLも綺麗に出てる。
使い方:JFXPanelを使う
シーングラフを記述可能
データのやり取りが大変。Threadが違うから。
パフォーマンスが落ちます。Java2Dで画像を書くので遅いですよと。
新規のものはJavaFXで書きましょうと。
2.Swing to JavaFX w/o FXML
SwingをJavaFXに置き換える。
使い方が違うものはTableViewなど、◯Viewとついてるもの。
ちょっと考えるのはLayout
Swing:コンテナ+レイアウトマネージャー
JavaFX:コンテナがレイアウトを含む
BorderPaneクラスとか。
問題はTableとか
Swing:TableModel
JavaFX:BeanをColumnにバインド
3.Swing to JavaFX w/ FXML
・FXML
GUIの構造をXMLで表す。
シーングラフを表現。
スキーマレス
クラス:要素
プロパティ:属性 or 要素
アノテーションバリバリです。これで、FXMLとJavaのバインディングができるよと。
ツール
Java :NetBeans
e(fx)clipseってのがあるかも。
FXML:Scene Builder
comments powered by Disqus
See Also by Hugo
- Heroku Meetup #8 TreasureData + Waza Report!! に参加しました。#herokujp(Jugemより移植)
- Java One Tokyo 2012 に参加しました。#JavaOneJp(Jugemより移植)
- JJUGナイトセミナーで話しました
- JVM Operation Casual Talksに参加しました #jvmcasual
- Python Developers Festa 2012.07に参加してしゃべってきました #pyfes(Jugemより移植)