ZK 6.0 RC release notes

Released on Nov 15, 2011.


ZK 6 brings with it a whole host of changes, using our git repo statistics we have calculated that approximately 100,000 lines have been changed between branches 5 and 6. Below has links to some of the major changes you will find in ZK 6, including the new databinding, generic support and our new templating system.


Getting Simpler and Richer

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 access 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
    • 3061730: Make ZK complaint to Java 5, such generics
    • 2920934: A plugin to load lang.xml, config.xml.. from custom location
    • 2978342: A way to tag AU request for statistic purpose
    • ZK-139: A way to define a template that component could use
    • ZK-216: Listbox/Tree/Grid/Combobox supports the template for rendering model
    • ZK-237: allows users to import classes
    • ZK-110: Upgrade to jQuery 1.6.4
    • ZK-496: Make iZUML available to ZK CE
    • ZK-61: Support hotkey for user to pick a date
    • ZK-443: Menubar can support keystroke to navigate the menubar
    • ZK-292: Annotation supports an array of values and string-type value and so on
    • ZK-408: Allow the text-as content such as html/combitem to have a XML fragment
    • ZK-278: Enhance stubonly to merge more components and better control of event handling
    • ZK-401: A way to customize the way WebApp is instantiated
    • ZK-217: A way to add a temporary variable resolver to an execution
    • ZK-233: Execution.createComponents support inserting before particular component and variable resolver
    • ZK-264: addEventListener support 'priority'
    • 2974464: A way to customize message with i3-label
    • 3025389: A way to monitor the execution and event processing
    • 2947727: The instantiation of Composer & Server Push customizable
    • ZK-224: Tree shall render the model in the onInitRender event listener
    • ZK-288: Make GenericEventListener (and derives, GenericForwardComposer and GenericAutowireComposer) as serializable
    • ZK-279: Simplify PageDefinition and related metainfo
    • ZK-314: A way to pre-load images since many UIs depend on the size of an image
    • ZK-114: Provide an JasperReport API to get the generated Media
    • ZK-370: Multi-line textbox support rounded mold
    • ZK-416: Listbox support multiple drag
    • ZK-446: Add an instant="true" attribute to InputElement(e.g. textbox, intbox, ...) so onChange is fired as quick as possible.
    • ZK-12: Checkbox automatically disable itself after clicked
    • ZK-458: The language definition allows a WPD package to be merged to another
    • ZK-83: Messageboxes buttons should be rendered in the users order
    • ZK-501: Messagebox supports custom labels
    • ZK-463: Messagebox supports enum to specify the button
    • ZK-464: Window's mode supports enum
    • ZK-468: Add Selectbox component to ZK core
    • ZK-469: Add Absolutelayout component to ZK core
    • ZK-470: Add Anchorlayout component to ZK core
    • ZK-383: Make breeze as the default theme
    • ZK-318: Support combobutton combining a button and a dropdown menu
    • ZK-526: Add a utile EL function for formatting date and parsing date
    • ZK-536: Groupbox supports the title attribute (like Window/Panel)
    • ZK-551: A new data binding system to support MVVM design pattern
    • ZK-522: Tablelayout support any child not limited to Panel
    • ZK-523: Columnlayout support any child not limited to Panel
    • ZK-537: Hlayout supports valign (top, middle and bottom)
    • ZK-503: Add a new component, idspace: as light as div but implements IdSpace
    • ZK-541: GenericAnnotatedComposer uses annotation to control whether to write zscript and XEL variables
    • ZK-553: GenericAnnotatedComposer shall implement ComponentActivationListener and rewire Session/WebApp
  • Bugs fixed
    • ZK-328: Panelchildren shall ignore flex in maximized state
    • ZK-392: Set hflex='min' to treeitem will cause javascript error (illegal use actually)
    • ZK-493: zk.override(Object, String, Function) fails to update subclass methods
    • ZK-504: onCreate event not fired if registered in a parent's composer
    • ZK-487: Height isuue in the groupbox (with specified caption)
    • ZK-539: Title background not full-filled in groupbox
    • ZK-549: Height issue of groupbox 3d mold
    • ZK-562: Groupbox vflex=min is wrong (reopen B50-3005284.zul)