Download Diapositiva 1

Document related concepts

URL redirection wikipedia , lookup

Transcript
HOW TO CHOOSE A WEB
FRAMEWORK
…and be surprised
Jose María Arranz Santamaría
Agosto 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
THE PROBLEM OF CHOOSING
 Choosing the appropriated web
framework which fits
– Your requirements, needs,
convenience, desires, taste…
 Is not an easy task
 This will be a path, with some
criteria we will discard options
Jose María Arranz
2
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
THE PROBLEM OF CHOOSING
 These slides propose and
advocate some criteria to pick the
right framework
 Advocating for freedom of choice,
of design, robust, secure…
 May be you do not agree with
everyone
– I must to try… :)
Jose María Arranz
3
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
Click
Frameworks, Frameworks,
Frameworks!!
Jose María Arranz
4
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CALM! you will see,
THERE ARE NOT VERY MANY!
 Many of them are very similar
 Some strong criteria are very
important
 Most of frameworks can be
classified by groups
Jose María Arranz
5
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: JVM in server
 The Java platform is the
most robust, secure,
speediest and richest for
web development
Jose María Arranz
6
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: Web Client
 Flash/Flex, Silverlight…
– Will be replaced by HTML 5 in a
short future
– HTML/CSS/JS is more flexible and
open than Flash/Flex
– Data applications do not need to
be so “baroque”
– Flash/Flex: SEO compatibility is
not easy
Jose María Arranz
7
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: “Client-Centric”??
 Coding in JavaScript
– Unmanageable when code grows
• Not typed, not compiled, not true OOP
• Hard to organize
• Hard to debug and test
• Tends to generated cryptic code
– Hard to divide the work to do
• Hard to divide the code in archives
– Slooow
– Impossible for Single Page Interface apps.
Jose María Arranz
8
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: “Client-Centric”?? (cont.)
 Coding in JavaScript
Do you really want to code this way?
Jose María Arranz
9
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: “Client-Centric”?? (cont.)
 Coding in JavaScript: the myth of
Rich Interface Application = JS Library
– RIA = beautiful web, Single Page Interface, with
movements and opacity changes
– Beautiful Web
• Good design of HTML, CSS, images (nothing to do with JS)
– Single Page Interface
• Partial changes of the page (client-centric is not implied)
– Movements and opacity changes
• Funny games with style attributes and timers
• The only case a JS library is very useful
Jose María Arranz
10
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: “Client-Centric”?? (cont.)
 Coding in JavaScript
NO THANKS!!
Jose María Arranz
11
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: “Client-Centric”?? (cont.)
 GWT
– Allows coding JS in Java
– GWT compiles Java code as JavaScript
sent to the client
– Visual logic (and some business logic)
is executed only in client
– Solves the problem of coding in JS
– BUT MORE PROBLEMS REMAIN…
Jose María Arranz
12
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: “Client-Centric”?? (cont.)
 Visual Design is
programmatic or
with specific IDEs
– Bye web designers
 Components “black-boxed”
– Almost only CSS customization
 Cryptic generated JS
– Only debugging in Java
Jose María Arranz
13
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: “Client-Centric”?? (cont.)
 Paranoid server
– No confidence with client (and everything is there)
– Duplicity of checking/validations
 Client-server custom communication
data bridges (GWT-RPC)
 Duplicity of data management in client
and server
 SOFEA: utopian approach
– Impossible sending SQL from browser
– Eternal fight about what is on each side
Jose María Arranz
14
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: “Server-Centric”
 In “server-centric” business logic and
visual logic are executed in server
– The server generates markup and/or JavaScript
• No need of JavaScript programming
– Data and visual state are together
– Safer
– Better options for freedom of web design
(templates)
– Easier Search Engine Optimization compatibility
– Rule: life in server is more comfortable
Jose María Arranz
15
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
LET’S LOOK BACK
 JVM in server
 Web Client
 Server-Centric
Jose María Arranz
16
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
Click
Frameworks, Frameworks,
Frameworks!!
Jose María Arranz
17
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: Dynamic Language??
 Initially are very productive
 But they become a
problem when
– The source code grows (1000 classes?)
– Several persons in the same code
– IDEs cannot help very much
 Slooow
http://www.codecommit.com/blog/java/groovys-performance-is-not-subjective
Jose María Arranz
18
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: Dynamic Language?? (cont.)
 Can you live without a true
