<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Depth-First: Tag jme</title>
    <link>http://depth-first.com/articles/tag/jme</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>Walking the Web of Chemical Informatics</description>
    <item>
      <title>Update: Four Free 2-D Structure Editors for Web Applications</title>
      <description>&lt;p&gt;A &lt;a href="http://depth-first.com/articles/2006/08/21/four-free-2-d-structure-editors-for-web-applications"&gt;previous article&lt;/a&gt; discussing the deployment of four free 2D structure editors has been fixed. The sample pages demonstrating how to obtain a molfile from each have also been restored.&lt;/p&gt;</description>
      <pubDate>Sun, 22 Apr 2007 11:26:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:f4d38cf0-6401-4c13-8ecb-6440764c7a05</guid>
      <author>Rich Apodaca</author>
      <link>http://depth-first.com/articles/2007/04/22/update-four-free-2-d-structure-editors-for-web-applications</link>
      <category>Tools</category>
      <category>2d</category>
      <category>editor</category>
      <category>jchempaint</category>
      <category>jme</category>
      <category>jmoldraw</category>
      <category>mcdl</category>
      <category>web</category>
      <category>webapp</category>
    </item>
    <item>
      <title>Anatomy of a Cheminformatics Web Application: InChIMatic</title>
      <description>&lt;p&gt;&lt;a href="http://rubyonrails.org"&gt;&lt;img src="http://depth-first.com/files/rails_logo.png" align="right" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;a href="http://www.iupac.org/inchi/"&gt;InChI&lt;/a&gt; is an open molecular identifier system. Although InChIs obviate the need for a central registration authority, they are complex enough that they must be generated by computer. Currently, a few desktop molecular editors can generate InChI identifiers. But wouldn't it be more convenient if this capability existed in a simple Web application that could be used from any computer - anywhere? This article describes a Web application called "InChIMatic", which does just that.&lt;/p&gt;

&lt;p&gt;In this article, I'll show how &lt;a href="http://www.molinspiration.com/jme/"&gt;Java Molecular Editor&lt;/a&gt; (JME), a lightweight 2-D structure editor, can be extended to produce InChI identifiers through &lt;em&gt;server-side&lt;/em&gt; software written in Ruby, rather than by extending the applet with Java code.&lt;/p&gt;

&lt;h4&gt;Downloads and Prerequisites&lt;/h4&gt;

&lt;p&gt;InChIMatic requires &lt;a href="http://rubyonrails.org"&gt;Ruby on Rails&lt;/a&gt; and the &lt;a href="http://depth-first.com/articles/2006/08/17/ruby-and-inchi-the-rino-library"&gt;Rino InChI toolkit&lt;/a&gt;. Both of these libraries can be installed using the &lt;a href="http://rubygems.org/"&gt;RubyGems&lt;/a&gt; packaging system.&lt;/p&gt;

&lt;p&gt;The &lt;a href="http://rubyforge.org/frs/download.php/15616/inchimatic-0.0.2.tar.gz"&gt;complete InChIMatic source package&lt;/a&gt; can be downloaded from RubyForge. For convenience, a copy of JME is included with the distribution. The author, Peter Ertl, has kindly given permission for the bundled JME applet to be used with InChIMatic. For other uses, consult the &lt;a href="http://www.molinspiration.com/jme/"&gt;JME homepage&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;Running InChIMatic&lt;/h4&gt;

&lt;div class="console"&gt;
&lt;pre&gt;
$ cd inchimatic-0.0.2
$ ruby script/server
&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Pointing your browser to &lt;a href="http://localhost:3000/inchi/input"&gt;http://localhost:3000/inchi/input&lt;/a&gt;, drawing a structure in the JME window, and pressing the "InChI!" button will produce the corresponding InChI in the area below.&lt;/p&gt;

&lt;p&gt;&lt;center&gt;&lt;img src="http://depth-first.com/demo/20061214/screenshot_1.png"&gt;&lt;/img&gt;&lt;/center&gt;&lt;/p&gt;

&lt;h4&gt;Behind the Scenes&lt;/h4&gt;

&lt;p&gt;The JME applet itself provides no capabilities for generating InChI identifiers. This functionality is instead provided by the Rails server via the Rino InChI library.&lt;/p&gt;

