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

Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...itnewsafrica
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
Accelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessAccelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessWSO2
 
4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sector
4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sector4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sector
4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sectoritnewsafrica
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
Infrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platformsInfrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platformsYoss Cohen
 
Kuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorialKuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorialJoão Esperancinha
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesManik S Magar
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesBernd Ruecker
 
A Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxA Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxAna-Maria Mihalceanu
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Nikki Chapple
 
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Jeffrey Haguewood
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024TopCSSGallery
 

Recently uploaded (20)

Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
Accelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessAccelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with Platformless
 
4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sector
4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sector4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sector
4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sector
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
Infrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platformsInfrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platforms
 
Kuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorialKuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorial
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architectures
 
A Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxA Glance At The Java Performance Toolbox
A Glance At The Java Performance Toolbox
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
 
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024
 

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