O melhor dos dois mundos

  Creative  Commons  BY-­SA  3.0




Saturday, July 23, 2011
@abstractj

            Java há 12 anos, Ruby n00b
            TorqueBox Contributor
            Instrutor Caelum


Saturday, July 23, 2011
DISCLAIMER



Saturday, July 23, 2011
Java



      Come to the dark side

Saturday, July 23, 2011
ENTERPRISE



Saturday, July 23, 2011
JAXR                        Java-FX     JAXP
                          JSTL                         StAX JME
                                 JDOM       JVM
          JAX-RPC                                    EJB
                                             AWT           JMX
                  Swing
      EAR Struts          JAAS                       JCP
                 JavaBean
         NPE                                               Spring
     JAX-WS                 ENTERPRISE                       RMI
           JSE              JNI     JEE      SOA       NIO
                                                              JSP
       JSF JAXB   WAR  JNDI JDO
   JAX-RS JPQL EJBQL  JAF      POJO
                           JRE


Saturday, July 23, 2011
Saturday, July 23, 2011
Mas escala né?!



Saturday, July 23, 2011
Server Side



Saturday, July 23, 2011
JBoss
      Tomcat + Infinispan + HornetQ + Quartz + Clustering




Saturday, July 23, 2011
Hot Deployment



Saturday, July 23, 2011
Scala            Clojure
                                  Python


                                   JVM
                                   Ruby
            JavaScript                     Groovy




Saturday, July 23, 2011
Ruby
      Mais expressiva que Java




Saturday, July 23, 2011
DRY


Saturday, July 23, 2011
JRuby
                          Java + Ruby




Saturday, July 23, 2011
“You get true multithreading that
                 can use all your computer’s cores
                 from one process, plus a virtual
                 machine that’s been tuned for a
                 decade and a half.”

                             Using JRuby - Bringing Ruby to Java




Saturday, July 23, 2011
TorqueBox
                          “The power of JBoss with the
                            expressiveness of Ruby”
                                      Jim Crossley - MagicRuby Conference




Saturday, July 23, 2011
TorqueBox




Saturday, July 23, 2011
Instalação
                           TorqueBox do zero




Saturday, July 23, 2011
➜ jruby -S gem install torquebox torquebox-capistrano-support




Saturday, July 23, 2011
➜ wget http://torquebox.org/builds/LATEST/torquebox-dist-
      bin.zip
      ➜ unzip torquebox-dist-bin.zip

      ➜ export TORQUEBOX_HOME=$PWD/torquebox-1.x
      ➜ export JBOSS_HOME=$TORQUEBOX_HOME/jboss
      ➜ export JRUBY_HOME=$TORQUEBOX_HOME/jruby

      ➜ export PATH=$JRUBY_HOME/bin:$PATH




Saturday, July 23, 2011
Estrutura
      Diretórios do TorqueBox




Saturday, July 23, 2011
Rails
      rails new bazinga -m $TORQUEBOX_HOME/share/rails/template.rb




Saturday, July 23, 2011
Rake tasks
      rake torquebox:deploy
      rake torquebox:undeploy
      rake torquebox:run




Saturday, July 23, 2011
Deployment
                          Make knobs, not WAR!




Saturday, July 23, 2011
bazinga-knob.yml
      application:
       root: /home/bruno/app/bazinga
       env: development




Saturday, July 23, 2011
Scheduling
                          Agendamento de Jobs




Saturday, July 23, 2011
../app/jobs
      class JobDemo

         def initialize
          #Codigo de inicializacao
         end

       def run
        # O que você quer executar
       end
      end


Saturday, July 23, 2011
../config/torquebox.yml
      jobs:
       sync_agenda:
        job: JobDemo
        cron: '0 0 12 * * ?'
      end




Saturday, July 23, 2011
Mensageria
      Java Messaging Service + HornetQ




Saturday, July 23, 2011
Tasks
      class EmailerTask < TorqueBox::Messaging::Task
       def send_welcome(payload)
        to = "#{payload[:name]} <#{payload[:address]}>"
        # send welcome email to the user
       end
      end




Saturday, July 23, 2011
Tasks
      class UserController < ApplicationController
       def register
        user = User.new(params[:user])

        EmailerTask.async(:send_welcome, :address =>
      user.email, :name => user.name)
       end
      end




Saturday, July 23, 2011
messaging.yml
      /topics/print: PrintHandler
      /queues/students:
        PrintHandler:
         config:
          color: true




