4. front-end back-end
homepage service
profile service
inbox service
5. Existing full-featured
? custom Java web
application framework
JRuby
using Spring MVC and
a custom JSP compiler
deployed to Tomcat
6. Tomcat < Servlet API
Request
- production webapps
deployed as wars
7. Tomcat < Servlet API
Custom LinkedIn Filters + Servlet < Spring MVC
Request - security
- authentication
- tracking
- service layer
8. Tomcat < Servlet API
Custom LinkedIn Filters + Servlet < Spring MVC
SiteMesh
Request - 3rd party open source library
- header, footer control
9. Tomcat < Servlet API
Custom LinkedIn Filters + Servlet < Spring MVC
SiteMesh
Request JRuby-Rack
- bridge between Servlet and Rack
- customized LinkedIn Rack servlet
for special case error handling
- control transferred via named
dispatcher
10. Tomcat < Servlet API
Custom LinkedIn Filters + Servlet < Spring MVC
SiteMesh
Request JRuby-Rack
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
11. Tomcat < Servlet API
Custom LinkedIn Filters + Servlet < Spring MVC
SiteMesh
Request JRuby-Rack
Sinatra
get ‘/hello’ do
erb :layout
end
<html>
<head>
<title>Hi</title>
</head>
<body>
Hello from JRuby!
</body>
</html>
12. Tomcat < Servlet API
Custom LinkedIn Filters + Servlet < Spring MVC
SiteMesh
Request JRuby-Rack
Sinatra
get ‘/hello’ do
erb :layout
end
<html>
<head>
<title>Hi</title>
</head>
<body>
Hello from JRuby!
</body>
</html>
Response
14. The Java virtual machine knows nothing of the Java
programming language, only of a particular binary format,
the class file format. A class file contains Java virtual
machine instructions (or bytecodes) and a symbol table, as
well as other ancillary information.
-- JVM Specification