<?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 webapp</title>
    <link>http://depth-first.com/articles/tag/webapp</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>Walking the Web of Chemical Informatics</description>
    <item>
      <title>Casual Saturdays: Google AppEngine</title>
      <description>&lt;p&gt;&lt;center&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/bfgO-LXGpTM&amp;amp;hl=en"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/bfgO-LXGpTM&amp;amp;hl=en" type="application/x-shockwave-flash" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/center&gt;&lt;/p&gt;</description>
      <pubDate>Sat, 07 Jun 2008 11:47:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:ba5e6f16-7ee8-4f6b-b1f2-401e9b545fac</guid>
      <author>Rich Apodaca</author>
      <link>http://depth-first.com/articles/2008/06/07/casual-saturdays-google-appengine</link>
      <category>Tools</category>
      <category>appengine</category>
      <category>django</category>
      <category>python</category>
      <category>webapp</category>
      <category>designingtheobvious</category>
    </item>
    <item>
      <title>Flex, Rich Internet Applications, and Cheminformatics</title>
      <description>&lt;p&gt;&lt;center&gt;&lt;img src="http://depth-first.com/demo/20070525/flash.png"&gt;&lt;/img&gt;&lt;/center&gt;&lt;/p&gt;

&lt;p&gt;Building &lt;a href="http://en.wikipedia.org/wiki/Rich_Internet_application"&gt;Rich Internet Applications&lt;/a&gt; (RIAs) is no easy task. The technologies are all there, but twelve years after the release of Netscape Navigator, Web developers are still hacking around browser idiosyncrasies.&lt;/p&gt;

&lt;p&gt;From JavaScript to HTML, to CSS, browser quirks are still a fact of life. Browsers tend to disagree the most on the more advanced features, but examples of less advanced features requiring cross-browser work-arounds continue to suck up large amounts of developer time.&lt;/p&gt;

&lt;p&gt;Even Java applets get in on the act. The interface between applets and the browser is the most poorly-defined aspect of the technology. Particularly with respect to &lt;a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4984794"&gt;keyboard focus&lt;/a&gt;, &lt;a href="http://forum.java.sun.com/thread.jspa?threadID=348710&amp;amp;messageID=2031874"&gt;persisting applet state&lt;/a&gt;, and even &lt;a href="http://java.sun.com/developer/technicalArticles/J2SE/Desktop/ieappletguide/"&gt;initial activation&lt;/a&gt;, it's "write once, test everywhere."&lt;/p&gt;

&lt;p&gt;Recently, I saw a presentation by &lt;a href="http://www.jamesward.org/wordpress/"&gt;James Ward&lt;/a&gt; on a technology called &lt;a href="http://www.adobe.com/products/flex/"&gt;Flex&lt;/a&gt; that's aimed squarely at solving the Rich Internet Application problem.&lt;/p&gt;

&lt;p&gt;Flex is a platform for building software that runs on the Flash multimedia player. If you've developed Java applets, you already know a lot about how Flex works. Here are some of the key points James brought up:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Flex applications are written in ECMAScript (aka JavaScript) and run on the Flash 9 runtime. The language offers, among other features, variable typing. This stands in contrast to the non-typed form of JavaScript typically used in browsers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Sometime in 2007, Flex will be open sourced. The &lt;a href="http://www.adobe.com/products/flex/downloads/"&gt;developer kit&lt;/a&gt; is currently a free download.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A desktop-native runtime for Flex called &lt;a href="http://labs.adobe.com/technologies/apollo/"&gt;Apollo&lt;/a&gt; is nearing release.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A variety of eye-popping examples of Flex in action are available. My favorites so far: &lt;a href="http://demo.quietlyscheming.com/book/Anatomy.html"&gt;FlexBook&lt;/a&gt; and &lt;a href="http://picnik.com"&gt;Picnik&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="http://demo.quietlyscheming.com/book/Anatomy.html" border="none"&gt;&lt;center&gt;&lt;img src="http://depth-first.com/demo/20070525/flashbook.png"&gt;&lt;/img&gt;&lt;/center&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Adobe is clearly trying to position Flash/Flex as the successor to Java applets. By ensuring that Flash works the same way in all browsers, has a rich API for interacting with the browser, and is available on all platforms, they just might succeed.&lt;/p&gt;

