JRuby
  Eine Einführung




         Julian Fischer
  fischer@enterprise-rails.de
http://www.enterprise-rails.de
JRuby Features


            Julian Fischer
     fischer@enterprise-rails.de
   http://www.enterprise-rails.de
Features




           @railshoster
Features


‣ Läuft zu 100% auf der JVM




                 @railshoster
Features


‣ Läuft zu 100% auf der JVM
‣ Sehr performanter Ruby Interpreter




                 @railshoster
Features


‣ Läuft zu 100% auf der JVM
‣ Sehr performanter Ruby Interpreter
‣ Nutzt Java Threads




                 @railshoster
Features


‣ Läuft zu 100% auf der JVM
‣ Sehr performanter Ruby Interpreter
‣ Nutzt Java Threads
‣ Integriert sich nahtlos in eine Java-
  Umgebung



                   @railshoster
Using Java in JRuby


              Julian Fischer
       fischer@enterprise-rails.de
     http://www.enterprise-rails.de
Using Java in JRuby
 Load Java Environment
Java in JRuby




                @railshoster
Java in JRuby


‣ Load Java




                @railshoster
Java in JRuby


‣ Load Java
 ‣ include Java




                  @railshoster
Java in JRuby


‣ Load Java
 ‣ include Java


‣ Jars einbinden




                   @railshoster
Java in JRuby


‣ Load Java
 ‣ include Java


‣ Jars einbinden
 ‣ require 'path/to/mycode.jar'




                      @railshoster
Using Java in JRuby
Java Klassennamen in JRuby
Java in JRuby




                @railshoster
Java in JRuby


‣ Voll qualifizierte Klassennamen




                  @railshoster
Java in JRuby


‣ Voll qualifizierte Klassennamen
 ‣ Java:
   org.foo.department.Widget




                      @railshoster
Java in JRuby


‣ Voll qualifizierte Klassennamen
 ‣ Java:
   org.foo.department.Widget



 ‣ Ruby:
   Java::OrgFooDepartment::Widget




                      @railshoster
Using Java in JRuby
Einen Namensraum importieren
Java in JRuby




                @railshoster
Java in JRuby


‣ Import




                @railshoster
Java in JRuby


‣ Import
 ‣ java_import java.lang.System
   version =
   System.getProperties["java.runtime.version"]




                      @railshoster
Java in JRuby


‣ Import
 ‣ java_import java.lang.System
   version =
   System.getProperties["java.runtime.version"]


 ‣ import java.lang.System
   version =
   System.getProperties["java.runtime.version"]




                      @railshoster
Java in JRuby


‣ Import
 ‣ java_import java.lang.System
   version =
   System.getProperties["java.runtime.version"]


 ‣ import java.lang.System
   version =
   System.getProperties["java.runtime.version"]


 ‣ Sys = java.lang.System
   version = Sys.getProperties["java.runtime.version"]




                      @railshoster
Using Java in JRuby
   Methodenaufrufe
Java in JRuby




                @railshoster
Java in JRuby


‣ Ruby‘s Namenskonvention für Methoden:
 method_name




                @railshoster
Java in JRuby


‣ Ruby‘s Namenskonvention für Methoden:
  method_name

‣ JRuby ermöglicht beides:




                 @railshoster
Java in JRuby


‣ Ruby‘s Namenskonvention für Methoden:
  method_name

‣ JRuby ermöglicht beides:
 ‣ java.lang.System.currentTimeMillis




                      @railshoster
Java in JRuby


‣ Ruby‘s Namenskonvention für Methoden:
  method_name

‣ JRuby ermöglicht beides:
 ‣ java.lang.System.currentTimeMillis

 ‣ java.lang.System.current_time_millis




                      @railshoster
Java in JRuby




                @railshoster
Java in JRuby


‣ In Ruby sind get/set-Methoden unüblich.




                 @railshoster
Java in JRuby


‣ In Ruby sind get/set-Methoden unüblich.
‣ Auch hier unterstütz JRuby beide
  Konventionen:




                  @railshoster
Java in JRuby


‣ In Ruby sind get/set-Methoden unüblich.
‣ Auch hier unterstütz JRuby beide
  Konventionen:
 ‣ x.getSomething und x.something




                       @railshoster
Java in JRuby


‣ In Ruby sind get/set-Methoden unüblich.
‣ Auch hier unterstütz JRuby beide
  Konventionen:
 ‣ x.getSomething und x.something

 ‣ x.setSomething(newValue) und x.something = new_value




                       @railshoster
