SlideShare ist ein Scribd-Unternehmen logo
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?

Weitere ähnliche Inhalte

PDF
Scharfe Anmerkungen für Java 6 mit Lombok
PDF
Helma Workshop
PDF
Brownbag: Java Applikationen und die JVM für „Ops“
PDF
Merb. Rails in anders.
PDF
Tanuki service wrapper_101
PDF
Enterprise rails hosting 3 ways to scale - 2011-10
PDF
构建高性能MySQL系统
PDF
基于MySQL可扩展架构设计
Scharfe Anmerkungen für Java 6 mit Lombok
Helma Workshop
Brownbag: Java Applikationen und die JVM für „Ops“
Merb. Rails in anders.
Tanuki service wrapper_101
Enterprise rails hosting 3 ways to scale - 2011-10
构建高性能MySQL系统
基于MySQL可扩展架构设计

Andere mochten auch (6)

PPTX
Fuerza Bruta
PPTX
Kanban - A recipe for success
PPTX
Kanban: The Dilemma of an Agile Manager
PPTX
Kanban - Extreme improvements in five quarters
PPT
BBVH Woonwijzer
PPTX
The Kanban method
Fuerza Bruta
Kanban - A recipe for success
Kanban: The Dilemma of an Agile Manager
Kanban - Extreme improvements in five quarters
BBVH Woonwijzer
The Kanban method
Anzeige

Ähnlich wie JRuby (7)

PDF
Ruby und Rails für .NET Entwickler
KEY
Ruby on Rails SS09 04
KEY
Ruby on rails vorlesung 3 Mehr Ruby
PDF
An Introduction to Ruby
PDF
An Introduction to Ruby On Rails
PDF
Ruby - Eine kurze Einführung
KEY
Ruby on Rails SS09 02
Ruby und Rails für .NET Entwickler
Ruby on Rails SS09 04
Ruby on rails vorlesung 3 Mehr Ruby
An Introduction to Ruby
An Introduction to Ruby On Rails
Ruby - Eine kurze Einführung
Ruby on Rails SS09 02
Anzeige

Mehr von Avarteq (15)

PPTX
Kanban - Classes of Service
PPTX
Kanban - Set Work in Progress Limits
PPTX
Kanban - Set a pace for the input
PPTX
Kanban – Visualizing the value chain
PPTX
Kanban - Establish a Delivery Rhythm
PPTX
Kanban - How to coordinate with Kanban
PPTX
Kanban: Kaizen - Culture of continuous improvement
PDF
Ruby Grundlagen
KEY
Opscode Chef - Grundlagen
KEY
Einführung in Opscode Chef - Voraussetzungen
KEY
RabbitMQ mit (J)Ruby
KEY
Julian Fischer Ruby On Rails
KEY
Mehrserver Lösungen
KEY
Enterprise Hosting
KEY
Evolutionary Algorithms In Ruby
Kanban - Classes of Service
Kanban - Set Work in Progress Limits
Kanban - Set a pace for the input
Kanban – Visualizing the value chain
Kanban - Establish a Delivery Rhythm
Kanban - How to coordinate with Kanban
Kanban: Kaizen - Culture of continuous improvement
Ruby Grundlagen
Opscode Chef - Grundlagen
Einführung in Opscode Chef - Voraussetzungen
RabbitMQ mit (J)Ruby
Julian Fischer Ruby On Rails
Mehrserver Lösungen
Enterprise Hosting
Evolutionary Algorithms In Ruby

JRuby

  • 1. JRuby Eine Einfü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 zu 100% auf der JVM @railshoster
  • 5. Features ‣ Läuft zu 100% auf der JVM ‣ Sehr performanter Ruby Interpreter @railshoster
  • 6. Features ‣ Läuft zu 100% auf der JVM ‣ Sehr performanter Ruby Interpreter ‣ Nutzt Java Threads @railshoster
  • 7. Features ‣ Läuft zu 100% auf der JVM ‣ Sehr performanter Ruby Interpreter ‣ Nutzt Java Threads ‣ Integriert sich nahtlos in eine Java- Umgebung @railshoster
  • 8. Using Java in JRuby Julian Fischer fischer@enterprise-rails.de http://www.enterprise-rails.de
  • 9. Using Java in JRuby 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 in JRuby 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 in JRuby 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 in JRuby 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 in JRuby Mehr zum Thema
  • 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 JRuby Webseite http://rh.gd/tet8pD @railshoster
  • 50. Links ‣ Offizielle JRuby Webseite http://rh.gd/tet8pD ‣ JRuby Wiki http://rh.gd/jrubywiki @railshoster
  • 51. Links ‣ Offizielle JRuby Webseite http://rh.gd/tet8pD ‣ JRuby Wiki http://rh.gd/jrubywiki ‣ Java from JRuby http://rh.gd/tUABR5 @railshoster
  • 52. Links @railshoster
  • 53. Links ‣ Warbler auf Github http://rh.gd/warblergem @railshoster
  • 54. Links ‣ Warbler auf Github http://rh.gd/warblergem ‣ Warbler Dokumentation http://rh.gd/warblergemdoc @railshoster

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