万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

  • ・資産運用おすすめ
    10万円は1000円くらい利益
    資産運用ブログ アセマネ
    • ・寄付お願いします
      YENTEN:YYzNPzdsZWqr5THWAdMrKDj7GT8ietDc2W
      BitZenny:ZfpUbVya8MWQkjjGJMjA7P9pPkqaLnwPWH
      c0ban:8KG95GXdEquNpPW8xJAJf7nn5kbimQ5wj1
      Skycoin:KMqcn7x8REwwzMHPi9fV9fbNwdofYAWKRo

    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バンドルを利用可能

    ・Spring DM(OSGi)とJavaEEの連携も可能

    Apache Felix コンソール

    ・Grizzly
    ネットワークのソケットをハンドリングする実装の名前
    GlassFishのHTTPをハンドリングする部分のサーバプログラムとして実装されたが、他の任意のプロトコルに対応出来るのではないのか、とマルチプロトコルに対応したサーバ
    JavaのNIOもNon Blocking IOで大量のIOを少数のスレットでさばくことができる。
    リクエストキューが空になり、分属できる。
    少量はBlockingの方が速いが、大量のリクエストはNonBlockingの方が速い。


    デスクトップ上でのEJBの機能を流用できる。
    EJB3.1での新機能。
    WebSocket対応
    WebLogicとの互換性を提供


    アプリケーションバージョニング
    同一アプリケーションの複数配備が可能
    Applications

    自己増殖クラスタ機能
    ドメイン管理サーバが稼働するOSと同一環境

    Tomcatにしても一台ずつやってたと思うが、SSHさえあれば
    自己増殖クラスタ

    「質問」
    GlassFishWeblogicとの住み分けは?
    GlassFishJavaEEのRIとして継続してやっていく。
    GlassFishからWeblogicへ入ることもある。
    フュージョンミドルウェアWeblogicしかサポートしない。
    ミッションクリティカル系はWeblogic

    JRubyGlassFishではどうなるか?
    バージョン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, ...)

    Ruby言語処理系をJavaに埋め込む

    開発
    プロトタイピング
    運用管理
    テスト
    ビルドシステム

    ワーグラー? warを作る物。
    GoogleAppEngine

    インタプリタモードもある。バイトコードに変換した後ではないのでAndroidでも動く。
    Scalaも動くかも?

    Tools, Libraries and Application

    Redcar:JRubyで描いたエディタ(最初は遅いが動くと普通に動く)
    Trinidad:Tomcat for RubyTomcatかどうかは見えない
    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が動作(ただしまだ初版)
    ※様子見で

    Windows
    Ruby実装としての安定度はJVMのおかげ

      • -

    $ 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経由で利用

    Java/Ruby Integration

    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変換によるメタプログラミング 木構造でくっつけたり離したり

    Scala
    関数型
    Traitsによるメタプログラミング

    JRuby
    20000の

    Clojure
    マクロによるメタプログラミング
    STM,並行処理関数機能
    JRubyからでも使える


    PReZIのプレゼン

    mfSTixMn