&lt;p&gt;Let's say Susan wants to get the InChI for 3,4-dichlorophenol. After entering the structure into the JME window, she presses the "InChI!" button. This sets in motion the following sequence of events:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;The JavaScript function &lt;tt&gt;writeMolfile()&lt;/tt&gt; is called. This retrieves a molfile representation of 3,4-dichlorophenol from JME, which is then written to to the hidden field &lt;tt&gt;molfile&lt;/tt&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A Rails listener notices that the hidden text field has been updated and so invokes the InChIMatic &lt;tt&gt;ajax_inchi&lt;/tt&gt; action. This is a Rails Ajax action that will update only a portion of the InChIMatic window. For more detail on this Rails Ajax technique, see &lt;a href="http://depth-first.com/articles/2006/12/04/anatomy-of-a-cheminformatics-web-application-ajaxifying-depict"&gt;the previous Anatomy of a Cheminformatics Web Application&lt;/a&gt; article.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The &lt;tt&gt;ajax_inchi&lt;/tt&gt; action retrieves the contents of the hidden &lt;tt&gt;molfile&lt;/tt&gt; field. This molfile is then used to generate an InChI using Rino. This InChI is then saved to the instance variable &lt;tt&gt;inchi&lt;/tt&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The contents of the InChIMatic area partitioned by the &lt;tt&gt;results&lt;/tt&gt; &lt;tt&gt;div&lt;/tt&gt; are then updated with the InChI obtained in Step 3. The JME applet itself is unaffected by this operation, allowing Susan to further elaborate her molecule, if she'd like.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;So What? Re-Thinking the Role of Applets&lt;/h4&gt;

&lt;p&gt;JME is, by itself, incapable of generating InChIs. Yet InChIMatic provides this capability as if it existed natively. In other words, a lightweight, fast-loading, and responsive 2-D editor can be extended &lt;em&gt;on the server side&lt;/em&gt;, rather than on the client side. The difference is imperceptible to the user, but ripe with potential for the developer.&lt;/p&gt;

&lt;p&gt;One of the most common, and completely valid, complaints about Java applets is that they take too long to load. Offloading some of the functionality currently being bundled in applets onto a Web server offers one way to combat the problem. Furthermore, combining Java applets with Ajax and powerful Web application frameworks like Ruby on Rails offers virtually limitless opportunities to re-think the role of Java applets in Web application development.&lt;/p&gt;

&lt;h4&gt;Conclusions&lt;/h4&gt;

&lt;p&gt;JME's strength comes, perhaps ironically, from its limited functionality. By using some simple Web programming techniques, JME can be extended with server-side programming. The advantages, compared to extending the JME applet itself with Java on the client side, are significant. Future articles in this series will explore some of the possibilities.&lt;/p&gt;</description>
      <pubDate>Fri, 15 Dec 2006 15:49:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:4ff346b0-7cec-4b8e-9770-feccfe683823</guid>
      <author>Rich Apodaca</author>
      <link>http://depth-first.com/articles/2006/12/15/anatomy-of-a-cheminformatics-web-application-inchimatic</link>
      <category>Web</category>
      <category>jme</category>
      <category>inchimatic</category>
      <category>inchi</category>
      <category>rino</category>
      <category>java</category>
      <category>rails</category>
      <category>ruby</category>
    </item>
    <item>
      <title>Four Free 2-D Structure Editors for Web Applications</title>
      <description>&lt;p&gt;The increasing trend toward hosting free chemical databases and other services on the web brings with it the need for a free, ergonomic, capable, and fast 2-D structure editor. For years, the options were rather limited. However, this situation has started to change. Four web-enabled editors are discussed here, with an emphasis on the steps needed to deploy them within a webpage and retrieve a text-based molecular representation. A sample webpage is provided for each editor that allows a user to draw a molecule and view the corresponding output in a browser.&lt;/p&gt;

&lt;h4&gt;Building a Web Application: The Key Players&lt;/h4&gt;

&lt;p&gt;Consider the case of John, who would like to know the TPSA of caffeine. John finds a new website, http://tpsacalculate.com, that calculates the TPSA of any molecule. This site presents John with a 2-D structure editor applet and a "Submit" button. John uses the applet to draw caffeine and then presses the  button. After one second, John sees a new page showing the structure of caffeine and its TPSA descriptor.&lt;/p&gt;

&lt;p&gt;By pressing the "Submit" button, John sets in motion a series of transactions between the editor applet, the webpage, and the server. First, the webpage extracts a molfile representation of caffeine from the editor using JavaScript. This molfile is then submitted to the server using an HTTP POST request. After processing the molfile, the server returns a page containing the TPSA that John requested.&lt;/p&gt;

&lt;p&gt;Several variations on this pattern are conceivable, each involving varying levels of involvement by the browser, the applet, and the server. Advanced use of JavaScript can lead to elimination of the applet entirely, an approach taken by the &lt;a href="http://pubchem.ncbi.nlm.nih.gov/search/"&gt;PubChem structure search&lt;/a&gt;. Even more interesting is the use of &lt;a href="http://www.ajaxian.com/"&gt;AJAX&lt;/a&gt;, which would eliminate both the applet and the page refresh step, setting the stage for highly-interactive chemical content using only a browser and JavaScript. Although no AJAX-powered 2-D structure editors currently exist, this situation can be expected to change in the future.&lt;/p&gt;

