Javaの勉強会
□GlassFishx v3.x・GlassFishxとは
・OSS コミュニティ名
・アプリケーションサーバ名
・CDDL/GPLv2デュアルライセンス
2種類ある
・オープンソース製品
・Oracle Fusion Middleware製品
2005年 プロジェクト開始
2006年 Ver1
2007年 Ver2
2009年 Ver3
月間ダウンロード数の推移
世界で最も成長率の成長率の高いアプリケーションサーバ
□JavaEE6
・拡張性
Java EEのフレームワークも容易に利用可能
String,Struts,Wicket
web.xmlに追加しないといけなかったが、解消されている。
複数のフレームが混在して書かれていた。
どこをどう直せばいいかわからない。
各フレームワークごとにフレームワークを分けたり。
web fragment設定ファイルに集約
・プロファイル
FullSetの中にサブセットを提供
デフォルトで使わないと強いられていた。
使わないものはロードしなくてもいい。
Web Profile XProfile Y Profile
Full Java EE 6
・Webプロファイル
含まれる技術
Servlet
JPA
Servlet
JPA
JSP/EL
JTA
JSTL
DI/CDI
JSF
Managed Beans
etc...
・使用の削減(Pruning)
使用を付け足していったが、
古くなって使わなかったAPIの整理
・JAX-RPC(->JAX-WS)
・EJB Entity Beans(->JPA)
・JAXR
→速く新しいものへ。
NetBeansがすごい。
→Javaでつくるだけで、勝手にテーブルが作られる
デプロイするときに、セッション情報を保持する
・EJB3.1組み込みコンテナ
・JSR-314JavaServer Faces 2.0
JSPで書いたものよりも速い
4倍か5倍くらい
XHTMLで記載するようになっている
テンプレート機能の提供
再利用性の向上
ボタンとかテキストフィールド
Ajax対応・・既存のページが簡単にAjax対応もできる。
JavaScriptの詳細な知識がなくてもAjax対応できる。
Restfulチックなことも出来る。
・faces-config.xmlのオプション化
・Servletコンテのバージョンに非依存
・Servlet3.0コンテナの他2.5上でも対応
EJB-3.1
特徴
earファイル パッケージ化の面倒なことが解消。
ローカルビジネスインタフェースのオプション化
標準化されたGlobal JNDI名 個々のアプリケーションサーバごとに違っていたが、統一された。移植性など。
JAX-RS 1.1
GET,POST,PUT
DI 1.0 / CDI 1.0
・オープンソース版と製品版の違い
中身が違う。
サポートが必要な場合は製品版を入れないといけない。
・超高速起動(Web Profile 阪利用時)
Web管理コンソール
Web ベースの管理コンソール
Restful 管理チャネル
GlassFish v3.0から追加された新しい管理機能
・再配備時におけるセッションの持続
・OSGi モジュールサブシステムの概要
・モジュール層
・ライフサイクル層
・サービス層
もうひとつのモジュール
Hundred-Kilobite Kernel
OSGiのモジュールを提供して組み込める。
OSGiは動的なモジュールの追加・削除が可能
アプリケーションサーバを起動したまま
任意のOSGiバンドルを利用可能
Apache Felix コンソール
・Grizzly
ネットワークのソケットをハンドリングする実装の名前
GlassFishのHTTPをハンドリングする部分のサーバプログラムとして実装されたが、他の任意のプロトコルに対応出来るのではないのか、とマルチプロトコルに対応したサーバ
JavaのNIOもNon Blocking IOで大量のIOを少数のスレットでさばくことができる。
リクエストキューが空になり、分属できる。
少量はBlockingの方が速いが、大量のリクエストはNonBlockingの方が速い。
デスクトップ上でのEJBの機能を流用できる。
EJB3.1での新機能。
WebSocket対応
WebLogicとの互換性を提供
アプリケーションバージョニング
同一アプリケーションの複数配備が可能
Applications
自己増殖クラスタ機能
・ドメイン管理サーバが稼働するOSと同一環境
Tomcatにしても一台ずつやってたと思うが、SSHさえあれば
自己増殖クラスタ
「質問」
GlassFishとWeblogicとの住み分けは?
→GlassFishはJavaEEのRIとして継続してやっていく。
GlassFishからWeblogicへ入ることもある。
フュージョンミドルウェアはWeblogicしかサポートしない。
ミッションクリティカル系はWeblogic。
JRubyはGlassFishではどうなるか?
バージョン3からJRubyサポートはなくなった。
2のときはRubyのコンテナが入っていた。
元同僚がSunが卒業したのが関係している。
Dynamicインボーク バイトコードを叩けるようになる。
JRubyは動くようになる。しかも速くなる(チャールズも携わっている。)
□JRuby
What;s JRuby
Ruby最新版1.9.2と同等の動作速度
Javaで書くよりも簡単
高いスケーラビリティ
言語としての魅力
Java連携の魅力
JVM言語実装の魅力
動的(静的に型付けされていない)
人にやさしい
メタプログラミング機能(スクリプト言語で一番充実している)
高い生産性
上原潤二さんのGroovyの資料
→そのままJavaも動くが短くできる
Java Integration
RubyからJavaの機能を利用する(JDBC, XML,PDF、ehcache,Graph DB, Lucene, ...)
開発
プロトタイピング
運用管理
テスト
ビルドシステム
ワーグラー? warを作る物。
GoogleAppEngine
インタプリタモードもある。バイトコードに変換した後ではないのでAndroidでも動く。
Scalaも動くかも?
Tools, Libraries and Application
Redcar:JRubyで描いたエディタ(最初は遅いが動くと普通に動く)
Trinidad:Tomcat for Ruby→Tomcatかどうかは見えない
TorqueBox:Ruby app platform on JBoss AS
LikedIn Web/REST API front-end
Sun/Oracle
Oracle Mix
CTC ブラウザ用の管理用コントローラ 企業向け
ソーシャル系
北米、欧州、インド
JRuby 1.6
Ruby 1.9.2(1.6)
最新版のRubyが動作(ただしまだ初版)
※様子見で
-
- -
$ gem install rails
rails new coolapp -m http:..jruby.org
Using rake (0.8.7 )
〜〜
-
- -
Warblerを入れると、warbleコマンドがつかえる
Rails 3 Demo
・クラウド
EY AppCloud
AppEngine
AWS EB
・Built-in Profilers
Jrubyでのプロファイラ
・Ruby Flat Profiler (1.6)
呼び出しのグラフをサポートする
Javaベースで動いているので、CPUのモニタリングすればいい。
C-extension
Native C Extension (1.6)
CRuby向け拡張ライブラリをJNI経由で利用
Ruby評価エンジンをJavaから使う
Rubyで実装したJavaクラスを呼び出す。
flying操作
JtestR
Javaのコードをテストできる。
JCEのセキュリティ周り
・How JRuby works
Ruby Object == Java Object
Java's GC
Scanner
JRuby JIT Compilerでバイトコード生成
Java Bytecode→JavaVMでJIT
AOT(Ahead Of Time)
jrubycコマンドでJruby AOT Compiler
最初からバイトコードを生成するとメモリを食うので遅いのでAOTで。
・Optimize
CallSiteのショートカット
primitive演算の最適化→ボックス、アンボックスを自動的に
自己再帰のショートカット→自分で読んでしまうのは呼んでしまおう
IRのデモ
Scalability
JRubyはGITなしでNative thれあd動作
1 JavaVMプロセス中に複数のJRuby評価器
1 JavaVMプロセスでより多くのコアを有効活用
・JVM言語
AOPによるメタプロ民具
60000のMavenパッケージ
JDK7,JDK8での進化に期待
・Groovy
AST変換によるメタプログラミング 木構造でくっつけたり離したり
・JRuby
20000の
・Clojure
マクロによるメタプログラミング
STM,並行処理関数機能
JRubyからでも使える
PReZIのプレゼン
mfSTixMn