the polyglot future of jboss as - toby crawleyjboss web infinispan hornetq quartz picketlink rack...
TRANSCRIPT
![Page 1: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/1.jpg)
The Polyglot Future of JBoss AS
Toby CrawleyRed Hat, Inc.
![Page 2: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/2.jpg)
The Polyglot Future of JBoss AS
Toby CrawleyRed Hat, Inc.
Present
![Page 3: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/3.jpg)
Yours Truly• Senior SW Engineer at Red Hat• Core developer on TorqueBox &
Immutant• Member of Project:Odd• @tcrawley
![Page 4: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/4.jpg)
Agenda• intro• JBoss AS• JRuby & TorqueBox• Clojure & Immutant• crap, a demo• outro
![Page 5: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/5.jpg)
![Page 6: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/6.jpg)
JBoss AS 7• Low memory footprint• Modularized class loader isolation• Fast startup time• Performant• EE6
![Page 7: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/7.jpg)
“Java is a DSL for taking large XML files and converting them to stack traces”
Scott Bellware
![Page 8: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/8.jpg)
Goal
Leverage the AS as a platform to reduce some of the accidental complexity of your deployment
environment and allow you to use the best tool for the job.
![Page 9: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/9.jpg)
Goal
To make you more productive.
![Page 10: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/10.jpg)
Goal
To make you happy.
![Page 11: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/11.jpg)
![Page 12: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/12.jpg)
• Expressive• Dynamic typing• Less ceremony• Makes you feel more cleverer
Ruby
![Page 13: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/13.jpg)
Set<Person> people = new HashSet<Person>();
for ( Team each : teams ) { people.addAll( each.getMembers() );}
for ( Person each : people ) { each.promote();}
![Page 14: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/14.jpg)
teams. collect(&:members). flatten.uniq.each(&:promote!)
![Page 15: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/15.jpg)
JRuby• Real threads• Simple access to Java• Fastest Ruby implementation
![Page 16: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/16.jpg)
require 'java'
bar = org.projectodd.foo.Bar.newbar.a_value = 42bar.bazerize
![Page 17: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/17.jpg)
![Page 18: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/18.jpg)
TorqueBox is an Application Server for Ruby built on top of JBoss AS7
![Page 19: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/19.jpg)
TorqueBoxCore
TorqueBoxCore
Java Virtual Machine
Managed Services ContainerJRuby with JIT
Security
Transactions
JBoss Web
Infinispan
HornetQ
Quartz
PicketLink
Rack
Sinatra Rails
Daemons
WebSocketsSTOMP
Tasks
Jobs
MessageProcessors
POJO
Spring
REST
JMS
Servlet
JavaEE
Messaging
Cache
Ruby!APIs!/!Programming!Models Java!APIs!/!Programming!Models
Polyglot Injection
Java!Enterprise!ServicesJRuby!Component!Deployers!&!Gems
![Page 20: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/20.jpg)
Web
Supports any Rack framework (Rails, Sinata, Padrino, etc). Requests come in, responses go out. Works like you would expect...
![Page 21: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/21.jpg)
Web
...but no war required. Just point TorqueBox at the application root.
![Page 22: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/22.jpg)
Scheduled Jobs
Simple cron-like scheduling that shares your application's lifecycle.
![Page 23: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/23.jpg)
Scheduled Jobs
class TPSReportJob
def run # work happens here end
end
![Page 24: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/24.jpg)
Scheduled Jobs
TorqueBox.configure do
job TPSReportJob, :cron => '0 */5 * * * ?'
end
![Page 25: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/25.jpg)
Backgroundable
Asynchronous execution with a simple api. Shares your application's lifecycle.
![Page 26: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/26.jpg)
Backgroundableinclude TorqueBox::Messaging
class Userinclude Backgroundable
always_background :send_welcome
def send_welcome # slow email process end
end
![Page 27: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/27.jpg)
Messaging
Layered on top of JMS and HornetQ. Useful for decoupling or polyglot interop.
![Page 28: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/28.jpg)
Messaging
queue = inject( '/queue/morris_day' )
queue.publish( Time.now )
puts queue.receive
# Fri Dec 2 16:44:22 -0500 2011
![Page 29: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/29.jpg)
Messaginginclude TorqueBox::Messaging
class TheTime < MessageProcessor
def on_message(body) # What time is it?!? puts body end
end
![Page 30: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/30.jpg)
Messaging
TorqueBox.configure do
queue '/queue/morris_day' do processor TheTime
end
end
![Page 31: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/31.jpg)
Services
Long running daemons that share the application's lifecycle.
![Page 32: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/32.jpg)
Injection
aka Inversion of Control. Telling the container what you need and letting it wire things up.
![Page 33: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/33.jpg)
Distributed Transactions
True multi-resource distributed transactions.
![Page 34: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/34.jpg)
Things I Skipped• Built-in WebSockets• Simple clustering• Key/Value store via Infinispan (Caching)
![Page 35: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/35.jpg)
![Page 36: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/36.jpg)
Clojure• Modern Lisp for the JVM• Functional• Immutable data• Concise syntax• Nice Java integration
![Page 37: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/37.jpg)
Set<Person> people = new HashSet<Person>();
for ( Team each : teams ) { people.addAll( each.getMembers() );}
for ( Person each : people ) { each.promote();}
![Page 38: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/38.jpg)
(map promote! (set (extract :members teams)))
![Page 39: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/39.jpg)
(def extract mapcat)
(map promote! (set (extract :members teams)))
![Page 40: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/40.jpg)
(doto (org.projectodd.foo.Bar.) (.setAValue 42) (.bazerize))
![Page 41: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/41.jpg)
Immutant
![Page 42: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/42.jpg)
Immutant is an Application Server for Clojure being built on top of JBoss AS7
![Page 43: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/43.jpg)
Web
Supports Ring handlers. Works like you would expect. Requests come in, responses go out. Endpoints can be created dynamically.
![Page 44: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/44.jpg)
Web
(require '[immutant.web :as web])
(defn my-ring-handler [request] ;; process request here)
(web/start "/" my-ring-handler)...(web/stop "/")
![Page 45: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/45.jpg)
Messaging
Layered on top of JMS and HornetQ. Useful for decoupling or polyglot interop.
![Page 46: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/46.jpg)
Messaging(require '[immutant.messaging :as msg])
(def q "/queue/morris_day")
(msg/start q)
(msg/publish q (Date.))
(println (msg/receive q))
; #<Date Fri Dec 2 16:54:56 EST 2011>
![Page 47: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/47.jpg)
Messaging
(msg/listen "/queue/morris_day" (fn [body] ;; What time is it?!? (println body)))
![Page 48: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/48.jpg)
Daemons
Long running daemons that share the application's lifecycle.
![Page 49: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/49.jpg)
Coming Soon• Scheduled Jobs• Distributed futures• Distributed state• Multi-resource transactions• Injection• You tell us!
![Page 50: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/50.jpg)
http://www.flickr.com/photos/-lucaslove/5084345964/
![Page 52: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/52.jpg)
Clojuretwitter
queue
daemon
Ruby
processor
Java
TweetClassifier
topicwebsockets you!
and you!
and you?
![Page 53: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/53.jpg)
Language LOC
Ruby ~110
Clojure ~50
Java ~30
Javascript ~25
![Page 54: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/54.jpg)
Availability• TorqueBox: 2.0.0.beta1 released today• Immutant: incremental builds available
![Page 55: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/55.jpg)
Availability• TorqueBox: 2.0.0.beta1 released today• Immutant: incremental builds available
Monday
![Page 57: The Polyglot Future of JBoss AS - Toby CrawleyJBoss Web Infinispan HornetQ Quartz PicketLink Rack Sinatra Rails Daemons WebSockets STOMP Tasks Jobs Message Processors POJO Spring REST](https://reader033.vdocument.in/reader033/viewer/2022051901/5ff0920c36280b0db04c3047/html5/thumbnails/57.jpg)
Resources• http://torquebox.org• #torquebox on freenode• @torquebox• http://immutant.org• #immutant on freenode• @immutants