&lt;h4&gt;Obtaining Text Output From a 2-D Editor&lt;/h4&gt;

&lt;p&gt;Extracting text-based output requires the same boilerplate code for all four editors. This code consists of four main components: (1) an editor applet into which the user draws a structure; (2) a JavaScript function that collects the output from the applet; (3) an HTML text field into which the JavaScript function inserts the output; and (4) an HTML form containing a button that when pressed sets the process in motion.&lt;/p&gt;

&lt;p&gt;These commonalities make it possible factor out editor specific code and logic. The HTML below gives an example of what one basic template looks like.&lt;/p&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_xml "&gt;&lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;html&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;head&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;title&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;Molfile Test&lt;span class="punct"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag"&gt;title&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag"&gt;head&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;body&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="comment"&gt;&amp;lt;!-- JavaScript --&amp;gt;&lt;/span&gt;
  &lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;script&lt;/span&gt; &lt;span class="attribute"&gt;language&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;JavaScript&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&amp;gt;&lt;/span&gt;
      function writeOutput()
      {
       document.form.output.value = document.applet.OUTPUT_METHOD();
      }
  &lt;span class="punct"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag"&gt;script&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;

  &lt;span class="comment"&gt;&amp;lt;!-- Applet --&amp;gt;&lt;/span&gt;
  &lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;applet&lt;/span&gt; &lt;span class="attribute"&gt;code&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;APPLET_CLASS&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;applet&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;
                &lt;span class="attribute"&gt;archive&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;APPLET_JARFILE.jar&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;
                &lt;span class="attribute"&gt;width&lt;/span&gt;&lt;span class="punct"&gt;=&lt;/span&gt;&lt;span class="number"&gt;510&lt;/span&gt; &lt;span class="attribute"&gt;height&lt;/span&gt;&lt;span class="punct"&gt;=&lt;/span&gt;&lt;span class="number"&gt;360&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;
    Please enable Java and JavaScript on your machine.
  &lt;span class="punct"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag"&gt;applet&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;

  &lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;br&lt;/span&gt; &lt;span class="punct"&gt;/&amp;gt;&lt;/span&gt;

  &lt;span class="comment"&gt;&amp;lt;!-- Form --&amp;gt;&lt;/span&gt;
  &lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;form&lt;/span&gt; &lt;span class="attribute"&gt;method&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;post&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;form&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&amp;gt;&lt;/span&gt;
      &lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;input&lt;/span&gt; &lt;span class="attribute"&gt;type&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;button&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;
                 &lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;Get Output&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;
                 &lt;span class="attribute"&gt;onclick&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;writeOutput()&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag"&gt;input&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;br&lt;/span&gt; &lt;span class="punct"&gt;/&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;br&lt;/span&gt; &lt;span class="punct"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;textarea&lt;/span&gt; &lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;output&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;rows&lt;/span&gt;&lt;span class="punct"&gt;=&lt;/span&gt;&lt;span class="number"&gt;20&lt;/span&gt; &lt;span class="attribute"&gt;cols&lt;/span&gt;&lt;span class="punct"&gt;=&lt;/span&gt;&lt;span class="number"&gt;80&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag"&gt;textarea&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="punct"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag"&gt;form&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="punct"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag"&gt;body&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="punct"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag"&gt;html&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;The above HTML contains three editor-specific pieces of information: (1) APPLET_JARFILE; (2) APPLET_CLASS; and (3) OUTPUT_METHOD. APPLET_JARFILE is the name of the Java archive file (*.jar) containing the applet code. This name is created by the developer when s/he saves the archive to the webserver. APPLET_CLASS is the fully-qualified class name of the editor applet. OUTPUT_METHOD is the name of the applet method that returns output. These last two pieces of editor-specific information are listed in the summary that follows.&lt;/p&gt;

&lt;h4&gt;Java Molecular Editor (JME)&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Homepage:&lt;/strong&gt; &lt;a href="http://www.molinspiration.com/jme/"&gt;Molinspiration&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;License:&lt;/strong&gt; Free for noncommercial development.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Source Code:&lt;/strong&gt; N/A&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Size:&lt;/strong&gt; 39 Kb&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;APPLET_CLASS:&lt;/strong&gt; JME&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OUTPUT_METHOD:&lt;/strong&gt; molFile(); smiles(); nonisomericSmiles(); jmeFile();&lt;/p&gt;