&lt;p&gt;Adobe claims that Flash is the most widely-installed multimedia browser plug-in. According to a &lt;a href="http://www.adobe.com/products/player_census/flashplayer/"&gt;recent study&lt;/a&gt;, nearly 99% of browsers have some version of Flash installed (congratulations to &lt;a href="http://cheminfo.informatics.indiana.edu/~rguha/"&gt;Rajarshi Guha&lt;/a&gt; for almost immediately getting the &lt;a href="http://depth-first.com/articles/2007/05/23/name-that-graph"&gt;Name that Graph&lt;/a&gt;). Adoption of Flash 9, the latest version and the one required to run Flex applications, &lt;a href="http://www.adobe.com/products/player_census/flashplayer/version_penetration.html"&gt;is significantly lower&lt;/a&gt;. My guess is that these numbers will rise quickly given the availability of Flash 9 for Linux and the mere 1.5 MB download footprint.&lt;/p&gt;

&lt;p&gt;If Flex has anything going against it, it's probably the small footprint of the Flash player. One of the first things you'll notice about many feature-rich Flex applications is how long they take to download relative to comparable Java applets. What the Flash runtime lacks, your application may well have to supply on deployment.&lt;/p&gt;

&lt;p&gt;I'm unaware of a single use of Flex/Flash in cheminformatics. This is really quite surprising given the highly visual nature of cheminformatics and the refined graphics capabilities of the Flash player. Even with it's limitations, Flex may offer solutions to a variety of difficult problems in developing Rich Internet Applications for chemistry.&lt;/p&gt;</description>
      <pubDate>Fri, 25 May 2007 11:32:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:8666387e-50a3-424e-84b4-2b5c0dce104e</guid>
      <author>Rich Apodaca</author>
      <link>http://depth-first.com/articles/2007/05/25/flex-rich-internet-applications-and-cheminformatics</link>
      <category>Meta</category>
      <category>flex</category>
      <category>flash</category>
      <category>richinternetapplcations</category>
      <category>applets</category>
      <category>java</category>
      <category>webapp</category>
    </item>
    <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>Google for Molecules with InChIMatic</title>
      <description>&lt;p&gt;&lt;center&gt;&lt;a href="http://inchimatic.com"&gt;&lt;img src="http://depth-first.com/demo/20070219/inchimatic_logo.png" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/center&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://inchimatic.com"&gt;InChIMatic&lt;/a&gt; is a simple Web application that uses Google to perform exact structure searches on the Web. After drawing your structure in the editor window, click the "InChI!" button to get a link. This link takes you to a Google query that displays matches for your molecule. You'll need both Java and JavaScript enabled in your browser to use InChIMatic.&lt;/p&gt;

&lt;h4&gt;The Technical Details&lt;/h4&gt;

&lt;p&gt;&lt;a href="http://iupac.org/dhtml_home.html"&gt;&lt;img src="http://depth-first.com/demo/20070126/iupac_logo.png" align="right" border="0"&gt;&lt;/img&gt;&lt;/a&gt;The technology at the heart of InChIMatic is the &lt;a href="http://www.iupac.org/inchi/"&gt;IUPAC International Chemical Identifier&lt;/a&gt; (InChI). An InChI is an alphanumeric string that uniquely identifies a molecular structure. By converting molecular structures to text, InChI makes it easy to use standard Internet tools to do exact structure searches.&lt;/p&gt;

&lt;p&gt;The earliest reference in the peer-reviewed literature to using Google for searching InChIs is contained in a &lt;a href="http://dx.doi.org/10.1039/b502828k"&gt;2005 paper&lt;/a&gt;. More recently, a service called &lt;a href="http://querychem.com"&gt;QueryChem&lt;/a&gt; has taken this idea one step further by using the &lt;a href="http://code.google.com/"&gt;Google API&lt;/a&gt; to perform substructure searches based on InChI.&lt;/p&gt;

&lt;p&gt;InChIMatic works differently. Unlike a raw Google search, InChIMatic builds a Google query link for you. Unlike QueryChem, InChIMatic doesn't use the Google API and so has none of its restrictions. This does result in a limitation: InChIMatic can only currently be used to for exact structure queries.&lt;/p&gt;

