Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

JavaとRubyのすてきな関係

7,603 views

Published on

JRuby活用パターンの紹介

Published in: Entertainment & Humor
  • Be the first to comment

JavaとRubyのすてきな関係

  1. 1. [質問]お仕事でJavaを使っている方 (予想:10人位?) (発表後追記:2人しかいませんでした...)
  2. 2. 本日のお客様
  3. 3. 「もっと柔軟に システム構築したい!」 というJavist
  4. 4. 「俺はRubyで 仕事がしたいんだ!」 というJavist
  5. 5. 「 隣のRubyistと 仲良くなりたい!」 というJavist
  6. 6. そんなあなたにおすすめなのが こちら
  7. 7. JRuby
  8. 8. という事でJRubyの活用パターンを ご紹介します
  9. 9. JavaとRubyのすてきな関係 @garden_tree
  10. 10. 本日ご紹介する活用パターン
  11. 11. 本日ご紹介する活用パターン初級編: Ruby On Java
  12. 12. 本日ご紹介する活用パターン初級編: Ruby On Java中級編: Java Meets Ruby
  13. 13. 本日ご紹介する活用パターン初級編: Ruby On Java中級編: Java Meets Ruby上級編: Its A Java World
  14. 14. 初級編Ruby On Java
  15. 15. 構成イメージ
  16. 16. 構成イメージJava
  17. 17. 構成イメージJavaJava
  18. 18. 構成イメージJavaJava Java
  19. 19. 構成イメージ RubyJavaJava Java
  20. 20. イメージ図 Ruby Java
  21. 21.
  22. 22. 普通のJava java demo.JavaOnly で起動https://github.com/gardentree/demo20120222
  23. 23. 普通のJava java demo.JavaOnly で起動 1.SQLを作成https://github.com/gardentree/demo20120222
  24. 24. 普通のJava java demo.JavaOnly で起動 1.SQLを作成 2.データベースにアクセスhttps://github.com/gardentree/demo20120222
  25. 25. 普通のJava java demo.JavaOnly で起動 1.SQLを作成 2.データベースにアクセス 3.検索結果を出力https://github.com/gardentree/demo20120222
  26. 26. 普通のJava java demo.JavaOnly で起動 1.SQLを作成 書きづらい 2.データベースにアクセス 3.検索結果を出力https://github.com/gardentree/demo20120222
  27. 27. 普通のJava java demo.JavaOnly で起動 1.SQLを作成 書きづらい 2.データベースにアクセス 3.検索結果を出力 面倒https://github.com/gardentree/demo20120222
  28. 28. Ruby On Javajruby beginner.rb で起動
  29. 29. Ruby On Javajruby beginner.rb で起動 1.ヒアドキュメントでSQLを作成
  30. 30. Ruby On Java jruby beginner.rb で起動 1.ヒアドキュメントでSQLを作成2. Javaのメソッドでデータベースにアクセス
  31. 31. Ruby On Java jruby beginner.rb で起動 1.ヒアドキュメントでSQLを作成2. Javaのメソッドでデータベースにアクセス 3.簡潔に検索結果を出力
  32. 32. Ruby On Java jruby beginner.rb で起動 でも、おまじないが必要 1.ヒアドキュメントでSQLを作成2. Javaのメソッドでデータベースにアクセス 3.簡潔に検索結果を出力
  33. 33. [利点]•Rubyでプログラミング出来る•既存のJavaプログラムを使える [欠点]•Rubyに見せかけてJava•おまじないが必要
  34. 34. [利点] •Rubyでプログラミング出来る •既存のJavaプログラムを使える [欠点] •Rubyに見せかけてJava •おまじないが必要=>これじゃRubyistと仲良くなれない!
  35. 35. では欠点を克服するには?
  36. 36. 中級編Java Meets Ruby
  37. 37. 構成イメージ提供:NASA/JPL-Caltech
  38. 38. 構成イメージ Java提供:NASA/JPL-Caltech
  39. 39. 構成イメージ Ruby Java提供:NASA/JPL-Caltech
  40. 40. イメージ図 RubyJava
  41. 41. イメージ図 RubyJava
  42. 42. イメージ図 RubyJRubyで作る Java
  43. 43. イメージ図 RubyJRubyで作る 使う Java
  44. 44. つまり Java + RubyDSL(domain-specific language)
  45. 45.
  46. 46. Java java demo.Intermediateで起動https://github.com/gardentree/demo20120222
  47. 47. Java java demo.Intermediateで起動 Rubyメソッドを定義https://github.com/gardentree/demo20120222
  48. 48. Java java demo.Intermediateで起動 Rubyメソッドを定義 RubyDSLを評価する =>RubyDSLへhttps://github.com/gardentree/demo20120222
  49. 49. RubyDSL (続き)
  50. 50. RubyDSL (続き) 初級編と同じ
  51. 51. RubyDSL (続き) 初級編と同じSQLとブロックを指定
  52. 52. RubyDSL (続き) 初級編と同じJavaで提供されたメソッドを使用する =>Javaへ SQLとブロックを指定
  53. 53. Java(続き)
  54. 54. Java (続き)RubyDSLからSQLとブロックが渡される
  55. 55. Java (続き) RubyDSLからSQLとブロックが渡されるSQLを使用して、データベースにアクセス
  56. 56. Java (続き) RubyDSLからSQLとブロックが渡されるSQLを使用して、データベースにアクセス 1レコードずつ、ブロックに渡す =>RubyDSLへ
  57. 57. RubyDSL (続き)
  58. 58. RubyDSL (続き) レコードを出力
  59. 59. RubyDSL (続き)+おまじないは不要 レコードを出力
  60. 60. [利点]RubyDSLはRubyそのもの [欠点]Javaの実装はちょっと複雑
  61. 61. [利点] RubyDSLはRubyそのもの [欠点] Javaの実装はちょっと複雑=>これならRubyistと仲良くなれる!
  62. 62. さらに世界を広げてみましょう!
  63. 63. 上級編Its A Java World
  64. 64. Javaで書かれたRuby実装 JRubyについて お話ししてきました
  65. 65. これまでの構成
  66. 66. イメージ図Ruby Java
  67. 67. イメージ図Ruby JRuby Java
  68. 68. イメージ図Ruby JRuby Java
  69. 69. Javaで書かれた実装は 他にもあるよ
  70. 70. Javaで実装されたJavaScript Rhino
  71. 71. イメージ図Ruby JRuby Java
  72. 72. イメージ図 JavaRuby Script JRuby Java
  73. 73. イメージ図 JavaRuby Script JRuby Rhino Java
  74. 74. イメージ図 JavaRuby Script JRuby Rhino Java
  75. 75. と、いうことは・・・?
  76. 76. イメージ図 JavaRuby Script JRuby Rhino Java
  77. 77. イメージ図 つながる! JavaRuby Script
  78. 78. Javaを介して別々の言語をつなげよう!
  79. 79. 構成イメージ
  80. 80. 構成イメージ Ruby
  81. 81. 構成イメージ Ruby JavaScript
  82. 82. 構成イメージ Ruby JavaScript Python
  83. 83. 構成イメージ Ruby JavaScript Python Scala
  84. 84. 構成イメージ Ruby JavaScript Python Scala Groovy
  85. 85. 構成イメージ Ruby JavaScript Python ScalaClojure Groovy
  86. 86. 構成イメージ Ruby JavaScript Tcl Python ScalaClojure Groovy
  87. 87. 構成イメージ Ruby JavaScriptScheme Tcl Python ScalaClojure Groovy
  88. 88. 構成イメージ Ruby JavaScriptScheme Tcl Python Java ScalaClojure Groovy
  89. 89. 構成イメージ Ruby JavaScriptScheme Tcl Python Java ScalaClojure Groovy みんな友達!
  90. 90.
  91. 91. RubyでJavaScriptの Testを書く
  92. 92. 用意するもの•RSpec•Underscore.js•Jambalaya(自作)
  93. 93. 用意するもの•RSpec•Underscore.js•Jambalaya(自作) RubyとJavaScriptの相互変換ライブラリ
  94. 94. 仕組み Ruby ↓↑ Java ↓↑JavaScript
  95. 95. Jambalayaを使うと
  96. 96. Jambalayaを使うと JavaScriptが_.filter([1,2,3,4,5,6],function(n){ return n % 2 == 0;});
  97. 97. Jambalayaを使うと JavaScriptが_.filter([1,2,3,4,5,6],function(n){ return n % 2 == 0;}); Rubyで動かせる_.filter([1,2,3,4,5,6]){¦n,i,c¦ n % 2 == 0}
  98. 98. だから
  99. 99. だからUnderscore.jsの
  100. 100. だからUnderscore.jsの Testが
  101. 101. だからUnderscore.jsの TestがRSpecで書ける!
  102. 102. 実装についてもご紹介したいところですが・・・
  103. 103. 実装についてもご紹介したいところですが・・・ 詳しくはWebでね★ https://github.com/gardentree/jambalaya
  104. 104. まとめ
  105. 105. これとか RubyJavaJava Java
  106. 106. これとか Ruby Java提供:NASA/JPL-Caltech
  107. 107. これで Ruby JavaScriptScheme Tcl Python Java ScalaClojure Groovy みんな友達!
  108. 108. 隣のRubyistと仲良くなれるよ!
  109. 109. そう、JRubyならね。
  110. 110. JavaとRubyのすてきな関係 @garden_tree

×