<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Comments on: Object Teams with Null Annotations</title>
	<atom:link href="http://blog.objectteams.org/2011/12/object-teams-with-null-annotations/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.objectteams.org/2011/12/object-teams-with-null-annotations/</link>
	<description>Everthing Object Teams - adding team spirit to your objects.</description>
	<pubDate>Fri, 18 May 2012 09:20:08 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
		<item>
		<title>By: stephan</title>
		<link>http://blog.objectteams.org/2011/12/object-teams-with-null-annotations/#comment-30411</link>
		<dc:creator>stephan</dc:creator>
		<pubDate>Fri, 23 Dec 2011 20:46:28 +0000</pubDate>
		<guid isPermaLink="false">http://blog.objectteams.org/?p=128#comment-30411</guid>
		<description>@Mathieu: I posted some explanations regarding the VM options in the Object Teams Forum.

Also: your understanding of our loadtime weaving is correct. Let me know if you specific questions.</description>
		<content:encoded><![CDATA[<p>@Mathieu: I posted some explanations regarding the VM options in the Object Teams Forum.</p>
<p>Also: your understanding of our loadtime weaving is correct. Let me know if you specific questions.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mathieu Velten</title>
		<link>http://blog.objectteams.org/2011/12/object-teams-with-null-annotations/#comment-30373</link>
		<dc:creator>Mathieu Velten</dc:creator>
		<pubDate>Fri, 23 Dec 2011 10:52:41 +0000</pubDate>
		<guid isPermaLink="false">http://blog.objectteams.org/?p=128#comment-30373</guid>
		<description>Forgot one question :

Can you think of any drawback of the needed VM options in the eclipse.ini (except that we need a Sun JVM &#62;= 1.5.0_07, and it shoud not be activated on MacOSX) :
-XX:+UnlockDiagnosticVMOptions
-XX:+UnsyncloadClass

There is not a lot of infos on Google regarding those options...
I am planning to release the next Topcased with those options so we can deploy easily specific hacks to our clients.

Thanks.</description>
		<content:encoded><![CDATA[<p>Forgot one question :</p>
<p>Can you think of any drawback of the needed VM options in the eclipse.ini (except that we need a Sun JVM &gt;= 1.5.0_07, and it shoud not be activated on MacOSX) :<br />
-XX:+UnlockDiagnosticVMOptions<br />
-XX:+UnsyncloadClass</p>
<p>There is not a lot of infos on Google regarding those options&#8230;<br />
I am planning to release the next Topcased with those options so we can deploy easily specific hacks to our clients.</p>
<p>Thanks.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mathieu Velten</title>
		<link>http://blog.objectteams.org/2011/12/object-teams-with-null-annotations/#comment-30371</link>
		<dc:creator>Mathieu Velten</dc:creator>
		<pubDate>Fri, 23 Dec 2011 10:36:32 +0000</pubDate>
		<guid isPermaLink="false">http://blog.objectteams.org/?p=128#comment-30371</guid>
		<description>Thanks for the answers.

I read your blog post and the concepts are more clearer now.

I am really interesting in the technical details of the weaving implementation on the equinox side. Your first link seems to be really interesting on that according to the schematics unfortunately I can't read german at all :( .

I guess you are using the loadtime weaving presenting in the paper by patching the bytecode in the ClassLoader to insert hooks to methods that can at least have one role hooking on it : it looks to be the better compromise between perfs (no hit if nothing needs to be hooked on a method, unlike runtime weaving) and ease to use (no modification of the base classes before the execution which is great if we want to hook easily in a library/plugin without modifying it).</description>
		<content:encoded><![CDATA[<p>Thanks for the answers.</p>
<p>I read your blog post and the concepts are more clearer now.</p>
<p>I am really interesting in the technical details of the weaving implementation on the equinox side. Your first link seems to be really interesting on that according to the schematics unfortunately I can&#8217;t read german at all <img src='http://blog.objectteams.org/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> .</p>
<p>I guess you are using the loadtime weaving presenting in the paper by patching the bytecode in the ClassLoader to insert hooks to methods that can at least have one role hooking on it : it looks to be the better compromise between perfs (no hit if nothing needs to be hooked on a method, unlike runtime weaving) and ease to use (no modification of the base classes before the execution which is great if we want to hook easily in a library/plugin without modifying it).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: stephan</title>
		<link>http://blog.objectteams.org/2011/12/object-teams-with-null-annotations/#comment-30287</link>
		<dc:creator>stephan</dc:creator>
		<pubDate>Thu, 22 Dec 2011 16:34:38 +0000</pubDate>
		<guid isPermaLink="false">http://blog.objectteams.org/?p=128#comment-30287</guid>
		<description>Hi Mathieu,

thanks for your encouraging comment :)

&gt; Do you have any data on the performance hit ?

We have done measurements at several levels like: micro benchmarks [1], Eclipse startup time (unpublished), but don't trust these figures, what really counts is just how *your application* performs with OT/J.

So if you're concerned about performance, I think it helps more to understand *what* actually incurs any performance costs.

&gt; I understand that it will be slower when a method is surrounded and I am quite ok with that, but does it slow down significantly the whole calling process when no Role is registered on a class ?

A base class that has no role bound to it is totally unaffected. Also, a base method that is not affected by any callin binding is totally unaffected.

Only if a callin binding exists, two kinds of costs have to be paid: for each base object the first dispatch may need to create a role instance (and store it in internal data structures for house keeping) and each invocation of the bound method naturally requires some lookup and dispatch.

If your using OT/Equinox you can actually use the "OT/Equinox Monitor" view to inspect the number of roles that have been created on behalf of a given team (just click on a row and wait for the hover).

In case you should notice a relevant slow down and you know the cause, we do have some tricks for tuning the performance :)

&gt; I now have to dig a little in the Object Teams programming model but it seems to look a lot like Aspect.

While digging you're always welcome to ask questions in our forum [2]. 
As for a comparison with Aspects, have you seen my earlier post [3] ? Does it answer some of your question? For just a quick hack the conceptual differences may not be extremely relevant, but the more you think of evolving the quick hack to something sustainable, the more you should benefit from Object Teams. 
And mind you: evolving can well mean to transform an OT/J solution back into a plain Java solution, if you must. That's what I just did with the null annotation prototype: doing the transformation was easy, only, now I miss the wonderful modularity of the solution.

So my advice typically is: if you use OT/J for some "hacking", do it with style :), i.e., also the code for the quick adaptation can and should be clean and well-readable code!

[1] http://www.objectteams.org/publications/index.html#haeder
[2] http://www.eclipse.org/forums/eclipse.objectteams
[3] http://blog.objectteams.org/2010/02/compare-object-teams-to-aop/</description>
		<content:encoded><![CDATA[<p>Hi Mathieu,</p>
<p>thanks for your encouraging comment <img src='http://blog.objectteams.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>> Do you have any data on the performance hit ?</p>
<p>We have done measurements at several levels like: micro benchmarks [1], Eclipse startup time (unpublished), but don&#8217;t trust these figures, what really counts is just how *your application* performs with OT/J.</p>
<p>So if you&#8217;re concerned about performance, I think it helps more to understand *what* actually incurs any performance costs.</p>
<p>> I understand that it will be slower when a method is surrounded and I am quite ok with that, but does it slow down significantly the whole calling process when no Role is registered on a class ?</p>
<p>A base class that has no role bound to it is totally unaffected. Also, a base method that is not affected by any callin binding is totally unaffected.</p>
<p>Only if a callin binding exists, two kinds of costs have to be paid: for each base object the first dispatch may need to create a role instance (and store it in internal data structures for house keeping) and each invocation of the bound method naturally requires some lookup and dispatch.</p>
<p>If your using OT/Equinox you can actually use the &#8220;OT/Equinox Monitor&#8221; view to inspect the number of roles that have been created on behalf of a given team (just click on a row and wait for the hover).</p>
<p>In case you should notice a relevant slow down and you know the cause, we do have some tricks for tuning the performance <img src='http://blog.objectteams.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>> I now have to dig a little in the Object Teams programming model but it seems to look a lot like Aspect.</p>
<p>While digging you&#8217;re always welcome to ask questions in our forum [2].<br />
As for a comparison with Aspects, have you seen my earlier post [3] ? Does it answer some of your question? For just a quick hack the conceptual differences may not be extremely relevant, but the more you think of evolving the quick hack to something sustainable, the more you should benefit from Object Teams.<br />
And mind you: evolving can well mean to transform an OT/J solution back into a plain Java solution, if you must. That&#8217;s what I just did with the null annotation prototype: doing the transformation was easy, only, now I miss the wonderful modularity of the solution.</p>
<p>So my advice typically is: if you use OT/J for some &#8220;hacking&#8221;, do it with style :), i.e., also the code for the quick adaptation can and should be clean and well-readable code!</p>
<p>[1] <a href="http://www.objectteams.org/publications/index.html#haeder" rel="nofollow">http://www.objectteams.org/publications/index.html#haeder</a><br />
[2] <a href="http://www.eclipse.org/forums/eclipse.objectteams" rel="nofollow">http://www.eclipse.org/forums/eclipse.objectteams</a><br />
[3] <a href="http://blog.objectteams.org/2010/02/compare-object-teams-to-aop/" rel="nofollow">http://blog.objectteams.org/2010/02/compare-object-teams-to-aop/</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mathieu Velten</title>
		<link>http://blog.objectteams.org/2011/12/object-teams-with-null-annotations/#comment-30285</link>
		<dc:creator>Mathieu Velten</dc:creator>
		<pubDate>Thu, 22 Dec 2011 16:00:31 +0000</pubDate>
		<guid isPermaLink="false">http://blog.objectteams.org/?p=128#comment-30285</guid>
		<description>Your integration with equinox is just awesome.

I am more an eclipse "hacker" than a coder ATM and the fact that we can surround methods of basically any class of any plugin made my day a lot brighter :) .
I can now deploy a fix easily without having to wait for the fix to be integrated in eclipse: after packaging it in a feature and installing it in a standard untouched eclipse it just works, Thanks for that !

Do you have any data on the performance hit ?
I understand that it will be slower when a method is surrounded and I am quite ok with that, but does it slow down significantly the whole calling process when no Role is registered on a class ?

I now have to dig a little in the Object Teams programming model but it seems to look a lot like Aspect.</description>
		<content:encoded><![CDATA[<p>Your integration with equinox is just awesome.</p>
<p>I am more an eclipse &#8220;hacker&#8221; than a coder ATM and the fact that we can surround methods of basically any class of any plugin made my day a lot brighter <img src='http://blog.objectteams.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .<br />
I can now deploy a fix easily without having to wait for the fix to be integrated in eclipse: after packaging it in a feature and installing it in a standard untouched eclipse it just works, Thanks for that !</p>
<p>Do you have any data on the performance hit ?<br />
I understand that it will be slower when a method is surrounded and I am quite ok with that, but does it slow down significantly the whole calling process when no Role is registered on a class ?</p>
<p>I now have to dig a little in the Object Teams programming model but it seems to look a lot like Aspect.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