Saturday, July 23, 2011
Processors
      include TorqueBox::Messaging

      class PrintHandler < MessageProcessor
        def on_message(body)
          puts "Processing #{body} of #{message}"
        end
        def configure(opts)
          @color = opts['color']
        end
      end




Saturday, July 23, 2011
Queues
      include TorqueBox
      req = Messaging::Queue.new '/queues/questions'
      res = Messaging::Queue.new '/queues/answers'
       
      Thread.new do
        req.publish "What time is it?"
        puts res.receive( :timeout => 1000 )
      end
       
      puts req.receive
      res.publish Time.now




Saturday, July 23, 2011
Serviços



Saturday, July 23, 2011
class BazingaService
       def initialize
        @queue = Messaging::Queue.new(“bazinga”)
       end
       def start
        @queue.publish “Testing”
       end

       def stop
        # O que fazer quando o serviço receber um stop
       end
      end




Saturday, July 23, 2011
CDI - Simplificado
                             Injeção de dependências




Saturday, July 23, 2011
Java
      package com.gurusp;

      public class Bazinga {
        //gets e sets
        public void say(String message) { // Execução do método }
      }

      Deploy do jar na aplicação
      app/
      models/
      views/
      controllers/
      lib/bazinga.jar




Saturday, July 23, 2011
Ruby
     class BazingaController < ApplicationController

           include TorqueBox::Injectors

           def create
            bazinga = inject(com.gurusp.Bazinga )
            bazinga.say “Ruby is for Java”
           end

     end




Saturday, July 23, 2011
Caching
      class BeersController < ApplicationController

         caches_action :most_popular, :expires_in => 30.seconds

         def most_popular
          @popular_beers = Beer.most_popular(:limit => 25)
         end

      end




Saturday, July 23, 2011
Saturday, July 23, 2011
Clustering
      ➜ $JBOSS_HOME/bin/run.sh -c all




Saturday, July 23, 2011
Cache distribuído!



Saturday, July 23, 2011
BackStage




Saturday, July 23, 2011
Comunidade
            irc.freenode.net #torquebox
            http://torquebox.org
            http://github.com/torquebox
            twitter: @torquebox

Saturday, July 23, 2011
Obrigado!
                                    @abstractj




  Creative  Commons  BY-­SA  3.0




Saturday, July 23, 2011

More Related Content

PDF
TorqueBox - When Java meets Ruby
PDF
When Ruby Meets Java - The Power of Torquebox
PDF
TorqueBox - Ultrapassando a fronteira entre Java e Ruby
PDF
TorqueBox at DC:JBUG - November 2011
PDF
TorqueBox: The beauty of Ruby with the power of JBoss. Presented at Devnexus...
PDF
DataMapper on Infinispan
PDF
Complex Made Simple: Sleep Better with TorqueBox
KEY
Devignition 2011
TorqueBox - When Java meets Ruby
When Ruby Meets Java - The Power of Torquebox
TorqueBox - Ultrapassando a fronteira entre Java e Ruby
TorqueBox at DC:JBUG - November 2011
TorqueBox: The beauty of Ruby with the power of JBoss. Presented at Devnexus...
DataMapper on Infinispan
Complex Made Simple: Sleep Better with TorqueBox
Devignition 2011

What's hot (20)

PDF
TorqueBox for Rubyists
KEY
TorqueBox - Ruby Hoedown 2011
PDF
JRuby and You
PDF
Using Java from Ruby with JRuby IRB
PDF
JUDCon 2010 Boston : TorqueBox
PDF
ZK_Arch_notes_20081121
PDF
Connecting the Worlds of Java and Ruby with JRuby
PDF
JUDCon 2010 Boston : BoxGrinder
PPTX
JRuby in Java Projects
PDF
Torquebox OSCON Java 2011
PDF
The Enterprise Strikes Back
PDF
Spring into rails
PDF
Torquebox @ Raleigh.rb - April 2011
PDF
The Enterprise Strikes Back
PDF
Charla ruby nscodermad
ODP
First Day With J Ruby
PDF
Ruby 2.4 Internals
PPTX
Hybrid Applications
PPT
PPTX
Java7 - Top 10 Features
TorqueBox for Rubyists
TorqueBox - Ruby Hoedown 2011
JRuby and You
Using Java from Ruby with JRuby IRB
JUDCon 2010 Boston : TorqueBox
ZK_Arch_notes_20081121
Connecting the Worlds of Java and Ruby with JRuby
JUDCon 2010 Boston : BoxGrinder
JRuby in Java Projects
Torquebox OSCON Java 2011
The Enterprise Strikes Back
Spring into rails
Torquebox @ Raleigh.rb - April 2011
The Enterprise Strikes Back
Charla ruby nscodermad
First Day With J Ruby
Ruby 2.4 Internals
Hybrid Applications
Java7 - Top 10 Features
Ad

Similar to Torquebox - O melhor dos dois mundos (20)

PDF
NodeJS, CoffeeScript & Real-time Web
PDF
Towards a software ecosystem for java prolog interoperabilty
PPTX
Java 7 Whats New(), Whats Next() from Oredev
PDF
Clojure for Java developers
PDF
Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...
KEY
Jruby synergy-of-ruby-and-java
KEY
Практики применения JRuby
PDF
Clojure made-simple - John Stevenson
PDF
Upgrading to Rails 3
PPTX
Clojure Fundamentals Course For Beginners
PDF
What python can learn from java
PDF
Einführung in Node.js
PDF
RxJS101 - What you need to know to get started with RxJS tomorrow
PDF
The Mayans Lost Guide to RxJava on Android
PDF
I know why your Java is slow
PDF
JRuby + Rails = Awesome Java Web Framework at Jfokus 2011
PDF
Play framework
PDF
Play 2 pip
PDF
Deployment presentation
PDF
Devon 2011-f-4-improve your-javascript
NodeJS, CoffeeScript & Real-time Web
Towards a software ecosystem for java prolog interoperabilty
Java 7 Whats New(), Whats Next() from Oredev
Clojure for Java developers
Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...
Jruby synergy-of-ruby-and-java
Практики применения JRuby
Clojure made-simple - John Stevenson
Upgrading to Rails 3
Clojure Fundamentals Course For Beginners
What python can learn from java
Einführung in Node.js
RxJS101 - What you need to know to get started with RxJS tomorrow
The Mayans Lost Guide to RxJava on Android
I know why your Java is slow
JRuby + Rails = Awesome Java Web Framework at Jfokus 2011
Play framework
Play 2 pip
Deployment presentation
Devon 2011-f-4-improve your-javascript
Ad

Recently uploaded (20)

PDF
NewMind AI Weekly Chronicles – August ’25 Week III
PPTX
Final SEM Unit 1 for mit wpu at pune .pptx
PDF
STKI Israel Market Study 2025 version august
PDF
Produktkatalog für HOBO Datenlogger, Wetterstationen, Sensoren, Software und ...
PDF
From MVP to Full-Scale Product A Startup’s Software Journey.pdf
PDF
Convolutional neural network based encoder-decoder for efficient real-time ob...
PDF
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
PPTX
Microsoft Excel 365/2024 Beginner's training
PDF
TrustArc Webinar - Click, Consent, Trust: Winning the Privacy Game
PPTX
Modernising the Digital Integration Hub
PDF
Hybrid horned lizard optimization algorithm-aquila optimizer for DC motor
PPTX
Custom Battery Pack Design Considerations for Performance and Safety
PPTX
Chapter 5: Probability Theory and Statistics
PDF
The influence of sentiment analysis in enhancing early warning system model f...
PDF
1 - Historical Antecedents, Social Consideration.pdf
PDF
sustainability-14-14877-v2.pddhzftheheeeee
PDF
Getting started with AI Agents and Multi-Agent Systems
PDF
Architecture types and enterprise applications.pdf
PDF
Five Habits of High-Impact Board Members
PDF
Enhancing emotion recognition model for a student engagement use case through...
NewMind AI Weekly Chronicles – August ’25 Week III
Final SEM Unit 1 for mit wpu at pune .pptx
STKI Israel Market Study 2025 version august
Produktkatalog für HOBO Datenlogger, Wetterstationen, Sensoren, Software und ...
From MVP to Full-Scale Product A Startup’s Software Journey.pdf
Convolutional neural network based encoder-decoder for efficient real-time ob...
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
Microsoft Excel 365/2024 Beginner's training
TrustArc Webinar - Click, Consent, Trust: Winning the Privacy Game
Modernising the Digital Integration Hub
Hybrid horned lizard optimization algorithm-aquila optimizer for DC motor
Custom Battery Pack Design Considerations for Performance and Safety
Chapter 5: Probability Theory and Statistics
The influence of sentiment analysis in enhancing early warning system model f...
1 - Historical Antecedents, Social Consideration.pdf
sustainability-14-14877-v2.pddhzftheheeeee
Getting started with AI Agents and Multi-Agent Systems
Architecture types and enterprise applications.pdf
Five Habits of High-Impact Board Members
Enhancing emotion recognition model for a student engagement use case through...

Torquebox - O melhor dos dois mundos

  • 1. O melhor dos dois mundos Creative  Commons  BY-­SA  3.0 Saturday, July 23, 2011
  • 2. @abstractj Java há 12 anos, Ruby n00b TorqueBox Contributor Instrutor Caelum Saturday, July 23, 2011
  • 4. Java Come to the dark side Saturday, July 23, 2011
  • 6. JAXR Java-FX JAXP JSTL StAX JME JDOM JVM JAX-RPC EJB AWT JMX Swing EAR Struts JAAS JCP JavaBean NPE Spring JAX-WS ENTERPRISE RMI JSE JNI JEE SOA NIO JSP JSF JAXB WAR JNDI JDO JAX-RS JPQL EJBQL JAF POJO JRE Saturday, July 23, 2011
  • 10. JBoss Tomcat + Infinispan + HornetQ + Quartz + Clustering Saturday, July 23, 2011
  • 12. Scala Clojure Python JVM Ruby JavaScript Groovy Saturday, July 23, 2011
  • 13. Ruby Mais expressiva que Java Saturday, July 23, 2011
  • 15. JRuby Java + Ruby Saturday, July 23, 2011
  • 16. “You get true multithreading that can use all your computer’s cores from one process, plus a virtual machine that’s been tuned for a decade and a half.” Using JRuby - Bringing Ruby to Java Saturday, July 23, 2011
  • 17. TorqueBox “The power of JBoss with the expressiveness of Ruby” Jim Crossley - MagicRuby Conference Saturday, July 23, 2011
  • 19. Instalação TorqueBox do zero Saturday, July 23, 2011
  • 20. ➜ jruby -S gem install torquebox torquebox-capistrano-support Saturday, July 23, 2011
  • 21. ➜ wget http://torquebox.org/builds/LATEST/torquebox-dist- bin.zip ➜ unzip torquebox-dist-bin.zip ➜ export TORQUEBOX_HOME=$PWD/torquebox-1.x ➜ export JBOSS_HOME=$TORQUEBOX_HOME/jboss ➜ export JRUBY_HOME=$TORQUEBOX_HOME/jruby ➜ export PATH=$JRUBY_HOME/bin:$PATH Saturday, July 23, 2011
  • 22. Estrutura Diretórios do TorqueBox Saturday, July 23, 2011
  • 23. Rails rails new bazinga -m $TORQUEBOX_HOME/share/rails/template.rb Saturday, July 23, 2011
  • 24. Rake tasks rake torquebox:deploy rake torquebox:undeploy rake torquebox:run Saturday, July 23, 2011
  • 25. Deployment Make knobs, not WAR! Saturday, July 23, 2011
  • 26. bazinga-knob.yml application: root: /home/bruno/app/bazinga env: development Saturday, July 23, 2011
  • 27. Scheduling Agendamento de Jobs Saturday, July 23, 2011
  • 28. ../app/jobs class JobDemo def initialize #Codigo de inicializacao end def run # O que você quer executar end end Saturday, July 23, 2011
  • 29. ../config/torquebox.yml jobs: sync_agenda: job: JobDemo cron: '0 0 12 * * ?' end Saturday, July 23, 2011
  • 30. Mensageria Java Messaging Service + HornetQ Saturday, July 23, 2011
  • 31. Tasks class EmailerTask < TorqueBox::Messaging::Task def send_welcome(payload) to = "#{payload[:name]} <#{payload[:address]}>" # send welcome email to the user end end Saturday, July 23, 2011
  • 32. Tasks class UserController < ApplicationController def register user = User.new(params[:user]) EmailerTask.async(:send_welcome, :address => user.email, :name => user.name) end end Saturday, July 23, 2011
  • 33. messaging.yml /topics/print: PrintHandler /queues/students: PrintHandler: config: color: true Saturday, July 23, 2011
  • 34. Processors include TorqueBox::Messaging class PrintHandler < MessageProcessor   def on_message(body)     puts "Processing #{body} of #{message}"   end   def configure(opts)     @color = opts['color']   end end Saturday, July 23, 2011
  • 35. Queues include TorqueBox req = Messaging::Queue.new '/queues/questions' res = Messaging::Queue.new '/queues/answers'   Thread.new do   req.publish "What time is it?"   puts res.receive( :timeout => 1000 ) end   puts req.receive res.publish Time.now Saturday, July 23, 2011
  • 37. class BazingaService def initialize @queue = Messaging::Queue.new(“bazinga”) end def start @queue.publish “Testing” end def stop # O que fazer quando o serviço receber um stop end end Saturday, July 23, 2011
  • 38. CDI - Simplificado Injeção de dependências Saturday, July 23, 2011
  • 39. Java package com.gurusp; public class Bazinga { //gets e sets public void say(String message) { // Execução do método } } Deploy do jar na aplicação app/ models/ views/ controllers/ lib/bazinga.jar Saturday, July 23, 2011
  • 40. Ruby class BazingaController < ApplicationController include TorqueBox::Injectors def create bazinga = inject(com.gurusp.Bazinga ) bazinga.say “Ruby is for Java” end end Saturday, July 23, 2011
  • 41. Caching class BeersController < ApplicationController caches_action :most_popular, :expires_in => 30.seconds def most_popular @popular_beers = Beer.most_popular(:limit => 25) end end Saturday, July 23, 2011
  • 43. Clustering ➜ $JBOSS_HOME/bin/run.sh -c all Saturday, July 23, 2011
  • 46. Comunidade irc.freenode.net #torquebox http://torquebox.org http://github.com/torquebox twitter: @torquebox Saturday, July 23, 2011
  • 47. Obrigado! @abstractj Creative  Commons  BY-­SA  3.0 Saturday, July 23, 2011

Editor's Notes

  • #2: Experi&amp;#xEA;ncia com TorqueBox\nMotiva&amp;#xE7;&amp;#xF5;es\nMostrar um pouco como funciona\n
  • #3: non experient\nveio a pedido do vinny e rinaldi pra ensinar jsf pra voces\nexperiencia real de ter que juntar os dois mundos\n
  • #4: \n
  • #5: Surgiu em 1995 e causa medo at&amp;#xE9; hoje\nM&amp;#xE9;rito da Burocracia\nmito/medo de que Java &amp;#xE9; dificil\n
  • #6: +5 anos de experi&amp;#xEA;ncia pra decorar acr&amp;#xF4;nimos\n
  • #7: +5 anos de experi&amp;#xEA;ncia pra decorar acr&amp;#xF4;nimos\n
  • #8: +5 anos de experi&amp;#xEA;ncia pra decorar acr&amp;#xF4;nimos\n
  • #9: +5 anos de experi&amp;#xEA;ncia pra decorar acr&amp;#xF4;nimos\n
  • #10: +5 anos de experi&amp;#xEA;ncia pra decorar acr&amp;#xF4;nimos\n
  • #11: +5 anos de experi&amp;#xEA;ncia pra decorar acr&amp;#xF4;nimos\n
  • #12: +5 anos de experi&amp;#xEA;ncia pra decorar acr&amp;#xF4;nimos\n
  • #13: +5 anos de experi&amp;#xEA;ncia pra decorar acr&amp;#xF4;nimos\n
  • #14: +5 anos de experi&amp;#xEA;ncia pra decorar acr&amp;#xF4;nimos\n
  • #15: +5 anos de experi&amp;#xEA;ncia pra decorar acr&amp;#xF4;nimos\n
  • #16: +5 anos de experi&amp;#xEA;ncia pra decorar acr&amp;#xF4;nimos\n
  • #17: +5 anos de experi&amp;#xEA;ncia pra decorar acr&amp;#xF4;nimos\n
  • #18: +5 anos de experi&amp;#xEA;ncia pra decorar acr&amp;#xF4;nimos\n
  • #19: +5 anos de experi&amp;#xEA;ncia pra decorar acr&amp;#xF4;nimos\n
  • #20: +5 anos de experi&amp;#xEA;ncia pra decorar acr&amp;#xF4;nimos\n
  • #21: +5 anos de experi&amp;#xEA;ncia pra decorar acr&amp;#xF4;nimos\n
  • #22: +5 anos de experi&amp;#xEA;ncia pra decorar acr&amp;#xF4;nimos\n
  • #23: +5 anos de experi&amp;#xEA;ncia pra decorar acr&amp;#xF4;nimos\n
  • #24: +5 anos de experi&amp;#xEA;ncia pra decorar acr&amp;#xF4;nimos\n
  • #25: +5 anos de experi&amp;#xEA;ncia pra decorar acr&amp;#xF4;nimos\n
  • #26: +5 anos de experi&amp;#xEA;ncia pra decorar acr&amp;#xF4;nimos\n
  • #27: +5 anos de experi&amp;#xEA;ncia pra decorar acr&amp;#xF4;nimos\n
  • #28: +5 anos de experi&amp;#xEA;ncia pra decorar acr&amp;#xF4;nimos\n
  • #29: +5 anos de experi&amp;#xEA;ncia pra decorar acr&amp;#xF4;nimos\n
  • #30: +5 anos de experi&amp;#xEA;ncia pra decorar acr&amp;#xF4;nimos\n
  • #31: +5 anos de experi&amp;#xEA;ncia pra decorar acr&amp;#xF4;nimos\n
  • #32: +5 anos de experi&amp;#xEA;ncia pra decorar acr&amp;#xF4;nimos\n
  • #33: +5 anos de experi&amp;#xEA;ncia pra decorar acr&amp;#xF4;nimos\n
  • #34: +5 anos de experi&amp;#xEA;ncia pra decorar acr&amp;#xF4;nimos\n
  • #35: +5 anos de experi&amp;#xEA;ncia pra decorar acr&amp;#xF4;nimos\n
  • #36: +5 anos de experi&amp;#xEA;ncia pra decorar acr&amp;#xF4;nimos\n
  • #37: +5 anos de experi&amp;#xEA;ncia pra decorar acr&amp;#xF4;nimos\n
  • #38: +5 anos de experi&amp;#xEA;ncia pra decorar acr&amp;#xF4;nimos\n
  • #39: +5 anos de experi&amp;#xEA;ncia pra decorar acr&amp;#xF4;nimos\n
  • #40: +5 anos de experi&amp;#xEA;ncia pra decorar acr&amp;#xF4;nimos\n
  • #41: +5 anos de experi&amp;#xEA;ncia pra decorar acr&amp;#xF4;nimos\n
  • #42: +5 anos de experi&amp;#xEA;ncia pra decorar acr&amp;#xF4;nimos\n
  • #43: +5 anos de experi&amp;#xEA;ncia pra decorar acr&amp;#xF4;nimos\n
  • #44: +5 anos de experi&amp;#xEA;ncia pra decorar acr&amp;#xF4;nimos\n
  • #45: \n
  • #46: \n
  • #47: WAS, glassfish, jboss. Necessidade de subir app java no mundo corp\n
  • #48: Enterprise the good parts. Apesar de todo buzzword existente no Java\nOs caras conseguiram juntar experiencia pra fazer coisas legais\nApresentar cada um\n
  • #49: \n
  • #50: Mesmo assim, come&amp;#xE7;aram a surgir v&amp;#xE1;rias linguagens em cima da vm\nAfinal, java nao resolve todos os problemas do mundo\nScala surgiu do descontentamento com java por exemplo\n
  • #51: Sintaxe mais clara, limpa. Expressiva\nProdutividade com rails\nBom, todo mundo aqui sabe que ruby &amp;#xE9; legal certo?\n
  • #52: Os problemas s&amp;#xE3;o os mesmos, resolvemos com nomes diferentes\nProblemas j&amp;#xE1; resolvidos: escalabilidade, mensageria, clustering, schedule...\nPorque n&amp;#xE3;o tirar proveito do java e do ruby?\n
  • #53: \n
  • #54: \n
  • #55: Criado em 2008\nPatrocinado pela RedHat\n
  • #56: \n
  • #57: \n
  • #58: \n
  • #59: \n
  • #60: \n
  • #61: \n
  • #62: \n
  • #63: \n
  • #64: \n
  • #65: \n
  • #66: \n
  • #67: O que &amp;#xE9; preciso fazer no servidor? NADA, ele nao exige redeploy\n
  • #68: \n
  • #69: Inspirado no DelayedJobs\n
  • #70: O que &amp;#xE9; preciso fazer no servidor? NADA, ele nao exige redeploy\n
  • #71: Inspirado no DelayedJobs\n
  • #72: \n
  • #73: \n
  • #74: \n
  • #75: O que &amp;#xE9; preciso fazer no servidor? NADA, ele nao exige redeploy\n
  • #76: \n
  • #77: \n
  • #78: \n
  • #79: \n
  • #80: \n
  • #81: \n
  • #82: \n
  • #83: \n
  • #84: \n
  • #85: \n