Language Support
GWT compiles Java source that is compatible with J2SE 1.4.2 or earlier.
-
Intrinsic types
byte
, char
, short
,
int
, long
, float
,
double
, Object
, String
,
and arrays are supported. However, there is no 64-bit integral type in
JavaScript, so variables of type long
are mapped onto
JavaScript double-precision floating point values. To ensure maximum
consistency between hosted mode and web mode, we recommend that you use
int
variables.
-
Exceptions
try
,
catch
,
finally
and user-defined exceptions are supported as normal, although
Throwable.getStackTrace()
is not supported for web mode.
See
Throwable for additional details.
-
Assertions
The GWT compiler parses Java assert
statements, but
it does not emit code JavaScript code for them.
-
Multithreading and Synchronization
JavaScript interpreters are single-threaded, so while GWT
silently accepts the synchronized
keyword, it has no
real effect. Synchronization-related library methods are not available,
including Object.wait()
, Object.notify()
,
and Object.notifyAll()
-
Reflection
For maximum efficiency, GWT compiles your Java source into a
monolithic script, and does not support subsequent dynamic loading of
classes. This and other optimizations preclude general support for
reflection. It is possible to query an object for its class name using
GWT.getTypeName(Object).
-
Finalization
JavaScript does not support object finalization during garbage
collection, so GWT isn't able to be honor Java finalizers in web mode.
-
Strict Floating-Point
The Java language specification precisely defines floating-point
support, including single-precision and double-precision numbers as
well as the strictfp
keyword. GWT does not support the
strictfp
keyword and can't ensure any particular degree
of floating-point precision in translated code, so you may want to
avoid calculations in client-side code that require a guaranteed level
of floating-point precision.