“Find Usages” of NetBeans?
 Can you live without refactoring
tools?
Jose María Arranz
19
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: Java Lenguage
 The compiler gives us
robust and speeder code
– Compiler is your friend
 Tools like “Find Usages”
and “Refactor” (NetBeans)
– Allow us to manage thousand of
classes
– Developer knows how changes
affect to any part of the code
Jose María Arranz
20
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: Single Page Interface
 In Single Page Interface (SPI) a web
site/application runs into the same
page (no reload)
– By using AJAX (or similar) we get new markup
or JavaScript for partial updates
 Event based programming and only
partial changes designed and coded
– The same as desktop applications
Jose María Arranz
21
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: Single Page Interface (cont.)
 No more unexpected Back/Forward/Reload
and double form-submitting
– No more “post-redirect”
– Back/Forward buttons of browser can optionally work in
SPI and remain SPI and deterministic
 No more unexpected caching (GET)
 No more unexpected “form autofill”
– Changing values provided by the server on page load
 No more stupid full page rendering when
anything is changed
– Avoiding annoying blinking and scrolling
– Increased performance
Jose María Arranz
22
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: Single Page Interface (cont.)
 No more includes into includes into includes
– Templates ONLY containing initial page or page fragments
– More tolerance to visual changes
 No more direct access to internal pages
 No more problems when the same user opens
two page windows
– Pages of a SPI application DO NOT share state by default
– Session is NO longer the place to save temporal data
 No more problems with modal windows
– Browsers do not like them (hack)
– In SPI you can simulate modal windows
Jose María Arranz
23
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: Single Page Interface (cont.)
 End users increased productivity!
– Example: showed errors while introducing data
 FACT: no one desktop application is
paged (multi-frame)
– No, a “wizard” is a single modal window, the same
“frame” (=page) is kept
 The SPI concept is NOT NEW
http://devedge-temp.mozilla.org/viewsource/2003/inner-browsing/index_en.html
 SPI is much more than “a bit of AJAX”
– If the web framework is not SPI oriented the page must change to
load new AJAX based components
Jose María Arranz
24
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: Single Page Interface (cont.)
Click
“Standard” < v2.0
(no AJAX)
Another reason to discard both again
Jose María Arranz
25
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
LET’S LOOK BACK
 JVM in server
 Web Client
 Server-Centric
 Java Language
 Single Page Interface
Jose María Arranz
26
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
Click
Frameworks, Frameworks,
Frameworks!!
Jose María Arranz
27
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: Not a forced web
 Tools like EclipseRAP and
AjaxSwing are interesting for
quickly porting desktop
applications to web
– The result is a “forced” web application
Jose María Arranz
28
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: Templates based on
plain HTML with no logic
 Allows division by role between
developers and web designers
– Two clear roles: visual design, lógic programming
(visual and business logic)
– Reusing of visual design (visual patterns)
– Reusing of visual logic => OOP
• Can be very independent of concrete visual design
 Absolute control of layout when
“markup is alive”
Jose María Arranz
29
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: Templates based on
plain HTML with no logic (cont.)
 JSF flavours…. NO!
Jose María Arranz
30
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: Templates based on
plain HTML with no logic (cont.)
 JSF flavours…. NO!
– Black-boxed components
• Visual aesthetic is imposed
• Hard to change, “is what you get”
– Mixed visual design and logic (lots of
Java bindings and EL expressions)
• Too much Java Reflection, security risk
– Struts security hole (in ONGL):
http://struts.apache.org/2.2.1/docs/s2-005.html
– Spring security hole:
http://securityreason.com/securityalert/7526
– Specific visual editors needed (= FAILURE)
Jose María Arranz
31
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: Templates based on
plain HTML with no logic (cont.)
 ZK? …. NEITHER!
– Similar to JSF
“I don't think UI Designer would have patient to learn how to
polish his web site in ZUL file, they want CSS and HTML”
http://stackoverflow.com/questions/327328/any-real-world-experience-of-the-zk-ajaxframework
Jose María Arranz
32
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: Templates based on
plain HTML with no logic (cont.)
 Vaadin? NO TEMPLATING!
– Visual design fully programmatic!
Jose María Arranz
33
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: Templates based on
plain HTML with no logic (cont.)
 Wicket to the rescue?
