SlideShare a Scribd company logo
1 of 48
Download to read offline
The Throwdown will begin shortly
#RubyThrowdown
“JRuby and Rubinius
  are the best production
      Ruby runtimes”
          - Dr Nic



                            “Ignore everything
                              Dr Nic tells you.
                             Use MRI instead”
                                  - Aaron
#RubyThrowdown
Todayʼs Line-up




#RubyThrowdown
Agenda
  Introduction & History
  Ecosystem
  Tooling
  Concurrency
  Windows
  Deployment
  Summary of the Good Bits
  Q&A

#RubyThrowdown
Aaron Patterson
                  (@tenderlove)


         HISTORY OF MRI
             Aaronʼs appearance is made possible by




#RubyThrowdown
MRI History
  MRI = Matzʼ Ruby Implementation
  Written in C
  Reference Implementation


#RubyThrowdown
Nick Sieger
                  (@nicksieger)


      HISTORY OF JRUBY
             Nickʼs appearance is made possible by




#RubyThrowdown
JRuby History
  Written in Java, Runs on JVM
  2001: Pet project
  2007: 1.0
  2009: Engine Yard
  2011: 1.6: 1.8 + 1.9 all-in-1
#RubyThrowdown
Brian Ford
                      (@brixen)


    HISTORY OF RUBINIUS
             Brianʼs appearance is made possible by




#RubyThrowdown
Rubinius History
  Evan Phoenix
  RubyConf 2006
  Engine Yard 2007
  100s of Contributors

#RubyThrowdown
Rubinius History
  Custom VM
  Generational GC
  Just-in-time (JIT) Compiler
  Ruby Core Library

#RubyThrowdown
Agenda
  Introduction & History
  Ecosystem
  Tooling
  Concurrency
  Windows
  Deployment
  Summary of the Good Bits
  Q&A

#RubyThrowdown
MRI Library Ecosystem
  Any Gem (rubygems.org)
  C (and C++) libraries are accessible
  libffi, libyaml, openssl
  Popular Gems provide: libxml2,
  libem

#RubyThrowdown
JRuby Ecosystem
  Ruby <=–bridge–=> Java
  Use as Ruby impl. or Java library
  C extension layer*
  Access Java seamlessly
  JRuby-specific gems
#RubyThrowdown
Rubinius Ecosystem
  Identical Use as MRI
  C-extension & Gems
  Language Platform
  http://rubini.us/projects

#RubyThrowdown
Agenda
  Introduction & History
  Ecosystem
  Tooling
  Concurrency
  Windows
  Deployment
  Summary of the Good Bits
  Q&A

#RubyThrowdown
Stability     JVM    Monitoring/
                            Tools




  Native Threads         Performance

#RubyThrowdown
#RubyThrowdown
Rubinius Tooling
  Profiler
  Debugger
  Memory Analysis
  Rubinius::Agent

#RubyThrowdown
MRI Tooling
  perftools.rb (Google Perf Tools)
  gdb
  DTrace (only on OS X Ruby)
  GC::Profiler (built in)
  ObjectSpace.count_objects
#RubyThrowdown
Perftools.rb




#RubyThrowdown
GC::Profiler.result

          Invoke User Size Total Size Total    GC Time
 Index
         Time(sec) (byte)    (byte)   Object    (ms)


   1      0.016    301640   572600    14315     1.035




#RubyThrowdown
ObjectSpace
   {:TOTAL=>14308, :FREE=>222, :T_OBJECT=>8,
   :T_CLASS=>474, :T_MODULE=>21,
   :T_FLOAT=>7, :T_STRING=>6248,
   :T_REGEXP=>24, :T_ARRAY=>1063,
   :T_HASH=>14, :T_BIGNUM=>3, :T_FILE=>10,
   :T_DATA=>393, :T_MATCH=>104,
   :T_COMPLEX=>1, :T_NODE=>5697,
   :T_ICLASS=>19}
#RubyThrowdown
Agenda
  Introduction & History
  Ecosystem
  Tooling
  Concurrency
  Windows
  Deployment
  Summary of the Good Bits
  Q&A

#RubyThrowdown
MRI & Concurrency
  Threads (native in 1.9)
  Fibers (coroutines)
  Evented IO (EventMachine)