Java in JRuby


‣ In Ruby sind get/set-Methoden unüblich.
‣ Auch hier unterstütz JRuby beide
  Konventionen:
 ‣ x.getSomething und x.something

 ‣ x.setSomething(newValue) und x.something = new_value

 ‣ x.isSomething und x.something?




                       @railshoster
Using Java in JRuby
   Mehr zum Thema
http://rh.gd/tUABR5
Deployment


          Julian Fischer
   fischer@enterprise-rails.de
 http://www.enterprise-rails.de
Deployment




             @railshoster
Deployment


‣ Ruby App -> Warbler -> War-File ->
 Servlet Containter




                 @railshoster
Deployment


‣ Ruby App -> Warbler -> War-File ->
 Servlet Containter

 ‣ gem install warbler




                 @railshoster
Deployment


‣ Ruby App -> Warbler -> War-File ->
 Servlet Containter

 ‣ gem install warbler
 ‣ cd myproject




                 @railshoster
Deployment


‣ Ruby App -> Warbler -> War-File ->
 Servlet Containter

 ‣ gem install warbler
 ‣ cd myproject
 ‣ warble


                 @railshoster
Beispiel


         Julian Fischer
  fischer@enterprise-rails.de
http://www.enterprise-rails.de
Links und Dokumentation


                Julian Fischer
         fischer@enterprise-rails.de
       http://www.enterprise-rails.de
Links




        @railshoster
Links


‣ Offizielle JRuby Webseite
  http://rh.gd/tet8pD




                  @railshoster
Links


‣ Offizielle JRuby Webseite
  http://rh.gd/tet8pD

‣ JRuby Wiki
  http://rh.gd/jrubywiki




                  @railshoster
Links


‣ Offizielle JRuby Webseite
  http://rh.gd/tet8pD

‣ JRuby Wiki
  http://rh.gd/jrubywiki

‣ Java from JRuby
  http://rh.gd/tUABR5



                  @railshoster
Links




        @railshoster
Links


‣ Warbler auf Github
 http://rh.gd/warblergem




                 @railshoster
Links


‣ Warbler auf Github
 http://rh.gd/warblergem


‣ Warbler Dokumentation
 http://rh.gd/warblergemdoc




                 @railshoster
Fragen?

