Markup Language or Pure Java
ZK User Interface Markup Language (ZUML)
The ZK User Interface Markup Language (ZUML) is based on XML. You can use it to layout the GUI components for ZK application. For fast prototype, you can write java code inside it as
zscript. Therefore you can handle events inside it. Please refer to The zk user interface markup language.
Tags in ZUML represent GUI components of ZK, such as
textbox. For tags
<xxxx> which appear in *.zul, most of their tag names
xxxx refer to corresponding ZK GUI components. For example
<label>. You can visit javadoc for GUI components to see components ZK has.
UI and event handler
In most cases, developers use ZUML to layout UI components like
textbox. When an event occurs in the UI, ZK will automatically notify the server and trigger the relevant event handler (written in Java). From that point, you can do anything you can do in Java, as required, including step-by-step debugging, connecting to a database, or using 3rd party Java libraries/frameworks.
How ZUML and Java work together
For best practice, ZUML takes care of UI layout, and Java takes care of everything else.
Actually, you can write java code in ZUML, which is called
zscript. And you can add/remove GUI component in pure java file too. To the extreme, you can do everything using only ZUML, or using only Java. However, using only ZUML, you'll lack the ability of step-by-step debugging. It will also entangle views with codes, which will be hard to maintain. On the other hand, using only java, it's tedious to write codes to create component and to append it to DOM tree.
The Role of Java
For event handling, you can write java code in
zscript in ZUML for fast prototyping. Or like the example located here you can write event handling code in pure java file. ZUML has attributes
apply for certain usage,
Define UI component programmatic
For UI components, you can define UI components like
textbox in ZUML, or dynamically add UI components in Java codes. After all, ZK has a java class for each UI component. As the example located here, when you click the
button, it appends a
label component to the
window as a child.
In extreme cases, you can also write all UI components in Java without ZUML. 
Java is executed at server, call 3rd party library as you like
All Java code, whether implemented in zscript in ZUML, or in java file, is executed at server side. Therefore, you can fully utilize any java library as you like. The client side browser only gets the rendered html content and ZK client engine written in java script.
- please refer to next chapter The ZK User interface Markup Language for more information.
- Please refer to Chapter Richlet for more detail.
- There is a way for you to write java script to execute in client side browser. Please refer to Part G. Migrate/Integrate Other UI frameworks for detail.