JVM Compatibility

The following is a list of known client limitations and issues with different vendor VMs that are supported by Nexaweb Platform.

These issues may represent known defects within specific JVM versions or may simply be limitations of those versions.  There may not be publicly documented defects corresponding to entries in these lists - these are issues that have come out of Nexaweb Quality Assurance efforts.

For more information on defects and limitations for specific VMs see the following web sites:

Sun JVMhttp://bugs.sun.com/
Microsoft JVM http://msdn.microsoft.com/library/ query on: "java virtual machine" kbprb kbenv

Sun JVM 1.6

Nexaweb Platform 4.1.8, 4.2.9, and 4.5.3 were all tested against Sun JVM 1.6.  There are several issues which we will work towards resolving in future maintenance releases.

  • tabOrder: focus does not always transfer correctly when using keyboard navigation via the tab key
  • NFC: some issues have been reported, Engineering is currently looking into them

Sun JVM 1.3 and 1.4

Network Timeout

In Sun JVM 1.3 and 1.4 there is no programmatic means of setting network (socket call) read and connect timeout.  This can lead to problems with push connection connections where the connection can get permanently blocked in a read or close socket call.

RetrieveAsynchronously and RetrieveAndProcessAsynchronously use a seperate thread for requests.  This thread may block indefinitely under rare conditions but will not cause application issues.  Internal network mechanisms, such as XInclude, use this method to make network requests and are not at risk.

Retrieve and RetrieveAndProcess are synchronous calls and may block indefinitely under rare conditions.  Use of the asynchronous calls is encouraged.

Starting with Sun JVM 1.4 a system argument may be passed to the VM via the Java Control Panel to set a global timeout.  This is set with the command: -Dsun.net.client.defaultReadTimeout=NNN where NNN should be an integer value that specifies the timeout in miliseconds.

This issue will have a workaround provided in Platform 4.1.5 and Platform 4.5+

Sun JVM 1.3

SSL and Push Connections

Sun JVM 1.3 has known issues with SSL over a push connection.  The VM networking layer will not delivery content over an SSL HTTP stream until the entire stream has been read from and closed.  This precludes push connection operation.  In this environment Polling should be used.

Calling openPushConnection() in Sun JVM 1.3 will cause a ProtocolException.

Another option is to configure a flush policy to periodically close the push connection and force the data to be delivered.  In this case the following setting in nexaweb-client.xml can be set to true to avoid the ProtocolException:

/client-app/launch-configuration/allow-push-in-unsupported-environments

Microsoft JVM 1.1

Push Connection Issues

The last few bytes of an HTTP stream are not available until the stream is closed or more bytes are sent from the server.  This will cause issues with Push Connections as data is buffered and not available to the client.  Nexaweb provides a default flush policy - provided below - that will push 5 kb of data to force the buffer to be sent to the client.

<policy>
    <rules>
        <match xpath="starts-with(/client-info/java-version, '1.1')" />
        <match xpath="starts-with(/client-info/java-vendor, 'Microsoft')" />
    </rules>       
    <configuration class="com.nexaweb.server.pushconnection.flushpolicies.IdlePeriodFlushPolicy">
        <flush-size>5 K</flush-size>
        <period>100 millis</period>
    </configuration>
</policy>

Mouse Cursor

The mouse cursor in the Microsoft JVM has a non standard behavior from later VMs.  The mouse cursor may retain a shape unexpectly.  Most of these issues have been worked around in later versions of Nexaweb Platform (4.1 and 4.2).

Input Method Editor (IME)

Microsoft JVM 1.1 and Sun VMs prior to 1.3 do not provide native IME support.  The support is therefore provided via a heavyweight component -- this has minor integration issues and non-standard behavior with the lightweight Nexaweb UI components.  Later VMs have native IME support.

Limitations with User Interface Elements

Newer user interface interaction features - such as the Mouse Scroll Wheel and Mouse triple click actions - are not supported in MS JVM and not passed to the applet as events.

Internet Explorer Shortcut Keys

Microsoft Internet Explorer shortcut keys are processed but not consumed by Microsoft JVM.  If the Nexaweb application uses the same shortcut key mappings they will cause the executed keystroke to be processed twice; once by the Nexaweb application and once by Internet Explorer.

Network Timeout

MS JVM does not provide a network timeout feature, however calls that block indefinitely are rare.  See Network Timeout below for more details.

Using non 1.1 compliant Java

The Nexaweb client will hang if MCO onLoad() methods make use of non Java 1.1 compliant features such as Vector.add().