<?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: Demystifying Java Applets Part 2: DRY Deployment with the Javay Method</title>
    <link>http://depth-first.com/articles/2008/03/10/demystifying-java-applets-part-2-dry-deployment-with-the-javay-method</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>Walking the Web of Chemical Informatics</description>
    <item>
      <title>Demystifying Java Applets Part 2: DRY Deployment with the Javay Method</title>
      <description>&lt;p&gt;&lt;a href="http://flickr.com/photos/thingsarebetterwithaparrott/2088815029/"&gt;&lt;img src="http://depth-first.com/demo/20080310/tag.jpg" align="right"&gt;&lt;/img&gt;&lt;/a&gt;Java applets are easy to deploy in a standards-compliant way across multiple browsers - you just need to know how. The &lt;a href="http://depth-first.com/articles/2008/02/20/demystifying-java-applets-part-1-cross-browser-standards-compliant-pure-html-deployment-using-the-object-tag"&gt;previous article in this series&lt;/a&gt; gave some general pointers to better applet deployment, including the use of the &lt;tt&gt;&amp;lt;object&amp;gt;&lt;/tt&gt; tag. This article will show how to make this deployment method even more concise with the &lt;strong&gt;Javay Method&lt;/strong&gt;.&lt;/p&gt;

&lt;h4&gt;Keeping it DRY&lt;/h4&gt;

&lt;p&gt;The code from the previous article used two completely different &lt;tt&gt;&amp;lt;object&amp;gt;&lt;/tt&gt; tags: one for Internet Explorer and one for all other browsers:&lt;/p&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_xml "&gt;&lt;span class="comment"&gt;&amp;lt;!--[if !IE]&amp;gt; --&amp;gt;&lt;/span&gt;
&lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;object&lt;/span&gt; &lt;span class="attribute"&gt;classid&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;java:com/metamolecular/chemwriter/applet/EditorApplet.class&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&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;application/x-java-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;/path/to/applets/chemwriter.jar&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; 
              &lt;span class="attribute"&gt;height&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;350&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;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;550&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&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;param&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;code&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;com/metamolecular/chemwriter/applet/EditorApplet.class&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="punct"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="comment"&gt;&amp;lt;!-- For Konqueror --&amp;gt;&lt;/span&gt;
  &lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;param&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;archive&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;/path/to/applets/chemwriter.jar&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&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;param&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;persistState&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;false&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&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;center&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;img&lt;/span&gt; &lt;span class="attribute"&gt;src&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;/path/to/images/chemwriter_logo.png&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&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;p&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;strong&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;ChemWriter content requires Java 1.4.2 or higher, which your browser does not appear to have.&lt;span class="punct"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag"&gt;strong&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag"&gt;p&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;p&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;a&lt;/span&gt; &lt;span class="attribute"&gt;href&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;http://www.java.com/en/download/index.jsp&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&amp;gt;&lt;/span&gt;Get the latest Java Plug-in.&lt;span class="punct"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag"&gt;a&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag"&gt;p&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;center&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;object&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="comment"&gt;&amp;lt;!--&amp;lt;![endif]--&amp;gt;&lt;/span&gt;
&lt;span class="comment"&gt;&amp;lt;!--[if IE]&amp;gt;
&amp;lt;object classid=&amp;quot;clsid:8AD9C840-044E-11D1-B3E9-00805F499D93&amp;quot; 
                codebase=&amp;quot;http://java.sun.com/products/plugin/autodl/jinstall-1_4-windows-i586.cab#Version=1,4,0,0&amp;quot;
                height=&amp;quot;350&amp;quot; width=&amp;quot;550&amp;quot; &amp;gt; 
  &amp;lt;param name=&amp;quot;code&amp;quot; value=&amp;quot;com/metamolecular/chemwriter/applet/EditorApplet.class&amp;quot; /&amp;gt;
  &amp;lt;param name=&amp;quot;archive&amp;quot; value=&amp;quot;/path/to/applets/chemwriter.jar&amp;quot; /&amp;gt;
  &amp;lt;param name=&amp;quot;persistState&amp;quot; value=&amp;quot;false&amp;quot; /&amp;gt;
  &amp;lt;center&amp;gt;
    &amp;lt;img src=&amp;quot;/path/to/images/chemwriter_logo.png&amp;quot; /&amp;gt;
    &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;ChemWriter content requires Java 1.4.2 or higher, which your browser does not appear to have.&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;
    &amp;lt;p&amp;gt;&amp;lt;a href=&amp;quot;http://www.java.com/en/download/index.jsp&amp;quot;&amp;gt;Get the latest Java Plug-in.&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;
  &amp;lt;/center&amp;gt;
