|
When Javascript calls
a method in a Java Applet, it is running in a special context.
Therefore, it must not block, (that is, 'enter' a wait state) while
the system handles /O a/, or other Java thread runs. In many cases,
the call may block, such as reading from a Socket (or nearly any
method in the IO & net packages). Other cases are more obscure.
Possible
blocking calls may include: getImage(), play(), showDocument(),
INetAddress.getAddress(). Simply generating the first instance
of a class can block because it may need to be loaded from the
host or file system cache, e.g. new myPublicClass().
Generally,
it is best to design LiveConnected Applet methods to:
|
1.
|
Return
ready results
|
|
2.
|
Queue
request for a worker thread to handle
|
This
is not difficult, and it allows your Javascript to continue to
react to the user while the Applet does its work.
NOTE: It would be inefficient for simple calls if this
was handled automatically. Thus, every LiveConnect call
requires thread rescheduling.
|