<?xml version="1.0"?>
<!-- RSS generated by Radio UserLand v8.2.1 on Thu, 08 Feb 2007 13:00:00 GMT -->
<rss version="2.0">
	<channel>
		<title>David Black: Java</title>
		<link>http://radio.weblogs.com/0146416/categories/java/</link>
		<description>The Java programming language</description>
		<copyright>Copyright 2007 David Black</copyright>
		<lastBuildDate>Thu, 08 Feb 2007 13:00:00 GMT</lastBuildDate>
		<docs>http://backend.userland.com/rss</docs>
		<generator>Radio UserLand v8.2.1</generator>
		<managingEditor>dblack@codecurl.org</managingEditor>
		<webMaster>dblack@codecurl.org</webMaster>
		<category domain="http://www.weblogs.com/rssUpdates/changes.xml">rssUpdates</category> 
		<skipHours>
			<hour>23</hour>
			<hour>0</hour>
			<hour>1</hour>
			<hour>2</hour>
			<hour>3</hour>
			<hour>4</hour>
			<hour>5</hour>
			<hour>6</hour>
			</skipHours>
		<cloud domain="radio.xmlstoragesystem.com" port="80" path="/RPC2" registerProcedure="xmlStorageSystem.rssPleaseNotify" protocol="xml-rpc"/>
		<ttl>60</ttl>
		<item>
			<title>James Pasley&apos;s Just Enough XML to Survive</title>
			<description>Excellent &lt;a href=&quot;http://developer.capeclear.com/video/introtoxml/JustEnoughXMLToSurvive.html&quot;&gt;video&lt;/a&gt; presentation from James Pasley, Cape Clear&apos;s CTO, on &lt;a href=&quot;http://www.jpasley.com/2007/01/just-enough-xml-to-survive.html&quot;&gt;XML, XML Schema, SOAP and WSDL&lt;/a&gt;. 15 minutes that could just change your (professional) life for the better!&lt;br&gt;</description>
			<guid>http://radio.weblogs.com/0146416/categories/java/2007/02/08.html#a91</guid>
			<pubDate>Thu, 08 Feb 2007 12:56:35 GMT</pubDate>
			<comments>http://radiocomments2.userland.com/comments?u=146416&amp;amp;p=91&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0146416%2F2007%2F02%2F08.html%23a91</comments>
			</item>
		<item>
			<title>An approach to monitoring and managing clustered servers as a single entity</title>
			<description>Often we need to be able to monitor and manage clustered servers as a single entity. This is an outline of an approach I&amp;#146;ve used before to monitor and manage a clusterable enterprise server product which had very demanding RASP and throughput requirements. It is based on JMX, but allows for an aggregated view of the mbeans (monitoring attributes and management operations) in the cluster i.e. it allows for things to be examined in a meaningful way at the cluster (or service) level, while at the same time being able to view an individual nodes value for that attribute.&lt;br&gt;&lt;br&gt;It also enables an operation to be executed once for the whole cluster e.g. flush a cache, rather than having to manually do that for each server instance in turn. This can be achieved using a standard single server aware mbean console (a limitation of most off the shelf open source ones).&lt;br&gt;&lt;br&gt;The kind of aggregation appropriate for an individual attribute can be easily configured, and a view can be presented at the cluster level and at the individual servers (node) level. Different attributes require different kinds of aggregation. For example, the aggregation of the number of items in a given cache across the cluster would be the sum of all the individual cache sizes, but at the same time we also want to be able to see the value for an individual node. In the case of message throughput the aggregation might be an average of all the individual servers throughputs, and we might also want a count across the cluster of messages processed to date, as well as those statistics on an individual node basis. For another attribute it might not be sensible to aggregate it, so we might just want the individual values for each node to be shown together. The point is that a sensible &amp;#147;cluster&amp;#148; view of a given attribute differs.&lt;br&gt;&lt;br&gt;The basic idea is to instrument the classes that house the stuff you want to expose as normal using an MBean interface. So each node in the cluster exposes all its stuff as an individual server. Additional metadata is added to the MBean interface using variables (static final Strings), which describe what is to be done with the individual attributes and operations. I say static final Strings because this annotation is Java 1.4.x compatible, but if you&apos;re using Java 5 then of course you can use &quot;real&quot; annotations.&lt;br&gt;&lt;br&gt;The mbeans are registered with the mbean server via a fa&amp;ccedil;ade &amp;#150; lets call it MBeanServerFacade. The facades job is to interrogate the mbeans and extract metadata using introspection. A simple convention is followed for the variable names in order to associate them with the monitoring attributes and management operations. The values of the strings then describe how the attribute is aggregated (and other useful things). The metadata could be described somewhere else, but the advantage of putting it on the mbean interface is that its easy to develope, and it lives with the attributes, so when the mbean changes the metadata can be easily changed with it. Also, it is really simple to add these annotated mbeans so there is no barrier to adding instrumentation to the server (and for clustered servers setups you can never know enough about what is going on under the covers). MBeanServerFacade writes the metadata to a simple database table, if that particular type of mbean hasn&amp;#146;t already been registered. It also writes the host address of each node in the cluster to another table.&lt;br&gt;&lt;br&gt;The next element in the architecture is a broker process. This should (but does not have to) live separately to the cluster, so on a standalone server instance. The MBeanServerBroker reads (and periodically reloads) the descriptions in the tables populated by MBeanServerFacade. So the broker has a full description of all the relevant mbeans available and all the servers where they can be found. MBeanServerBroker is used as an intermediary between the various MBeanServers and the calling application. Using the metadata MBeanServerBroker creates JMX dynamic mbeans which expose an appropriate aggregate view of the individual mbeans across the cluster. Because it uses dynamic mbeans, the aggregate mbeans can also expose the individual attribute values (and which server they belong to). When an aggregate operation is invoked from the console, MBeanServerBroker runs that operation on each node in the cluster. The other important job of the broker is caching the returned mbean information. This is because JMX requests are expensive both in terms of the caller (waiting/blocking) and the component exposing the mbeans (doing the work of gathering the mbean info etc.). The console remains responsive because its hitting a cache, and the broker updates the cached values frequently. It&amp;#146;s the dynamic mbeans exposed by MBeanServerBroker that the console looks at.&lt;br&gt;&lt;br&gt;Here is an example of an annotated mbean interface:&lt;br&gt;&lt;br&gt;&lt;span style=&quot;font-family: Courier;&quot;&gt;interface MyStatsMBean {&lt;/span&gt;&lt;br style=&quot;font-family: Courier;&quot;&gt;&lt;br style=&quot;font-family: Courier;&quot;&gt;&lt;span style=&quot;font-family: Courier;&quot;&gt;  /** attributes */&lt;/span&gt;&lt;br style=&quot;font-family: Courier;&quot;&gt;&lt;br style=&quot;font-family: Courier;&quot;&gt;&lt;span style=&quot;font-family: Courier;&quot;&gt;  int getCacheSize();&lt;/span&gt;&lt;br style=&quot;font-family: Courier;&quot;&gt;&lt;span style=&quot;font-family: Courier;&quot;&gt;  int getAvgJmsReadsPerSecond();&lt;/span&gt;&lt;br style=&quot;font-family: Courier;&quot;&gt;&lt;span style=&quot;font-family: Courier;&quot;&gt;  int getMaxInsertMessageTime();&lt;/span&gt;&lt;br style=&quot;font-family: Courier;&quot;&gt;&lt;span style=&quot;font-family: Courier;&quot;&gt;  int getMinInsertMessageTime();&lt;/span&gt;&lt;br style=&quot;font-family: Courier;&quot;&gt;&lt;span style=&quot;font-family: Courier;&quot;&gt;  int getUniqueValue();&lt;/span&gt;&lt;br style=&quot;font-family: Courier;&quot;&gt;&lt;br style=&quot;font-family: Courier;&quot;&gt;&lt;span style=&quot;font-family: Courier;&quot;&gt;  /** annotations */&lt;/span&gt;&lt;br style=&quot;font-family: Courier;&quot;&gt;&lt;br style=&quot;font-family: Courier;&quot;&gt;&lt;span style=&quot;font-family: Courier;&quot;&gt;  String getCacheSize_AM = AggregateMethod.SUM;&lt;/span&gt;&lt;br style=&quot;font-family: Courier;&quot;&gt;&lt;span style=&quot;font-family: Courier;&quot;&gt;  String getAvgJmsReadsPerSecond_AM = AggregateMethod.AVG;&lt;/span&gt;&lt;br style=&quot;font-family: Courier;&quot;&gt;&lt;span style=&quot;font-family: Courier;&quot;&gt;  String getMaxInsertMessageTime_AM = AggregateMethod.MAX;&lt;/span&gt;&lt;br style=&quot;font-family: Courier;&quot;&gt;&lt;span style=&quot;font-family: Courier;&quot;&gt;  String getMinInsertMessageTime_AM = AggregateMethod.MIN;&lt;/span&gt;&lt;br style=&quot;font-family: Courier;&quot;&gt;&lt;span style=&quot;font-family: Courier;&quot;&gt;  String getUniqueValue_AM = AggregateMethod.LIST; &lt;/span&gt;&lt;br style=&quot;font-family: Courier;&quot;&gt;&lt;span style=&quot;font-family: Courier;&quot;&gt;} &lt;/span&gt;&lt;br style=&quot;font-family: Courier;&quot;&gt;&lt;br&gt;In this example we want to see the sum of cache sizes across the cluster, the average JMS reads per second across all nodes, the slowest message insert into the database, as well as the quickest, and a list of individual values for an attribute that it does not make sense to aggregate.&lt;br&gt;&lt;br&gt;</description>
			<guid>http://radio.weblogs.com/0146416/categories/java/2007/01/23.html#a87</guid>
			<pubDate>Tue, 23 Jan 2007 14:01:00 GMT</pubDate>
			<comments>http://radiocomments2.userland.com/comments?u=146416&amp;amp;p=87&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0146416%2F2007%2F01%2F23.html%23a87</comments>
			</item>
		<item>
			<title>James Gosling and Groovy</title>
			<description>According to &lt;a href=&quot;http://glaforge.free.fr/weblog/index.php?itemid=185&amp;amp;catid=2&quot;&gt;Guillame LaForge&lt;/a&gt;, who is the Groovy project lead, &lt;a href=&quot;http://blogs.sun.com/jag/&quot;&gt;James Gosling&lt;/a&gt; has been using Groovy in some projects at Sun, and &lt;span style=&quot;font-style: italic;&quot;&gt;he likes it very much&lt;/span&gt;. How cool is that?! I am really looking forward to the publication of the first &lt;a href=&quot;http://www.manning.com/koenig/&quot;&gt;Groovy book&lt;/a&gt;, and the release of the first Groovy JSR release candidate, and hopefully before too long the big 1.0 ...&lt;br&gt;</description>
			<guid>http://radio.weblogs.com/0146416/categories/java/2006/09/01.html#a54</guid>
			<pubDate>Fri, 01 Sep 2006 10:00:23 GMT</pubDate>
			<comments>http://radiocomments2.userland.com/comments?u=146416&amp;amp;p=54&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0146416%2F2006%2F09%2F01.html%23a54</comments>
			</item>
		<item>
			<title>Cape Clear ESB keeps on winning with IT Week Magazine Editors Choice Award for 2006</title>
			<link>http://www.eweek.com/article2/0,1895,1997918,00.asp</link>
			<description>&quot;One of the best ESB products available and it &lt;a href=&quot;http://www.eweek.com/article2/0,1895,1997918,00.asp&quot;&gt;wins our Editor&apos;s Choice Award&lt;/a&gt; for functionality and performance.&quot; - IT Week, July 31, 2006&lt;br&gt;&lt;br&gt;&quot;Clear&apos;s Cape Clear ESB 6.6 provides an intuitive and capable platform for creating, managing and deploying services, processes and data for an SOA infrastructure.&quot;&lt;br&gt;&lt;br&gt;And &lt;a href=&quot;http://www.capeclear.com&quot;&gt;Cape Clear&lt;/a&gt; will just keep getting stronger - we have a host of goodies in store for later this year. I can&apos;t wait! :)&lt;br&gt;&lt;br&gt;</description>
			<guid>http://radio.weblogs.com/0146416/categories/java/2006/08/09.html#a48</guid>
			<pubDate>Wed, 09 Aug 2006 09:50:07 GMT</pubDate>
			<comments>http://radiocomments2.userland.com/comments?u=146416&amp;amp;p=48&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0146416%2F2006%2F08%2F09.html%23a48</comments>
			</item>
		<item>
			<title>SCA v0.95 - some much need simplification</title>
			<description>I am so glad to see that in the latest SCA draft specification the assembly composition has been greatly simplified using a &lt;a href=&quot;http://www.osoa.org/display/Main/Recursive+Assembly+Model&quot;&gt;recursive model&lt;/a&gt;.&amp;nbsp; I thought the&amp;nbsp; whole module, fragment, sub-system and system thing was hopelessly confusing (how many times did I read the 0.9 spec?!). Now we have Composities (which are just the same as Components) that include other Components and so on. So its basically composite services and services.&lt;br&gt;</description>
			<guid>http://radio.weblogs.com/0146416/categories/java/2006/08/04.html#a47</guid>
			<pubDate>Fri, 04 Aug 2006 16:16:13 GMT</pubDate>
			<comments>http://radiocomments2.userland.com/comments?u=146416&amp;amp;p=47&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0146416%2F2006%2F08%2F04.html%23a47</comments>
			</item>
		<item>
			<title>OSGi tutorial at ApacheCon Dublin</title>
			<description>&lt;a href=&quot;http://apachecon.com/&quot;&gt;ApacheCon&lt;/a&gt; Europe 2006 is being held in Dublin this week. I couldn&apos;t attend the whole week, but I did get to go to a half-day &lt;a href=&quot;http://www.osgi.org/&quot;&gt;OSGi&lt;/a&gt; tutorial given by longtime OSGi evangelist &lt;a href=&quot;http://www.aqute.biz/&quot;&gt;Peter Kriens&lt;/a&gt;. Peter, who is the current editor of the OSGi specification, says:&lt;br&gt;&lt;br&gt;&quot;OSGi is kind of SOA&quot;&lt;br&gt;&lt;br&gt;&quot;OSGi is kind of a Java Operating System&quot; or at least a &quot;mini-kernel&quot;&lt;br&gt;&lt;br&gt;OSGi is &quot;the Dynamic Modularity Layer for Java&quot;&lt;br&gt;&lt;br&gt;OSGi is a Java framework for developing remotely deployed service applications. OSGi started life in 1998 with the original use case of home automation. OSGi applications can run on different software and hardware architectures. There is a lot of buzz around it right now, particularily in the enterprise space, partially because of Eclipse &lt;a href=&quot;http://www.eclipse.org/equinox/&quot;&gt;Equinox&lt;/a&gt;, which is OSGi R4 based and the technology underlying Eclipse bundles (actually Equinox goes beyond pure OSGi). But there are a bunch of other implementations, including the &lt;a href=&quot;http://incubator.apache.org/felix/&quot;&gt;Apache Felix&lt;/a&gt; project. The specification is freely available and royalty free.&lt;br&gt;&lt;br&gt;OSGi applications adhere to a basic SOA, the contract between client and service is based on a Java interface and discovering and binding available implementations is done through the framework. Client and service are softly coupled. So it provides an in-VM service model. Declarative services, introduced in R4, are akin to having dependency injected components. Applications declare their service dependencies in an XML file, and are notified by the framework at runtime as services becomes available and go away. The last is an important point: services can go away at runtime, just as they can be dynamically discovered. The next major release of &lt;a href=&quot;http://www.springframework.org/&quot;&gt;Spring&lt;/a&gt; is adding support for OSGi. One of the tutorial attendees made the point that OSGi is a generic event notification framework.&lt;br&gt;&lt;br&gt;OSGi applications are packaged as bundles, handled by the OSGi Module Layer. The Module Layer addresses packaging, class loading modularization, protection and versioning (multiple versions of the same package) - things Java does not do well, or at all, by itself. In addition, OSGi provides basic Life Cycle Management. An API for managing bundles allows them to be installed, resolve their dependencies, started, stopped, refreshed, updated and uninstalled. So basically, bundles register one or more services with the framework service directory, and other bundles can use those services. Service contracts are just Java interfaces, so service implementations are just POJOs and no special classes need be extended nor interfaces implemented.&lt;br&gt;&lt;br&gt;Its a pity OSGi wasn&apos;t somehow used as the basis of &lt;a href=&quot;http://www.jcp.org/en/jsr/detail?id=208&quot;&gt;JBI&lt;/a&gt;, there are so many similarities.&lt;br&gt;&lt;br&gt;Its also a pity that there are currently two rival JSRs attempting to establish a dynamic modularity layer for Java SE. &lt;a href=&quot;http://www.jcp.org/en/jsr/detail?id=291&quot;&gt;JSR-291&lt;/a&gt; is the OSGi Alliance backed one that aims to &quot;define a dynamic component framework including component lifecycle for existing Java SE platforms&quot;. Peter is on the expert group. &lt;a href=&quot;http://www.jcp.org/en/jsr/detail?id=277&quot;&gt;JSR-277&lt;/a&gt; aims to do more or less the same thing, expect not as well according to Peter - who is is not on the expert group despite his best efforts! Richard Hall was at the tutorial, he is on both groups. According to Richard he is trying to steer the 277 folks in the right direction. It will be interesting to see what happens. Richard was giving a couple of OSGi related talks in Dublin, I wish I had been able to attend them.&lt;br&gt;&lt;br&gt;And I think the Eclipse &lt;a href=&quot;http://www.eclipse.org/proposals/rsp/&quot;&gt;Rich Server Platform&lt;/a&gt; proposal deserves some serious attention. There is so much happening in the module/component/service packaging, assembling and deployment space (the McSPAD space) (ok, I guess thats several kind of overlapping spaces). We&apos;ve got JBI, &lt;a href=&quot;http://www-128.ibm.com/developerworks/library/specification/ws-sca/&quot;&gt;SCA&lt;/a&gt; (though &lt;a href=&quot;http://www.davidchappell.com/HTML_email/Opinari_No15_12_05.html&quot;&gt;don&apos;t hold your breath&lt;/a&gt;) and now (yes it has been around for quite some time) OSGi. What we really need to do is get everyone in an aircraft hanger (big enough?), seal the doors and tell them they are not getting out until there is only &lt;span style=&quot;font-style: italic;&quot;&gt;one&lt;/span&gt;. One McSPAD to rule them all.&lt;br&gt;&lt;br&gt;</description>
			<guid>http://radio.weblogs.com/0146416/categories/java/2006/06/28.html#a42</guid>
			<pubDate>Wed, 28 Jun 2006 21:37:47 GMT</pubDate>
			<comments>http://radiocomments2.userland.com/comments?u=146416&amp;amp;p=42&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0146416%2F2006%2F06%2F28.html%23a42</comments>
			</item>
		<item>
			<title>Farewell PaceMetrics</title>
			<link>http://www.pacemetrics.com</link>
			<description>In a few days time I&apos;m finishing up at PaceMetrics, the company I&apos;ve been with for the last three years. Leaving Pace was a tough enough decision for me. I joined on an up curve just as the company was starting to build its fourth generation BAM (Business Activity Monitor), and winning a huge deal with a tier one investment bank. To deliver that project and productise it, I was lucky enough to quickly assemble one of the best software development teams I&apos;ve ever had. This team was world class, all experienced, seasoned, innovative, agile engineers. We had a really stellar project manager and business architect in &lt;a href=&quot;http://www.toolan.de/&quot;&gt;Colm Toolan&lt;/a&gt;, and a super professional services team, and the result was PaceMaker 4:&lt;br&gt; &lt;br&gt;- fully Java, J2EE (POJOs of course!) and JMS based, leveraging best-of-breed open source components and tools&lt;br&gt;- loosely coupled components communicating asynchronously using XML-based messagess&lt;br&gt;- a simple maven based build&lt;br&gt;- a super-scalable, fully reliable, and architecturally innovative BAM engine - thanks James :-)&lt;br&gt;- a scalable web front end built on some pretty cool caching technology&lt;br&gt;- enterprise ready monitoring and management through JMX from our own custom web based admin console&lt;br&gt;- Eclipse based tooling (courtesy of yours truely) &lt;br&gt;&lt;br&gt;Its been a great few years, but in the end I&apos;ve been tempted away by the shimmering lights of SOA and ESBs. I&apos;ll post more on that in a couple of days.&lt;br&gt;&lt;br&gt;</description>
			<guid>http://radio.weblogs.com/0146416/categories/java/2006/04/23.html#a33</guid>
			<pubDate>Sun, 23 Apr 2006 17:43:52 GMT</pubDate>
			<comments>http://radiocomments2.userland.com/comments?u=146416&amp;amp;p=33&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0146416%2F2006%2F04%2F23.html%23a33</comments>
			</item>
		<item>
			<title>Agila &amp; Groovy</title>
			<link>http://wiki.apache.org/agila/</link>
			<description>The BPM engine in Apache Agila now supports &lt;a href=&quot;http://groovy.codehaus.org/&quot;&gt;Groovy&lt;/a&gt; nodes, which is really neat as you can use Groovy to develop custom tasks for your workflows. You get all the usual benefits of Groovy of course, and in particular you can use Groovy markup builders to generate the form/page for the task that the HTTPRenderer (returned by the TaskActivity) generates.&lt;br&gt;&lt;br&gt;In the process definition XML, the following syntax clues Agila into the fact that the node is a Groovy script:&lt;br&gt;&lt;br&gt;&amp;lt;node id=&quot;3&quot; type=&quot;activity&quot; class=&quot;groovy:node/ExampleGroovyTask.groovy&quot; display_name=&quot;Example Groovy Task&quot;&amp;gt;&lt;br&gt;&lt;node id=&quot;3&quot; type=&quot;activity&quot; class=&quot;groovy:node/ExampleGroovyTask.groovy&quot; display_name=&quot;Example Groovy Task&quot;&gt;&lt;br&gt;There is an example Groovy task at&lt;br&gt;&lt;br&gt;src/test-resources/node/ExampleGroovyTask.groovy&lt;br&gt;&lt;br&gt;under the bpm module that is both Task and Renderer etc. to get you started.&lt;br&gt;&lt;br&gt;Thanks to Chris Lim for taking a look at this contribution and commiting it so quickly.&lt;br&gt;&lt;br&gt;&lt;/node&gt;</description>
			<guid>http://radio.weblogs.com/0146416/categories/java/2005/08/16.html#a24</guid>
			<pubDate>Tue, 16 Aug 2005 15:11:40 GMT</pubDate>
			<comments>http://radiocomments2.userland.com/comments?u=146416&amp;amp;p=24&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0146416%2F2005%2F08%2F16.html%23a24</comments>
			</item>
		<item>
			<title>IoC and dependency injection</title>
			<description>