&lt;p&gt;&lt;a href="http://depth-first.com/demo/20060820/jme/jme.html"&gt;View the Sample Page&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;JChemPaint&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Homepage:&lt;/strong&gt; &lt;a href="http://almost.cubic.uni-koeln.de/cdk/jcp"&gt;CDK&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;License:&lt;/strong&gt; &lt;a href="http://www.opensource.org/licenses/gpl-license.php"&gt;GPL&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Source Code:&lt;/strong&gt; &lt;a href="http://sourceforge.net/project/showfiles.php?group_id=20024&amp;amp;package_id=173599&amp;amp;release_id=400854"&gt;SourceForge&lt;/a&gt;  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Size:&lt;/strong&gt; up to 6.2 Mb&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;APPLET_CLASS:&lt;/strong&gt; org.openscience.cdk.applications.jchempaint.applet.JChemPaintEditorApplet  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OUTPUT_METHOD:&lt;/strong&gt; getMolFile();&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Comment:&lt;/strong&gt; Although getSmiles() and getSmilesChiral() methods are available, neither produced the desired output during this test (version 2.1.5). The applet consists of 35 jar files, only some of which are necessary for minimal functionality.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://depth-first.com/demo/20060820/jchempaint/jchempaint.html"&gt;View the Sample Page&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;JMolDraw&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Homepage:&lt;/strong&gt; &lt;a href="http://sourceforge.net/projects/jmoldraw"&gt;SourceForge&lt;/a&gt;  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;License:&lt;/strong&gt; &lt;a href="http://www.opensource.org/licenses/gpl-license.php"&gt;GPL&lt;/a&gt;  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Source Code:&lt;/strong&gt; &lt;a href="http://sourceforge.net/project/showfiles.php?group_id=155468&amp;amp;package_id=173185&amp;amp;release_id=379497"&gt;SourceForge&lt;/a&gt;  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Size:&lt;/strong&gt; up to 1.4 Mb &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;APPLET_CLASS:&lt;/strong&gt; org.jmd.editor.main.JMolDraw&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OUTPUT_METHOD:&lt;/strong&gt; getContentsAsMolfile(); getContentsAsJMEString()  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Notes:&lt;/strong&gt; In contrast to the other three editors, there is no option to display this applet in the browser itself; it must be rendered as a separate window. In addition, this editor requires that several configuration and resource files be accessible on the server. Molfile output uses V3000 ctabs. Although V2000 ctabs are supported, the only way to activate this functionality is to modify the source code.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://depth-first.com/demo/20060820/jmoldraw/jmoldraw.html"&gt;View the Sample Page&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;MCDL&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Homepage:&lt;/strong&gt; &lt;a href="http://sourceforge.net/projects/mcdl"&gt;SourceForge&lt;/a&gt;  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;License:&lt;/strong&gt; Public Domain  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Source Code:&lt;/strong&gt; &lt;a href="http://sourceforge.net/project/showfiles.php?group_id=148281&amp;amp;package_id=163529&amp;amp;release_id=405662"&gt;SourceForge&lt;/a&gt;  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Size:&lt;/strong&gt; 256 Kb&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;APPLET_CLASS:&lt;/strong&gt; mcdl.MCDLEditor  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OUTPUT_METHOD:&lt;/strong&gt; getMDCL()  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Notes:&lt;/strong&gt; This editor only supports output in &lt;a href="http://depth-first.com/articles/2006/08/19/a-first-look-at-modular-chemical-descriptor-language-mcdl"&gt;Modular Chemical Descriptor Language&lt;/a&gt; format.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://depth-first.com/demo/20060820/mcdl/mcdl.html"&gt;View the Sample Page&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;Conclusions&lt;/h4&gt;

&lt;p&gt;This review has only scratched the surface of what is possible with these editors. For example, all accept input as well as providing output. As a result, they can be used to render 2-D molecular images, with more or less Java coding. Both MCDL and JME are especially attractive from the developer perspective because they are each distributed as a single jar file with a small footprint.&lt;/p&gt;

&lt;p&gt;Although numerous 2-D structure editors &lt;a href="http://dragon.klte.hu/~gundat/rajzprogramok/dprog.html"&gt;are available&lt;/a&gt;, those reviewed here meet the minimum requirements for the development of free chemical web applications: they work on nearly all computing platforms thanks to Java; and they are themselves free.&lt;/p&gt;</description>
      <pubDate>Mon, 21 Aug 2006 00:13:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:0bf7a108-3f4f-477a-b528-7dbb2352bda3</guid>
      <author>Rich Apodaca</author>
      <link>http://depth-first.com/articles/2006/08/21/four-free-2-d-structure-editors-for-web-applications</link>
      <category>Graphics</category>
      <category>web</category>
      <category>jchempaint</category>
      <category>mcdl</category>
      <category>jmoldraw</category>
      <category>jme</category>
      <category>editor</category>
      <category>2d</category>
      <category>webapp</category>
    </item>
  </channel>
</rss>
