<?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"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: JSR296 Swing Application Framework</title>
	<atom:link href="http://www.symphonious.net/2007/05/10/jsr296-swing-application-framework/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.symphonious.net/2007/05/10/jsr296-swing-application-framework/</link>
	<description>Living in a state of accord.</description>
	<lastBuildDate>Fri, 12 Mar 2010 07:41:05 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Thorn Green</title>
		<link>http://www.symphonious.net/2007/05/10/jsr296-swing-application-framework/comment-page-1/#comment-111127</link>
		<dc:creator>Thorn Green</dc:creator>
		<pubDate>Fri, 14 Sep 2007 23:32:15 +0000</pubDate>
		<guid isPermaLink="false">https://www.symphonious.net/2007/05/10/jsr296-swing-application-framework/#comment-111127</guid>
		<description>I have an alternate framework that the JSR-296 people may want to look at.  See:


http://verdantium.blogspot.com/</description>
		<content:encoded><![CDATA[<p>I have an alternate framework that the JSR-296 people may want to look at.  See:</p>
<p><a href="http://verdantium.blogspot.com/" rel="nofollow">http://verdantium.blogspot.com/</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steven</title>
		<link>http://www.symphonious.net/2007/05/10/jsr296-swing-application-framework/comment-page-1/#comment-80835</link>
		<dc:creator>Steven</dc:creator>
		<pubDate>Tue, 22 May 2007 11:24:06 +0000</pubDate>
		<guid isPermaLink="false">https://www.symphonious.net/2007/05/10/jsr296-swing-application-framework/#comment-80835</guid>
		<description>You remark that &#039;updates are covered by webstart&#039;

We use Webstart for a moderately complex application - and we&#039;re dumping it as fast as we can for the next release.

It is slow, unreliable, and remarkably intrusive!</description>
		<content:encoded><![CDATA[<p>You remark that &#8216;updates are covered by webstart&#8217;</p>
<p>We use Webstart for a moderately complex application &#8211; and we&#8217;re dumping it as fast as we can for the next release.</p>
<p>It is slow, unreliable, and remarkably intrusive!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Pure Danger Tech &#187; Blog Archive &#187; Java 7 Roundup (May 21st)</title>
		<link>http://www.symphonious.net/2007/05/10/jsr296-swing-application-framework/comment-page-1/#comment-80760</link>
		<dc:creator>Pure Danger Tech &#187; Blog Archive &#187; Java 7 Roundup (May 21st)</dc:creator>
		<pubDate>Tue, 22 May 2007 03:50:44 +0000</pubDate>
		<guid isPermaLink="false">https://www.symphonious.net/2007/05/10/jsr296-swing-application-framework/#comment-80760</guid>
		<description>[...] Sutton posted notes from the JSR 296 Swing Application Framework session at JavaOne. Malcolm Davis posted some requests [...]</description>
		<content:encoded><![CDATA[<p>[...] Sutton posted notes from the JSR 296 Swing Application Framework session at JavaOne. Malcolm Davis posted some requests [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Adrian Sutton</title>
		<link>http://www.symphonious.net/2007/05/10/jsr296-swing-application-framework/comment-page-1/#comment-78193</link>
		<dc:creator>Adrian Sutton</dc:creator>
		<pubDate>Sun, 13 May 2007 02:51:48 +0000</pubDate>
		<guid isPermaLink="false">https://www.symphonious.net/2007/05/10/jsr296-swing-application-framework/#comment-78193</guid>
		<description>Having to register for every single event you want is unclean in and of itself. The prototype their working on runs on Java 1.5 and will be useful prior to 1.7 - there&#039;s not point in tying this to a JVM that won&#039;t be out for at least another year and attempting to use a JSR (closures) that is changing a great deal or it just makes everything harder. Besides, you don&#039;t want to use closures to hold the kind of code you&#039;d write in the app framework callback methods and it&#039;s annoying to have to register a closure as a listener and go and create a method as well. Much easier to just override a method and be done.</description>
		<content:encoded><![CDATA[<p>Having to register for every single event you want is unclean in and of itself. The prototype their working on runs on Java 1.5 and will be useful prior to 1.7 &#8211; there&#8217;s not point in tying this to a JVM that won&#8217;t be out for at least another year and attempting to use a JSR (closures) that is changing a great deal or it just makes everything harder. Besides, you don&#8217;t want to use closures to hold the kind of code you&#8217;d write in the app framework callback methods and it&#8217;s annoying to have to register a closure as a listener and go and create a method as well. Much easier to just override a method and be done.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ricky Clarkson</title>
		<link>http://www.symphonious.net/2007/05/10/jsr296-swing-application-framework/comment-page-1/#comment-78190</link>
		<dc:creator>Ricky Clarkson</dc:creator>
		<pubDate>Sun, 13 May 2007 02:29:31 +0000</pubDate>
		<guid isPermaLink="false">https://www.symphonious.net/2007/05/10/jsr296-swing-application-framework/#comment-78190</guid>
		<description>There&#039;s nothing conceptually unclean about having a separate interface for each method (see lambda calculus) - and in fact usually the interfaces will all be the same, so they can be one.  Runnable works for the basic cases.

With closures in Java 7, this becomes more syntactically attractive.</description>
		<content:encoded><![CDATA[<p>There&#8217;s nothing conceptually unclean about having a separate interface for each method (see lambda calculus) &#8211; and in fact usually the interfaces will all be the same, so they can be one.  Runnable works for the basic cases.</p>
<p>With closures in Java 7, this becomes more syntactically attractive.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Adrian Sutton</title>
		<link>http://www.symphonious.net/2007/05/10/jsr296-swing-application-framework/comment-page-1/#comment-78189</link>
		<dc:creator>Adrian Sutton</dc:creator>
		<pubDate>Sun, 13 May 2007 02:24:02 +0000</pubDate>
		<guid isPermaLink="false">https://www.symphonious.net/2007/05/10/jsr296-swing-application-framework/#comment-78189</guid>
		<description>The callback would have to have an interface to call back into which would either require you to implement all the methods or have a separate interface for every method - neither is a very clean solution. Java doesn&#039;t use duck typing.

As for testing, my point was that you can&#039;t test a Swing app in headless mode so there&#039;s no point in trying to design frameworks that let you use headless mode for your tests. If your tests run headless, you&#039;re not testing your swing code properly.</description>
		<content:encoded><![CDATA[<p>The callback would have to have an interface to call back into which would either require you to implement all the methods or have a separate interface for every method &#8211; neither is a very clean solution. Java doesn&#8217;t use duck typing.</p>
<p>As for testing, my point was that you can&#8217;t test a Swing app in headless mode so there&#8217;s no point in trying to design frameworks that let you use headless mode for your tests. If your tests run headless, you&#8217;re not testing your swing code properly.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ricky Clarkson</title>
		<link>http://www.symphonious.net/2007/05/10/jsr296-swing-application-framework/comment-page-1/#comment-78185</link>
		<dc:creator>Ricky Clarkson</dc:creator>
		<pubDate>Sun, 13 May 2007 01:59:45 +0000</pubDate>
		<guid isPermaLink="false">https://www.symphonious.net/2007/05/10/jsr296-swing-application-framework/#comment-78185</guid>
		<description>Au contraire, for the subclass is not the only useful tool in the toolbox.  There are ways of doing this without boilerplate - the callback is one such way, in that you only need to provide callbacks for those methods you&#039;re interested in.

I perform as much separation of &#039;business logic&#039; from my UI as I like.  Typically the more unwieldy I find the combination, the more I separate things.  Are you saying that one should not wish to automatically test a JFrame subclass, nor an Application subclass?</description>
		<content:encoded><![CDATA[<p>Au contraire, for the subclass is not the only useful tool in the toolbox.  There are ways of doing this without boilerplate &#8211; the callback is one such way, in that you only need to provide callbacks for those methods you&#8217;re interested in.</p>
<p>I perform as much separation of &#8216;business logic&#8217; from my UI as I like.  Typically the more unwieldy I find the combination, the more I separate things.  Are you saying that one should not wish to automatically test a JFrame subclass, nor an Application subclass?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Adrian Sutton</title>
		<link>http://www.symphonious.net/2007/05/10/jsr296-swing-application-framework/comment-page-1/#comment-78183</link>
		<dc:creator>Adrian Sutton</dc:creator>
		<pubDate>Sun, 13 May 2007 01:48:24 +0000</pubDate>
		<guid isPermaLink="false">https://www.symphonious.net/2007/05/10/jsr296-swing-application-framework/#comment-78183</guid>
		<description>Any solution other than subclassing would require the implementation to provide every single method in the life cycle regardless of whether or not it will be used. Since the entire point of the framework is to remove boiler plate code, callbacks or an interface would not be a clean solution.

As for automatically testing, if you&#039;re testing a Swing app in headless mode, you&#039;re not testing your swing app. If you&#039;re separating your business logic from your UI and testing the business model in headless mode, then you shouldn&#039;t have any business logic for either classes that work with JFrames or classes that extend Application.  The swing app framework and the Application class is all about the life cycle of your applications UI, business logic should not be mixed in there.</description>
		<content:encoded><![CDATA[<p>Any solution other than subclassing would require the implementation to provide every single method in the life cycle regardless of whether or not it will be used. Since the entire point of the framework is to remove boiler plate code, callbacks or an interface would not be a clean solution.</p>
<p>As for automatically testing, if you&#8217;re testing a Swing app in headless mode, you&#8217;re not testing your swing app. If you&#8217;re separating your business logic from your UI and testing the business model in headless mode, then you shouldn&#8217;t have any business logic for either classes that work with JFrames or classes that extend Application.  The swing app framework and the Application class is all about the life cycle of your applications UI, business logic should not be mixed in there.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ricky Clarkson</title>
		<link>http://www.symphonious.net/2007/05/10/jsr296-swing-application-framework/comment-page-1/#comment-77967</link>
		<dc:creator>Ricky Clarkson</dc:creator>
		<pubDate>Sat, 12 May 2007 09:40:32 +0000</pubDate>
		<guid isPermaLink="false">https://www.symphonious.net/2007/05/10/jsr296-swing-application-framework/#comment-77967</guid>
		<description>A clean way would be for Application to be an interface, and to provide those methods via some other object.  Another clean way would be for Application to be a final class, and to provide implementations as callbacks.

Subclassing tends to lead to big complex classes, partially because of the convenience of accessing the superclass methods - you pay a price if you split your work into more than one class.

Also, it seems like it might be hard to automatically test an Application subclass, as you&#039;re depending on whatever behaviour is inherited from above.

In the same way, you cannot test a JFrame subclass in headless mode, because instantiating a JFrame requires a GUI (even if you don&#039;t display it).</description>
		<content:encoded><![CDATA[<p>A clean way would be for Application to be an interface, and to provide those methods via some other object.  Another clean way would be for Application to be a final class, and to provide implementations as callbacks.</p>
<p>Subclassing tends to lead to big complex classes, partially because of the convenience of accessing the superclass methods &#8211; you pay a price if you split your work into more than one class.</p>
<p>Also, it seems like it might be hard to automatically test an Application subclass, as you&#8217;re depending on whatever behaviour is inherited from above.</p>
<p>In the same way, you cannot test a JFrame subclass in headless mode, because instantiating a JFrame requires a GUI (even if you don&#8217;t display it).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Anonymous</title>
		<link>http://www.symphonious.net/2007/05/10/jsr296-swing-application-framework/comment-page-1/#comment-77759</link>
		<dc:creator>Anonymous</dc:creator>
		<pubDate>Fri, 11 May 2007 18:52:05 +0000</pubDate>
		<guid isPermaLink="false">https://www.symphonious.net/2007/05/10/jsr296-swing-application-framework/#comment-77759</guid>
		<description>Hi Ricky,
Extending from Application makes logical sense - your application is the Application and it extends the functionality of the startup and quit immediately application that you get by default. It also means you have much simpler access to the methods exposed by Application instead of having to delegate to another class all the time. Basically, I can&#039;t imagine a clean way to it that doesn&#039;t use sublcassing.

Also, thanks for pointing out the atom link was broken, it&#039;s fixed now.</description>
		<content:encoded><![CDATA[<p>Hi Ricky,<br />
Extending from Application makes logical sense &#8211; your application is the Application and it extends the functionality of the startup and quit immediately application that you get by default. It also means you have much simpler access to the methods exposed by Application instead of having to delegate to another class all the time. Basically, I can&#8217;t imagine a clean way to it that doesn&#8217;t use sublcassing.</p>
<p>Also, thanks for pointing out the atom link was broken, it&#8217;s fixed now.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
