What's ZK

From Documentation

Stop.png This documentation is for an older version of ZK. For the latest one, please click here.


Welcome to ZK, the simplest way to make Rich Web Applications. This chapter describes what ZK is and is not. You may skip this chapter if you prefer to familiarize yourself with the feature and functionality of ZK right away.

ZK: What It Is

ZK is an event-driven, component-based framework powering rich user interfaces for Web applications.

Events triggered by an end user, by an application, by server push and even by message queues are stacked and handled using the same mechanism.

All UI components are simply POJOs, which developers can instantiate, manipulate and extend directly and straightforwardly.

Notifications of events and synchronization of component's states are done automatically making Ajax communication and browser dependencies totally transparent to developers.

In addition to pure Java, ZK allows developers to design UI in a markup language called ZUML (ZK User Interface Markup Language), which is an enhanced version derived from XUL. ZUML supports EL expressions, declarative control, and many scripting languages, including Java (BeanShell), Groovy, Ruby, and more.

While most of ZK application's code, for best productivity and security, runs at the server, ZK's Server+Client Fusion architecture allows developers to optimize responsiveness and leveraging the client's computing power by distributing some of the application code to the client.

ZK: What It Is Not

ZK assumes nothing about back-end services, persistence or inter-server communication. ZK is designed to be as thin as possible, while providing the seamless integration with other Java technologies. All of your favorite Java technologies such as JDBC, Hibernate, Spring, JSP, Java Mail, EJB or JMS work the same way as you are familiar with.

ZK doesn't provide RPC, RMI or other API for developers to communicate between clients and servers, since all code runs at the server[1].

ZK doesn't enforce developers to use scripting, pure Java, markup languages, MVC or other design patterns, but providing them as options to satisfy the different skill set, methodologies, and demands that your team might have or be required to.

ZK supports AJAX transparently but a ZK application is not limited to the scope of Ajax applications. With ZK Mobile and ZK Android, your applications could reach any devices not equipped with a modern browser.


  1. Client-side programming could leverage jQuery's Ajax mechanism or ZK Update engine to synchronize with the server manually.