– “Wicket does not mix markup with Java code
and adds no special syntax to your markup
files” http://wicket.apache.org/meet/features.html
– Let’s see AJAX “Tree and TreeTable” ex.
• Where is the tree markup? => Black Box!
(again)
Jose María Arranz
34
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
LET’S LOOK BACK
 JVM in server
 Web Client
 Server-Centric
 Java Language
 Single Page Interface
 Not a forced web
 Templates based on plain HTML
with no logic
Jose María Arranz
35
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
Click
Frameworks, Frameworks,
Frameworks!!
Jose María Arranz
36
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
REMOVING ALL
DISCARDED
FRAMEWORKS
Jose María Arranz
37
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
Frameworks, Frameworks,
Frameworks!!
Jose María Arranz
38
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
NO ONE??!!
Jose María Arranz
39
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
ANOTHER CHANCE TO JSF
(with AJAX), ZK and Vaadin
Jose María Arranz
40
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: “Push” Templates
 In a “push” template the contained
markup is the visual pattern managed
by Java code pushing data to the
template (this is not executable)
– Java code has complete control of the lifecycle of
instances, begin and end of transactions
– Promotes visual reusing and OOP
– IoC/DI is not imposed (optional)
 Example: Wicket load phase (no AJAX)
– But Wicket is fully discarded…
Jose María Arranz
41
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: “Push” Templates (cont)
 JSF flavours and ZK
– Executable (pull) templates
– Java objects controlled by template
 Vaadin
– Template? What is a template?
Jose María Arranz
42
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
REMOVING ALL
DISCARDED
FRAMEWORKS
Jose María Arranz
43
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
NO ONE??!!
Jose María Arranz
44
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
ANOTHER CHANCE TO JSF
(with AJAX), ZK and Vaadin
Jose María Arranz
45
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: Easy Creation of
Custom AJAX Components
 Answer to the “fine but can it do…?”
 JavaScript minimum or nothing
 New markup defined as markup
(sort of template)
– Not as JavaScript
– We can decide what elements send events
– Event processing in server can
insert/modify/remove our markup
Jose María Arranz
46
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: Easy Creation of
Custom AJAX Components (cont.)
 JSF pre 2.0
– Tons of “hacks”
– Markup management with client JavaScript
https://bpcatalog.dev.java.net/ajax/textfield-jsf/design.html
http://www.oracle.com/technetwork/java/javaee/tutorial-jsp-140089.html
http://media.techtarget.com/tss/static/articles/content/JSFReference/JSFReferenceCH11.pdf
 JSF post 2.0
– Simplified creation of “composite” components…
WOW a new sort of include was invented!
– AJAX calls standardized. WOW!
– The same annoying JavaScript
http://www.ibm.com/developerworks/java/library/j-jsf2fu-0410/index.html
Jose María Arranz
47
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: Easy Creation of
Custom AJAX Components (cont.)
 ZK
– There is some example beyond adding
AJAX listeners to markup on load
time?
– New markup management again with
JavaScript in client
http://docs.zkoss.org/wiki/Component_Development_Tutorial
http://www.zkoss.org/doc/compdevguide
Jose María Arranz
48
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: Easy Creation of
Custom AJAX Components (cont.)
 Vaadin
– According the manual is not an easy task. The
reference manual is sincere:
• “Creation of new widgets involves a number of rather
intricate tasks”
http://vaadin.com/book/-/page/gwt.html
– A new GWT component must be created, another one
for server, code for client/server coordination and data
communication, several registries
– Positive: fortunately management of new markup is
Java based (GWT) but pure programmatic (bye web
designers)
?
Jose María Arranz
49
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
LET’S LOOK BACK







JVM in server
Web Client
Server-Centric
Java Language
Single Page Interface
Not a forced web
Templates based on plain HTML with no
logic
 “Push” Templates
 Easy Creation of Custom AJAX Components
Jose María Arranz
50
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
Click
Frameworks, Frameworks,
Frameworks!!
Jose María Arranz
51
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
REMOVING ALL
DISCARDED
FRAMEWORKS
Jose María Arranz
52
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
NO ONE??!!
Jose María Arranz
53
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
ANOTHER CHANCE TO JSF
(with AJAX), ZK and Vaadin
Jose María Arranz
54
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: Not Steep Learning
Curve
 The framework should
provide an easy API
and development style
 Providing in a short
