Ultra Light Client Logo

Release Notes

June 25, 2008


About UltraLightClient '08

UltraLightClient '08 includes the following new features:

Feature Description
ULC Application Development Guide This document describes how to be productive from the start. It lists best practices by experienced UltraLightClient developers.

Application Development Guide

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.

Application Development Guide

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.

Project Wizard

Application Framework UltraLightClient now comes with a simple application framework that provides the following features:
  • Easy to use application skeletons
  • Easy to use internationalization
  • Easy to use skinning
  • Easy to use actions
For more informations have a look at the Always at your service blog post.
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.

Sortable Table

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.

Configuration File

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

Please see the ULC 6.2.2 release notes for previous release notes.

The sections Fixed Bugs and Implemented Feature Requests give an overview of the most important differences between UltraLightClient 6.2.2 and UltraLightClient '08.

To migrate from UltraLightClient 6.2.2 to UltraLightClient '08, please see the migration notes.


Version 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 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:



Each of these modules can contain up to four parts:

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.


Release Structure

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.
UltraLightClient documentation
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
   releasenotes.html This document


Fixed Bugs

PR Description Comments
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:
  • editable => same condition as for a text field => editor empty or not
  • non editabl => is an element from the drop-down list selected or not
The has changed behavior of an editable combo box has been adapted accordingly. As soon as the user starts typing the editable combo box is considered as "has changed".
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  


Implemented Feature Requests

PR Description Comments
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:
  • ULCPercentDataType(Locale locale, int fractionalDigits)
UBA-6961 ULCNumberDataType does not round correctly New API:
  • ULCNumberDataType.roundMode property
  • ULCPercentDataType.roundMode property
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:
  • TableRowSorter class
  • TableRowFilter class
  • IRowSorterListener listener and RowSorterEvent event
  • ULCTable.rowSorter property
  • ULCTable.autoCreateRowSorter property
  • ULCTable.updateSelectionOnSort property
  • ULCTable.convertRowIndexToModel(int)
  • ULCTable.convertRowIndexToView(int)
UBA-7286 Improve support for ULC applications that do not provide their own root New API:
  • InputBlocker.addRootPaneToBlock(UISession session, JRootPane rootPane)
  • InputBlocker.removeRootPaneToBlock(UISession session, JRootPane rootPane)
UBA-7367 Add missing documentation for the following extension APIs  
UBA-7387 Provide support for forms New API:
  • Classes in the com.ulcjva.applicationframework.application.form package
UBA-7388 Provide simple application framework New API:
  • Classes in the com.ulcjva.applicationframework.application package
UBA-7389 Simplify Servlet deployment New API:
  • ClientAppletTagDownloader Servlet
  • JNLPDownloader Servlet
  • ClientJarDownloader Servlet
UBA-7390 Provide default bindings for table models New API:
  • TableBinding class
UBA-7391 Provide template generators New API:
  • Generate project wizard
  • Generate bean views wizard
UBA-7415 Provide a way to avoid the caching of renderer components for specific cases New API:
  • INonCachingEditorComponent tagging interface
  • INonCachingRendererComponent tagging interface
UBA-7418 Make Toolkit.getDefaultToolkit().getMenuShortcutKeyMask() available on Server Side New API:
  • ClientContext.getMenuShortcutKeyMask()
UBA-7419 Provide an API to enable / disable user interaction verification New API:
  • AWTOperator.verification property
UBA-7420 Provide application API to get the type of the client environment and the type of the server container New API:
  • ClientContext.getClientEnvironmentType()
  • ApplicationContext.getServerContainerType()
See migration notes .
UBA-7428 ULCTable should provide a fillsViewportHeight property New API:
  • ULCTable.fillsViewportHeight property
UBA-7430 Provide ClientContext.getLookAndFeelSupportsWindowDecorations() API New API:
  • ClientContext.getLookAndFeelSupportsWindowDecorations()
UBA-7431 Provide ClientContext.setLocale() API to set client locale New API:
  • ClientContext.setLocale()
UBA-7443 UITextComponent should provide access to the most recent DataTypeConversionException New API:
  • ULCAbstractErrorManager class
  • ULCDefaultErrorManager class
  • IErrorVisualizer interface
  • DefaultErrorVisualizer class
  • ULCDateDataType(ULCErrorManager)
  • ULCNumberDataType(ULCErrorManager)
  • ULCPercentDataType(ULCErrorManager)
  • ULCRegularExpressionDataType(ULCErrorManager)
  • ULCStringDataType(ULCErrorManager)
UBA-7450 Simplify application configuration New API:
  • ULCApplicationConfiguration.xml configuration file
  • ULCApplicationConfiguration.xsd XML scheme
UBA-7451 Add cookbook style document to the release New API:
  • ULC Application Development Guide document


Migration Notes


Replace ApplicationContext.getContainerAdapterClassName() with ApplicationContext.getServerContainerType(). The new API returns an int that identifies the server container type the application is deployed into:


Known Problems and Limitations

You can find known problems and limitations in our issue database.

Product and company names herein may be trademarks of their respective owners.

Copyright (c) 2000-2015 Canoo Engineering AG