なんじゃくにっき

プログラミングの話題中心。

Mirah - JVM上で動作するRubyライクな文法の静的型付け言語 -

 Mirahというプログラミング言語がある。
JRubyの作者、Charles Nutterさんが作った、JVM上で動作する言語だ。
JVM上で動く言語も、Java, Groovy, JavaScript(Rhino), Python(Jython), Ruby(Jruby), Clojure, Scala, Pnuts, Sleepと色々種類が増えたもんだ。
 
公式サイト
http://www.mirah.org/
 
Charles NutterさんのBlog
http://blog.headius.com/2009/08/introducing-surinx.html
 
 資料を探すと、John WoodellさんというGoogleに勤めている人が沢山スライドを作っていた。
どうも先日のApp Engine ja night #10でも発表したらしい(来日したのかオンラインだったのかは知らないが)。
http://www.slideshare.net/johnwoodell
 
 
【概要】
 Mirahの特徴としては以下の点が挙げられる
JVM上で動く
Javaのクラスファイルを生成するので動作は軽快
・ランタイムは必要ない(これはScalaとかとは違うところ)
・文法はRubyライク
・型を持つ
型推論を持つ
Javaのライブラリを使える
Rubyとは違い、実行時にクラスそのものを変更できない
Rubyのライブラリを使えない
  
 
 型を採用したことでJRubyに比べてリフレクションが減って動作が軽いはず
JRubyもできるだけリフレクションを使わなくて済むところは使わずにしてある、という話だけど)。
Javaのライブラリを使えるということなので、文法はRuby似でも、
他のFW/ライブラリとの連携とかのあたりの使い方はScalaとかみたいな感じになるのかな。
 
 Rubyのライブラリを使えないので当然Railsなんかも使えない。
そこでどうするかっていうと、Dubiousっていうフレームワークがある。
これはJohn Woodellさんが作ったものでApp Engine上で動作する(普通のサーブレットコンテナでも動くの?)
名称はMirahの前身であるDubyから取ってきてあるらしい。でもDubiousという単語は『いかがわしい』って意味…
このフレームワークではRailsライクに記述できて、JRuby on Rails on GAEよりずっとSpin-upが速い。
作者さんのスライドでは1秒以内っていってたからこれはApp Engineのフレームワークとしてはかなり速い部類。
但しクラス数増えたときにどうなるかは言及してない模様。
 
 
【使ってみる】
使い方はこちらを参考
http://www.mirah.org/wiki/BuildingMirah
 
JRubyが必要だったりしてちょっとめんどくさいかも・・