period of time, the
necessary skills to
develop Single Page
Interface applications
Jose María Arranz
55
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: Not Steep Learning
Curve (cont.)
 All frameworks compete with the longest
and rich list of components
– Are they hiding that custom component
development is a very cumbersome task?
 A custom tag or custom API is needed for a
simple button or text box
– Hundreds of custom tags including the basics
– Web knowledge thrown away
 Beyond already made components there is
no very much hope (complex task)
Jose María Arranz
56
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
REMOVING ALL
DISCARDED
FRAMEWORKS
Jose María Arranz
57
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
NO ONE??!!
Jose María Arranz
58
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
ANOTHER CHANCE TO JSF
(with AJAX), ZK and Vaadin
Jose María Arranz
59
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: Free of XML and
declarative programming
 XML based configuration and
declarative programming:
–
–
–
–
–
Hard to reuse, no very much OOP
Friend of tools, usually become foe for developers
Hard to debug, error detection on runtime
Rigid relative to the imperative alternative
Fight against rigidity with tons of custom elements
and attributes (trying to cope with any casuistic)
– Usually enormous archives (hard to work with)
Jose María Arranz
60
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: Libre de XML y
programación declarativa
 JSF and ZK
– Full of XMLs for configuration and
custom tags (a kind of declarative
programming)
 Vaadin
– Is not free of XML based registries
Jose María Arranz
61
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
NO ONE??!!
Jose María Arranz
62
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
ANOTHER CHANCE TO JSF
(with AJAX), ZK and Vaadin
Jose María Arranz
63
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: Single Page Interface
in many mobile browsers
Is there anybody out there?
There is more life beyond iPhone and Android
64
Jose María Arranz
64
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
ANOTHER CHANCE TO JSF
(with AJAX), ZK and Vaadin
This will be the last one!!
Jose María Arranz
65
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: SPI SEO compatible
 The division between a web application
and web site is blur today
– FaceBook, Twitter (both SPI) are they sites or apps?
 Notwithstanding be indexed by web
crawlers is absolutely necessary (SEO
compatible)
– Avoiding site duplication for SEO
 This implies any SPI state should be
bookmarkable and in the same time
generated with markup
Jose María Arranz
66
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: SPI SEO compatible
SPI SEO compatible WHAT?
67
Jose María Arranz
67
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
LET’S LOOK BACK







JVM in server
Web Client
Server-Centric
Java Language
Single Page Interface
Not a forced web
Templates based on plain
HTML with no logic
 “Push” Templates
Jose María Arranz
68
 Easy Creation of Custom
AJAX Components
 Not Steep Learning Curve
 Free of XML and
declarative programming
 SPI in many mobile
browsers
 SPI SEO compatible
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
Click
Frameworks, Frameworks,
Frameworks!!
Jose María Arranz
69
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
NO ONE??!!
Jose María Arranz
70
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
REALLY??!!
Jose María Arranz
71
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
NO, not true
MISSING ONE!!!
Jose María Arranz
72
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
Is ItsNat really compliant
with all previous
criterions?
Jose María Arranz
73
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: JVM in server /
Java Language
 ItsNat is coded with Java in
server
– Other JVM languages are not excluded for
development ItsNat applications
CRITERION: Web Client
 100% web technology
– Optional SVG applet based on Batik
– SVGWeb support for SVG in IE (v6-v8)
Jose María Arranz
74
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: Server-Centric
 In ItsNat user JavaScript code is
not needed
– In spite of developers can easily inject
custom JavaScript from server
– In spite of custom JS code and JS libraries
can fit together with ItsNat
• Generated markup is CLEAN of ItsNat artifacts (id
and onXXX attributes not used by ItsNat)
• Markup layout is absolutely controlled by
developers, jQuery /Dojo can play with style
attributes for visual effects (movements, opacity)
Jose María Arranz
75
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: Single Page Interface
 ItsNat strongly supports the
SPI paradigm
 But nothing prevents you of
page navigation…
– There is a utility called “Referrers”
– Form auto-fill of browsers is
automatically canceled (load time) to
ensure all data shown are given by the
server
Jose María Arranz
76
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: Not a forced web
 Developers have absolute control
of layout including SPI
 No aesthetic is imposed, no pixel
based desktop simulation
 Swing is optionally used only
because its “data/selection
models” (view independent)
Jose María Arranz
77
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: Templates based on
plain HTML with no logic
 Templates are normal plain HTML files, no