JRuby

  • 1.
    JRuby EineEinführung Julian Fischer fischer@enterprise-rails.de http://www.enterprise-rails.de
  • 2.
    JRuby Features Julian Fischer fischer@enterprise-rails.de http://www.enterprise-rails.de
  • 3.
    Features @railshoster
  • 4.
    Features ‣ Läuft zu100% auf der JVM @railshoster
  • 5.
    Features ‣ Läuft zu100% auf der JVM ‣ Sehr performanter Ruby Interpreter @railshoster
  • 6.
    Features ‣ Läuft zu100% auf der JVM ‣ Sehr performanter Ruby Interpreter ‣ Nutzt Java Threads @railshoster
  • 7.
    Features ‣ Läuft zu100% auf der JVM ‣ Sehr performanter Ruby Interpreter ‣ Nutzt Java Threads ‣ Integriert sich nahtlos in eine Java- Umgebung @railshoster
  • 8.
    Using Java inJRuby Julian Fischer fischer@enterprise-rails.de http://www.enterprise-rails.de
  • 9.
    Using Java inJRuby Load Java Environment
  • 10.
    Java in JRuby @railshoster
  • 11.
    Java in JRuby ‣Load Java @railshoster
  • 12.
    Java in JRuby ‣Load Java ‣ include Java @railshoster
  • 13.
    Java in JRuby ‣Load Java ‣ include Java ‣ Jars einbinden @railshoster
  • 14.
    Java in JRuby ‣Load Java ‣ include Java ‣ Jars einbinden ‣ require 'path/to/mycode.jar' @railshoster
  • 15.
    Using Java inJRuby Java Klassennamen in JRuby
  • 16.
    Java in JRuby @railshoster
  • 17.
    Java in JRuby ‣Voll qualifizierte Klassennamen @railshoster
  • 18.
    Java in JRuby ‣Voll qualifizierte Klassennamen ‣ Java: org.foo.department.Widget @railshoster
  • 19.
    Java in JRuby ‣Voll qualifizierte Klassennamen ‣ Java: org.foo.department.Widget ‣ Ruby: Java::OrgFooDepartment::Widget @railshoster
  • 20.
    Using Java inJRuby Einen Namensraum importieren
  • 21.
    Java in JRuby @railshoster
  • 22.
    Java in JRuby ‣Import @railshoster
  • 23.
    Java in JRuby ‣Import ‣ java_import java.lang.System version = System.getProperties["java.runtime.version"] @railshoster
  • 24.
    Java in JRuby ‣Import ‣ java_import java.lang.System version = System.getProperties["java.runtime.version"] ‣ import java.lang.System version = System.getProperties["java.runtime.version"] @railshoster
  • 25.
    Java in JRuby ‣Import ‣ java_import java.lang.System version = System.getProperties["java.runtime.version"] ‣ import java.lang.System version = System.getProperties["java.runtime.version"] ‣ Sys = java.lang.System version = Sys.getProperties["java.runtime.version"] @railshoster
  • 26.
    Using Java inJRuby Methodenaufrufe
  • 27.
    Java in JRuby @railshoster
  • 28.
    Java in JRuby ‣Ruby‘s Namenskonvention für Methoden: method_name @railshoster
  • 29.
    Java in JRuby ‣Ruby‘s Namenskonvention für Methoden: method_name ‣ JRuby ermöglicht beides: @railshoster
  • 30.
    Java in JRuby ‣Ruby‘s Namenskonvention für Methoden: method_name ‣ JRuby ermöglicht beides: ‣ java.lang.System.currentTimeMillis @railshoster
  • 31.
    Java in JRuby ‣Ruby‘s Namenskonvention für Methoden: method_name ‣ JRuby ermöglicht beides: ‣ java.lang.System.currentTimeMillis ‣ java.lang.System.current_time_millis @railshoster
  • 32.
    Java in JRuby @railshoster
  • 33.
    Java in JRuby ‣In Ruby sind get/set-Methoden unüblich. @railshoster
  • 34.
    Java in JRuby ‣In Ruby sind get/set-Methoden unüblich. ‣ Auch hier unterstütz JRuby beide Konventionen: @railshoster
  • 35.
    Java in JRuby ‣In Ruby sind get/set-Methoden unüblich. ‣ Auch hier unterstütz JRuby beide Konventionen: ‣ x.getSomething und x.something @railshoster
  • 36.
    Java in JRuby ‣In Ruby sind get/set-Methoden unüblich. ‣ Auch hier unterstütz JRuby beide Konventionen: ‣ x.getSomething und x.something ‣ x.setSomething(newValue) und x.something = new_value @railshoster
  • 37.
    Java in JRuby ‣In Ruby sind get/set-Methoden unüblich. ‣ Auch hier unterstütz JRuby beide Konventionen: ‣ x.getSomething und x.something ‣ x.setSomething(newValue) und x.something = new_value ‣ x.isSomething und x.something? @railshoster
  • 38.
    Using Java inJRuby Mehr zum Thema
  • 39.
  • 40.
    Deployment Julian Fischer fischer@enterprise-rails.de http://www.enterprise-rails.de
  • 41.
    Deployment @railshoster
  • 42.
    Deployment ‣ Ruby App-> Warbler -> War-File -> Servlet Containter @railshoster
  • 43.
    Deployment ‣ Ruby App-> Warbler -> War-File -> Servlet Containter ‣ gem install warbler @railshoster
  • 44.
    Deployment ‣ Ruby App-> Warbler -> War-File -> Servlet Containter ‣ gem install warbler ‣ cd myproject @railshoster
  • 45.
    Deployment ‣ Ruby App-> Warbler -> War-File -> Servlet Containter ‣ gem install warbler ‣ cd myproject ‣ warble @railshoster
  • 46.
    Beispiel Julian Fischer fischer@enterprise-rails.de http://www.enterprise-rails.de
  • 47.
    Links und Dokumentation Julian Fischer fischer@enterprise-rails.de http://www.enterprise-rails.de
  • 48.
    Links @railshoster
  • 49.
    Links ‣ Offizielle JRubyWebseite http://rh.gd/tet8pD @railshoster
  • 50.
    Links ‣ Offizielle JRubyWebseite http://rh.gd/tet8pD ‣ JRuby Wiki http://rh.gd/jrubywiki @railshoster
  • 51.
    Links ‣ Offizielle JRubyWebseite http://rh.gd/tet8pD ‣ JRuby Wiki http://rh.gd/jrubywiki ‣ Java from JRuby http://rh.gd/tUABR5 @railshoster
  • 52.
    Links @railshoster
  • 53.
    Links ‣ Warbler aufGithub http://rh.gd/warblergem @railshoster
  • 54.
    Links ‣ Warbler aufGithub http://rh.gd/warblergem ‣ Warbler Dokumentation http://rh.gd/warblergemdoc @railshoster
  • 55.