&lt;p class=&quot;MsoNormal&quot; style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 10pt;&quot;&gt;I&apos;m hearing and reading more
and more about Inversion of Control (IoC) and dependency injection. The latter
is basically the idea of programming only to interfaces, and not knarling up
your code with factories to get concrete implementations of those, rather
letting something outside of an object &quot;inject&quot; the implementations,
prior to them being required. This injection can happen either through setter
methods, or constructors. So its inverting control, hence IoC. The container
controls which implementations an object gets, the object (class) is developed
against interfaces. Wiring the whole lot up is an exercise for the container,
based on some sort of (usually non-code based) configuration, like an XML file.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class=&quot;MsoNormal&quot; style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 10pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;IoC containers that are on my radar include &lt;a href=&quot;http://www.springframework.org/&quot;&gt;Spring&lt;/a&gt; (not just a container btw), &lt;a href=&quot;http://www.picocontainer.org/&quot;&gt;PicoContainer&lt;/a&gt; and
&lt;a href=&quot;http://jakarta.apache.org/hivemind/&quot;&gt;HiveMind&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class=&quot;MsoNormal&quot; style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 10pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;Its a bit weird at first, but
once you get used to it, the benefits become clear: code that is easier to
evolve, everything is pluggable, and unit testing is a doddle - you can isolate
units of code at a very granular level, stub everything else with test
implementations (like your junit TestCase can implement all of a test targets
dependencies and feed it exactly what it needs to prove some bit of
functionality).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