custom tags, no expression languages, no
Java bindings
– Fully suitable for web designers and pure
HTML/XHTML WYSIWYG tools
– New HTML fragments to be inserted into the page
with AJAX are plain XHTML/HTML too
 Visual logic is executed using Java W3C
DOM APIs in the server (including events)
– Any change performed to the DOM in server is
replicated to the client (custom JavaScript is generated
and sent to the client)
Jose María Arranz
78
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: Templates based on
plain HTML with no logic (cont.)
 Event listeners are Java W3C DOM
Event listeners registered in server
– Receiving W3C DOM Events
ItsNat SIMULATES A JAVA W3C
BROWSER IN THE SERVER
– The client page is a clone of server
– This is not “new”, actually ALL of server-centric
frameworks DO the same (JSF, ZK, Vaadin
browser) by using techniques…
VERY ARTIFICIAL AND RIGID!!
Jose María Arranz
79
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: Templates based on
plain HTML with no logic (cont.)
Jose María Arranz
80
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: Templates based on
plain HTML with no logic (cont.)
 The page (client and server) can be
partially changed with new plain HTML
markup
 Three ways to add new markup to a
page in SPI
1. Markup Fragment
2. String containing markup converted to DOM
through ItsNatDocument.toDOM(String)
3. Creating elements through W3C DOM Java API
Jose María Arranz
81
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: Templates based on
plain HTML with no logic (cont.)
1. Markup Fragment
Is a type of template, only the content in <body> is
loaded and can be inserted by DOM API in server
http://www.innowhere.com:8080/itsnat/feashow_servlet?itsnat_doc_name=feashow.main&featur
e=feashow.core.domutils.markupFragments.ex
Jose María Arranz
82
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: Templates based on
plain HTML with no logic (cont.)
2. String containing markup
converted to W3C Java DOM by
ItsNatDocument.toDOM(String)
http://www.innowhere.com:8080/itsnat/feashow_servlet?itsnat_doc_name=feas
how.main&feature=feashow.core.domutils.toDOM.ex
Jose María Arranz
83
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: Templates based on
plain HTML with no logic (cont.)
3. Through W3C DOM Java API
http://www.innowhere.com:8080/itsnat/feashow_servlet?itsnat_doc_name=fe
ashow.main&feature=feashow.core.man.htmlExampleInManual.ex
Jose María Arranz
84
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: Templates based on
plain HTML with no logic (cont.)
 Because templates are plain HTML
and can be freely modified…
– Because MARKUP IS ALIVE as DOM
 …ItsNat easily allows to convert any
paged web site or app web to Single
Page Interface
– Clone of ElCorteIngles.es as SPI:
http://www.innowhere.com:8080/insites/
– Clone of an ExtJS application:
http://www.innowhere.com:8080/inexperiments/inexpservlet?
itsnat_doc_name=extjsexample
Jose María Arranz
85
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: “Push” Templates
 ItsNat templates are not executable,
view logic is fully based on Java
– Java logic manages the template markup and pushes
(injects) data to the template
 ItsNat provides the template as DOM to
Java code on load time
– Java code absolutely controls object instances,
transaction demarcation and view modification in
any order
– Nothing prevents of using IoC/DI frameworks, they
are not imposed
Jose María Arranz
86
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: “Push” Templates
Called per
page load
Document
lifecycle is the
same as the
client page
Jose María Arranz
87
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: Easy Creation of
Custom AJAX Components
 Components are the typical form of
visual layout, visual code and
associated events
 In ItsNat components are NOT
needed because any HTML element
is a “component”
– Any element can receive events
– Can contain other elements (=components)
– Can change its data (text nodes) and appearance
(CSS, formatting nodes)
Jose María Arranz
88
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: Easy Creation of
Custom AJAX Components (cont.)
 Does we need “components”
for reusing in ItsNat? NO!!
– A markup fragment (or string
converted toDOM() o Java DOM code)
and a Java class with DOM
management and event listeners
=> can be reused without some kind of
component registration
Jose María Arranz
89
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: Easy Creation of Custom
AJAX Components (cont.)
 Anyway ItsNat provides a component
system and some components
– Component = “binding of a data model, a selection
model (usually Swing), a pluggable layout and
some registered event listeners”
– Text boxes, lists, tables, trees …
– Layout pluggable (pattern
based): NO “black box”
 And a mechanism for new components
