Release NotesJune 25, 2008
About UltraLightClient '08
UltraLightClient '08 includes the following new features:
|ULC Application Development Guide||This document describes how to be productive from the start.
It lists best practices by experienced UltraLightClient developers.
|Data Types Improvements||Data types are now able to provide error feedback. The number
based data types provide an API to configure the rounding mode.
|Project Wizard||UltraLightClient comes with an Ant-based project wizard that
generates a ready to use Eclipse project for you. The generated
project contains a sample application that uses all the new
features of UltraLightClient. So using the generator is an easy way to
explore these new features.
No more need to manually setup your UltraLightClient project. Get productive quickly and avoid common pitfalls. No more need to setup Server deployment, as you can start the generated application in development as well as in client-server mode.
For more information have a look at the tutorial in the ULC Application Development Guide that comes with the release.
|Application Framework||UltraLightClient now comes with a simple application
framework that provides the following features:
|Form Model||This release now includes high-level components to ease the
development of forms. For more informations have a look at the It's all about the form... blog post.
|Sortable Table||Tables are now sortable out of the box. For more information
have a look at the blog post on The invisible model.
|Table Binding||There is now an easy mechanism to bind beans to tables. For more information have a look at the blog post on The invisible model.|
|Easy Configuration||The whole application configuration has been simplified. You
now are able to configure all aspects of your application (e.g. look
and feel, client services to use, etc.) at one central place. This
configuration is respected by all deployment options (development,
Applet, JNLP, Standalone, Servlet).
For more informations have a look at the One file to rule them all blog post.
|Easy Deployment||UltraLightClient now comes with convenience Servlets that
return default HTML pages and JNLP files that start your application.
No more need to write custom HTML/JSP pages and JNLP files.
For more informations on the new features have a look at the
- The big easy blog post.
- Tutorial in the new UltraLightClient Application Development Guide.
Please see the ULC 6.2.2 release notes for previous release notes.
To migrate from UltraLightClient 6.2.2 to UltraLightClient '08, please see the migration notes.
UltraLightClient '08 requires the Java Runtime Environment (JRE) 1.4.2 or later on the server and on the client. The application framework addon requires JRE 1.5 or later.
To deploy an UltraLightClient application in a J2EE server, the server needs to support either at least the Servlet 2.4 specification or at least the EJB 2.1 specification.
Modules, Parts and Release Structure
The UltraLightClient release includes all components required to successfully develop and deploy UltraLightClient applications. The UltraLightClient modules, parts, packages, and the structure of the current release are described in the following sections.
The UltraLightClient release is split into modules. Each module belongs to exactly one of five categories:
The UltraLightClient core.
Always needed, for development and deployment.
Server-side integrations into containers, e.g. Servlet, EJB.
Only needed for server deployment.
Client-side integrations into environments, e.g. Applet, JNLP.
Only needed for client deployment.
Utilities and extensions, e.g. application framework, test framework, QTP integration.
Only needed on demand.
Samples demonstrating the usage of UltraLightClient, e.g. Hello, ULCSet, OnlineShop.
Not needed during development or deployment.
The category and module names are reflected in the directory structure of the release, e.g. environment/applet for the applet module that belongs to the environement category.
A module directory contains subdirectories with the following contents:
Jar files that contain the module classes.
For sample and add-on modules the required libraries.
Only for sample modules: the required resources, e.g. images, property files
Either complete source code or source stubs.
The source stubs are used to enable code completions in IDEs.
Only for sample modules: ready to deploy web application, i.e. war files
Each of these modules can contain up to four parts:
Contains classes to be deployed on the client side.
Runs inside the sandbox.
Contains classes to be deployed on the client side.
Does not run inside the sandbox. The additional permissions required depend on the module.
Contains classes to be deployed on the server side.
Contains all classes needed during development, i.e. the client, trusted, and server parts plus some additional development classes.
The part names are reflected in the filename of the jar files in the lib and src directory of the corresponding module, e.g. ulc-applet-client.jar and ulc-applet-client-src.jar for the classes and source stubs of the applet module that have to be deployed on the client side.
|ulc-2008||UltraLightClient '08 home directory|
|Add-ons to the UltraLightClient base framework|
|base||UltraLightClient base framework|
|J2EE server integration including EJB container integration and Servlet container integration and integration into local container for stand-alone (single JVM) ULC applications.|
|Client environment integration for applet deployment, JNLP deployment, and standalone deployment.|
|license||the jar file with the deployment license key|
|previous_releasenotes||Previous release notes|
|Sample applications with ready to run Tomcat Servlet container|
|build.txt||Contains the build number|
|LicenseAgreement.pdf||The license Agreement|
|UBA-7285||Input is not blocked for heavy weight popup menus|
|UBA-7351||UITextComponent.setValue() does not respect default value of associated data type|
|UBA-7363||MemoryLeak in DefaultModelAdapterProvider||The list of frames (ULCFrame.getFrames()) and the list of owned windows (ULCWindow.getOwnedWindows()) have the same issue. Fixed these two places as well.|
|UBA-7392||The source stub for ULCLazyLoadingContainer is corrupt|
|UBA-7411||AllPermissionsFileService.chooseFile() does not throw a ServiceException|
|UBA-7412||setText and setMnemonic on ULCLabel and ULCAbstractButton do not update the displayedMnemonicIndex property|
|UBA-7413||UIScrollPane.BasicScrollPane.setCorner() breaks with recent JRE6|
|UBA-7414||ULCComboBox should not trigger an model event on client-side while synchronizing state|
|UBA-7416||UISession.waitForIdle() may lead to a dead-lock when invoked from multiple threads|
|UBA-7417||Editable combobox does not function properly as an enabler||The enabling condition for combo boxes now depends on the
combo box being editable or not:
|UBA-7423||Possible deadlock when UISession is created on EDT|
|UBA-7426||Cell based popup menus do not work correctly in ULCTableTree if the selection is not set before the popup is triggered|
|UBA-7427||ULCScrollBar should report positon 1 if knob has reached maximum|
|UBA-7439||getInvoker() on ULCPopupMenu of a ULCTableTree returns null.|
|UBA-7442||ULCList.setSelectedIndex() does not clear previous selection|
|UBA-7444||Editors are not loaded to the client side|
|UBA-7446||The textual representation of a ULCTable / ULCTableTree drag operation takes model indexes instead of view indexes|
|UBA-7452||Session serialization is broken for round trip listeners that reference frames|
|UBA-6840||Creating a custom cell renderer without an empty constructor does not work and no error message is displayed|
|UBA-6879||I18N for ULCPercentDataType||New API:
|UBA-6961||ULCNumberDataType does not round correctly||New API:
|UBA-7034||JNLP integration should not manage cookies in JRE 1.5|
|UBA-7054||ULCTable should provide an API to sort / filter rows as JTable in Java 6||New API:
|UBA-7286||Improve support for ULC applications that do not provide their own root||New API:
|UBA-7367||Add missing documentation for the following extension APIs|
|UBA-7387||Provide support for forms||New API:
|UBA-7388||Provide simple application framework||New API:
|UBA-7389||Simplify Servlet deployment||New API:
|UBA-7390||Provide default bindings for table models||New API:
|UBA-7391||Provide template generators||New API:
|UBA-7415||Provide a way to avoid the caching of renderer components for specific cases||New API:
|UBA-7418||Make Toolkit.getDefaultToolkit().getMenuShortcutKeyMask() available on Server Side||New API:
|UBA-7419||Provide an API to enable / disable user interaction verification||New API:
|UBA-7420||Provide application API to get the type of the client environment and the type of the server container||New API:
|UBA-7428||ULCTable should provide a fillsViewportHeight property||New API:
|UBA-7430||Provide ClientContext.getLookAndFeelSupportsWindowDecorations() API||New API:
|UBA-7431||Provide ClientContext.setLocale() API to set client locale||New API:
|UBA-7443||UITextComponent should provide access to the most recent DataTypeConversionException||New API:
|UBA-7450||Simplify application configuration||New API:
|UBA-7451||Add cookbook style document to the release||New API:
Replace ApplicationContext.getContainerAdapterClassName() with ApplicationContext.getServerContainerType(). The new API returns an int that identifies the server container type the application is deployed into:
- DEVELOPMENT: Development container type
- EJB: EJB container type
- LOCAL: Local container type
- SERVLET: Servlet container type
- UNDEFINED: unknown container type
You can find known problems and limitations in our issue database.
Product and company names herein may be trademarks of their respective owners.