Web page developers using the Jmol applet:

Well, I'm sitting here wondering if the future of the Jmol applet is
written on the wall, and it will soon become a historical artifact. As
platforms shut out the Java plug-in, that certainly seems to be the case.
If nothing else, we are instantly back in the land of only certain browsers
being able to display a model. (Note that this concern has nothing to do
with Java in general -- not the Jmol application, for instance -- just the
Java web browser plug-in. That's an important distinction to keep in mind.)

Time to summarize where we are, then, in terms of JSmol:

Executive summary:

JSmol/HTML5 is a faithful reproduction of Jmol/Java. It is the same code
that is used to create both, so what you see in Jmol should also
automatically be in JSmol. I can only think of one or two things right now
that are not there -- background and ECHO images, for example. And
minimization has not been optimized yet. A great example of how JSmol is
being quickly picked up is what Otis Rothenberger is doing at chemagic.com.
I'll let him point us to the pages he is working on. They look spectacular,
and it is really very funny that without the logo, it's pretty hard to tell
it's not Jmol itself.

Installation of JSmol or conversion from a page that uses Jmol (especially
if you have started to use the "JmolJS" library) is easy. Just download the
zip file from https://sourceforge.net/projects/jsmol/files/release and
unzip it. Following the examples, you need JSmol.js JSmolCore.js,
JSmolApplet.js, JSmolApi.js and JSmoljQuery.js. Add JSmolControls.js if you
are creating links and buttons and menus as was the case for Jmol. Then
just add the j2s directory, and you are good to go.

Full story:

JSmol uses the Java2Script system to convert Java code to JavaScript within
the Eclipse development environment. The system allows for idiosyncrasies
of JavaScript to replace bits of Java when needed. The huge advantage of
Java2Script over anything else I considered (Google Web Tool Kit, for
instance) is that, being a faithful reproduction of the core Java package,
Java2Script allows for extensive Java-like debugging, lets us adapt the
Java package for faster JavaScript performance, and, most importantly,
keeps us on one development path. JSmol hasn't diverged from Jmol -- it IS
Jmol, just repackaged on the fly into JavaScript. The same code still
generates the Jmol Java applet and the Jmol Java application. Any
development of JSmol is still development of Jmol.

I have been working on JSmol since late August -- about 4 1/2 months now.
In that time I have done a significant amount of refactoring of the Jmol
code as well as some adapting of the Java2Script libraries to make the
magic happen and to increase overall performance (both in Java and
JavaScript, actually), and that has paid off considerably.

Yes, JSmol is slower than Jmol. My tests suggest that JavaScript is about
5-10 times slower than Java in many tasks.

No, you can't do everything in JSmol that you can in Jmol.

Some processes are going to be too slow to be useful. Particularly with
proteins and specifically with molecular surfaces (as opposed to
solvent-accessible surfaces), in cases of huge models, and particularly
with large canvases (1000+ pixels width or height) there may be some
issues. We'll have to see how that goes.

But what you can do in JSmol is pretty amazing. You can read all the files
that Jmol reads. You can do all the scripting that Jmol does. You can
create all the buttons and links and such that you are used to creating for
Jmol. All of the rendering capability of the Jmol applet is there (other
than the couple of TODO issues mentioned above). We have a console and a
popup menu.

There is no distinction in JSmol between "signed" and "unsigned" --
consider it signed. There is a little PHP piece that allows binary files to
be read and image and state files to be created, including PNG, PNGJ (which
serves as an image, a ZIP file, and as input back into JSmol or Jmol as a
3D model), and JMOL (i.e. ZIP) files.

I am comforted by the fact that nothing else comes even close to the sort
of capabilities that we have in JSmol already. The closest I can think of
is ChemDoodle, which has a smaller footprint than JSmol. It was a great
early experiment in the possibilities of HTML5/WebGL, and it may have some
potential, but, at least in my opinion, it is currently quite limited in
providing anything more than 3D "eye candy" to a page. (If that is all the
page needs, and you are happy with the licensing, go for that. You do not
need JSmol.) To my knowledge ChemDoodle's protein visualization is limited
to WebGL, which pretty much means no surfaces and only limited support for
cartoons and such. There is no high-level scripting language as there is in
JSmol, so doing anything of any sophisticated nature at all will require
expertise in JavaScript and a pretty full understanding of the ChemDoodle
model. And it has plenty of limitations with respect to model size, just
like JSmol. Nothing surprising there, I think.

There is still plenty of testing of JSmol that needs to be done to get it
to the level of widespread platform consistency that we saw in Jmol. But we
are very close to that prize, I think.

Bob Hanson

-- 
Robert M. Hanson
Larson-Anderson Professor of Chemistry
Chair, Chemistry Department
St. Olaf College
Northfield, MN
http://www.stolaf.edu/people/hansonr


If nature does not answer first what we want,
it is better to take what answer we get.

-- Josiah Willard Gibbs, Lecture XXX, Monday, February 5, 1900
------------------------------------------------------------------------------
Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
MVPs and experts. ON SALE this month only -- learn more at:
http://p.sf.net/sfu/learnmore_123012
_______________________________________________
Jmol-users mailing list
Jmol-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jmol-users

Reply via email to