#RubyThrowdown
Rubinius & Concurrency
  Native Threads
  Fully concurrent in 2.0
  Native Fibers
  EventMachine
  Actors
#RubyThrowdown
JRuby & Concurrency
  1st impl w/ Native Threads
  Fibers backed by threads
  Threading libraries
  Java concurrency libraries

#RubyThrowdown
 	
  data	
  =	
  []
            	
  	
  M.times	
  do	
  |m|
            	
  	
  	
  	
  Thread.new	
  do
            	
  	
  	
  	
  	
  	
  N.times	
  do	
  |n|
            	
  	
  	
  	
  	
  	
  	
  	
  data	
  <<	
  m	
  *	
  n
            	
  	
  	
  	
  	
  	
  end
            	
  	
  	
  	
  end
            	
  	
  end




#RubyThrowdown
Agenda
  Introduction & History
  Ecosystem
  Tooling
  Concurrency
  Windows
  Deployment
  Summary of the Good Bits
  Q&A

#RubyThrowdown
Rubinius & Windows™
  Rubinius 2.0
  1.8.7 / 1.9.2
  Full concurrency
  C-extension support
  Native Installer
#RubyThrowdown
MRI & Windows™
  Ruby Installer (http://rubyinstaller.org/)

  Rails Installer (http://railsinstaller.org/)

  Some C based gems may not work




#RubyThrowdown
JRuby & Windows™
  Just works

  Installer: with/without JVM, 32- or 64-bit

  Only Ruby w/ 64-bit Win32OLE




#RubyThrowdown
Agenda
  Introduction & History
  Ecosystem
  Tooling
  Concurrency
  Windows
  Deployment
  Summary of the Good Bits
  Q&A

#RubyThrowdown
MRI Deployment
  For Ruby: apt, rpm, dpkg

  For Rails: Capistrano, Vlad

  Web Servers: Unicorn, etc




#RubyThrowdown
Rubinius Deployment
  Identical to MRI
    but full concurrency
  Passenger
  Unicorn or Rainbows!
  WEBrick
#RubyThrowdown
JRuby Deployment
Ruby servers     WAR files      Cloud

   WEBrick       GlassFish   EY AppCloud

   Trinidad       Tomcat     AppEngine

  TorqueBox       JBoss        AWS EB



#RubyThrowdown
Pick a Server
         blog: http://ey.io/webservers

         Trinidad             Mizuno




           Kirk             TorqueBox


#RubyThrowdown
Distribute your app
    https://github.com/nicksieger/warbler


           INSTALL   gem install warbler




#RubyThrowdown
$ cd recordstore

         $ warble executable war
         rm -f recordstore.war
         Creating recordstore.war

         $ java -jar recordstore.war
         <server starts on port 8080>


#RubyThrowdown
Q&A




#RubyThrowdown
Top Reasons to use MRI
  It is canonical
  Large ecosystem / C support
  Fast
  Fun!

#RubyThrowdown
Top Reasons: Rubinius
  Use Today Like MRI
  First-class Ruby
  Modern Technology
  Ruby Tools in Ruby

#RubyThrowdown
Top Reasons: JRuby
  Best of Java and Ruby
  Mature Platform
  Performance, Stability,
  Concurrency

#RubyThrowdown
Rails | Sinatra | Rack

   Memcached |            MRI | JRuby | Rubinius
      Redis
                                                       Chef
                      Mongrel | Unicorn | Passenger
                                                      Recipes
      MySQL                        nginx
                                  HAProxy
                         Linux


#RubyThrowdown
#RubyThrowdown
http://ey.io/jrubyftw



#RubyThrowdown
#rbxday
              Friday, August 5, 2011
A global day of Rubinius performance testing, bug reporting,
community strengthening and super awesome fun times
                                              Let’s make it a party!




                  http://rbxday.rubini.us
Want More?


        Upcoming Webinars
        August 18 - Rubinius
         August 25 - JRuby
#RubyThrowdown

More Related Content

Similar to The Ruby Throwdown Event Agenda

Make your app idea a reality with Ruby On Rails
Make your app idea a reality with Ruby On RailsMake your app idea a reality with Ruby On Rails
Make your app idea a reality with Ruby On RailsNataly Tkachuk
 
Concurrecy in Ruby
Concurrecy in RubyConcurrecy in Ruby
Concurrecy in RubyVesna Doknic
 
JRuby - Enterprise 2.0
JRuby - Enterprise 2.0JRuby - Enterprise 2.0
JRuby - Enterprise 2.0Jan Sifra
 
Scaling a Rails Application from the Bottom Up
Scaling a Rails Application from the Bottom Up Scaling a Rails Application from the Bottom Up
Scaling a Rails Application from the Bottom Up Abhishek Singh
 
The secret of programming language development and future
The secret of programming  language development and futureThe secret of programming  language development and future
The secret of programming language development and futureHiroshi SHIBATA
 
The story of language development
The story of language developmentThe story of language development
The story of language developmentHiroshi SHIBATA
 
A million connections and beyond - Node.js at scale
A million connections and beyond - Node.js at scaleA million connections and beyond - Node.js at scale
A million connections and beyond - Node.js at scaleTom Croucher
 
Ruby On Google App Engine 2nd Athens Ruby Me
Ruby On Google App Engine 2nd Athens Ruby MeRuby On Google App Engine 2nd Athens Ruby Me
Ruby On Google App Engine 2nd Athens Ruby MePanagiotis Papadopoulos
 
DiUS Computing Lca Rails Final
DiUS  Computing Lca Rails FinalDiUS  Computing Lca Rails Final
DiUS Computing Lca Rails FinalRobert Postill
 
An introduction to the ruby ecosystem
An introduction to the ruby ecosystemAn introduction to the ruby ecosystem
An introduction to the ruby ecosystemGeison Goes
 
Ruby on Rails : First Mile
Ruby on Rails : First MileRuby on Rails : First Mile
Ruby on Rails : First MileGourab Mitra
 
Node.js - The New, New Hotness
Node.js - The New, New HotnessNode.js - The New, New Hotness
Node.js - The New, New HotnessDaniel Shaw
 
[판교에서 만나는 아마존웹서비스] Obama for America를 통해서 본 AWS에서의 데이터 분석
[판교에서 만나는 아마존웹서비스] Obama for America를 통해서 본 AWS에서의 데이터 분석 [판교에서 만나는 아마존웹서비스] Obama for America를 통해서 본 AWS에서의 데이터 분석
[판교에서 만나는 아마존웹서비스] Obama for America를 통해서 본 AWS에서의 데이터 분석 Amazon Web Services Korea
 
Katello on TorqueBox
Katello on TorqueBoxKatello on TorqueBox
Katello on TorqueBoxlzap
 
Úvod do Ruby on Rails
Úvod do Ruby on RailsÚvod do Ruby on Rails
Úvod do Ruby on RailsKarel Minarik
 

Similar to The Ruby Throwdown Event Agenda (20)

Make your app idea a reality with Ruby On Rails
Make your app idea a reality with Ruby On RailsMake your app idea a reality with Ruby On Rails
Make your app idea a reality with Ruby On Rails
 
Concurrecy in Ruby
Concurrecy in RubyConcurrecy in Ruby
Concurrecy in Ruby
 
JRuby - Enterprise 2.0
JRuby - Enterprise 2.0JRuby - Enterprise 2.0
JRuby - Enterprise 2.0
 
Scaling a Rails Application from the Bottom Up
Scaling a Rails Application from the Bottom Up Scaling a Rails Application from the Bottom Up
Scaling a Rails Application from the Bottom Up
 
The secret of programming language development and future
The secret of programming  language development and futureThe secret of programming  language development and future
The secret of programming language development and future
 
20140918 ruby kaigi2014
20140918 ruby kaigi201420140918 ruby kaigi2014
20140918 ruby kaigi2014
 
The story of language development
The story of language developmentThe story of language development
The story of language development
 
First Day With J Ruby
First Day With J RubyFirst Day With J Ruby
First Day With J Ruby
 
A million connections and beyond - Node.js at scale
A million connections and beyond - Node.js at scaleA million connections and beyond - Node.js at scale
A million connections and beyond - Node.js at scale
 
Practical JRuby
Practical JRubyPractical JRuby
Practical JRuby
 
Ruby On Google App Engine 2nd Athens Ruby Me
Ruby On Google App Engine 2nd Athens Ruby MeRuby On Google App Engine 2nd Athens Ruby Me
Ruby On Google App Engine 2nd Athens Ruby Me
 
DiUS Computing Lca Rails Final
DiUS  Computing Lca Rails FinalDiUS  Computing Lca Rails Final
DiUS Computing Lca Rails Final
 
An introduction to the ruby ecosystem
An introduction to the ruby ecosystemAn introduction to the ruby ecosystem
An introduction to the ruby ecosystem
 
Ruby on Rails : First Mile
Ruby on Rails : First MileRuby on Rails : First Mile
Ruby on Rails : First Mile
 
Node.js - The New, New Hotness
Node.js - The New, New HotnessNode.js - The New, New Hotness
Node.js - The New, New Hotness
 
IJTC%202009%20JRuby
IJTC%202009%20JRubyIJTC%202009%20JRuby
IJTC%202009%20JRuby
 
IJTC%202009%20JRuby
IJTC%202009%20JRubyIJTC%202009%20JRuby
IJTC%202009%20JRuby
 
[판교에서 만나는 아마존웹서비스] Obama for America를 통해서 본 AWS에서의 데이터 분석
[판교에서 만나는 아마존웹서비스] Obama for America를 통해서 본 AWS에서의 데이터 분석 [판교에서 만나는 아마존웹서비스] Obama for America를 통해서 본 AWS에서의 데이터 분석
[판교에서 만나는 아마존웹서비스] Obama for America를 통해서 본 AWS에서의 데이터 분석
 
Katello on TorqueBox
Katello on TorqueBoxKatello on TorqueBox
Katello on TorqueBox
 
Úvod do Ruby on Rails
Úvod do Ruby on RailsÚvod do Ruby on Rails
Úvod do Ruby on Rails
 

Recently uploaded

Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 

Recently uploaded (20)

Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 

The Ruby Throwdown Event Agenda

  • 1. The Throwdown will begin shortly #RubyThrowdown
  • 2. “JRuby and Rubinius are the best production Ruby runtimes” - Dr Nic “Ignore everything Dr Nic tells you. Use MRI instead” - Aaron #RubyThrowdown
  • 4. Agenda Introduction & History Ecosystem Tooling Concurrency Windows Deployment Summary of the Good Bits Q&A #RubyThrowdown
  • 5. Aaron Patterson (@tenderlove) HISTORY OF MRI Aaronʼs appearance is made possible by #RubyThrowdown
  • 6. MRI History MRI = Matzʼ Ruby Implementation Written in C Reference Implementation #RubyThrowdown
  • 7. Nick Sieger (@nicksieger) HISTORY OF JRUBY Nickʼs appearance is made possible by #RubyThrowdown
  • 8. JRuby History Written in Java, Runs on JVM 2001: Pet project 2007: 1.0 2009: Engine Yard 2011: 1.6: 1.8 + 1.9 all-in-1 #RubyThrowdown
  • 9. Brian Ford (@brixen) HISTORY OF RUBINIUS Brianʼs appearance is made possible by #RubyThrowdown
  • 10. Rubinius History Evan Phoenix RubyConf 2006 Engine Yard 2007 100s of Contributors #RubyThrowdown
  • 11. Rubinius History Custom VM Generational GC Just-in-time (JIT) Compiler Ruby Core Library #RubyThrowdown
  • 12. Agenda Introduction & History Ecosystem Tooling Concurrency Windows Deployment Summary of the Good Bits Q&A #RubyThrowdown
  • 13. MRI Library Ecosystem Any Gem (rubygems.org) C (and C++) libraries are accessible libffi, libyaml, openssl Popular Gems provide: libxml2, libem #RubyThrowdown
  • 14. JRuby Ecosystem Ruby <=–bridge–=> Java Use as Ruby impl. or Java library C extension layer* Access Java seamlessly JRuby-specific gems #RubyThrowdown
  • 15. Rubinius Ecosystem Identical Use as MRI C-extension & Gems Language Platform http://rubini.us/projects #RubyThrowdown
  • 16. Agenda Introduction & History Ecosystem Tooling Concurrency Windows Deployment Summary of the Good Bits Q&A #RubyThrowdown
  • 17. Stability JVM Monitoring/ Tools Native Threads Performance #RubyThrowdown
  • 19. Rubinius Tooling Profiler Debugger Memory Analysis Rubinius::Agent #RubyThrowdown
  • 20. MRI Tooling perftools.rb (Google Perf Tools) gdb DTrace (only on OS X Ruby) GC::Profiler (built in) ObjectSpace.count_objects #RubyThrowdown
  • 22. GC::Profiler.result Invoke User Size Total Size Total GC Time Index Time(sec) (byte) (byte) Object (ms) 1 0.016 301640 572600 14315 1.035 #RubyThrowdown
  • 23. ObjectSpace {:TOTAL=>14308, :FREE=>222, :T_OBJECT=>8, :T_CLASS=>474, :T_MODULE=>21, :T_FLOAT=>7, :T_STRING=>6248, :T_REGEXP=>24, :T_ARRAY=>1063, :T_HASH=>14, :T_BIGNUM=>3, :T_FILE=>10, :T_DATA=>393, :T_MATCH=>104, :T_COMPLEX=>1, :T_NODE=>5697, :T_ICLASS=>19} #RubyThrowdown
  • 24. Agenda Introduction & History Ecosystem Tooling Concurrency Windows Deployment Summary of the Good Bits Q&A #RubyThrowdown
  • 25. MRI & Concurrency Threads (native in 1.9) Fibers (coroutines) Evented IO (EventMachine) #RubyThrowdown
  • 26. Rubinius & Concurrency Native Threads Fully concurrent in 2.0 Native Fibers EventMachine Actors #RubyThrowdown
  • 27. JRuby & Concurrency 1st impl w/ Native Threads Fibers backed by threads Threading libraries Java concurrency libraries #RubyThrowdown
  • 28.    data  =  []    M.times  do  |m|        Thread.new  do            N.times  do  |n|                data  <<  m  *  n            end        end    end #RubyThrowdown
  • 29. Agenda Introduction & History Ecosystem Tooling Concurrency Windows Deployment Summary of the Good Bits Q&A #RubyThrowdown
  • 30. Rubinius & Windows™ Rubinius 2.0 1.8.7 / 1.9.2 Full concurrency C-extension support Native Installer #RubyThrowdown
  • 31. MRI & Windows™ Ruby Installer (http://rubyinstaller.org/) Rails Installer (http://railsinstaller.org/) Some C based gems may not work #RubyThrowdown
  • 32. JRuby & Windows™ Just works Installer: with/without JVM, 32- or 64-bit Only Ruby w/ 64-bit Win32OLE #RubyThrowdown
  • 33. Agenda Introduction & History Ecosystem Tooling Concurrency Windows Deployment Summary of the Good Bits Q&A #RubyThrowdown
  • 34. MRI Deployment For Ruby: apt, rpm, dpkg For Rails: Capistrano, Vlad Web Servers: Unicorn, etc #RubyThrowdown
  • 35. Rubinius Deployment Identical to MRI but full concurrency Passenger Unicorn or Rainbows! WEBrick #RubyThrowdown
  • 36. JRuby Deployment Ruby servers WAR files Cloud WEBrick GlassFish EY AppCloud Trinidad Tomcat AppEngine TorqueBox JBoss AWS EB #RubyThrowdown
  • 37. Pick a Server blog: http://ey.io/webservers Trinidad Mizuno Kirk TorqueBox #RubyThrowdown
  • 38. Distribute your app https://github.com/nicksieger/warbler INSTALL gem install warbler #RubyThrowdown
  • 39. $ cd recordstore $ warble executable war rm -f recordstore.war Creating recordstore.war $ java -jar recordstore.war <server starts on port 8080> #RubyThrowdown
  • 41. Top Reasons to use MRI It is canonical Large ecosystem / C support Fast Fun! #RubyThrowdown
  • 42. Top Reasons: Rubinius Use Today Like MRI First-class Ruby Modern Technology Ruby Tools in Ruby #RubyThrowdown
  • 43. Top Reasons: JRuby Best of Java and Ruby Mature Platform Performance, Stability, Concurrency #RubyThrowdown
  • 44. Rails | Sinatra | Rack Memcached | MRI | JRuby | Rubinius Redis Chef Mongrel | Unicorn | Passenger Recipes MySQL nginx HAProxy Linux #RubyThrowdown
  • 47. #rbxday Friday, August 5, 2011 A global day of Rubinius performance testing, bug reporting, community strengthening and super awesome fun times Let’s make it a party! http://rbxday.rubini.us
  • 48. Want More? Upcoming Webinars August 18 - Rubinius August 25 - JRuby #RubyThrowdown