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
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
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
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
Experi&#xEA;ncia com TorqueBox\nMotiva&#xE7;&#xF5;es\nMostrar um pouco como funciona\n
non experient\nveio a pedido do vinny e rinaldi pra ensinar jsf pra voces\nexperiencia real de ter que juntar os dois mundos\n
\n
Surgiu em 1995 e causa medo at&#xE9; hoje\nM&#xE9;rito da Burocracia\nmito/medo de que Java &#xE9; dificil\n
+5 anos de experi&#xEA;ncia pra decorar acr&#xF4;nimos\n
+5 anos de experi&#xEA;ncia pra decorar acr&#xF4;nimos\n
+5 anos de experi&#xEA;ncia pra decorar acr&#xF4;nimos\n
+5 anos de experi&#xEA;ncia pra decorar acr&#xF4;nimos\n
+5 anos de experi&#xEA;ncia pra decorar acr&#xF4;nimos\n
+5 anos de experi&#xEA;ncia pra decorar acr&#xF4;nimos\n
+5 anos de experi&#xEA;ncia pra decorar acr&#xF4;nimos\n
+5 anos de experi&#xEA;ncia pra decorar acr&#xF4;nimos\n
+5 anos de experi&#xEA;ncia pra decorar acr&#xF4;nimos\n
+5 anos de experi&#xEA;ncia pra decorar acr&#xF4;nimos\n
+5 anos de experi&#xEA;ncia pra decorar acr&#xF4;nimos\n
+5 anos de experi&#xEA;ncia pra decorar acr&#xF4;nimos\n
+5 anos de experi&#xEA;ncia pra decorar acr&#xF4;nimos\n
+5 anos de experi&#xEA;ncia pra decorar acr&#xF4;nimos\n
+5 anos de experi&#xEA;ncia pra decorar acr&#xF4;nimos\n
+5 anos de experi&#xEA;ncia pra decorar acr&#xF4;nimos\n
+5 anos de experi&#xEA;ncia pra decorar acr&#xF4;nimos\n
+5 anos de experi&#xEA;ncia pra decorar acr&#xF4;nimos\n
+5 anos de experi&#xEA;ncia pra decorar acr&#xF4;nimos\n
+5 anos de experi&#xEA;ncia pra decorar acr&#xF4;nimos\n
+5 anos de experi&#xEA;ncia pra decorar acr&#xF4;nimos\n
+5 anos de experi&#xEA;ncia pra decorar acr&#xF4;nimos\n
+5 anos de experi&#xEA;ncia pra decorar acr&#xF4;nimos\n
+5 anos de experi&#xEA;ncia pra decorar acr&#xF4;nimos\n
+5 anos de experi&#xEA;ncia pra decorar acr&#xF4;nimos\n
+5 anos de experi&#xEA;ncia pra decorar acr&#xF4;nimos\n
+5 anos de experi&#xEA;ncia pra decorar acr&#xF4;nimos\n
+5 anos de experi&#xEA;ncia pra decorar acr&#xF4;nimos\n
+5 anos de experi&#xEA;ncia pra decorar acr&#xF4;nimos\n
+5 anos de experi&#xEA;ncia pra decorar acr&#xF4;nimos\n
+5 anos de experi&#xEA;ncia pra decorar acr&#xF4;nimos\n
+5 anos de experi&#xEA;ncia pra decorar acr&#xF4;nimos\n
+5 anos de experi&#xEA;ncia pra decorar acr&#xF4;nimos\n
+5 anos de experi&#xEA;ncia pra decorar acr&#xF4;nimos\n
+5 anos de experi&#xEA;ncia pra decorar acr&#xF4;nimos\n
+5 anos de experi&#xEA;ncia pra decorar acr&#xF4;nimos\n
+5 anos de experi&#xEA;ncia pra decorar acr&#xF4;nimos\n
+5 anos de experi&#xEA;ncia pra decorar acr&#xF4;nimos\n
+5 anos de experi&#xEA;ncia pra decorar acr&#xF4;nimos\n
\n
\n
WAS, glassfish, jboss. Necessidade de subir app java no mundo corp\n
Enterprise the good parts. Apesar de todo buzzword existente no Java\nOs caras conseguiram juntar experiencia pra fazer coisas legais\nApresentar cada um\n
\n
Mesmo assim, come&#xE7;aram a surgir v&#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
Sintaxe mais clara, limpa. Expressiva\nProdutividade com rails\nBom, todo mundo aqui sabe que ruby &#xE9; legal certo?\n
Os problemas s&#xE3;o os mesmos, resolvemos com nomes diferentes\nProblemas j&#xE1; resolvidos: escalabilidade, mensageria, clustering, schedule...\nPorque n&#xE3;o tirar proveito do java e do ruby?\n
\n
\n
Criado em 2008\nPatrocinado pela RedHat\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
O que &#xE9; preciso fazer no servidor? NADA, ele nao exige redeploy\n
\n
Inspirado no DelayedJobs\n
O que &#xE9; preciso fazer no servidor? NADA, ele nao exige redeploy\n
Inspirado no DelayedJobs\n
\n
\n
\n
O que &#xE9; preciso fazer no servidor? NADA, ele nao exige redeploy\n