ZUML
   HOME

TheInfoList



OR:

ZK is an
open-source Open source is source code that is made freely available for possible modification and redistribution. Products include permission to use the source code, design documents, or content of the product. The open-source model is a decentralized sof ...
Ajax Ajax may refer to: Greek mythology and tragedy * Ajax the Great, a Greek mythological hero, son of King Telamon and Periboea * Ajax the Lesser, a Greek mythological hero, son of Oileus, the king of Locris * ''Ajax'' (play), by the ancient Greek ...
Web application framework A web framework (WF) or web application framework (WAF) is a software framework that is designed to support the development of web applications including web services, web resources, and web APIs. Web frameworks provide a standard way to build and ...
, written in
Java Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's List ...
, that enables creation of
graphical user interface The GUI ( "UI" by itself is still usually pronounced . or ), graphical user interface, is a form of user interface that allows users to interact with electronic devices through graphical icons and audio indicator such as primary notation, inste ...
s for
Web application A web application (or web app) is application software that is accessed using a web browser. Web applications are delivered on the World Wide Web to users with an active network connection. History In earlier computing models like client-serve ...
s with little required programming knowledge. The core of ZK consists of an
Ajax Ajax may refer to: Greek mythology and tragedy * Ajax the Great, a Greek mythological hero, son of King Telamon and Periboea * Ajax the Lesser, a Greek mythological hero, son of Oileus, the king of Locris * ''Ajax'' (play), by the ancient Greek ...
-based
event-driven Event driven may refer to: The term event-driven refers to a methodology that focuses on events and event dependencies. Examples include * Event-driven finite-state machine, finite-state machine where the transition from one state to another i ...
mechanism, over 123
XUL XUL ( ), which stands for XML User Interface Language, is a user interface markup language developed by Mozilla. XUL is an XML dialect for writing graphical user interfaces, enabling developers to write user interface elements in a manner simila ...
and 83
XHTML Extensible HyperText Markup Language (XHTML) is part of the family of XML markup languages. It mirrors or extends versions of the widely used HyperText Markup Language (HTML), the language in which Web pages are formulated. While HTML, prior ...
-based components, and a mark-up language for designing user interfaces. Programmers design their application pages in
feature-rich In software, the term feature has several definitions. The Institute of Electrical and Electronics Engineers defines the term ''feature'' in IEEE 829 as " distinguishing characteristic of a software item (e.g., performance, portability, or functio ...
XUL XUL ( ), which stands for XML User Interface Language, is a user interface markup language developed by Mozilla. XUL is an XML dialect for writing graphical user interfaces, enabling developers to write user interface elements in a manner simila ...
/
XHTML Extensible HyperText Markup Language (XHTML) is part of the family of XML markup languages. It mirrors or extends versions of the widely used HyperText Markup Language (HTML), the language in which Web pages are formulated. While HTML, prior ...
components, and manipulate them upon events triggered by end user's activity. It is similar to the programming model found in desktop GUI-based applications. ZK uses a server-centric approach in which the content synchronization of components and the event pipe-lining between clients and servers are automatically done by the engine, and Ajax plumbing codes are completely transparent to web application developers. Therefore, the end users get the similar engaged interactivity and responsiveness as a desktop application, while programmers' development retains a similar simplicity to that of desktop applications. It's important to note that ZK does not use the standard web request <=> response mechanism and DOES NOT send form fields to the server using GET + query parameters or one POST request. Instead, AJAX requests are sent to the server to update the internal state of each screen widget. At the browser, ZK only downloads a
JSON JSON (JavaScript Object Notation, pronounced ; also ) is an open standard file format and data interchange format that uses human-readable text to store and transmit data objects consisting of attribute–value pairs and arrays (or other ser ...
description of the web page and uses a client renderer to turn that into a UI. It's quite efficient and under closer inspection, does not download everything at once. A look at the traffic between client and the server reveals several requests going back and forth between client and browser until the page rendering eventually completes. The optional client-side customization allows the developer to leverage the client-side resources with the so-called server+client fusion, for customization and to reduce the Ajax traffic. In addition to component-based programming in a manner similar to
Swing Swing or swinging may refer to: Apparatus * Swing (seat), a hanging seat that swings back and forth * Pendulum, an object that swings * Russian swing, a swing-like circus apparatus * Sex swing, a type of harness for sexual intercourse * Swing rid ...
, ZK supports a mark-up language for rich user interface definition called ZUML. * ZUML is designed for non-programmer developers to design user interfaces intuitively. * ZUML allows developers to meld different markup languages, such as
Mozilla Mozilla (stylized as moz://a) is a free software community founded in 1998 by members of Netscape. The Mozilla community uses, develops, spreads and supports Mozilla products, thereby promoting exclusively free software and open standards, wi ...
XUL language and XHTML, seamlessly into the same page. * ZUML allows developers to embed scripts in pure Java language (interpreted by
BeanShell BeanShell is a small, free, embeddable Java source interpreter with object scripting language features, written in Java. It runs in the Java Runtime Environment (JRE), dynamically executes standard Java syntax and extends it with common scripting c ...
) and use EL expressions to manipulate the components and access data.


Features

* Simply Java. ZK is renowned for its "Ajax without JavaScript" approach, enabling developers to build rich web applications transparently without any knowledge of Ajax and JavaScript. * Responsive design themes along with Bootstrap support * HTML 5 and CSS 3 support * Over 100 Ajax components offer UI designers a variety of feature rich components to meet the demands of enterprise Ajax applications. * ZUML makes the design of rich user interfaces similar to authoring HTML pages. ZUML is a variant of XUL inheriting all features available to XML, and separates the UI definition from the run-time logic. * Event-driven component-based model (similar to desktop programming models) supporting multiple event driven GUI design patterns. * Support for Model-View-Controller (MVC), Model-View-Presenter and Model-View-ViewModel (MVVM) design patterns * Databinding capability via in-ZUML-page annotations that automates CRUD and state synchronization between UI view and the data and POJO. * Application components, such as spreadsheet, pivot table, and calendar. * Embedding scripting support with Java (Beanshell). This is an important benefit as you can use a unified programming language for both user interface and backend programming. Optional support for other serverside Java scripting in other languages such as JavaScript (Rhino), Ruby (JRuby), Python (Jython) and Groovy. * Support for integrating with existing web frameworks via a JSP custom tag library, JSF support, Portlet, and a Servlet Filter. Has support for Spring and Hibernate. * Extensible in that programmers can create new custom UI controls. Groups of controls can be re-used as a macro component. * Extensive charting with ZK Charts


ZK 9.5.0

The latest version 9.5.0 was released on Sept. 29, 2020."ZK 9.5.0 release notes"
/ref> It comes with 80+ changes and a preview version of WCAG support.


Differences from XUL

* ZK is a server side framework which emits HTML and thus does not depend on client side presence of
Gecko Geckos are small, mostly carnivorous lizards that have a wide distribution, found on every continent except Antarctica. Belonging to the infraorder Gekkota, geckos are found in warm climates throughout the world. They range from . Geckos ar ...
making it portable to any browser. ZK takes ZUML (xul and xhtml) serverside pages as input and outputs dhtml for the browser. * ZK processes user interface logic on the server in Java. This increases choice in the scripting engines and application libraries that can be used to create logic. Presentation effects can be delegated to the browser using the Client-side Actions feature to reduce server load for dhtml effects. Running the application logic on the server in a single application container reduces the amount of cross browser and browser version testing when compared to extensively programming the DOM at the browser. * While ZK and XUL have an overlapping subset of components, ZK has its own unique component sets. The component library can be extended with custom components. Macro components can be defined that are composites of components. * ZK provides serverside databinding annotations to declaratively bind UI components to serverside data. *
Look and Feel In software design, the look and feel of a graphical user interface comprises aspects of its design, including elements such as colors, shapes, layout, and typefaces (the "look"), as well as the behavior of dynamic elements such as buttons, boxes ...
differences.


System requirements

*
JRE The Joe Rogan Experience (JRE) is a podcast hosted by American comedian and presenter Joe Rogan. JRE can also mean: *Java Runtime Environment *The Joe Rogan Experience *JR East, see East Japan Railway Company The is a major passenger railway ...
version 1.5 or later * A Web server supporting
Servlet A Jakarta Servlet (formerly Java Servlet) is a Java software component that extends the capabilities of a server. Although servlets can respond to many types of requests, they most commonly implement web containers for hosting web application ...
2.3 or later


Prerequisites of programming skills


Required

* Basic knowledge of Java or a Java scripting engine language such as
Groovy ''Groovy'' (or, less commonly, ''groovie'' or ''groovey'') is a slang colloquialism popular during the 1950s, '60s and '70s. It is roughly synonymous with words such as "excellent", "fashionable", or "amazing", depending on context. History The ...
,
Rhino A rhinoceros (; ; ), commonly abbreviated to rhino, is a member of any of the five extant species (or numerous extinct species) of odd-toed ungulates in the family Rhinocerotidae. (It can also refer to a member of any of the extinct species o ...
(Java JavaScript),
JRuby JRuby is an implementation of the Ruby programming language atop the Java Virtual Machine, written largely in Java. It is free software released under a three-way EPL/GPL/LGPL license. JRuby is tightly integrated with Java to allow the embedding ...
(Java Ruby) or
Jython Jython is an implementation of the Python programming language designed to run on the Java platform. The implementation was formerly known as JPython until 1999. Overview Jython programs can import and use any Java class. Except for some standa ...
(Java Python) * Basic knowledge of
HTML The HyperText Markup Language or HTML is the standard markup language for documents designed to be displayed in a web browser. It can be assisted by technologies such as Cascading Style Sheets (CSS) and scripting languages such as JavaScri ...
and
XUL XUL ( ), which stands for XML User Interface Language, is a user interface markup language developed by Mozilla. XUL is an XML dialect for writing graphical user interfaces, enabling developers to write user interface elements in a manner simila ...


Optional

* Knowledge of a scripting language to write the glue logic (running on the server): **
BeanShell BeanShell is a small, free, embeddable Java source interpreter with object scripting language features, written in Java. It runs in the Java Runtime Environment (JRE), dynamically executes standard Java syntax and extends it with common scripting c ...
(Java interpreter),
JavaScript JavaScript (), often abbreviated as JS, is a programming language that is one of the core technologies of the World Wide Web, alongside HTML and CSS. As of 2022, 98% of Website, websites use JavaScript on the Client (computing), client side ...
,
Groovy ''Groovy'' (or, less commonly, ''groovie'' or ''groovey'') is a slang colloquialism popular during the 1950s, '60s and '70s. It is roughly synonymous with words such as "excellent", "fashionable", or "amazing", depending on context. History The ...
,
Ruby A ruby is a pinkish red to blood-red colored gemstone, a variety of the mineral corundum ( aluminium oxide). Ruby is one of the most popular traditional jewelry gems and is very durable. Other varieties of gem-quality corundum are called sa ...
, Scala and
Python Python may refer to: Snakes * Pythonidae, a family of nonvenomous snakes found in Africa, Asia, and Australia ** ''Python'' (genus), a genus of Pythonidae found in Africa and Asia * Python (mythology), a mythical serpent Computing * Python (pro ...
* Object Oriented Programming * Servlet Programming * Ajax *
JavaScript JavaScript (), often abbreviated as JS, is a programming language that is one of the core technologies of the World Wide Web, alongside HTML and CSS. As of 2022, 98% of Website, websites use JavaScript on the Client (computing), client side ...
(on the client side) * Declarative Databindings * JSTL style
Expression Language An expression language is a language for creating a computer-interpretable representation of specific knowledge and may refer to: *Advanced Boolean Expression Language, an obsolete hardware description language for hardware descriptions * Data Ana ...


ZUML

ZUML (ZK User Interface Markup Language) is a markup language for rich user interfaces definition. * ZUML is designed for non-programmers to design user interfaces efficiently with the ZUML markup * ZUML allows developer to meld different markup languages, such as
Mozilla Mozilla (stylized as moz://a) is a free software community founded in 1998 by members of Netscape. The Mozilla community uses, develops, spreads and supports Mozilla products, thereby promoting exclusively free software and open standards, wi ...
XUL language and XHTML, seamlessly into the same page. * ZUML allows developers to embed script in pure Java language (interpreted by
BeanShell BeanShell is a small, free, embeddable Java source interpreter with object scripting language features, written in Java. It runs in the Java Runtime Environment (JRE), dynamically executes standard Java syntax and extends it with common scripting c ...
) and use EL expressions to manipulate the components and access data. * ZUML is supported by ZK. * Official Documentation : ZUML Reference


Client-side technologies

ZK is a server-centric framework. Technically you don't need to know about the implementation at the client side. It is how ZK Mobile running on Java Mobile VM is done. Since ZK 5.0, the so-called Server+client Fusion architecture is introduced. Developers are allowed to access the client-side widgets directly if they want to. ZK Client Engine is based on
jQuery jQuery is a JavaScript library designed to simplify HTML DOM tree traversal and manipulation, as well as event handling, CSS animation, and Ajax. It is free, open-source software using the permissive MIT License. As of Aug 2022, jQuery is used ...
. Technically you can use jQuery-compliant libraries and widgets.


ZK Add-Ons

ZK Charts
A charting component with APIs for displaying and controlling Charts from server-side ZK Pivottable
An Ajax data summarization component ZK Spreadsheet
An online Web spreadsheet component. Replaced by Keikaihttps://www.zkoss.org/product/keikai - ZK Spreadsheet is now Keikai


See also

*
List of rich web application frameworks : ''For a list of mobile only frameworks see Multiple phone web based application framework''. Below is a list of rich web application frameworks: {, class="wikitable sortable" style="width: auto; table-layout: fixed; text-align: center;" , - s ...
*
Comparison of JavaScript frameworks This is a comparison of web frameworks for front-end web development that are heavily reliant on JavaScript JavaScript (), often abbreviated as JS, is a programming language that is one of the core technologies of the World W ...
*
List of Ajax frameworks This is a list of notable Ajax frameworks, used for creating web applications with a dynamic link between the client and the server. Some of the frameworks are JavaScript compilers, for generating JavaScript and Ajax that runs in the web browser cl ...
* List of widget toolkits based on JavaScript


References


External links

{{DEFAULTSORT:Zk (Framework) Java (programming language) libraries Java platform User interface markup languages Web frameworks Ajax (programming) Rich web application frameworks Java enterprise platform