TorqueBox Moc Javy – piękno Rubiego
Marek.
JBoss AS 7    +    =
No, do rzeczy panie!
Dziś w menu:
50 / 40 / 10
Czym jestTorqueBox?
Ruby i Java? Huh?
DO RZECZY!
Cel.
Web: Rails, Sinatra,      Rack.
Ponadto:   wiadomości,zadania, usługi, [...].
Brzmiznajomo?
Java już to ma,wykorzystajmy to!
RandkowanieJBoss AS oraz    Ruby.
Ale dlaczego Ruby?
Bob lubi Rubiego.
Dynamiczny.
Brak kompilacji.
Liberalny.
Zwięzły.
Set<Person> people = new HashSet<Person>();for (Team each : teams) {  people.addAll(each.getMembers());}for (Person each :...
teams.   collect(&:members).      flatten.uniq.each &:promote!                                     anything.rb
Wporzo, ale co z wydajnością?
JRuby FTW!
Bardzo szybkie środowisko.
Prawdziwe wątki.
Biblioteki Javy, za       free.
TB 1.x – JBoss AS 6TB 2.x – JBoss AS 7
Instalacja.
$ wget http://torquebox.org/builds/LATEST/torquebox-dist-bin.zip$ unzip -q torquebox-dist-bin.zip$   export   TORQUEBOX_HO...
Zbytskomplikowane?
$ gem install torquebox-server --pre   --source http://torquebox.org/2x/builds/LATEST/gem-repo/$ torquebox run
Tak, na Windowsie     również.
Zainstalowane, co      dalej?
Aplikacja webowa,powiedzmy Rails.
$ rails new app -m   $TORQUEBOX_HOME/share/rails/template.rb$ cd app$ rake torquebox:deploy[‘/app’]http://localhost:8080/a...
To może jakiś kod   co działa?
$ rails g scaffold Coffee   name:string description:text$ rake db:migratehttp://localhost:8080/app/coffees/
Demo!
Nie takie rzeczy  widziałem!
Integracja z Javą.
Rubyclass SomeController  def index    session[:password] = sw0rdfish  endend
Javapublic class SomeServlet {  public void doGet(HttpServletRequest req,                    HttpServletResponse resp) {  ...
Klastrowanie?
Sklastruj JBoss’a!
mod_cluster
Dynamicznakonfiguracja!
Koniec oaplikacjachwebowych.
Zaplanowane  zadania.
class NewsletterSender    def run     subscriptions = Subscription.find(:all)     subscriptions.each do |e|       send_new...
jobs:  monthly_newsletter:    description: first of month    job: NewsletterSender    cron: ‘0 0 0 1 * ?’                 ...
Messaging.
Zadania w tle.
class Something  def foo  end  def bar  endend
something = Something.newsomething.foosomething.bar
class Something  include TorqueBox::Messaging::Backgroundable  def foo  end  def bar  endend
something = Something.newsomething.background.foosomething.bar
class Something  include TorqueBox::Messaging::Backgroundable  always_background :foo  def foo  end  def bar  endend
something = Something.newsomething.foosomething.bar
Kolejki.
queues:  /queues/questions  /queues/answerstopics:  /topics/new_accounts  /topics/notifications                          c...
messaging:  /topics/print:    PrintHandler:      color: ‘red’  /queues/popular:    AdultObserver:      filter: "age >= 18"...
include TorqueBoxqueue = Messaging::Queue.new /queues/fooqueue.create...queue.destroy
include TorqueBox::Messagingclass PrintHandler < MessageProcessor  def initialize(opts)    @color = opts[color]  end  def ...
Usługi.
Nie-webowe, długie     demony.
class MyService  def initialize(opts={})    @queue = Messaging::Queue.new(opts[:queue])  end  def start    Thread.new { ru...
Cacheowanie.
Wstrzykiwanie.
package com.mycorp;@ApplicationScopedclass Something {  @Inject  private Else else;    public void print(String what) {   ...
class MyService  include TorqueBox::Injectors  def initialize(opts={})    @thing = inject(Java::com.mycorp.Something)    @...
CDI to tylkoprzykład: kolejki,tematy, heroina,  inne rzeczy.
Drugs are bad,   m’kay?
inject_topic( "/topics/questions" )inject_queue( "/queues/answers" )inject_namig( "java:comp/env/jdbc/myDS )
Demo!
FirefoxTwitter          Twitter Service                     TorqueBox                                  Konsument          ...
OK, fajnie, ale jak to  jest wydajne?
http://torquebox.org/http://github.com/torqueboxhttp://github.com/goldmann/confitura-2011-torquebox-demoIRC: #torquebox on...
Dzięki.Nie zapomnij o naklejkach!
TorqueBox - moc Javy, piękno Rubiego
TorqueBox - moc Javy, piękno Rubiego
TorqueBox - moc Javy, piękno Rubiego
TorqueBox - moc Javy, piękno Rubiego
TorqueBox - moc Javy, piękno Rubiego
TorqueBox - moc Javy, piękno Rubiego
TorqueBox - moc Javy, piękno Rubiego
TorqueBox - moc Javy, piękno Rubiego
TorqueBox - moc Javy, piękno Rubiego
TorqueBox - moc Javy, piękno Rubiego
Upcoming SlideShare
Loading in...5
×

TorqueBox - moc Javy, piękno Rubiego

1,094

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,094
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

TorqueBox - moc Javy, piękno Rubiego

  1. 1. TorqueBox Moc Javy – piękno Rubiego
  2. 2. Marek.
  3. 3. JBoss AS 7 + =
  4. 4. No, do rzeczy panie!
  5. 5. Dziś w menu:
  6. 6. 50 / 40 / 10
  7. 7. Czym jestTorqueBox?
  8. 8. Ruby i Java? Huh?
  9. 9. DO RZECZY!
  10. 10. Cel.
  11. 11. Web: Rails, Sinatra, Rack.
  12. 12. Ponadto: wiadomości,zadania, usługi, [...].
  13. 13. Brzmiznajomo?
  14. 14. Java już to ma,wykorzystajmy to!
  15. 15. RandkowanieJBoss AS oraz Ruby.
  16. 16. Ale dlaczego Ruby?
  17. 17. Bob lubi Rubiego.
  18. 18. Dynamiczny.
  19. 19. Brak kompilacji.
  20. 20. Liberalny.
  21. 21. Zwięzły.
  22. 22. Set<Person> people = new HashSet<Person>();for (Team each : teams) { people.addAll(each.getMembers());}for (Person each : people) { each.promote();} com/foo/Anything.java
  23. 23. teams. collect(&:members). flatten.uniq.each &:promote! anything.rb
  24. 24. Wporzo, ale co z wydajnością?
  25. 25. JRuby FTW!
  26. 26. Bardzo szybkie środowisko.
  27. 27. Prawdziwe wątki.
  28. 28. Biblioteki Javy, za free.
  29. 29. TB 1.x – JBoss AS 6TB 2.x – JBoss AS 7
  30. 30. Instalacja.
  31. 31. $ 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
  32. 32. Zbytskomplikowane?
  33. 33. $ gem install torquebox-server --pre --source http://torquebox.org/2x/builds/LATEST/gem-repo/$ torquebox run
  34. 34. Tak, na Windowsie również.
  35. 35. Zainstalowane, co dalej?
  36. 36. Aplikacja webowa,powiedzmy Rails.
  37. 37. $ rails new app -m $TORQUEBOX_HOME/share/rails/template.rb$ cd app$ rake torquebox:deploy[‘/app’]http://localhost:8080/app/
  38. 38. To może jakiś kod co działa?
  39. 39. $ rails g scaffold Coffee name:string description:text$ rake db:migratehttp://localhost:8080/app/coffees/
  40. 40. Demo!
  41. 41. Nie takie rzeczy widziałem!
  42. 42. Integracja z Javą.
  43. 43. Rubyclass SomeController def index session[:password] = sw0rdfish endend
  44. 44. Javapublic class SomeServlet { public void doGet(HttpServletRequest req, HttpServletResponse resp) { request.getSession().getValue("password"); }}
  45. 45. Klastrowanie?
  46. 46. Sklastruj JBoss’a!
  47. 47. mod_cluster
  48. 48. Dynamicznakonfiguracja!
  49. 49. Koniec oaplikacjachwebowych.
  50. 50. Zaplanowane zadania.
  51. 51. class NewsletterSender def run subscriptions = Subscription.find(:all) subscriptions.each do |e| send_newsletter(e) end endend app/jobs/newsletter_sender.rb
  52. 52. jobs: monthly_newsletter: description: first of month job: NewsletterSender cron: ‘0 0 0 1 * ?’ config/torquebox.yml
  53. 53. Messaging.
  54. 54. Zadania w tle.
  55. 55. class Something def foo end def bar endend
  56. 56. something = Something.newsomething.foosomething.bar
  57. 57. class Something include TorqueBox::Messaging::Backgroundable def foo end def bar endend
  58. 58. something = Something.newsomething.background.foosomething.bar
  59. 59. class Something include TorqueBox::Messaging::Backgroundable always_background :foo def foo end def bar endend
  60. 60. something = Something.newsomething.foosomething.bar
  61. 61. Kolejki.
  62. 62. queues: /queues/questions /queues/answerstopics: /topics/new_accounts /topics/notifications config/torquebox.yml
  63. 63. messaging: /topics/print: PrintHandler: color: ‘red’ /queues/popular: AdultObserver: filter: "age >= 18" concurrency: 5 config/torquebox.yml
  64. 64. include TorqueBoxqueue = Messaging::Queue.new /queues/fooqueue.create...queue.destroy
  65. 65. include TorqueBox::Messagingclass PrintHandler < MessageProcessor def initialize(opts) @color = opts[color] end def on_message(body) puts “#{body} in #{@color}” endend config/torquebox.yml
  66. 66. Usługi.
  67. 67. Nie-webowe, długie demony.
  68. 68. 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 endend app/processors/my_service.rb
  69. 69. Cacheowanie.
  70. 70. Wstrzykiwanie.
  71. 71. package com.mycorp;@ApplicationScopedclass Something { @Inject private Else else; public void print(String what) { # blah }}@ApplicationScopedclass Else {}
  72. 72. class MyService include TorqueBox::Injectors def initialize(opts={}) @thing = inject(Java::com.mycorp.Something) @thing.print(‘Marek’) endend
  73. 73. CDI to tylkoprzykład: kolejki,tematy, heroina, inne rzeczy.
  74. 74. Drugs are bad, m’kay?
  75. 75. inject_topic( "/topics/questions" )inject_queue( "/queues/answers" )inject_namig( "java:comp/env/jdbc/myDS )
  76. 76. Demo!
  77. 77. FirefoxTwitter Twitter Service TorqueBox Konsument JBoss AS 7 Zadania Rails kolejki TorqueBox Kolejka JMS CDI JPA 2.0 JBoss AS 7 Baza danych
  78. 78. OK, fajnie, ale jak to jest wydajne?
  79. 79. http://torquebox.org/http://github.com/torqueboxhttp://github.com/goldmann/confitura-2011-torquebox-demoIRC: #torquebox on FreeNode@torquebox
  80. 80. Dzięki.Nie zapomnij o naklejkach!
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×