&amp;lt;/object&amp;gt;
&amp;lt;![endif]--&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Conditional comments are used to ensure that IE sees one definition and standards-compliant browsers see another. But notice the large amount of repetition, specifically the parameters list, the failsafe code, and the closing &lt;tt&gt;&amp;lt;object&amp;gt;&lt;/tt&gt; tag.&lt;/p&gt;

&lt;p&gt;Surely there must be a better way.&lt;/p&gt;

&lt;h4&gt;A Widespread Problem&lt;/h4&gt;

&lt;p&gt;Microsoft's idiosyncratic use of the &lt;tt&gt;&amp;lt;object&amp;gt;&lt;/tt&gt; tag doesn't just cause difficulties for Java applets: it rears its head with all plugin content. This problem is so widespread in the Flash world that its solution even has a name: &lt;a href="http://www.alistapart.com/articles/flashsatay/"&gt;Flash Satay&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In the language of Drew McLellan, inventor of Flash Satay, the applet code listing above is the "twice-cooked method" - we repeat the same code twice.&lt;/p&gt;

&lt;p&gt;The twice-cooked method violates one of the most important principles in software development: &lt;a href="http://en.wikipedia.org/wiki/Don't_repeat_yourself"&gt;Don't Repeat Yourself (DRY)&lt;/a&gt;. It's an invitation cross-browser bugs. If we forget to include the same parameter twice, or if we mistakenly use one parameter for IE and another for standards-compliant browsers, for example, we've just created a potentially nasty headache for ourselves.&lt;/p&gt;

&lt;h4&gt;Drying Up the &lt;tt&gt;&amp;lt;object&amp;gt;&lt;/tt&gt; Tag&lt;/h4&gt;

&lt;p&gt;We can DRY up our applet &lt;tt&gt;&amp;lt;object&amp;gt;&lt;/tt&gt; tag by factoring out what's common: the parameters listing; the failsafe code; and the closing &lt;tt&gt;&amp;lt;object&amp;gt;&lt;/tt&gt; tag:&lt;/p&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_xml "&gt;&lt;span class="comment"&gt;&amp;lt;!--[if IE]&amp;gt;&amp;lt;object classid=&amp;quot;clsid:8AD9C840-044E-11D1-B3E9-00805F499D93&amp;quot; codebase=&amp;quot;http://java.sun.com/products/plugin/autodl/jinstall-1_4-windows-i586.cab#Version=1,4,0,0&amp;quot;
width=&amp;quot;480&amp;quot; height=&amp;quot;350&amp;quot;&amp;gt;&amp;lt;script&amp;gt;/*&amp;lt;![endif]--&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;type&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;text/javascript&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;script&lt;/span&gt;&lt;span class="punct"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="comment"&gt;&amp;lt;!--[if !IE]&amp;gt;&amp;lt;!--&amp;gt;&lt;/span&gt;
&lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;object&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;application/x-java-applet;version=1.4.2&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;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;480&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;height&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;350&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&amp;gt;&lt;/span&gt;
&lt;span class="comment"&gt;&amp;lt;!--&amp;lt;![endif]--&amp;gt;&lt;/span&gt;
  &lt;span class="punct"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag"&gt;param&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;code&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;com/metamolecular/chemwriter/applet/EditorApplet.class&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;param&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;archive&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;/applets/chemwriter.jar&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;param&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;persistState&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;false&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;param&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;licenseKey&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;4BC4-3C59-3E7D-182B-92B7-2E68&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;a&lt;/span&gt; &lt;span class="attribute"&gt;href&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;http://metamolecular.com/java/&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;img&lt;/span&gt; &lt;span class="attribute"&gt;src&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;http://depth-first.com/demo/20080310/chemwriter_plugin.png&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="attribute"&gt;style&lt;/span&gt;&lt;span class="punct"&gt;=&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;padding: 125.0px 190.0px 125.0px 190.0px; border: 1px dashed red;&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;a&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;object&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;This approach was inspired by the &lt;a href="http://www.blatek.co.uk/blateksatay/"&gt;BlaTek Satay&lt;/a&gt; method, which uses the cute empty JavaScript as a way to prevent IE from showing unwanted characters. To my knowledge, it's never before been applied to applets.&lt;/p&gt;

&lt;p&gt;In the long tradition of naming these hacks after the original Satay method, I call this one "Javay."&lt;/p&gt;

&lt;p&gt;The Javay method's only repetition is in the &lt;tt&gt;width&lt;/tt&gt; and &lt;tt&gt;height&lt;/tt&gt; attributes. Even this redundancy could be eliminated, if we chose, by setting each to "100%" and enclosing the result in a &lt;tt&gt;&amp;lt;div&amp;gt;&lt;/tt&gt; tag that did specify size.&lt;/p&gt;

&lt;p&gt;The above code works in all major browsers, including Safari, Firefox, Internet Explorer 6 and 7, Opera, and Camino. If you find a browser on which the code doesn't work, I'd like to hear about it.&lt;/p&gt;

&lt;p&gt;Here's what the code produces, using my company's 2D structure editor &lt;a href="http://metamolecular.com/chemwriter"&gt;ChemWriter&lt;/a&gt; as an example:&lt;/p&gt;

&lt;p&gt;&lt;!--[if IE]&gt;&lt;object classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" codebase="http://java.sun.com/products/plugin/autodl/jinstall-1_4-windows-i586.cab#Version=1,4,0,0"
width="480" height="350"&gt;&lt;script&gt;/*&lt;![endif]--&gt;&lt;script type="text/javascript"&gt;/**/&lt;/script&gt;
&lt;!--[if !IE]&gt;&lt;!--&gt;
&lt;object type="application/x-java-applet;version=1.4.2" width="480" height="350"&gt;
&lt;!--&lt;![endif]--&gt;
  &lt;param name="code" value="com/metamolecular/chemwriter/applet/EditorApplet.class"&gt;
  &lt;param name="archive" value="/applets/chemwriter.jar"&gt;
  &lt;param name="persistState" value="false"&gt;
  &lt;param name="licenseKey" value="4BC4-3C59-3E7D-182B-92B7-2E68"&gt;
  &lt;a href="http://metamolecular.com/java/"&gt;
    &lt;img src="http://depth-first.com/demo/20080310/chemwriter_plugin.png" style="padding: 125.0px 190.0px 125.0px 190.0px; border: 1px dashed red;"/&gt;
  &lt;/a&gt;
