| JWt | |
|---|---|
| Original author | Emweb |
| Initial release | 1.0.0 / December 2005; 20 years ago (2005-12) |
| Stable release | 4.12.1[1] |
| Written in | Java |
| Operating system | Cross-platform |
| Type | Web framework |
| License | Dual License:GNU General Public License orCommercial License |
| Website | www |
| Repository | github |
JWt (pronounced "jay-witty") is anopen-sourcewidget-centricweb application framework for theJava programming language developed byEmweb. It has an API that uses established GUI application development patterns. The programming model is component-based andevent-driven, similar toSwing.
The goal of the library is to benefit from the stateful component model used in desktop applications APIs, applied to web development, instead of the traditionalmodel–view–controller (MVC) model. Rather than using MVC at the level of a page, MVC is pushed to the level of individual components.
While the library uses a desktop application development model, it does support web-specific features includingsemantic URLs, browser history navigation support, internationalization, themes, and styling.
A unique feature of the library is its abstraction layer of the browser rendering model. The library usesAjax for communicating with Ajax-capable browsers, while using plain HTML form post-backs for other user agents (for accessibility and search engines). Using a progressive bootstrap method, the user interface is initially rendered as plain HTML, and for Ajax-capable browsers, it is automatically upgraded to use Ajax for increased interactivity.
JWt is distributed as a jar file. A JWt application is a war file that is deployed in a standards-compliantservlet container.
See the feature list on the project homepage for a more detailed overview.[2]
The Hello World![3] example full source code[4]
/* * A simple hello world application class which demonstrates how to react * to events, read input, and give feed-back. */publicclassHelloApplicationextendsWApplication{publicHelloApplication(WEnvironmentenv){super(env);setTitle("Hello world");getRoot().addWidget(newWText("Your name, please ? "));finalWLineEditnameEdit=newWLineEdit(getRoot());nameEdit.setFocus();WPushButtonbutton=newWPushButton("Greet me.",getRoot());button.setMargin(5,Side.Left);getRoot().addWidget(newWBreak());finalWTextgreeting=newWText(getRoot());button.clicked().addListener(this,newSignal.Listener(){publicvoidtrigger(){greeting.setText("Hello there, "+nameEdit.getText());}});}}