Donnerstag, 21. April 2011

Mit Jmol bloggen!

Was wer über Moleküle bloggt braucht, damit auch der Kaffeeblog vollständig ist



Als ich jünger war, bastelte ich mit dem Molekülbausatz aus Spaß alle (damit) möglichen Verbindungen. Das war kurz vor der Zeit des Programms Rasmol. Das letzte Modellmolekül, das ich mir zusammen gesteckt hatte, weil ich es eigentlich von der Decke hängen lassen wollte, verstaubte dann schließlich jahrelang zuoberst auf meinem Büchergestell, während ich mir chemische Verbindungen vom Computer dreidimensional und beliebig drehbar darstellen ließ - mit Rasmol und wie sie alle hießen.
Der Zeitvorteil der Moleküldarstellung mit Rasmol oder im Netscape Navigator und im Microsoft Internet Explorer auch mit dem Plugin Chime von MDL (heute Symyx) gegenüber dem Molekülbausatz ist unbeschreiblich: Im Klassenzimmer beispielsweise kann die Lehrperson ein Molekül per Beamer auf die Leinwand projizieren und dreidimensional vorführen, oder die Klasse erhält über das Intranet des Instituts Zugriff auf Rasmol und Moleküldateien, um sie sich über ihre Laptops anzusehen
Mit Modelliersoftware wie beispielsweise ISIS/Draw von MDL (das Programm heißt heute Symyx Draw) lassen sich Moleküle zudem rasch und bequem notieren und für Rasmol und andere Molekülvisualisierungsprogramme darstellbar als computerlesbare Moleküldatei speichern. Bei größeren Molekülen ist auch dies viel schneller als das Zusammenstecken eines Molekülmodells.


Internetmedien ohne Grenzen

Die neuen Internetmedien verändern mit ihrem multimedialen Datenstrom tagtäglich die Welt. Der technologische Fortschritt indessen verändert die Medien. Zeitungen etwa ersetzen in ihren Onlineausgaben je länger desto mehr Fotos, die in der Printausgabe einzeln platziert werden müssen, mit ganzen Diashows oder Videos oder ergänzen sie seltener auch mit Audios.

Gerade aber Webseiten und Blogs machen vor, was in der Pipeline der Zukunft für Innovationen unterwegs sind: So ist es nicht besonders erstaunlich, wenn einen die Kassenschlager der Videospiele von gestern heute auf irgendeiner Webseite zufällig auf eine Runde einladen. Denn als Java-Applets feiern sie ihre Wiederauferstehung auf Webseiten, Blogs und sogar auf Mobiltelefonen. Es gibt nahezu unendlich viele Java-Möglichkeiten, Internetmedien zu bereichern. Jeder erdenkliche Input lässt sich auf einer Website oder einem Blog durch eine Java-Applikation ausgeben, Aufnahmen von Überwachungskameras, die Anzeige eines Videospiels oder einer Landkarte und natürlich auch drehbare 3D-Modelle von Molekülen.


Java ist plattformunabhängig

Die Java-Applikation, welche die obigen 3D-Darstellungen eines rotierenden Koffein-Moleküls erzeugt, heißt Jmol. Im Grunde genommen hält man dasselbe Produkt wie Rasmol in Händen. Der Unterschied besteht darin, dass Jmol zu 100% in Java geschrieben ist und sich somit unabhängig von der Hardware (der Java-Interpreter bildet eine hardwareunabhängige Plattform) ausführen lässt, während der Quellcode von Rasmol in C gehalten und zunächst für jede Plattform ausführbarer Maschinencode zu kompilieren ist.

Ist somit Rechengeschwindigkeit die Stärke von Rasmol, ist Plattformunabhängigkeit die Stärke des Javaprogramms. Es lässt sich auf jedem javafähigen Computer ausführen und als Java-Applet in jede Webseite einbauen. Dem Molekülblogger stellt sich lediglich die Frage, wie der HTML-Code lautet, um mit Jmol ein Molekül in seinen Blogbeitrag oder als Box auf einer Seite seines Blogs darzustellen: Grundsätzlich ist das Java-Applet Jmol auszuführen und von diesem die gewünschte Moleküldatei einzulesen, eine wirklich sehr, sehr einfache Angelegenheit. Erforderlich ist lediglich ein Blogsystem und ein Webhost, die Java-Code auf den Seiten zulassen, sowie URI-Referenz von Java-Applet und Moleküldatei.



1. URI-Referenz von Jmol-Java-Applet und Moleküldatei generieren:

Damit Jmol wie oben aus deiner Webseite oder deinem Blog lacht, muss der Webbrowser der Besucher das Java-Applet und die Moleküldatei aufrufen. Der Quellcode deiner Webseite oder deines Blogs muss also die URI-Referenz zum Applet und zur Moleküldatei enthalten:

Entweder du kopierst einfach die URI-Referenz von einer der zahlreichen Webseiten, welche selber Jmol verwenden, und lässt das Java-Applet von deren Server laden.

Kommentar
: Das ist juristisch (noch) nicht unerlaubtes Trittbrettfahren, weil informationstechnologische Hyperintegration dieser Art zwecks effizientem Verfügbarmachen von Ressourcen gerade das Kernkonzept des Internets und seiner Architektur zu spiegeln scheint, sozusagen die Idee dahinter war. Achte gegebenenfalls einfach darauf, dass du URI-Referenzen zu ausschließlich leistungs- und bandbreitenstarken Servern mitverwendest und unbedingt auf ein eigenes Datei-Repositorium zurück greifst, wenn du erheblichen Verkehr verzeichnest.


