ZK Framework

Overview of the ZK framework »
Richard Holland

ZK Framework
An enjoyable RIA Ajax web framework
richard holland
technical lead - IT
so what is the ZK Framework?
and what does it look like?
LANGUAGES
<XML/>
Javascript
Grails
Ruby
Python
TOP FEATURES
open source
1.3 million downloads
over 200 widgets
and more 3rd party addons
security protection built in
cross-site scripting, Spring Security and more
multi-threaded ajax
taken care of automatically
jQuery friendly
interact with widgets from jQuery
Java framework friendly
Spring, Seam, JSF, LifeRay and more
ARCHITECTURE
WALKTHROUGH OF WIDGETS
as a Java developer how do I do that?
STEP 1
(there are many different ways to develop ZK applications... this is just a few...)
install the ZK Studio Eclipse plugin
STEP 2
http://studioupdate.zkoss.org/studio/update
understanding the pieces
Client
Server
ZUL files
the xml files used to layout widgets
to get this...
the ZUL looks like this...
ZScript
multi-language supported server code in a ZUL file
fast to do and no need to compile
but not recommended...
keep server code out of ZULs
we do not use this
automatically inject ZUL widgets as Java objects on the Server
Autowire Composers
ZUL
Java
Renderers
Render widgets and their layout in Java
ZUL
Java
STEP 3
Using the ZK Studio
There are a lot of different ways to achieve the same goal in ZK
We are going to focus on how we use ZK at Dreamworks
And a few tips & tricks
Why we chose ZK
ease of use
THE TEST: could an undergraduate intern develop the UI for an entirely 
new module for our largest Java application entirely on his/her own?
VERDICT: yes... and within a week...
the documentation
wikis
small talks
developer guides
component reference
style guides
How Tos
active forums
open source with support
A good product is one that doesn't actively need support
but instead is there to help save time and create custom features
active and popular
its not enough to be a good framework it must also be a popular one

an active community and active performance updates
looks good
How we use ZK
no use of zscripts
ZK Spring library is used for all MVC binding
Spring beans created for each ZK controller
ZK Controller (MVC) extends GenericAutowireComposer
ZUL begins with DelegatingVariableResolver to resolve Spring beans
ZUL widgets can now call Spring beans directly
And that's all that is needed...
Using ZK.xml
located within WEB-INF
Session listeners
Listeners for anytime a new HTTP session is created or destroyed
simply implement SessionInit or SessionCleanup respectively
Upload size
Do double check your max upload size
a size of -1 is unlimited
300 is the amount of milliseconds between submits
Clicking too fast
Prevent users from resubmiting too fast
disable-behind-modal will stop clicks if the screen is grayed out
VS...
GWT
                       Too much code required to get the same task done
We don't get a lot of time and any tool that saves time is a plus
GWT (5 Files, 190 Lines of Code)
Client Side Files:
   1. Map.java – The main application class
   2. LocationGenerator.java – The interface for RPC.
   3. LocationGeneratorAsync.java- The interface for RPC.
   4. LocatorData.java – The data wrapper class for passing data from server.
Server Side Files:
   5. LocationGeneratorImpl.java – The data provider class in server side.
   
ZK (2 files, 25 Lines of Code)
Client Side Files:
   1: Gmap.zul - layout for application
Server Side Files:
   2: GmapController - Sets new location for map
Java isn't friendly for Python/C++ devs (XML is)
and sometimes they can help us out with ZULs
Found that getting backend Java developers started with ZUL/XML to create UI and then transitioning to the Java API required less developer downtime than asking them to start with an unfamilar Java API for UI. 
Not as friendly with others as ZK... ZK plays nice with:

jQuery
Seam
JSF
Spring WebFlow
JSP
Flash
Plain DHTML/CSS/JS
HTML5 Canvas
DWR
ExtJS
Too extreme in both directions
JavaScript version (ExtJS)
JavaScript gurus only
everything is layed out and developed in JavaScript... 
learn GWT + ExtJS APIs
learn all of the intricacies of their relationship
don't like the license
Java version (ExtJS/GWT)
Thank you
Extra Features

Loading comments...

Please log in to add your comment.

Report abuse