torquebox - moc javy, piękno rubiego

90
TorqueBox Moc Javy – piękno Rubiego

Upload: marekgoldmann

Post on 15-Dec-2014

1.063 views

Category:

Technology


1 download

DESCRIPTION

 

TRANSCRIPT

Page 1: TorqueBox - moc Javy, piękno Rubiego

TorqueBoxMoc Javy – piękno Rubiego

Page 2: TorqueBox - moc Javy, piękno Rubiego

Marek.

Page 3: TorqueBox - moc Javy, piękno Rubiego
Page 4: TorqueBox - moc Javy, piękno Rubiego
Page 5: TorqueBox - moc Javy, piękno Rubiego

JBoss AS 7+

=

Page 6: TorqueBox - moc Javy, piękno Rubiego
Page 7: TorqueBox - moc Javy, piękno Rubiego
Page 8: TorqueBox - moc Javy, piękno Rubiego

No, do rzeczy panie!

Page 9: TorqueBox - moc Javy, piękno Rubiego

Dziś w menu:

Page 10: TorqueBox - moc Javy, piękno Rubiego

50 / 40 / 10

Page 11: TorqueBox - moc Javy, piękno Rubiego

Czym jest TorqueBox?

Page 12: TorqueBox - moc Javy, piękno Rubiego

Ruby i Java? Huh?

Page 13: TorqueBox - moc Javy, piękno Rubiego

DO RZECZY!

Page 14: TorqueBox - moc Javy, piękno Rubiego
Page 15: TorqueBox - moc Javy, piękno Rubiego

Cel.

Page 16: TorqueBox - moc Javy, piękno Rubiego

Web: Rails, Sinatra, Rack.

Page 17: TorqueBox - moc Javy, piękno Rubiego

Ponadto: wiadomości,

zadania, usługi, [...].

Page 18: TorqueBox - moc Javy, piękno Rubiego

Brzmi znajomo?

Page 19: TorqueBox - moc Javy, piękno Rubiego

Java już to ma, wykorzystajmy to!

Page 20: TorqueBox - moc Javy, piękno Rubiego

Randkowanie JBoss AS oraz

Ruby.

Page 21: TorqueBox - moc Javy, piękno Rubiego
Page 22: TorqueBox - moc Javy, piękno Rubiego

Ale dlaczego Ruby?

Page 23: TorqueBox - moc Javy, piękno Rubiego

Bob lubi Rubiego.

Page 24: TorqueBox - moc Javy, piękno Rubiego

Dynamiczny.

Page 25: TorqueBox - moc Javy, piękno Rubiego

Brak kompilacji.

Page 26: TorqueBox - moc Javy, piękno Rubiego

Liberalny.

Page 27: TorqueBox - moc Javy, piękno Rubiego

Zwięzły.

Page 28: TorqueBox - moc Javy, piękno Rubiego

Set<Person> people = new HashSet<Person>();

for (Team each : teams) { people.addAll(each.getMembers());}

for (Person each : people) { each.promote();}

com/foo/Anything.java

Page 29: TorqueBox - moc Javy, piękno Rubiego

teams. collect(&:members). flatten.uniq.each &:promote!

anything.rb

Page 30: TorqueBox - moc Javy, piękno Rubiego

Wporzo, ale co z wydajnością?

Page 31: TorqueBox - moc Javy, piękno Rubiego

JRuby FTW!

Page 32: TorqueBox - moc Javy, piękno Rubiego

Bardzo szybkie środowisko.

Page 33: TorqueBox - moc Javy, piękno Rubiego

Prawdziwe wątki.

Page 34: TorqueBox - moc Javy, piękno Rubiego

Biblioteki Javy, za free.

Page 35: TorqueBox - moc Javy, piękno Rubiego
Page 36: TorqueBox - moc Javy, piękno Rubiego

TB 1.x – JBoss AS 6TB 2.x – JBoss AS 7

Page 37: TorqueBox - moc Javy, piękno Rubiego

Instalacja.

Page 38: TorqueBox - moc Javy, piękno Rubiego

$ wget http://torquebox.org/builds/LATEST/torquebox-dist-bin.zip$ unzip -q torquebox-dist-bin.zip

$ export TORQUEBOX_HOME=$PWD/torquebox-1*$ export JBOSS_HOME=$TORQUEBOX_HOME/jboss$ export JRUBY_HOME=$TORQUEBOX_HOME/jruby$ export PATH=$JRUBY_HOME/bin:$PATH

Page 39: TorqueBox - moc Javy, piękno Rubiego

Zbyt skomplikowane?

Page 41: TorqueBox - moc Javy, piękno Rubiego

Tak, na Windowsie również.

Page 42: TorqueBox - moc Javy, piękno Rubiego

Zainstalowane, co dalej?

Page 43: TorqueBox - moc Javy, piękno Rubiego

Aplikacja webowa, powiedzmy Rails.

Page 44: TorqueBox - moc Javy, piękno Rubiego

$ rails new app -m \ $TORQUEBOX_HOME/share/rails/template.rb$ cd app$ rake torquebox:deploy[‘/app’]

http://localhost:8080/app/

Page 45: TorqueBox - moc Javy, piękno Rubiego

To może jakiś kod co działa?

Page 46: TorqueBox - moc Javy, piękno Rubiego

$ rails g scaffold Coffee \ name:string description:text$ rake db:migrate

http://localhost:8080/app/coffees/

Page 47: TorqueBox - moc Javy, piękno Rubiego

Demo!

Page 48: TorqueBox - moc Javy, piękno Rubiego

Nie takie rzeczy widziałem!

Page 49: TorqueBox - moc Javy, piękno Rubiego

Integracja z Javą.

