Capital J, lower case mol
Please do not write it any other way ... to avoid confusion with
other projects ... keep reading ...
Yes, there is a project called JMol ... but not Jmol ... note the
difference in spelling.
Will York wrote the JMol viewer at the
Complex Carbohydrate Research Center,
University of Georgia, USA. The home page was at
http://www.ccrc.uga.edu/~will/jmol/jmol.html
(it is no longer there).
Both on the web and in published papers you should
reference Jmol in this way:
Jmol: an open-source Java viewer for chemical structures in 3D. http://www.jmol.org/
A new 3D graphics engine has been developed for Jmol v10 to
properly support intersecting shapes. This is important
when viewing spacefilled molecular models.
The 3D engine also has much higher performance when dealing
with larger molecules.
No java graphics calls are used in the construction of the image.
The entire scene is constructed in memory and transferred to the
screen with one drawImage operation.
Hey ... aren't you the person who was complaining about speed?
(A future release will include Full-Scene-Anti-Aliasing.)
Use the Jmol application and export to PovRay.
Yes. Starting with version 10.2, Jmol has some functionality
for rendering isosurfaces,
that is greatly expanded on version 11.0.
Using RasMol/Chime terminology, Jmol current supports
backbone, trace, strands, ribbons,
meshribbons, cartoons, and rockets.
No special Jmol-specific software needs to be installed
on the client machines.
Client machines do not need anything other than a web browser
that supports Java.
When a client visits a web page containing the JmolApplet, the
applet gets automatically downloaded from the web server and
executed.
The JmolApplet runs as an untrusted applet. The applet
does not any confirmation from the user to load and begin
execution. There is also a trusted version of the applet
(JmolAppletSigned)
for authors that prefer to make use of its advantages
(see TechNotes, Browser Enhancement Technologies
for details).
Use the Jmol.js JavaScript Library
to allocate your applets within your web pages.
No
Applets get cached in the local browser cache. Subsequent uses of
the the applet will pull the applet from the cache
(after confirming that the date/time/size have not changed
on the web server). At least, that's the theory ...
and it works correctly on the browsers I have seen :-)
Note that I am investigating several schemes to address this
request. I think it is possible to come up with a scheme
that would allow local installation to facilitate offline use.
The problem areas are 1) complexity for end-users associated
with a local installation, and 2) version control problems
when different web sites use different versions of the Jmol
applet.
You should probably use the
Jmol.js JavaScript Library
Applets should generally be square ... width == height.
This is because the molecule will be automatically scaled so
that it fits within the smaller of the two dimensions.
The the other pixels will never be used (unless zoom is used).
Nevertheless, those pixels must be cleared to the background
color each time the window is repainted. This clearing is
a relatively expensive operation.
You should probably use the
Jmol.js JavaScript Library
<applet ... width='{n}' height='{n}' ... >
where {n} = 300, 400, 600 ... you get the idea.
While most browsers allow you to specify applet width and
height in percentages, in practice this causes many problems.
It tends to trigger lots of browser bugs during window resize
operations.
None. The web server needs no special configuration.
Applets do not get associated with MIME types in the same way that
plugins do. While the Chime plugin requires configuration
of the web server, the JmolApplet does not.
Check out the Tech Note on
Browser Enhancement Technologies
You should probably use the
Jmol.js JavaScript Library
Always use the APPLET tag.
Do not be confused by the Sun Java Plug-in developer documentation!
Unfortunately, the Sun Java Plug-in documentation does not do a good
job of explaining the current state of the world. The doc was written
several years ago and really needs to be cleaned up. In many places
it still seems to recommend the use of the OBJECT tag.
That is the way things used to be up until about 2002.
Since then the Sun Java
Plug-in has had direct support for the APPLET
tag on Microsoft
Internet Explorer, and this issue has essentially gone away.
However, Sun needs to maintain the doc for legacy corporate intranet
applications that were deployed using the OBJECT tag.
Chapter 12 of the Sun Java Plug-in developer guide says:
With Internet Explorer it is recommended that you use the
APPLET tag for internet deployment.
...
With Netscape it is recommended that you use the
APPLET tag for internet deployment.
You should probably use the
Jmol.js JavaScript Library
Make sure you make a clear distinction between the
loadInline param tag and the loadLine method.
You should probably use the
Jmol.js JavaScript Library
Unfortunately, the mechanism for the loadInline param tag is rather
ugly ... the HTML specification causes a few problems for us.
The HTML specification requires that newline characters get removed
(and carriage-return characters get turned into spaces) before
the parameter string is passed to the applet. Therefore, the browser
removes the newline characters before they get sent to the applet.
Jmol has a special syntax to work around this issue.
you put a vertical bar beginning of each line ... like this:
...
<param name="loadInline" value="
|put your
|molecular model
|data here
" />
The JmolApplet will replace the vertical bars with a newline character.
(Any white space up through the first vertical bar is removed).
If you have a text string with the molecular model and you want to
convert it, you can use a regular expression to perform the substitution.
Different OS platforms use different conventions for line termination, so
your code should check for three different end-of-line sequences ...
carriage-return, linefeed, or
carriage-return linefeed.
In Perl:
myMolecularModel ~= s/\r|\n|\r\n/|/g;
In JavaScript:
myMolecularModel.replace(/\r|\n|\r\n/g, "|");