ZK 5.0 release notes

Released on January 26, 2010.

Architectural Advancements

Server+Client Fusion

Since 2005 ZK has been renowned for its' server-centric approach, providing the ultimate in productivity gains. We will continue to push the server-centric envelope to make ZK even more productive. In addition to the server-centric approach, developers can now optionally leverage the full controllability of client-side programming using jQuery and GWT(available soon)!

ZK is developer-centric

It's the developer's choice whether to implement a function using either server-side or client-side development according to their requirements. In fact, now developers do not need to choose between productivity and controllability as you can use both server-centric and client-side approaches in the same application, even in the same page! The amalgamation of these two development strategies is called Server+client Fusion.

It is not about server-centric or client-centric, it is about developer-centric!

For more information please take a look here!


One of the main new architectural features is the ability to load client-side JavaScript packages from distributed servers. This means that a local copy of the library does not have to be kept, freeing authors from constantly updating their application to use the latest libraries. This architecture delivers EAI integration at the client-side, enabling the same close knit ease of integration of a backend system but at the client!

For more information please take a look here!

Getting Simpler and Richer

New Feature Highlight

  • Server+Client Fusion technology
  • Ajax-as-a-Service
  • Enhanced layouts using vBox/hBox and vFlex/hFlex support to all components
  • Colorbox component
  • Flash charting component
  • ThemeProvider caching control
  • New file upload component
  • New Cell component
  • Inplace editing supported
  • Auto fitting column support
  • Freezing columns within Grid and Listbox supported
  • Enhanced Datebox
  • ToolbarButton & Button functionality enhanced
  • Overlapping window effects improved
  • New configuration options

  • Please see New Features for more!

  • If you would like to upgrade from an older version the upgrade notes are available here!

Feature Updates

  • 120+ off-the-shelf Ajax components
    • Tabbox, grid, listbox, tree, menu, combobox, bandbox, datebox, chart, hbox, vbox, window, slider, paging, audio, image, timer, include, iframe...
    • Drag-and-drop supported by all components, such that users can drag components and drop them to any other or particular set of components.
    • Context menus and customizable tooltips supported by all components, such that a menu or any popup appears when user click, right-click or move the mouse over a component.
    • Customizable sorting of listbox, grid and children of any component with 100% Java codes (java.lang.Comparator).
    • Auto-completion for combobox.
    • Load on demand with writing Java codes.
    • Live data for listbox.
    • Grids, listboxes and trees with sizable columns.
    • All components are cloneable and serializable.
    • Validation and formatting for any input components, such as regular expression and $#,##0.
    • 100% Java API of Google Maps, CKeditor, and Timeline components.
  • Event-driven, server-centric model
    • Ajax requests, application notification, and server push are all managed as events
    • Event Queue shields developers from the complexity of Ajax and server push, such as multi-thread programming
    • All events are processed at the server. No hurdle to communicate between clients and servers.
    • All events are synchronized. No racing condition to worry about.
  • ZK User-interface Markup Language (ZUML).
    • Rich user interface could be designed in ZUML as simple as authoring HTML pages.
    • Powerful yet intuitive control flow by the if, unless and forEach attribute.
    • Scripting in EL expressions and your favorite scripting languages, include but not limited to Java, JavaScript, Ruby and Groovy.
    • Hot changes and updates without restarting your Web applications.
    • Annotations that allow a page to acess database with zero Java codes.
  • Browser history management.
    • Add states to browser's back button history. Then, users can bookmark and use the back and forward button to navigate different states of the same ZK desktop.
  • Simple yet boundless component model.
    • POJO components supporting interfaces and clustering. Easy to instantiate and manipulate directly with pure Java, or injected and managed by an AOP framework, such as Spring
    • Macro components. Develope full-featured new component by using other ZUML pages.
    • Inheritable customization. Developing a new component by extending existent components.
    • Seamlessly and easily to encapsulate pure-client components as ZK components with 100% Java API.
    • Customizing components with pre-compiled Java classes, or by scripting in your favorite scripting languages, include but not limited to Java, JavaScript, Ruby and Groovy. The choice is yours.
  • Simple yet flexible threading model.
    • Thread-safe component handling.
    • True server-side Modal dialog.
    • Suspend and resume event listeners freely.
  • 100% Customizable User-Interface factory.
    • Loading ZUML pages not only from Web contents but also any repository such as database.
    • Customizing the features of sessions, desktops and pages.