Hinweis der Redaktion

  • #2 \n
  • #3 \n
  • #4 \n
  • #5 \n
  • #6 \n
  • #7 \n
  • #8 \n
  • #9 \n
  • #10 http://rh.gd/uHZPR5\nNote there are no quotes for „include“ but for „require“.\nDir["/some/path/\\*.jar"].each { |jar| require jar }\n
  • #11 http://rh.gd/uHZPR5\nNote there are no quotes for „include“ but for „require“.\nDir["/some/path/\\*.jar"].each { |jar| require jar }\n
  • #12 http://rh.gd/uHZPR5\nNote there are no quotes for „include“ but for „require“.\nDir["/some/path/\\*.jar"].each { |jar| require jar }\n
  • #13 http://rh.gd/uHZPR5\nNote there are no quotes for „include“ but for „require“.\nDir["/some/path/\\*.jar"].each { |jar| require jar }\n
  • #14 \n
  • #15 http://rh.gd/uHZPR5\nNote there are no quotes for „include“ but for „require“.\nDir["/some/path/\\*.jar"].each { |jar| require jar }\n
  • #16 http://rh.gd/uHZPR5\nNote there are no quotes for „include“ but for „require“.\nDir["/some/path/\\*.jar"].each { |jar| require jar }\n
  • #17 http://rh.gd/uHZPR5\nNote there are no quotes for „include“ but for „require“.\nDir["/some/path/\\*.jar"].each { |jar| require jar }\n
  • #18 \n
  • #19 http://rh.gd/uHZPR5\nNote there are no quotes for „include“ but for „require“.\nDir["/some/path/\\*.jar"].each { |jar| require jar }\n
  • #20 http://rh.gd/uHZPR5\nNote there are no quotes for „include“ but for „require“.\nDir["/some/path/\\*.jar"].each { |jar| require jar }\n
  • #21 http://rh.gd/uHZPR5\nNote there are no quotes for „include“ but for „require“.\nDir["/some/path/\\*.jar"].each { |jar| require jar }\n
  • #22 http://rh.gd/uHZPR5\nNote there are no quotes for „include“ but for „require“.\nDir["/some/path/\\*.jar"].each { |jar| require jar }\n
  • #23 \n
  • #24 http://rh.gd/uHZPR5\nNote there are no quotes for „include“ but for „require“.\nDir["/some/path/\\*.jar"].each { |jar| require jar }\n
  • #25 http://rh.gd/uHZPR5\nNote there are no quotes for „include“ but for „require“.\nDir["/some/path/\\*.jar"].each { |jar| require jar }\n
  • #26 http://rh.gd/uHZPR5\nNote there are no quotes for „include“ but for „require“.\nDir["/some/path/\\*.jar"].each { |jar| require jar }\n
  • #27 http://rh.gd/uHZPR5\nNote there are no quotes for „include“ but for „require“.\nDir["/some/path/\\*.jar"].each { |jar| require jar }\n
  • #28 http://rh.gd/uHZPR5\nNote there are no quotes for „include“ but for „require“.\nDir["/some/path/\\*.jar"].each { |jar| require jar }\n
  • #29 http://rh.gd/uHZPR5\nNote there are no quotes for „include“ but for „require“.\nDir["/some/path/\\*.jar"].each { |jar| require jar }\n
  • #30 http://rh.gd/uHZPR5\nNote there are no quotes for „include“ but for „require“.\nDir["/some/path/\\*.jar"].each { |jar| require jar }\n
  • #31 http://rh.gd/uHZPR5\nNote there are no quotes for „include“ but for „require“.\nDir["/some/path/\\*.jar"].each { |jar| require jar }\n
  • #32 http://rh.gd/uHZPR5\nNote there are no quotes for „include“ but for „require“.\nDir["/some/path/\\*.jar"].each { |jar| require jar }\n
  • #33 \n
  • #34 http://rh.gd/uHZPR5\nNote there are no quotes for „include“ but for „require“.\nDir["/some/path/\\*.jar"].each { |jar| require jar }\n
  • #35 \n
  • #36 \n
  • #37 \n
  • #38 \n
  • #39 \n
  • #40 \n
  • #41 \n
  • #42 \n
  • #43 \n
  • #44 \n
  • #45 \n
  • #46 \n
  • #47 \n