Difference between revisions of "Compatibility"
(→MathJax Compatibility Issues) |
(→Known Incompatibilities) |
||
Line 14: | Line 14: | ||
our object: | our object: | ||
+ | |||
Jmol | Jmol | ||
primary Java-derived package names: | primary Java-derived package names: | ||
− | + | java javajs J JM JMB JSV JU JV JW JZ | |
used by javajs for communication in relation to dialogs and menus: | used by javajs for communication in relation to dialogs and menus: | ||
Line 24: | Line 25: | ||
SwingController | SwingController | ||
− | Java2Script globals: | + | primary Java2Script globals: |
+ | |||
+ | Clazz JavaObject j2s.clazzloaded j2s.object.native | ||
+ | |||
+ | secondary Java2Script globals: | ||
− | |||
$_A $_AB $_AC $_AD $_AF $_AI $_AL $_AS $_Ab $_B $_C $_D | $_A $_AB $_AC $_AD $_AF $_AI $_AL $_AS $_Ab $_B $_C $_D | ||
$_E $_F $_G $_H $_I $_J $_K $_L $_M $_N $_O $_P $_Q | $_E $_F $_G $_H $_I $_J $_K $_L $_M $_N $_O $_P $_Q | ||
$_R $_S $_T $_U $_V $_W $_X $_Y $_Z $_k $_s | $_R $_S $_T $_U $_V $_W $_X $_Y $_Z $_k $_s | ||
c$ $t$ | c$ $t$ | ||
+ | |||
+ | standard JavaScript classes that have been extended by Java2Script to be compatible with java.lang classes of the same name: | ||
+ | |||
+ | Array Boolean Character Date Error Number String | ||
+ | |||
+ | additional java.lang classes that are made global to be compatible with standard Java usage: | ||
+ | |||
+ | AbstractMethodError | ||
+ | AbstractStringBuilder | ||
+ | Appendable | ||
+ | ArithmeticException | ||
+ | ArrayIndexOutOfBoundsException | ||
+ | ArrayStoreException | ||
+ | AssertionError | ||
+ | CharSequence | ||
+ | ClassCastException | ||
+ | ClassCircularityError | ||
+ | ClassFormatError | ||
+ | ClassNotFoundException | ||
+ | CloneNotSupportedException | ||
+ | Cloneable | ||
+ | Comparable | ||
+ | Enum | ||
+ | Exception | ||
+ | ExceptionInInitializerError | ||
+ | IllegalAccessError | ||
+ | IllegalAccessException | ||
+ | IllegalArgumentException | ||
+ | IllegalMonitorStateException | ||
+ | IllegalStateException | ||
+ | IllegalThreadStateException | ||
+ | IncompatibleClassChangeError | ||
+ | IndexOutOfBoundsException | ||
+ | InstantiationError | ||
+ | InstantiationException | ||
+ | InternalError | ||
+ | InterruptedException | ||
+ | Iterable | ||
+ | LinkageError | ||
+ | NegativeArraySizeException | ||
+ | NoClassDefFoundError | ||
+ | NoSuchFieldError | ||
+ | NoSuchFieldException | ||
+ | NoSuchMethodError | ||
+ | NoSuchMethodException | ||
+ | NullPointerException | ||
+ | NumberFormatException | ||
+ | OutOfMemoryError | ||
+ | Runnable | ||
+ | RuntimeException | ||
+ | SecurityException | ||
+ | StackOverflowError | ||
+ | StackTraceElement | ||
+ | StringBuffer | ||
+ | StringBuilder | ||
+ | StringIndexOutOfBoundsException | ||
+ | Thread | ||
+ | ThreadDeath | ||
+ | ThreadGroup | ||
+ | Throwable | ||
+ | UnknownError | ||
+ | UnsatisfiedLinkError | ||
+ | UnsupportedClassVersionError | ||
+ | UnsupportedOperationException | ||
+ | VerifyError | ||
+ | VirtualMachineError | ||
+ | Void | ||
Note that [https://code.google.com/p/java2script/ Java2Script] had to be extensively augmented to work with Jmol. | Note that [https://code.google.com/p/java2script/ Java2Script] had to be extensively augmented to work with Jmol. |
Revision as of 12:57, 1 April 2014
Known Compatibilities
JSmol is compatible with:
jQuery 1.9+ Google Charts MathJax (but see below) JSME (JavaScript Molecular Editor JSpecView
Known Incompatibilities
JSmol will create the following global variables and will be incompatible with any package that does likewise:
our object:
Jmol
primary Java-derived package names:
java javajs J JM JMB JSV JU JV JW JZ
used by javajs for communication in relation to dialogs and menus:
SwingController
primary Java2Script globals:
Clazz JavaObject j2s.clazzloaded j2s.object.native
secondary Java2Script globals:
$_A $_AB $_AC $_AD $_AF $_AI $_AL $_AS $_Ab $_B $_C $_D $_E $_F $_G $_H $_I $_J $_K $_L $_M $_N $_O $_P $_Q $_R $_S $_T $_U $_V $_W $_X $_Y $_Z $_k $_s c$ $t$
standard JavaScript classes that have been extended by Java2Script to be compatible with java.lang classes of the same name:
Array Boolean Character Date Error Number String
additional java.lang classes that are made global to be compatible with standard Java usage:
AbstractMethodError AbstractStringBuilder Appendable ArithmeticException ArrayIndexOutOfBoundsException ArrayStoreException AssertionError CharSequence ClassCastException ClassCircularityError ClassFormatError ClassNotFoundException CloneNotSupportedException Cloneable Comparable Enum Exception ExceptionInInitializerError IllegalAccessError IllegalAccessException IllegalArgumentException IllegalMonitorStateException IllegalStateException IllegalThreadStateException IncompatibleClassChangeError IndexOutOfBoundsException InstantiationError InstantiationException InternalError InterruptedException Iterable LinkageError NegativeArraySizeException NoClassDefFoundError NoSuchFieldError NoSuchFieldException NoSuchMethodError NoSuchMethodException NullPointerException NumberFormatException OutOfMemoryError Runnable RuntimeException SecurityException StackOverflowError StackTraceElement StringBuffer StringBuilder StringIndexOutOfBoundsException Thread ThreadDeath ThreadGroup Throwable UnknownError UnsatisfiedLinkError UnsupportedClassVersionError UnsupportedOperationException VerifyError VirtualMachineError Void
Note that Java2Script had to be extensively augmented to work with Jmol. Therefore JSmol will be incompatible with other Java2Script applications using the default implementations of Clazz.
MathJax Compatibility Issues
MathJax works by first loading a web page, then, after that is complete, editing the special mark-up on the page to turn those marks into beautiful math expressions. The problem is that both Jmol and MathJax are competing for the page processing after a page is loaded. Fortunately, MathJax was designed with this issue in mind, and there is a way of monitoring its progress. We need to start creating Jmol objects only after MathJax completes its job.
For compatibility with MathJax, make sure you:
1) are using JSmol (JSmol.min.js, not the older Jmol.js)
2) are using dynamic loading of JSmol
-- use $(document).ready() to create all JSmol objects -- no <script> tags that use Jmol.getApplet() within the body
3) set the jQuery $(document).ready event to monitor MathJax loading and only start creating JSmol objects until that is done. For example:
$(document).ready(function(){ checkMathJax(loadJmol); });
checkMathJax = function(fReady) { return (!$("#MathJax_Message")[0] || $('#MathJax_Message:contains("Loading")')[0] ? setTimeout(function(){checkMathJax(fReady)},10) : fReady()); }
loadJmol = function() { var Info = { width: 300, height: 300, debug: false, color: "0xFFFFFF", addSelectionOptions: true, use: "HTML5", j2sPath: "./j2s", jarPath: "./java", jarFile: "JmolAppletSigned.jar", isSigned: true, script: "set antialiasDisplay;load $caffeine", serverURL: "http://chemapps.stolaf.edu/jmol/jsmol/php/jsmol.php", readyFunction: jmol_isReady, disableJ2SLoadMonitor: false, disableInitialConsole: true, allowJavaScript: true } $("#appletplace").html(Jmol.getAppletHtml("jmol", Info)); }
...
</head> <body> <div id="appletplace"></div>
...
A demonstration page can be found at [1].