What's New

  • New Features Tracker:
    • 2889241: Message translated to Korean. Thank Deok-su Lee for his contribution
    • 2825713: EventQueue support application-level publish (by sever-push)
    • 2822404: Fileupload shall be a feature attachable to button, menuitem
    • 2822395: Adds component for HTML A, rather than overuse toolbarbutton
    • 2787713: Button automatically disable itself after clicked
    • 2848804: Readonly combobox supports selection by keystrokes
    • 2866325: A simple way to change the default mold
    • 2815551: Include supports non-HTML content (by use of comment)
    • 2491275: ZHTML checkbox fire onCheck (in addition to onClick)
    • 2794752: Fisheye supports dynamic images
    • 2794753: An option to specify whether the content can be crawled
    • 2831852: Allow developer to specify directory to load JavaScript file
    • 2834187: A way to load client (JavaScript) packages from diff servers
    • 2831854: A way to run certain JavaScript codes w/o load it explicitly
    • 2816083: Spec change
    • 2816588: A way to parse app-specific configuration in zk.xml
    • 2817315: Support client-centric programming model
    • 2832982: Button supports Ctrl+Click if href is specified
    • 2822834: Button supports toolbar mold and toolbarbutton d. from it
    • 2839350: Timebox supports date format like "a hh:mm:ss"
    • 2841695: Enhance Datebox and Calendar layout
    • 1832887: InputElement support in-place editing
    • 2121859: New component
    • 2845947: vflex/hflex supported in every component
    • 2845956: vflex/hfex supports proportion and min
    • 2783102: Borderlayout and flex and vflex improvement
    • 2849793: Replace fixedLayout with sizedByContent in Gird/Listbox/Tree
    • 2840886: Freezing Columns on Listbox and Grid
    • 2853314: ZK Client Engine support canvas
    • 1811700: XUL box model
    • 2858441: Merge attributes of ID space and component for space owner
    • 2855804: EL/zscript read attributes directly, and deprecate Namespace
    • 2859159: A way to listen changes of attribute in session/execution/appplication
    • 2859867: forward="onX=" shall be shortcut of forward="onX=onX"
    • 2860482: A way to specify language for component definition ()
    • 2861283: hbox/vbox pack attribute supports stretch option
    • 2855116: add data binding support for custom attribute tag
    • 2879519: More control of ThemeProvider against widget's CSS
    • 2887668: Ignore client command if component is invisible/disabled
    • 2893117: The include comp's default width/height 100% if the only child
    • 2867437: Borderlayout shows a collapse button on splitter
    • 2898291: a way to maximize the panel according to portal layout
    • 2037509: Auto fit column width when double clicking on header
    • 2187771: Panel re-sizeable
    • 2903592: A way to wire component in a nested ID space
    • 1594070: Listbox should raise onBlur/onFocus event
    • 1481860: add onBlur/onFocus event to Tree
    • 1831148: Support of ColorChooser
    • 2904894: Add new Flash Chart component
    • 2908598: The script directive supports the if/unless attribute
    • 2909551: ZK Client engine support Google AJAX API loader
    • 2905982: A way to reuse the desktop across the requests
    • 2919807: Make EventQueue available to CE
    • 2930316: Support client-polling server-push in ZK CE
    • 2920529: Session-scope EventQueue
    • 2830237: jasperreport support media
    • 2926746: Variable Resolver that resolve CDI(JaveEE 6) managed bean
    • 2927319: EventQueue supports asynchronous listener
    • 2928011: provide a customization for zk.Draggable
    • 2932595: New mold for combobox, datebox, timebox, spinner, bandbox