</description>
			<guid>http://radio.weblogs.com/0146416/categories/java/2006/06/10.html#a19</guid>
			<pubDate>Wed, 16 Jun 2004 14:56:04 GMT</pubDate>
			<comments>http://radiocomments2.userland.com/comments?u=146416&amp;amp;p=19&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0146416%2F2004%2F06%2F16.html%23a19</comments>
			</item>
		<item>
			<title>Eclipse RCP</title>
			<link>http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-ui-home/rcp-proposal/rich_client_platform_facilities.html</link>
			<description>

&lt;p class=&quot;MsoNormal&quot; style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 10pt;&quot;&gt;I understand there&apos;s going
to be a new Eclipse project, carved out from the current IDE, for building rich client applications using SWT and JFace.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class=&quot;MsoNormal&quot; style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 10pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;I&apos;ve spent a lot of my
development career building thick and creamy client apps for trading rooms
(InVision Advanced Workstation, +Arena) and (not so successfully) development
tools for next (read: never) generation interactive A/V content. I&apos;m a big fan
of Eclipse largely because of SWT.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class=&quot;MsoNormal&quot; style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 10pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;The idea of being able to
develop a native Java application that is at home on the windows desktop is
great. Add to this an OSGi based core, if the Eclipse &lt;a href=&quot;http://eclipse.org/equinox/&quot;&gt;Equinox&lt;/a&gt; subproject works
out, and you&apos;ve got dynamic module loading.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class=&quot;MsoNormal&quot; style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 10pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;I can see those next
generation financial workstations now, and the traders screaming blue murder as
the thing locks up as the garbage collection kicks in :) Just kidding guys, go
for it!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