&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;The InChIMatic Web application has been discussed in greater technical detail in a &lt;a href="http://depth-first.com/articles/2006/12/15/anatomy-of-a-cheminformatics-web-application-inchimatic"&gt;previous article&lt;/a&gt;. The rapid Web application development framework &lt;a href="http://rubyonrails.com"&gt;Ruby on Rails&lt;/a&gt; made building InChIMatic a snap. InChIMatic is served by the Ruby application container &lt;a href="http://depth-first.com/articles/2007/02/05/mongrel-and-rails-its-just-not-fair"&gt;Mongrel&lt;/a&gt;, which is hosted on a Linux server running Apache. &lt;a href="http://depth-first.com/articles/tag/rino"&gt;Rino&lt;/a&gt; provided the Ruby interface to the &lt;a href="http://www.iupac.org/inchi/"&gt;IUPAC/NIST InChI toolkit&lt;/a&gt;. The 2-D structure editor is &lt;a href="http://www.molinspiration.com/jme/"&gt;Java Molecular Editor&lt;/a&gt; (JME) by Peter Ertl, which is used with his kind permission.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.opensource.org/docs/definition.php"&gt;&lt;img src="http://www.opensource.org/trademarks/opensource/web/opensource-110x95.png" align="right" alt="Open Source (OSI) Logo" border="0" width="110" height="95"&gt;&lt;/img&gt;&lt;/a&gt;Aside from JME, all components of InChIMatic, from the operating system it runs on to the InChI system itself, are &lt;a href="http://opensource.org"&gt;Open Source&lt;/a&gt; software.&lt;/p&gt;

&lt;h4&gt;Using InChI to Raise the Visibility of Your Content&lt;/h4&gt;

&lt;p&gt;InChIMatic returns many Google results for common molecules. But less common, known molecules return no hits at all. Three factors are responsible: (1) Google doesn't index all InChIs on the Internet; (2) few content providers currently use InChI; and (3) there is no standard and convenient mechanism to embed InChIs into Web pages for indexing by Google.&lt;/p&gt;

&lt;p&gt;For these reasons, I consider InChI to be bleeding edge technology. Some will find it useful, most will not. Unfortunately, this state of affairs will persist until problems (1) and (3) are solved.&lt;/p&gt;

&lt;p&gt;Nevertheless, if you're technically adventurous, InChIMatic offers a relatively painless way to begin incorporating InChIs into your content and verifying that they get indexed. There's no software to download, install, or upgrade. Forget about operating system incompatibilities (hopefully!). Just point your Java-enabled browser to &lt;a href="http://inchimatic.com"&gt;inchimatic.com&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Although there's no standard method to encode InChIs in Web pages, some interesting ideas have been put forward. &lt;a href="http://chem-bla-ics.blogspot.com/"&gt;Egon Willighagen&lt;/a&gt; has proposed &lt;a href="http://chem-bla-ics.blogspot.com/2006/12/including-smiles-cml-and-inchi-in.html"&gt;a system&lt;/a&gt; based on &lt;a href="http://www.w3.org/TR/xhtml-rdfa-primer/"&gt;RDFa&lt;/a&gt;. Future iterations of InChIMatic may include support for generating scripts and/or markup for including InChIs into blogs and other online content.&lt;/p&gt;

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

&lt;p&gt;InChI is a complex new technology in need of easy-to-use tools. InChIMatic is one such tool that makes it possible to perform exact structure queries using Google.&lt;/p&gt;

&lt;p&gt;One of the exciting things about Web applications is how quickly they can evolve. If in trying out InChIMatic you find something you'd like changed or added, please feel free to &lt;a href="mailto:r_apodaca@users.sf.net"&gt;write me&lt;/a&gt;.&lt;/p&gt;</description>
      <pubDate>Mon, 19 Feb 2007 10:18:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:eb531bca-c3b0-4f2d-8053-4272baa8bbfb</guid>
      <author>Rich Apodaca</author>
      <link>http://depth-first.com/articles/2007/02/19/google-for-molecules-with-inchimatic</link>
      <category>Tools</category>
      <category>inchimatic</category>
      <category>inchi</category>
      <category>google</category>
      <category>webapp</category>
      <category>opensource</category>
      <category>rails</category>
      <category>iupac</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>