Page 50: TorqueBox - moc Javy, piękno Rubiego

class SomeController

def index session[:password] = 'sw0rdfish' end

end

Ruby

Page 51: TorqueBox - moc Javy, piękno Rubiego

public class SomeServlet { public void doGet(HttpServletRequest req, HttpServletResponse resp) { request.getSession().getValue("password"); }}

Java

Page 52: TorqueBox - moc Javy, piękno Rubiego

Klastrowanie?

Page 53: TorqueBox - moc Javy, piękno Rubiego

Sklastruj JBoss’a!

Page 54: TorqueBox - moc Javy, piękno Rubiego

mod_cluster

Page 55: TorqueBox - moc Javy, piękno Rubiego
Page 56: TorqueBox - moc Javy, piękno Rubiego

Dynamiczna konfiguracja!

Page 57: TorqueBox - moc Javy, piękno Rubiego

Koniec o aplikacjach webowych.

Page 58: TorqueBox - moc Javy, piękno Rubiego

Zaplanowane zadania.

Page 59: TorqueBox - moc Javy, piękno Rubiego

class NewsletterSender def run subscriptions = Subscription.find(:all) subscriptions.each do |e| send_newsletter(e) end endend

app/jobs/newsletter_sender.rb

Page 60: TorqueBox - moc Javy, piękno Rubiego

jobs: monthly_newsletter: description: first of month job: NewsletterSender cron: ‘0 0 0 1 * ?’

config/torquebox.yml

Page 61: TorqueBox - moc Javy, piękno Rubiego

Messaging.

Page 62: TorqueBox - moc Javy, piękno Rubiego

Zadania w tle.

Page 63: TorqueBox - moc Javy, piękno Rubiego

class Something def foo end

def bar endend

Page 64: TorqueBox - moc Javy, piękno Rubiego

something = Something.newsomething.foosomething.bar

Page 65: TorqueBox - moc Javy, piękno Rubiego

class Something include TorqueBox::Messaging::Backgroundable

def foo end

def bar endend

Page 66: TorqueBox - moc Javy, piękno Rubiego

something = Something.newsomething.background.foosomething.bar

Page 67: TorqueBox - moc Javy, piękno Rubiego

class Something include TorqueBox::Messaging::Backgroundable always_background :foo

def foo end

def bar endend

Page 68: TorqueBox - moc Javy, piękno Rubiego

something = Something.newsomething.foosomething.bar

Page 69: TorqueBox - moc Javy, piękno Rubiego

Kolejki.

Page 70: TorqueBox - moc Javy, piękno Rubiego

queues: /queues/questions /queues/answerstopics: /topics/new_accounts /topics/notifications

config/torquebox.yml

Page 71: TorqueBox - moc Javy, piękno Rubiego

messaging: /topics/print: PrintHandler: color: ‘red’ /queues/popular: AdultObserver: filter: "age >= 18" concurrency: 5

config/torquebox.yml

Page 72: TorqueBox - moc Javy, piękno Rubiego

include TorqueBox

queue = Messaging::Queue.new '/queues/foo'queue.create

...

queue.destroy

Page 73: TorqueBox - moc Javy, piękno Rubiego

include TorqueBox::Messaging

class PrintHandler < MessageProcessor def initialize(opts) @color = opts['color'] end def on_message(body) puts “#{body} in #{@color}” endend

config/torquebox.yml

Page 74: TorqueBox - moc Javy, piękno Rubiego

Usługi.

Page 75: TorqueBox - moc Javy, piękno Rubiego

Nie-webowe, długie demony.

Page 76: TorqueBox - moc Javy, piękno Rubiego

class MyService def initialize(opts={}) @queue = Messaging::Queue.new(opts[:queue]) end def start Thread.new { run } end def stop @done = true end def run until @done @queue.publish(Time.now) sleep(1) end end end app/processors/my_service.rb

Page 77: TorqueBox - moc Javy, piękno Rubiego

Cacheowanie.

Page 78: TorqueBox - moc Javy, piękno Rubiego

Wstrzykiwanie.

Page 79: TorqueBox - moc Javy, piękno Rubiego

package com.mycorp;

@ApplicationScopedclass Something { @Inject private Else else;

public void print(String what) { # blah }}

@ApplicationScopedclass Else {

}

Page 80: TorqueBox - moc Javy, piękno Rubiego

class MyService include TorqueBox::Injectors

def initialize(opts={}) @thing = inject(Java::com.mycorp.Something) @thing.print(‘Marek’) endend

Page 81: TorqueBox - moc Javy, piękno Rubiego

CDI to tylko przykład: kolejki, tematy, heroina,

inne rzeczy.

Page 82: TorqueBox - moc Javy, piękno Rubiego

Drugs are bad, m’kay?

Page 83: TorqueBox - moc Javy, piękno Rubiego

inject_topic( "/topics/questions" )inject_queue( "/queues/answers" )inject_namig( "java:comp/env/jdbc/myDS )

Page 84: TorqueBox - moc Javy, piękno Rubiego

Demo!

Page 85: TorqueBox - moc Javy, piękno Rubiego

JBoss AS 7

TorqueBox

Baza danych

Firefox

Kolejka JMS

Twitter Service

Twitter

JBoss AS 7

TorqueBox

RailsZadaniaKonsument kolejki

CDI

JPA 2.0

Page 86: TorqueBox - moc Javy, piękno Rubiego

OK, fajnie, ale jak to jest wydajne?

Page 87: TorqueBox - moc Javy, piękno Rubiego
Page 88: TorqueBox - moc Javy, piękno Rubiego
Page 90: TorqueBox - moc Javy, piękno Rubiego

Dzięki.

Nie zapomnij o naklejkach!