Ultra Light Client Logo

Release Notes for ULC Mobile 0.9

December 31, 2006

 

About ULC Mobile 0.9

ULC Mobile is 0.9 is a migrated version of ULC 6.1.1. ULC 6.1.1 version has been ported such that ULC's client-side part works in a Java environment which based on the CrE-ME Java virtual machine from NSICom. In particular, ULC Mobile works with the Swing 1.1.1 version, which NSICom offers for CrE-ME 4.11. For details on CrE-ME, please refer to http://www.nsicom.com.

To understand the difference between ULC Mobile 0.9 and ULC 6.1.1, please see the porting notes.

 

Version Notes

ULC Mobile 0.9 requires the Java Runtime Environment (JRE) 1.3.1 or later on the server, and the Java Runtime Environment (JRE) 1.3.1 or later or CrE-ME 4.11 (together with CrE-ME's Swing 1.1.1 version) on the client.

The ULC Mobile client has been tested on Windows XP with the following deployment options:

The ULC client has also been tested on Windows Mobile 2003 (in conjunction with a HP iPAQ hx4700 handheld device) with the following deployment options:

The ULC Mobile server has been tested with the following operating system, Servlet container and Java Runtime Environment (JRE) combinations:

 

Modules, Parts and Release Structure

The ULC Mobile release includes all components required to successfully develop and deploy ULC Mobile applications. The ULC Mobile modules, parts, packages, and the structure of the current release are described in the following sections.

 

Modules

The ULC Mobile release is split into modules. Each module belongs to exactly one of four 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:

 

Parts

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. ulcmobile-applet-client.jar and ulcmobile-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

ulcmobile-0.9 ULC Mobile home directory
   base ULC Mobile base framework
   container
      servlet
J2EE server integration including Servlet container integration (currently the only server-side deployment option).
   doc
      apidoc
      ULCMobileArchitectureGuide.pdf
      ULCMobileDeploymentGuide.pdf
      ULCMobileEssentialsGuide.pdf
      ULCMobileExtensionGuide.pdf
      ULCMobileInstallGuide.pdf
      ULCMobileReferenceGuide.pdf
ULC documentation
   environment
      applet
      standalone
Client environment integration for applet deployment, and standalone deployment.
   license the jar file with the deployment license key
   previous_releasenotes Previous release notes (currently empty)
   sample
      hello
      productcatalog
      pie
      teammembers
      tomcat
      ulcset
Sample applications with ready to run Tomcat Servlet container
   build.txt Contains the build number
   LicenseAgreement.pdf The license Agreement
   releasenotes.html This document

 

Porting Notes

This section describes the differences between ULC 6.1.1 and ULC Mobile in detail. It highlights what features had to be removed, changed or added in order to port ULC such that it works with CrE-ME 4.11 (and the related Swing 1.1.1 version). In essence CrE-ME offers a Swing API, which represents a (close) subset of the Swing API available under the JDK 1.3.1.

 

Feature Description Added, Removed, Changed or Fixed Comments
Drag and Drop API RemovedNot supported by CrE-ME
com.ulcmobile.base.application.datatype.ULCRegularExpressionDataType RemovedBased on a third party library which would be inconvenient to deploy on CrE-ME
JNLP Deployment RemovedNot supported by CrE-ME
EJB Deployment Removed
com.ulcmobile.base.application.ULCWindow.setLocationRelativeTo() RemovedNot supported by CrE-ME
com.ulcmobile.base.application.ULCWindow.addWindowFocusListener()/removeWindowFocusListener RemovedNot supported by CrE-ME
com.ulcmobile.base.application.ULCFrame.setExtendedState()/getExtendedState() RemovedNot supported by CrE-ME
Extended Modifiers on com.ulcmobile.base.application.event.KeyEvent (including SHIFT_DOWN_MASK, CTRL_DOWN_MASK, META_DOWN_MASK, ALT_DOWN_MASK, ALT_GRAPH_DOWN_MASK); RemovedNot supported by CrE-ME
com.ulcmobile.base.application.util.AffineTransform and related API on com.ulcmobile.base.application.util.Font (e.g. getAffineTransform()) RemovedNot supported by CrE-ME
double value for font sizes in constructurs of com.ulcmobile.base.application.util.Font RemovedNot supported by CrE-ME
Alpha value in com.ulcmobile.base.application.util.Color RemovedNot supported by CrE-ME
The owner of ULCWindow must be a ULCFrame (and not ULCWindow anymore) ChangedULCWindow maps to JWindow and ULCFrame maps to JFrame on the client side but CrE-ME's JWindow only accepts java.awt.Frame as its owner. Moreover, java.awt.Frame is a super class of JFrame but not of JWindow.
The owner of ULCDialog must be a ULCFrame (and not ULCWindow anymore) ChangedULCDialog maps to JDialog and ULCFrame maps to JFrame on the client side but CrE-ME's JDialog only accepts java.awt.Frame as its owner. Moreover, java.awt.JFrame is a super class of JFrame but not of JDialog.
roundedCorners property in com.ulcmobile.base.application.border.ULCLineBorder RemovedNot supported by CrE-ME
com.ulcmobile.base.application.ULCTabbedPane.setToolTipText()/getToolTipText() RemovedNot supported by CrE-ME
com.ulcmobile.base.shared.FileChooserConfig.setAcceptAllFileFilterUsed()/isAcceptAllFileFilterUsed RemovedNot supported by CrE-ME
com.ulcmobile.base.application.ULCTextField.setHorizontalAlignment()/getHorizontalAlignment() do not support the values LEADING and TRAILING anymore ChangedNot supported by CrE-ME
com.ulcmobile.base.application.border.ULCTitledBorder.setTitleJustification()/getTitleJustification() do not support the values LEADING and TRAILING anymore ChangedNot supported by CrE-ME
com.ulcmobile.base.application.ULCSplitPane.setResizeWeight()/getResizeWeight() RemovedNot supported by CrE-ME
com.ulcmobile.base.application.ULCCheckBox.setBorderPaintedFlat()/getBorderPaintedFlat() RemovedNot supported by CrE-ME
com.ulcmobile.base.application.ULCTree.setToggleClickCount()/getToggleClickCount() RemovedNot supported by CrE-ME
The default carrier stream provider in ULCMobile is com.ulcmobile.base.shared.TrivialCarrierStreamProvider (instead of com.ulcmobile.base.shared.ZipCarrierStreamProvider) ChangedAvoiding CPU intensive zipping (on a mobile device) has more important than reducing network message size
com.ulcmobile.base.application.ULCScrollBar.setHorizontalSyncTick()/getHorizontalSyncTick() AddedThis new API allows to avoid unnessary updates of the viewport, when the horizontal scroll bar of the controlling scroll pane is dragged. Normally Swing synchronized the viewport display, whenever the scroll bar is moved a pixel. The new API allows to change this such that synchronization happens only after moving the scroll bar n pixels. This results in a optimization on resource constrained devices and reduces corresponding delays when updating the GUI.
com.ulcmobile.base.application.ULCScrollBar.setVerticalSyncTick()/getVerticalSyncTick AddedCorresponds to ULCScrollBar.setHorizontalSyncTick()/getHorizontalSyncTick() (but it applies to vertical scroll bars instead).
Replaced OnlineShop sample by ProductCatalog sample ChangedThe ProductCatalog GUI is better suited for a mobile device (with limited screen size)
Changed sample applications so that the fit Real VGA mode resolution. Changed
New class packaging for ULC Mobile ChangedAll library package names begin with com.ulcmobile (instead of com.ulcjava)
New jar file names for ULC Mobile ChangedAll jar file names have the form ulcmobile-*.jar (instead of ulc-*.jar)
Setting a very large text on a ULCTextField results in a UTFDataFormatException Fixed
ULC is not able to serialize String arrays that contain null elements Fixed
Default coders should support java.sql.Date, java.sql.Time, java.sql.Timestamp Fixed
ULC should support TimeZone objects out of the box Fixed

 

Known Problems and Limitations

The following list discusses problems and limitations that might occur in the context of ULC Mobile. Many of the issues are related to CPU or memory constraints on handheld devices or they are related to the CrE-ME environment.

 

Issue Known Problem or Limitation Comments
Applet deployment is not officially supported on ULC Mobile Limitation CrE-ME's applet plugin for Pocket Internet Explorer is not stable enough
ULCTableTree is not officially supported on ULC Mobile Limitation ULCTableTree relies on Swing internals, which results in instabilities in conjunction with CrE-ME
Custom Look & Feels such as JGoodies are not supported Limitation Most additional Look & Feels are compiled against higher Swing versions and therfore they don't work with CrE-ME. Moreover, they might prevent some CrE-ME related workarounds from functioning
Resizing a window programmatically sometimes causes the CrE-ME simulator to crash Problem Only happens in the simulator of the CrE-ME development environment
The CrE-ME simulator sometimes hangs for an unknown reason while running Java programs Problem Only happens in the simulator of the CrE-ME development environment
If CrE-ME runs short of heap memory on a handheld device, the corresponding application becomes very slow Problem The CrE-ME JVM is trapped in garbage collections
CrE-ME and Swing are very resource consuming on handheld devices. Therefore, ULC Mobile applications with a complex GUI might result in "out of memory" exceptions. Problem A corresponding CrE-ME enabled handheld device should have an up-to-date processor and (at least) 128 MB RAM
ULC sample application rely on Real VGA mode screen size. Limitation The sample application are designed to be displayed in this mode. Ensure the your handheld device support Real VGA resultion. Use tools such as SE_VGA in order run your handheld device in Real VGA mode.

 

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

Copyright © 2000-2006 Canoo Engineering AG