The document discusses choosing technologies for dynamic web applications. It suggests using the Java Virtual Machine (JVM) as a safe starting point due to its libraries and frameworks. It demonstrates how to generate bytecode for new languages to run on the JVM. The document also advocates for a separation of concerns architecture with clearly defined interfaces between tiers. Finally, it showcases implementing a sample application using different technologies for each tier to demonstrate flexibility and interoperability.
1 of 31
Download to read offline
More Related Content
Dynamic and rich web application using the good ol\' JVM - Java One Brazil
1. Dynamic and rich web
application using the
good ol' JVM
Daniel L坦pez Jan叩riz
Web developer
Universitat de les Illes Balears (UIB)
December 9th 2010 JavaTools Community @ java.net
JavaOne 2010 JavaOneSM Brazil 2010 | Dec. 9th | Sala 3 | 2:00 PM | http://www.oracle.com/br/javaonedevelop/en/
2. Introduction
Web applications turned the development world upside
down.
Ever changing requirements
Heterogeneous equipment (client OS, browsers,
application servers, server OS)
Heterogeneous teams (programming, designing,
SEO, accesibility, usability...)
Development in web time
Peter Pan technology
And then we have to choose...
JavaOneSM Brazil 2010 | Dec. 9th | Sala 3 | 2:00 PM | http://www.oracle.com/br/javaonedevelop/en/
4. Introduction II
What technology?
How to choose?
Which ones to try?
What is important?
Adoption?
Compatibility?
Background?
Is there any magic bullet?
That makes our team look like this...
JavaOneSM Brazil 2010 | Dec. 9th | Sala 3 | 2:00 PM | http://www.oracle.com/br/javaonedevelop/en/
6. Introduction III
How can we improve the situation:
Learn the various choices you can make so you can
decide between them
Adapt your architecture to the web development
world.
So, we are here to:
Showcase some technologies that can be used in
the Java plattform.
Demonstrate that an architecture can be adaptable.
The end goal is that the choice looks like...
JavaOneSM Brazil 2010 | Dec. 9th | Sala 3 | 2:00 PM | http://www.oracle.com/br/javaonedevelop/en/
8. Learning: why the JVM?
Java is/was popular for a reason. Among other things
Very good virtual machine
Tons of libraries, utilities, frameworks, API...
So, should we start from scratch?
Sometimes not possible (100% one-step migration)
Small steps help you move from a safe location to a
closer safe location.
JavaOneSM Brazil 2010 | Dec. 9th | Sala 3 | 2:00 PM | http://www.oracle.com/br/javaonedevelop/en/
9. Learning: how?
The JVM is a bytecode interpreter/dynamic compiler
so...
Generate compatible bytecode from the new
language. (ex. Scala)
Implement in bytecode an interpreter for the new
language. (ex. BeanShell)
Combine both solutions. (ex. Groovy)
The interpreted languages can be accessed
Through a custom API
Through the Java Scripting API (JSR-232, Java >=6)
JavaOneSM Brazil 2010 | Dec. 9th | Sala 3 | 2:00 PM | http://www.oracle.com/br/javaonedevelop/en/
10. Learning: Java Scripting API
ScriptEngineManager theScriptEngineManager = new ScriptEngineManager();
ScriptEngine theSE = theScriptEngineManager.getEngineByExtension(extension);
Reader reader = ...;
...
// To interpret the script directly
theAnswer = theSE.eval(reader);
// If you call a function inside the script
theSE.eval(reader);
Invocable inv = (Invocable) theSE;
theAnswer = inv.invokeFunction(functionName);
JavaOneSM Brazil 2010 | Dec. 9th | Sala 3 | 2:00 PM | http://www.oracle.com/br/javaonedevelop/en/
11. Architecture: How to be prepared?
In order to be able to adapt to different requierements,
we will use an architecture built around the Separation
of Concerns (SoC) pattern.
The overall goal is to have an architecture where the
different parts communicate through clearly defined
interfaces, so the don't step into each other toes.
Using an opinionated artechitecture with tight
integration brings other advantages and drawbacks.
JavaOneSM Brazil 2010 | Dec. 9th | Sala 3 | 2:00 PM | http://www.oracle.com/br/javaonedevelop/en/
14. Architecture: Tiers
This is the web development SoC
architecture we have used
Where we have separated these main
Concerns:
User interface
Presentation logic
Controller
Application/business logic
Persistence
JavaOneSM Brazil 2010 | Dec. 9th | Sala 3 | 2:00 PM | http://www.oracle.com/br/javaonedevelop/en/
15. Architecture: Showcase application
A simple CRUD application on one table(Items).
Every concern is implemented with different technologies:
To test if they really can be used independently.
To find out some of the benefits and drawbacks of each
alternative.
To do some mythbusting!
JavaOneSM Brazil 2010 | Dec. 9th | Sala 3 | 2:00 PM | http://www.oracle.com/br/javaonedevelop/en/
24. UI: HTML
JavaOneSM Brazil 2010 | Dec. 9th | Sala 3 | 2:00 PM | http://www.oracle.com/br/javaonedevelop/en/
25. UI: JavaScript RIA
JavaOneSM Brazil 2010 | Dec. 9th | Sala 3 | 2:00 PM | http://www.oracle.com/br/javaonedevelop/en/
26. UI: Flex RIA
JavaOneSM Brazil 2010 | Dec. 9th | Sala 3 | 2:00 PM | http://www.oracle.com/br/javaonedevelop/en/
27. UI: Java Applet RIA
JavaOneSM Brazil 2010 | Dec. 9th | Sala 3 | 2:00 PM | http://www.oracle.com/br/javaonedevelop/en/
28. UI: PDF
JavaOneSM Brazil 2010 | Dec. 9th | Sala 3 | 2:00 PM | http://www.oracle.com/br/javaonedevelop/en/
29. Etc... (demo)
http://localhost:8080/
http://www.greeneyed.org/test/
JavaOneSM Brazil 2010 | Dec. 9th | Sala 3 | 2:00 PM | http://www.oracle.com/br/javaonedevelop/en/
30. Conclusions
The JVM is not only Java and you don't have to abandon completely the Java
platform.
There are many different languages with different styles that are more or less
useful depending on your needs.
Learning different approaches to face all the different challenges is the way
to be prepared.
SoC architectures are an option to facilitate having different approaches at
hand, even though it's not the only one and it is not necessarily the best.
Implementing such an experiment is quite an experience and acts as a
vaccine against language bigotry.
Next question is... is any of this really useful in real life?
We have alredy used it to migrate the business logic from one
option to another and reduce memory consumption and CPU load
on the DB to move it to the application server so clustering of
those elements is more effective.
We have also used it to modify and spice up some UIs with some
AJAX/JavaScript widgets.
JavaOneSM Brazil 2010 | Dec. 9th | Sala 3 | 2:00 PM | http://www.oracle.com/br/javaonedevelop/en/
31. Thank you for your attention
Questions?
JavaOneSM Brazil 2010 | Dec. 9th | Sala 3 | 2:00 PM | http://www.oracle.com/br/javaonedevelop/en/