</description>
			<guid>http://radio.weblogs.com/0146416/categories/java/2004/01/26.html#a17</guid>
			<pubDate>Mon, 26 Jan 2004 19:12:33 GMT</pubDate>
			<comments>http://radiocomments2.userland.com/comments?u=146416&amp;amp;p=17&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0146416%2F2004%2F01%2F26.html%23a17</comments>
			</item>
		<item>
			<title>Weblogic Workshop? I don&apos;t think so</title>
			<description>

&lt;p class=&quot;MsoNormal&quot; style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: 10pt;&quot;&gt;Have you seen the new
Weblogic Workshop released with Weblogic 8.0? Are you impressed by the flash
demo, cool graphics and seamless BPM workflow visual editor based development?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p style=&quot;font-family: Arial;&quot; class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size: 10pt;&quot;&gt;I&apos;ve
just had quite a discussion with some of my companies product management
people. It was suggested we ditch the open source and open standards based
stuff we&apos;re using to build a major web application for a big customer we have,
in favour of this new workshop and &lt;st1:place w:st=&quot;on&quot;&gt;BEAs&lt;/st1:place&gt;
webflow technology. So right now we&apos;re using Eclipse for development, Struts,
Tiles, JSTL and EL. Hmmm, let me think about that for just a nanosecond - no
way dude! First of all, why didn&apos;t they just build on Eclipse? Why reinvent an
inferior, Swing-based (barf) IDE wheel? And all this jpd stuff is totally proprietary.
Even if BEA push to standardize some of this it&apos;ll be years before there are
other implementations (and it&apos;ll be different). I just can&apos;t see too many
people ditching Eclipse and best use open source for this. I guess BEA have
deep pockets, but I think this is a mistake.&lt;/span&gt;&lt;/p&gt;

</description>
			<guid>http://radio.weblogs.com/0146416/categories/java/2003/12/18.html#a16</guid>
			<pubDate>Thu, 18 Dec 2003 22:02:18 GMT</pubDate>
			<comments>http://radiocomments2.userland.com/comments?u=146416&amp;amp;p=16&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0146416%2F2003%2F12%2F18.html%23a16</comments>
			</item>
		</channel>
	</rss>

