baq haidri j rubyifying linked in's front-end
TRANSCRIPT
JRubifying LinkedIn’s Front-end
http://www.linkedin.com/in/baquerahttp://sna-projects/sna
[“iterate rapidly”, “re-use code”, “jvm”, “hire ruby people”, “have fun”].each { |important_thing| important_thing.capitalize!}
require ‘background’
homepage
profile
inbox
service
service
service
front-end back-end
JRuby
Existing full-featuredcustom Java web application frameworkusing Spring MVC anda custom JSP compilerdeployed to Tomcat
?
Tomcat < Servlet API
Request- production webapps deployed as wars
Tomcat < Servlet API
Request
Custom LinkedIn Filters + Servlet < Spring MVC
- security- authentication- tracking- service layer
Tomcat < Servlet API
Request
Custom LinkedIn Filters + Servlet < Spring MVCSiteMesh
- 3rd party open source library- header, footer control
Tomcat < Servlet API
Request
Custom LinkedIn Filters + Servlet < Spring MVCSiteMesh
JRuby-Rack- bridge between Servlet and Rack- customized LinkedIn Rack servlet for special case error handling- control transferred via named dispatcher
SiteMesh
Tomcat < Servlet API
Request
Custom LinkedIn Filters + Servlet < Spring MVCSiteMesh
JRuby-RackSiteMesh
Sinatra- custom service DSL for making asynchronous backend calls (based on protobufs)- custom Sinatra extensions that wrap Java framework fxnality:---> url generation---> logging---> authentication---> resource formatting
Tomcat < Servlet API
Request
Custom LinkedIn Filters + Servlet < Spring MVCSiteMesh
JRuby-RackSiteMesh
Sinatraget ‘/hello’ do
erb :layoutend
<html> <head>
<title>Hi</title></head><body>
Hello from JRuby!</body>
</html>
Tomcat < Servlet API
Request
Custom LinkedIn Filters + Servlet < Spring MVCSiteMesh
JRuby-RackSiteMesh
Sinatraget ‘/hello’ do
erb :layoutend
<html> <head>
<title>Hi</title></head><body>
Hello from JRuby!</body>
</html> Response
require ‘demo’