<?xml version="1.0"?>
<rss version="2.0">
<channel>
<title>helma.org/wiki/Comparison of JSAdapter and JOMP</title>
<pubDate>Thu, 20 Nov 2008 18:55:01 +0100</pubDate>
<description>Updates for Page helma.org/wiki/Comparison of JSAdapter and JOMP</description>
<link>http://dev.helma.org/wiki/Comparison+of+JSAdapter+and+JOMP/</link>
<item>
<title>Version 4</title>
<pubDate>Tue, 15 Jan 2008 12:27:45 +0100</pubDate>
<description>&lt;div class=&apos;diffbody&apos;&gt;&lt;table&gt;&lt;tr&gt;&lt;td style=&quot;width:2em; color:#999;&quot;&gt;5&lt;/td&gt;&lt;td&gt;* Inheritance not as &lt;span class=&apos;diffremoved&apos;&gt;easy&lt;/span&gt;&lt;span class=&apos;diffadded&apos;&gt;easy as with plain JS objects&lt;/span&gt;. Normal use needs wrapped object, but for prototype &lt;span class=&apos;diffadded&apos;&gt;use &lt;/span&gt;in inheritance chain we need unwrapped adaptee object&lt;span class=&apos;diffremoved&apos;&gt;,&lt;/span&gt;&lt;span class=&apos;diffadded&apos;&gt;.&lt;/span&gt;&amp;nbsp;&lt;span class=&apos;diffremoved&apos;&gt;so &lt;/span&gt;&lt;span class=&apos;diffadded&apos;&gt;As a result &lt;/span&gt;we need &lt;span class=&apos;diffremoved&apos;&gt;two &lt;/span&gt;&lt;span class=&apos;diffadded&apos;&gt;separate &lt;/span&gt;constructors&lt;span class=&apos;diffadded&apos;&gt;/factory methods for the wrapped and unwrapped object, or wrap the object manually&lt;/span&gt;.&lt;span class=&apos;diffadded&apos;&gt;&amp;nbsp;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;width:2em; color:#999;&quot;&gt;6&lt;/td&gt;&lt;td&gt;* getDefaultValue is forwarded to the adaptee object, so a toString() that relies on adapter functionality won&apos;t work.&lt;span class=&apos;diffadded&apos;&gt; This is rather easy to fix.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;width:2em; color:#999;&quot;&gt;9&lt;/td&gt;&lt;td&gt;* Adds &lt;span class=&apos;diffremoved&apos;&gt;a burden &lt;/span&gt;&lt;span class=&apos;diffadded&apos;&gt;overhead &lt;/span&gt;to all property access methods of the default JS object.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;width:2em; color:#999;&quot;&gt;10&lt;/td&gt;&lt;td&gt;* Not thread-safe&lt;span class=&apos;diffremoved&apos;&gt;,&lt;/span&gt;&lt;span class=&apos;diffadded&apos;&gt;.&lt;/span&gt;&amp;nbsp;&lt;span class=&apos;diffremoved&apos;&gt;and making &lt;/span&gt;&lt;span class=&apos;diffadded&apos;&gt;Making &lt;/span&gt;it threadsafe &lt;span class=&apos;diffremoved&apos;&gt;will &lt;/span&gt;&lt;span class=&apos;diffadded&apos;&gt;would probably require using a java.lang.ThreadLocal to disable the metaobject during invocation, which would &lt;/span&gt;put an even bigger &lt;span class=&apos;diffremoved&apos;&gt;penalty &lt;/span&gt;&lt;span class=&apos;diffadded&apos;&gt;burden &lt;/span&gt;on the default JS object.&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</description>
<link>http://dev.helma.org/wiki/Comparison+of+JSAdapter+and+JOMP/history.diff?v=4</link>
<author>hannes</author>
</item>
<item>
<title>Version 3</title>
<pubDate>Tue, 15 Jan 2008 12:21:57 +0100</pubDate>
<description>&lt;div class=&apos;diffbody&apos;&gt;&lt;table&gt;&lt;tr&gt;&lt;td style=&quot;width:2em; color:#999;&quot;&gt;1&lt;/td&gt;&lt;td&gt;This is a comparison of *JSAdapter&lt;span class=&apos;diffadded&apos;&gt;|http://blogs.sun.com/sundararajan/entry/self_javascript_and_jsadapter&lt;/span&gt;* and *JOMP&lt;span class=&apos;diffadded&apos;&gt;|http://www.bias2build.com/thesis/javascript_mop_expanded.html&lt;/span&gt;*, two approaches to add metaprogramming features to Rhino.&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</description>
<link>http://dev.helma.org/wiki/Comparison+of+JSAdapter+and+JOMP/history.diff?v=3</link>
<author>hannes</author>
</item>
<item>
<title>Version 2</title>
<pubDate>Tue, 15 Jan 2008 12:18:36 +0100</pubDate>
<description>&lt;div class=&apos;diffbody&apos;&gt;&lt;table&gt;&lt;tr&gt;&lt;td style=&quot;width:2em; color:#999;&quot;&gt;11&lt;/td&gt;&lt;td&gt;* Not thread-safe, and making it threadsafe will put &lt;span class=&apos;diffremoved&apos;&gt;a burden &lt;/span&gt;&lt;span class=&apos;diffadded&apos;&gt;an even bigger penalty &lt;/span&gt;on the default JS object.&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</description>
<link>http://dev.helma.org/wiki/Comparison+of+JSAdapter+and+JOMP/history.diff?v=2</link>
<author>hannes</author>
</item>
<item>
<title>Version 1</title>
<pubDate>Tue, 15 Jan 2008 12:16:41 +0100</pubDate>
<description>&lt;ul class=&apos;diffproperties&apos;&gt;&lt;li&gt;Set &lt;span class=&apos;diffpropname&apos;&gt;tags&lt;/span&gt; to &lt;span class=&apos;diffadded&apos;&gt;metaprogramming&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class=&apos;diffbody&apos;&gt;&lt;table&gt;&lt;tr&gt;&lt;td style=&quot;width:2em; color:#999;&quot;&gt;1&lt;/td&gt;&lt;td&gt;&lt;span class=&apos;diffadded&apos;&gt;This is a comparison of *JSAdapter* and *JOMP*, two approaches to add metaprogramming features to Rhino.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;width:2em; color:#999;&quot;&gt;3&lt;/td&gt;&lt;td&gt;&lt;span class=&apos;diffadded&apos;&gt;=== JSAdapter&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;width:2em; color:#999;&quot;&gt;4&lt;/td&gt;&lt;td&gt;&lt;span class=&apos;diffadded&apos;&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;width:2em; color:#999;&quot;&gt;5&lt;/td&gt;&lt;td&gt;&lt;span class=&apos;diffadded&apos;&gt;* Inheritance not as easy. Normal use needs wrapped object, but for prototype in inheritance chain we need unwrapped adaptee object, so we need two constructors.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;width:2em; color:#999;&quot;&gt;6&lt;/td&gt;&lt;td&gt;&lt;span class=&apos;diffadded&apos;&gt;* getDefaultValue is forwarded to the adaptee object, so a toString() that relies on adapter functionality won&apos;t work.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;width:2em; color:#999;&quot;&gt;7&lt;/td&gt;&lt;td&gt;&lt;span class=&apos;diffadded&apos;&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;width:2em; color:#999;&quot;&gt;8&lt;/td&gt;&lt;td&gt;&lt;span class=&apos;diffadded&apos;&gt;=== JOMP&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;width:2em; color:#999;&quot;&gt;9&lt;/td&gt;&lt;td&gt;&lt;span class=&apos;diffadded&apos;&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;width:2em; color:#999;&quot;&gt;10&lt;/td&gt;&lt;td&gt;&lt;span class=&apos;diffadded&apos;&gt;* Adds a burden to all property access methods of the default JS object.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;width:2em; color:#999;&quot;&gt;11&lt;/td&gt;&lt;td&gt;&lt;span class=&apos;diffadded&apos;&gt;* Not thread-safe, and making it threadsafe will put a burden on the default JS object.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;width:2em; color:#999;&quot;&gt;12&lt;/td&gt;&lt;td&gt;&lt;span class=&apos;diffadded&apos;&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;width:2em; color:#999;&quot;&gt;13&lt;/td&gt;&lt;td&gt;&lt;span class=&apos;diffadded&apos;&gt;=== Test code&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;width:2em; color:#999;&quot;&gt;14&lt;/td&gt;&lt;td&gt;&lt;span class=&apos;diffadded&apos;&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;width:2em; color:#999;&quot;&gt;15&lt;/td&gt;&lt;td&gt;&lt;span class=&apos;diffadded&apos;&gt;This is a script that implements a base and extended object using both techniques, and a patch for adding JOMP support to Rhino.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;width:2em; color:#999;&quot;&gt;16&lt;/td&gt;&lt;td&gt;&lt;span class=&apos;diffadded&apos;&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;width:2em; color:#999;&quot;&gt;17&lt;/td&gt;&lt;td&gt;&lt;span class=&apos;diffadded&apos;&gt;&amp;lt;% this.attachments %&amp;gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</description>
<link>http://dev.helma.org/wiki/Comparison+of+JSAdapter+and+JOMP/history.diff?v=1</link>
<author>hannes</author>
</item>
</channel>
</rss>