Oder du legst die Dateien für das Jmol Java-Applet und das Molekül ab
  • in einem Unterordner des Arbeitsordners deines Webservers. Den Inhalt dieses Ordners veröffentlichst du im Web, wobei du ihm eigene URLs zuweist. Als URI-Referenz im Quellcode der Webseite oder des Blogs ist in diesem Fall die absolute URI erforderlich.
  • in einem Unterordner des Siteordners der Website oder des Blogs, die oder der das Molekül darstellen soll. Als URI-Referenz im Quellcode der Webseite oder des Blogs genügt in diesem Fall die relative URI.


2. Java-Code in Webseite einfügen: 

Du verschaffst dir Zugriff auf den HTML-Quelltext der Internetseite, in die du die Moleküldarstellung einbauen willst, und fügst am gewünschten Ort ein:
<script src="<URI-REFERENZ ZU DATEI Jmol.js>" type="text/javascript"> </script> <script type="text/javascript"> jmolInitialize("<URI-REFERENZ ZU ORDNER MIT JMOL-DATEIEN>"); jmolApplet(<APPLET-GRÖSSE>, "load <URI-REFERENZ ZU MOLEKÜLDATEI>; <GGF. WEITERE SCRIPT-BEFEHLE>;"); </script>

Funktionierendes Beispiel:
<script src="http://sites.google.com/site/nsciwas/resources/jmol/jmol.js" type="text/javascript"> </script> <script type="text/javascript"> jmolInitialize("http://sites.google.com/site/nsciwas/resources/jmol", "JmolAppletSigned.jar"); jmolApplet(500, "load http://sites.google.com/site/nsciwas/resources/mol/caffeine.xyz.gz; spin on;"); </script> 


3. Hinweise:

  • jmolInitialize initialisiert mit dem ersten Parameter den Ordner auf dem Webserver oder eine externe Internetquelle, in welchem sich die Applet-Dateien befinden. Im funktionierenden Beispiel ist dies der Webordner http://sites.google.com/site/nsciwas/resources/jmol.

    Handelt es sich dabei wie im Beispiel um einen Webordner, der nur einen mit Redirect versehenen Ordnerzugriff gestattet, kann das primäre Jmol-Applet "JmolApplet0.jar" (welches durch die Initialisierung jmolInitialize standardmässig geladen wird, wenn nichts anderes vorgegeben ist) die benötigten weiteren Applet-Dateien wegen des Redirects nicht nachladen. Stattdessen ist deshalb "JmolApplet.jar" zu verwenden, welches sämtliche Module enthält, dafür aber rund 2MB gross ist (zum Vergleich: "JmolApplet0.jar" ist rund 900k gross) und zum Laden deshalb rund doppelt so lange braucht wie "JmolApplet0.jar", das benötigte Funktionsmodule zu gegebener Zeit jeweils nachlädt. "JmolApplet.jar" ist sozusagen die "all-in-one"-Lösung.
     
  • Das Beispiel oben spezifiziert unter jmolInitialize als zweiten Parameter die Applet-Datei "JmolAppletSigned.jar" anstelle des standardmässigen (und deshalb als Parameter nicht anzugebenden) "JmolApplet0.jar". Jene ist die signierte Version von "JmolApplet.jar".
    Die signierte Versionen wird hier deshalb benutzt, weil die Moleküldatei "caffeine.xyz.gz" von einem externen Server bezogen wird (nicht von http://online-chris.blogspot.com oder einem Unterordner dieser Domäne): Das Jmol-Applet benötigt für diesen Zugriff auf eine externe Internetquelle aus Sicherheitsgründen die Zustimmung des Benutzers. Um die Moleküldatei zu laden, muss der Benutzer dem signierten Jmol-Applet die Berechtigung geben, auf dem Rechner zu laufen, denn nur das signierte Applet kann auf externe Webseiten zugreifen. Das nicht-signierte Applet kann nur auf Dateien imselben und untergeordneten Ordnern zugreifen (also in diesem Beispiel auf Dateien in einem Ordner von http://online-chris.blogspot.com oder einem seiner Unterordner).
     
  • Um in Blogger-Posts Java-Applets erfolgreich einzubauen, darf es in der Skript-Sequenz keine Zeilenumbrüche geben. Gibt es Zeilenumbrüche, funktionieren die Applets nicht (Stand April 2011).
     
  • Die Initialisierungssequenz für das Java-Applet Jmol.js (im Beispiel: <script src="http://sites.google.com/site/nsciwas/resources/jmol/jmol.js" type="text/javascript"> </script>) muss nur einmal auf einer Webseite erfolgen, danach können unbeschränkt Skript-Sequenzen für Jmol-Fenster (im Beispiel: <script type="text/javascript"> jmolInitialize("http://sites.google.com/site/nsciwas/resources/jmol", "JmolAppletSigned.jar"); jmolApplet(500, "load http://sites.google.com/site/nsciwas/resources/mol/caffeine.xyz.gz; spin on;"); </script>) eingebaut werden. Beide Sequenzen können unmittelbar aufeinander folgen. Es schadet nicht, wenn sich die Initialsierungssequenz auf einer Seite mehrfach wiederholt ("Jmol.js" hat eine Dateigrösse von rund 57kB und lädt somit sehr zügig). In Blogger kann sie mit dem Vorlagen-HTML-Editor beispielsweise ganz oben im Seitenkopf untergebracht werden.
     

Copyright © 2011 Christian Natiez (Schweiz)