&lt;/object&gt;&lt;/p&gt;

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

&lt;p&gt;To summarize, Java applets can be deployed in a cross-browser, standards-compliant way using the Javay Method. This method solves some of the trickier problems when deploying applets, specifically:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Uses the HTML 4 &lt;tt&gt;&amp;lt;object&amp;gt;&lt;/tt&gt; tag, eliminating the deprecated &lt;tt&gt;&amp;lt;applet&amp;gt;&lt;/tt&gt; tag.&lt;/li&gt;
&lt;li&gt;Works on both IE and standards-compliant browsers in a DRY way.&lt;/li&gt;
&lt;li&gt;Suppresses the annoying "Click to activate" message in IE 6 and 7 with &lt;a href="http://jactivating.sourceforge.net/en/"&gt;jActivating&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Avoids the use of &lt;tt&gt;document.write&lt;/tt&gt; and the problems that can arise if JavaScript is disabled.&lt;/li&gt;
&lt;li&gt;When Java is either missing or not installed, provides a cross-browser failsafe (more on this next time).&lt;/li&gt;
&lt;li&gt;Leaves us with nothing but pure, standards-compliant HTML to write, debug, and maintain.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We've pretty much got everything the old &lt;tt&gt;&amp;lt;applet&amp;gt;&lt;/tt&gt; tag used to have - and more.&lt;/p&gt;

&lt;p&gt;But what if your users don't have Java? Tune in next time to see how to solve this problem once and for all.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Image Credit: &lt;a href="http://flickr.com/photos/thingsarebetterwithaparrott/"&gt;Things are Better with a Parrot&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;</description>
      <pubDate>Mon, 10 Mar 2008 11:13:00 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:87a62ef6-826c-45dc-8f37-371eb3a70e9f</guid>
      <author>Rich Apodaca</author>
      <link>http://depth-first.com/articles/2008/03/10/demystifying-java-applets-part-2-dry-deployment-with-the-javay-method</link>
      <category>Tools</category>
      <category>java</category>
      <category>applet</category>
      <category>chemwriter</category>
      <category>javay</category>
      <category>flashsatay</category>
      <category>jactivating</category>
      <category>deployment</category>
    </item>
  </channel>
</rss>
