Release Notes for ULC Mobile 1.0
February 15, 2007
About ULC Mobile 1.0
ULC Mobile 1.0 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 1.0 and ULC 6.1.1, please see the porting notes. Please see the ULC Mobile 0.9 release notes for additional information.
Version Notes
ULC Mobile 1.0 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:
- Applet (running the ULC Mobile client as an applet in a PC's browser) on
- Mozilla 1.7.2
- Microsoft Internet Explorer 6
- Standalone (as a single client-side jar file, which connects to the server) on
- CrE-ME 4.10 Development Environment Simulator (with Swing 1.1.1)
- JRE 1.3.1
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:
- Applet using the Applet Plugin of CrE-ME 4.11 (and Swing 1.1.1) on Pocket Internet Explorer
- Standalone as a single client-side jar file which connects to the server with CrE-ME 4.11 (and Swing 1.1.1)
The ULC Mobile server has been tested with the following operating system, Servlet container and Java Runtime Environment (JRE) combinations:
- Windows 2000, Tomcat 4.1.3.0, JRE 1.3.1
- Linux, Tomcat 4.1.3.0, JRE 1.3.1
- Linux, Tomcat 5.2.28, JRE 1.4.2
- Linux, Weblogic 8.1, JRE 1.4.2
- Linux, JBoss 3.2.5, JRE 1.3.1
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:
- base
The ULC core.
Always needed, for development and deployment. - container
Server-side integrations into containers, e.g. Servlet.
Only needed for server deployment. - environment
Client-side integrations into environments, e.g. Applet, standalone.
Only needed for client deployment. - sample
Samples demonstrating the usage of ULC, e.g. Hello, ULCSet, Product Catalog.
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:
- lib
Jar files that contain the module classes.
For sample module the required libraries. - resource
Only for sample modules: the required resources, e.g. images, property files - src
Either complete source code or source stubs.
The source stubs are used to enable code completions in IDEs. - webapp
Only for sample modules: ready to deploy web application, i.e. war files.
Self-contained jar files for standalone deployment on the client side.
Parts
Each of these modules can contain up to four parts:
- client
Contains classes to be deployed on the client side.
Runs inside the sandbox. - server
Contains classes to be deployed on the server side. - development
Contains all classes needed during development, i.e. the client, 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. 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-1.0 | 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 | Removed | Not supported by CrE-ME |
| com.ulcmobile.base.application.datatype.ULCRegularExpressionDataType | Removed | Based on a third party library which would be inconvenient to deploy on CrE-ME |
| JNLP Deployment | Removed | Not supported by CrE-ME |
| EJB Deployment | Removed | |
| com.ulcmobile.base.application.ULCWindow.setLocationRelativeTo() | Removed | Not supported by CrE-ME |
| com.ulcmobile.base.application.ULCWindow.addWindowFocusListener()/removeWindowFocusListener | Removed | Not supported by CrE-ME |
| com.ulcmobile.base.application.ULCFrame.setExtendedState()/getExtendedState() | Removed | Not 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); | Removed | Not supported by CrE-ME |
| com.ulcmobile.base.application.util.AffineTransform and related API on com.ulcmobile.base.application.util.Font (e.g. getAffineTransform()) | Removed | Not supported by CrE-ME |
| double value for font sizes in constructurs of com.ulcmobile.base.application.util.Font | Removed | Not supported by CrE-ME |
| Alpha value in com.ulcmobile.base.application.util.Color | Removed | Not supported by CrE-ME |
| The owner of ULCWindow must be a ULCFrame (and not ULCWindow anymore) | Changed | ULCWindow 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) | Changed | ULCDialog 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 | Removed | Not supported by CrE-ME |
| com.ulcmobile.base.application.ULCTabbedPane.setToolTipText()/getToolTipText() | Removed | Not supported by CrE-ME |
| com.ulcmobile.base.shared.FileChooserConfig.setAcceptAllFileFilterUsed()/isAcceptAllFileFilterUsed | Removed | Not supported by CrE-ME |
| com.ulcmobile.base.application.ULCTextField.setHorizontalAlignment()/getHorizontalAlignment() do not support the values LEADING and TRAILING anymore | Changed | Not supported by CrE-ME |
| com.ulcmobile.base.application.border.ULCTitledBorder.setTitleJustification()/getTitleJustification() do not support the values LEADING and TRAILING anymore | Changed | Not supported by CrE-ME |
| com.ulcmobile.base.application.ULCSplitPane.setResizeWeight()/getResizeWeight() | Removed | Not supported by CrE-ME |
| com.ulcmobile.base.application.ULCCheckBox.setBorderPaintedFlat()/getBorderPaintedFlat() | Removed | Not supported by CrE-ME |
| com.ulcmobile.base.application.ULCTree.setToggleClickCount()/getToggleClickCount() | Removed | Not supported by CrE-ME |
| The default carrier stream provider in ULCMobile is com.ulcmobile.base.shared.TrivialCarrierStreamProvider (instead of com.ulcmobile.base.shared.ZipCarrierStreamProvider) | Changed | Avoiding CPU intensive zipping (on a mobile device) has more important than reducing network message size |
| com.ulcmobile.base.application.ULCScrollBar.setHorizontalSyncTick()/getHorizontalSyncTick() | Added | This 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 | Added | Corresponds to ULCScrollBar.setHorizontalSyncTick()/getHorizontalSyncTick() (but it applies to vertical scroll bars instead). |
| Replaced OnlineShop sample by ProductCatalog sample | Changed | The 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 | Changed | All library package names begin with com.ulcmobile (instead of com.ulcjava) |
| New jar file names for ULC Mobile | Changed | All 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 |
Fixed Bugs
| PR | Description | Comments |
| UMO-57 | In some situations shutting down the ULC Mobile client after an exception may fail. | |
| UMO-60 | Correct documentation about default carrier stream provider. |
Implemented Feature Requests
| PR | Description | Comments |
| UMO-58 | Provide API to execute runnables on the blocked event queue Asynchronously. | |
| UMO-59 | Provide generic support for customized handling of communication failures. |
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 that your handheld device support Real VGA resultion. Use tools such as SE_VGA in order run your handheld device in Real VGA mode. |
| Setting the "enabled" property to false has no effect on ULCTable and JTable. The table remains scrollable and selectable. | Bug | This is a pure Swing 1.1.1 bug. |
| Browser service does not work under standalone deployment | Bug | |
| Setting the connection type in the development runner gui before starting the application will cause a NullPointerException | Bug | |
| The server side logging in a clustered environment is not working correctly | Bug |
Product and company names herein may be trademarks of their respective owners.