– Implementing ItsNatComponent
– And registering (with code) a
CreateItsNatComponentListener
Jose María Arranz
90
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: Easy Creation of Custom
AJAX Components (cont.)
 Component creation is so easy like
binding a plain HTML pattern…
– Defined as markup fragment, toDOM o Java
DOM code
• The HTML pattern (layout) can be defined outside the
component and be plugged on component creation
 with a data (and selection) model…
 and predefined actions (Java) and
DOM (AJAX) events
http://www.innowhere.com:8080/itsnat/feashow_servlet?itsnat_doc_name=
feashow.main&feature=feashow.comp.other.customComponent.ex
Jose María Arranz
91
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: Not Steep Learning
Curve
 ItsNat has two levels:
1.
2.
Core
Components
 The Core level is basically DHTML in
the server
– Java W3C DOM Core/HTML APIs
– Java W3C DOM Events
– Enough to create sophisticated SPI applications
 Components are optional
– Form components very useful (text box, select…)
Jose María Arranz
92
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: Free of XML and
declarative programming
 ItsNat configuration is fully based on code
– Provides maximum freedom, flexibility and reusing =>
OOP and automatic adaptation to environment
 100% XML and declarative programming free
 Nothing prevent of building declarative layers
on top
– Config. and registries based on XML, custom tags…
– Configuration based on DI frameworks (Spring, Guice)
– ItsNat is consciously a low/middle level framework
Jose María Arranz
93
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: SPI in many
mobile browsers
 Desktop Browsers
–
Adobe AIR HTML Component, Arora, Google Chrome, FireFox 1+, Internet
Explorer v6,7,8, Internet Explorer v9, Moblin 2.0, Opera 9+, QtWebKit (Qt 4.4),
Safari 3+.
 Mobile Browsers
– Android 1.0+, BlackBerry JDE 4.6+ (Flip, Bold, Storm etc), Bolt, Fennec 1.0a1
(a.k.a FireFox Mobile), Pocket IE 6 (Windows Mobile 6 and 6.1), IE Mobile 6
(since Windows Mobile 6.1.4), iPhone/iPod Touch 2.0+, Iris 1.0.8+, Minimo 0.2,
Motorola Symphony 1.1, NetFront 3.4+, Opera Mini 4.x, Opera Mobile 8.6x
(WinMob and UIQ), 9.5, 9.7 and 10, S60WebKit (since S60 3rd), S40WebKit
(since S40 6th), Palm Pre webOS, QtWebKit of Qt for Embedded Linux (Qt
v4.4) and Windows CE, SkyFire 1.0 and UCWEB (Java and WinMob).
 SVG Plugins
– Adobe SVG Viewer v3 and v6 beta, Renesis Player v1.1.1, Savarese Ssrc SVG
(adds XUL to MSIE too), SVGWeb, and Batik as applet.
Jose María Arranz
94
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: SPI in many
mobile browsers (cont.)
 Pocket IE support
of Windows Mobile
6.0 y 6.1 is
INCREDIBLE
– In later versions
(>= 6.1.4) IE Mobile is
much better
Jose María Arranz
95
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
CRITERION: SPI SEO compatible
 ItsNat has a render mode on page
load called “Fast Load”
– In this mode any change made to the initial
template DOM when the page is loading, do not
generate JavaScript
– Final DOM tree is rendered as markup
 The same Java DOM code can
generate markup (load phase) or
JavaScript (events)
– ElCorteIngles.es as SPI SEO compatible:
http://www.innowhere.com:8080/insites/
Jose María Arranz
96
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
EPILOGUE
 ItsNat has many more
characteristics some of them are
unique
Pure SVG and embedded SVG in
XHTML/HTML, remote control of other
users, server-sent events, integrated
functional testing, modal layers, iframe
auto-binding in server, extreme mashups,
remote templates, client JavaScript
integration…
Jose María Arranz
97
August 2010
HOW TO CHOOSE A JAVA WEB FRAMEWORK
... and be surprised
ItsNat LINKS
 Project Home
http://www.itsnat.org
 Online Demo
http://www.innowhere.com:8080/itsnat/
 The Single Page Interface
Manifesto
http://itsnat.sourceforge.net/php/spim/spi_manifesto_en.php
Jose María Arranz
98
August 2010