<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>Blogging about Software Development &#187; Java</title>
	<atom:link href="http://www.bloggingaboutjava.org/category/java/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bloggingaboutjava.org</link>
	<description>Blogging about Software Development</description>
	<pubDate>Tue, 04 Aug 2009 08:02:17 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.2</generator>
	<language>en</language>
			<item>
		<title>First steps into the Cloud (App Engine)</title>
		<link>http://www.bloggingaboutjava.org/2009/06/first-steps-into-the-cloud-app-engine/</link>
		<comments>http://www.bloggingaboutjava.org/2009/06/first-steps-into-the-cloud-app-engine/#comments</comments>
		<pubDate>Tue, 16 Jun 2009 20:29:33 +0000</pubDate>
		<dc:creator>Arjen van Schie</dc:creator>
		
		<category><![CDATA[Development]]></category>

		<category><![CDATA[J2ee]]></category>

		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.bloggingaboutjava.org/?p=452</guid>
		<description><![CDATA[



For quite some time I have been thinking about trying out that &#8216;Cloud-thing&#8216; and see what all the fuzz is about. Because at first I was very skeptic, &#8216;how is this any different then a normal hosting service&#8217; or &#8216;how does this any different than a grid&#8217;. Because depending on the used definition, or cloud [...]]]></description>
			<content:encoded><![CDATA[<table border="0">
<tbody>
<tr>
<td><img class="alignnone" title="app engine" src="http://code.google.com/intl/nl-NL/appengine/images/appengine_lowres.gif" alt="" width="142" height="109" /></td>
<td>For quite some time I have been thinking about trying out that &#8216;<a href="http://en.wikipedia.org/wiki/Cloud_computing" target="_blank">Cloud-thing</a>&#8216; and see what all the fuzz is about. Because at first I was very skeptic, &#8216;how is this any different then a normal hosting service&#8217; or &#8216;how does this any different than a grid&#8217;. Because depending on the used definition, or cloud provider, those difference are subtle.</td>
</tr>
</tbody>
</table>
<p><span id="more-452"></span></p>
<p>Then Google came along and launched their Java version of their Cloud environment(<a href="http://code.google.com/intl/nl-NL/appengine/" target="_blank">Google App<br />
Engine</a>). Since this one seemed to be easy and free to try, <a href="http://code.google.com/intl/nl-NL/appengine/docs/java/gettingstarted/" target="_blank">I decided to give it a try with the tutorial</a>. ( App Engine the java platform , so not only the java language is supported, but languages like groovy and jruby also work, but I stayed with &#8216;just&#8217; Java)  </p>
<p>Within a time span of 5 to 10 minutes I had registered my cloud application and was ready to get started. <a href="http://appengine.google.com/">The registration</a> is not much different than for a Gmail account. Then I decided to install the <a href="http://code.google.com/appengine/docs/java/tools/eclipse.html" target="_blank">eclipse plugins</a>, this also worked as a charm.<br />
Next, I generated a GWT App engine project with hello-world example code and pressed deploy and my ‘hello world’ was running in the cloud.</p>
<p>The total time taken for this test run was less than 15 minutes and additional applications would be deployed even faster because the environment is all ready installed.</p>
<p>The benefits of this over a normal hosting provider for me are ease of use (the java hosting providers i am used to take a lot more time for installing a build), and scalability (the app engine requires you to work in way no local file access to enable distributed computing which enables them to scale your application).</p>
<p>And just as an exercise I decided to port a normal small java project of mine into my cloud project. Not much had to be changed, the local property file access was replaced by a classpath resource, and I had to hack my way into GWT which i never had used before. And that last part cost me the most time.</p>
<p>For the few interested in my IMDB profile compare tool see: <a href="http://film-freak.appspot.com/">http://film-freak.appspot.com/</a> It&#8217;s supposed to help film freaks compare which films they both saw and which the other didn&#8217;t saw. (If you have an imdb vote history you need to make it public first before you can use your profile number, and some large profiles are not handled right but the feature this service uses is not yet supported by IMDB)</p>
<p>Is the app engine flawless? yeah, well even though app engine comes with a local environment that resembles the real app engine, I had a bug that occurred in the real one but not the local one. The bug was related to the character parsing of the app engine (the bug is still in my application btw)</p>
<p>Also this application didn’t use the datastore, but I heard quite some troubles with the use of frameworks and standards (JPA) on the appengine. To summarize this; the appengine has a special datastore, BigTable, which is fast but not a RDBMS, and to use JPA or JDO plugins for frameworks have to be created and the quality of those plugins define what part of JPA and JDO is available and at this moment this seem to be quite limited. Maybe later this year I’ll take some time to play around with this datastore.</p>
<p>Also see:<br />
<a href="http://www.theserverside.com/news/thread.tss?thread_id=54919">http://www.theserverside.com/news/thread.tss?thread_id=54919</a></p>
<p><a href="http://groups.google.com/group/google-appengine-java/web/will-it-play-in-app-engine">http://groups.google.com/group/google-appengine-java/web/will-it-play-in-app-engine</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.bloggingaboutjava.org/2009/06/first-steps-into-the-cloud-app-engine/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Domain Driven Design, the start of the workshop season</title>
		<link>http://www.bloggingaboutjava.org/2009/05/domain-driven-design-the-start-of-the-workshop-season/</link>
		<comments>http://www.bloggingaboutjava.org/2009/05/domain-driven-design-the-start-of-the-workshop-season/#comments</comments>
		<pubDate>Tue, 19 May 2009 08:36:40 +0000</pubDate>
		<dc:creator>Arjen van Schie</dc:creator>
		
		<category><![CDATA[Events]]></category>

		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.bloggingaboutjava.org/?p=448</guid>
		<description><![CDATA[A few weeks ago there was a kick-off for the ‘workshop season’ at Logica. The IDT Java department made a very broad roadmap of workshop topics of which Domain Driven Design (DDD) was the first to be held. On May 5th and 7th the DDD workshop was held in Rotterdam. The workshop was centered around [...]]]></description>
			<content:encoded><![CDATA[<p>A few weeks ago there was a kick-off for the ‘workshop season’ at Logica. The IDT Java department made a very broad roadmap of workshop topics of which Domain Driven Design (DDD) was the first to be held. On May 5th and 7th the DDD workshop was held in Rotterdam. The workshop was centered around the philosophy of DDD and some practice with the material.</p>
<p><span id="more-448"></span></p>
<p>The first day we had some discussions about what DDD is and how it relates to normal Object Oriented Design. This led to some very interesting discussions, that helped a lot at creating a shared view on what a model is and what design is and what DDD is.  Although I can imagine that a bit of background in OOD was a prerequisite in order to participate in these discussions.</p>
<p>To make a long story short; the center of domain driven design for us was:  a design strategy where the design of the application is centered around the (problem) domain of the customer, written down in a model with an Ubiquitous Language and that this domain model should be used as a language among all/most stakeholders. Also noted as important, was the emphasis on the refactoring of the model, the agile iterative approach for creating this artifact. With this definition the difference with OOD is that DDD is broader, it favors the agile development approach and at the same time it is more strict (it gives more guidance in how your class model should be created). So some of us realized that parts of the DDD philosophy were already part of their current process.</p>
<p>The second session was a ‘modeling out loud session’ where we created a model for a business case using the theory of the first session. This also led to better understanding of the patterns of DDD with entities, value objects, services, repositories and factories. During this session our definitions of these patterns were refined, and also the gap between these abstract terms and for instance the Spring Framework was crossed. This held back the progress of creating the model for the business case, but of course led to a deeper understanding of the material. Eventually, with the help of the experienced DDD trainers, we made a nice domain driven design for the business case. And all participants received a copy of <a href="http://www.domaindrivendesign.org/books#DDD">Eric Evans’ DDD bible</a> so they can further expand their knowledge on this subject <img src='http://www.bloggingaboutjava.org/cms/wordpress2/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>More info on domain driven design can be found <a href="http://www.infoq.com/minibooks/domain-driven-design-quickly">here</a>.</p>
<p>( Logica employees interested in these kind of sessions should contact the manager of the Java IDT competence, but be aware that most sessions are very popular and  the number of available places are limited. Other workshops that are coming up: Spring essentials, jQuery and Java Performance Tuning ).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bloggingaboutjava.org/2009/05/domain-driven-design-the-start-of-the-workshop-season/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Oracle meets &#8216;the&#8217; Sun</title>
		<link>http://www.bloggingaboutjava.org/2009/04/oracle-meets-the-sun/</link>
		<comments>http://www.bloggingaboutjava.org/2009/04/oracle-meets-the-sun/#comments</comments>
		<pubDate>Mon, 20 Apr 2009 16:30:40 +0000</pubDate>
		<dc:creator>Arjen van Schie</dc:creator>
		
		<category><![CDATA[Java]]></category>

		<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://www.bloggingaboutjava.org/?p=443</guid>
		<description><![CDATA[Most people probably all ready noticed that this blog has been pretty quiet for a while. But that doesn’t mean that there is not much going on in the java/oracle world !
For instance, today Oracle announced to take-over sun ! Last weeks rumors were all around, about IBM trying to buy Sun, but it turns [...]]]></description>
			<content:encoded><![CDATA[<p>Most people probably all ready noticed that this blog has been pretty quiet for a while. But that doesn’t mean that there is not much going on in the java/oracle world !<br />
For instance, today Oracle announced to take-over sun ! Last weeks rumors were all around, about IBM trying to buy Sun, but it turns out that Oracle won the fight.<br />
So actually when last year we merged our oracle and java blog into one blog, we were just ahead of the curve <img src='http://www.bloggingaboutjava.org/cms/wordpress2/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><span id="more-443"></span></p>
<p><a href="http://www.sun.com/third-party/global/oracle/index.jsp">See this link for more info on the takeover http://www.sun.com/third-party/global/oracle/index.jsp</a></p>
<p>On the other hand there has been a lot of fuzz about the release of java 7, for instance closures are not likely to enter java after all in java 7, but all kinds of other things are. <a href="http://tech.puredanger.com/java7/">See this link for more information about java 7 </a>. Also take notice of <a href="http://blogs.sun.com/darcy/entry/project_coin_call_for_proposals">project coin</a> where developers brought in some very interesting ideas (small improvements) for the new java version.</p>
<table border="0" bgcolor="#ffffff">
<tbody>
<tr>
<td><img src="http://upload.wikimedia.org/wikipedia/en/thumb/3/39/Java_logo.svg/100px-Java_logo.svg.png" border="0" alt="" width="100" height="186" /></td>
<td><img src="http://www.pocketpcmag.com/blogs/media/java_duke_mascot.jpg" alt="" /></td>
<td><img src="http://oracleimg.com/admin/images/ocom/hp/oralogo_small.gif" alt="" /></td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.bloggingaboutjava.org/2009/04/oracle-meets-the-sun/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Java 1.4 is officially obsolete</title>
		<link>http://www.bloggingaboutjava.org/2008/11/java-14-is-officially-obsolete/</link>
		<comments>http://www.bloggingaboutjava.org/2008/11/java-14-is-officially-obsolete/#comments</comments>
		<pubDate>Tue, 25 Nov 2008 13:37:52 +0000</pubDate>
		<dc:creator>Jesper de Jong</dc:creator>
		
		<category><![CDATA[Development]]></category>

		<category><![CDATA[Java]]></category>

		<category><![CDATA[j2se]]></category>

		<guid isPermaLink="false">http://www.bloggingaboutjava.org/?p=417</guid>
		<description><![CDATA[Sun&#8217;s Java 1.4 has quietly gone end-of-life since 30 October; see Sun&#8217;s Java SE 1.4.2 page:
J2SE 1.4.2 is in its Java Technology End of Life (EOL) transition period. The EOL transition period began Dec, 11 2006 and will complete October 30th, 2008, when J2SE 1.4.2 will have reached its End of Service Life (EOSL).
This doesn&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p>Sun&#8217;s Java 1.4 has quietly gone end-of-life since 30 October; see <a title="Sun Java SE 1.4.2" href="http://java.sun.com/j2se/1.4.2/">Sun&#8217;s Java SE 1.4.2 page</a>:</p>
<blockquote><p><strong>J2SE 1.4.2 is in its Java Technology End of Life (EOL) transition period</strong>. The EOL transition period began Dec, 11 2006 and will complete October 30th, 2008, when J2SE 1.4.2 will have reached its End of Service Life (EOSL).</p></blockquote>
<p>This doesn&#8217;t mean that Sun doesn&#8217;t support Java 1.4 anymore - with Sun&#8217;s <a title="Java SE for Business" href="http://www.sun.com/software/javaseforbusiness/index.jsp">Java SE for Business</a> you can get up to 15 years of support for older Java versions.</p>
<p>However, if you&#8217;re on a project that still uses Java 1.4 you should really upgrade to Java 6, if you have any say into which Java version is being used. Besides the new features added in Java 5 and 6, you&#8217;ll enjoy the <a href="http://java.sun.com/performance/reference/whitepapers/6_performance.html">performance enhancements</a> and bug fixes.</p>
<p>If you&#8217;re a Java programmer and you still didn&#8217;t learn the new Java 5 features&#8230; then you&#8217;re in trouble.</p>
<p>The SCJP exam for Java 1.4 has been discontinued this month.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bloggingaboutjava.org/2008/11/java-14-is-officially-obsolete/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Process Acceleration</title>
		<link>http://www.bloggingaboutjava.org/2008/11/process-acceleration/</link>
		<comments>http://www.bloggingaboutjava.org/2008/11/process-acceleration/#comments</comments>
		<pubDate>Sun, 23 Nov 2008 23:46:45 +0000</pubDate>
		<dc:creator>Michel Klabbers</dc:creator>
		
		<category><![CDATA[Development]]></category>

		<category><![CDATA[General]]></category>

		<category><![CDATA[Methodologies]]></category>

		<category><![CDATA[acceleration]]></category>

		<category><![CDATA[process]]></category>

		<guid isPermaLink="false">http://www.bloggingaboutjava.org/?p=408</guid>
		<description><![CDATA[Last thursday I visited a presentation about Process Acceleration (PA) [1]. PA is a Business Change method that also uses separation of concerns: it separates the end result from anything else in the business process. The end result of the process is the success state, i.e. all employees correctly submitted their billing forms and all [...]]]></description>
			<content:encoded><![CDATA[<p>Last thursday I visited a presentation about Process Acceleration (PA) [1]. PA is a Business Change method that also uses separation of concerns: it separates the end result from anything else in the business process. The end result of the process is the success state, i.e. all employees correctly submitted their billing forms and all team managers got a correct summary by mail. The emphasis lies primarely on getting the definition of the end result as accurate as possible.</p>
<p><span id="more-408"></span>I will try to give more insight into PA by using a more formal approach. In the section below I will use the definitions &#8220;success state&#8221; and &#8220;system&#8221; a lot. I will define these first:</p>
<blockquote><p>Success state: P_1 and P_2 and &#8230; P_N</p>
<p>P_x (1 &lt;= x &lt;= N) is a predicate, for example: P_1 == (All timesheets employees are submitted), P_2 == (All submitted timesheets are correct).</p>
<p>System: S</p>
<p>S =&gt; P_i and P_i+1 and &#8230; P_i+m and Q_j and Q_j+1 and &#8230; Q_j+n</p>
<p>where P_i and P_i+1 and &#8230; P_i+m is a subset of our success state P_1 and P_2 and &#8230; P_N</p>
<p>Q_j and Q_j+1 and &#8230; Q_j+n are additional predicates, not in our success state.</p></blockquote>
<p>Instead of system you can also read solution. A system can be an already existing system or something that can be built. To illustrate the difference between traditional strategies and the PA strategy, we will do a step by step construction towards an at first unknown success state T_success. We will start from an empty state T_empty.</p>
<blockquote><p>Traditional strategy 1:<br />
Step 1) Design new component C_1.<br />
Step 2) Check new state T_1 with customer: is this state the success state? Yes: done, No: proceed.<br />
Step 3) Design new component C_2, connect C_2 to C_1.<br />
Step 4) Check new state T_2 with customer: is this state the success state? Yes: done, No: proceed.<br />
Step 5) Design new component C_3, connect C_3 to C_2 and C_1.<br />
Step 6) Check new state T_3 with customer: is this state the success state? Yes: done, No: proceed.<br />
&#8230;</p></blockquote>
<p>The first strategy starts building new components, one at a time. After each component is finished we check if success state is reached. This is not unlike many hobby projects where you start from scratch and build a component at a time. Once you are happy with result you have reached T_success.</p>
<blockquote><p>Traditional strategy 2:<br />
Step 1) Apply systems S_q, S_q+1, &#8230; , S_q+k (short: S_q&#8217;) to T_empty.<br />
Step 2) Check new state T_k&#8217; with customer: is this state the success state? Yes: done, No: proceed.<br />
Step 3) Design new component C_1, add this component to S_q&#8217;.<br />
Step 4) Check new state T_k1&#8242; with customer: is this state the success state? Yes: done, No: proceed.<br />
Step 5) Design new component C_2, add this component to S_q+1&#8242;.<br />
Step 6) Check new state T_k2&#8242; with customer: is this state the success state? Yes: done, No: proceed.<br />
&#8230;</p></blockquote>
<p>The second strategy starts from a combination of, most likely existing, systems. We then add components one at a time. After each component we check if we have reached the success state. This is a way of building systems which is used often when adding functionality to legacy systems.</p>
<blockquote><p>Traditional strategy 3:<br />
Step A.1) Apply a permutation of systems S_q, S_q+1, &#8230; , S_q+k (short: S_q&#8217;) to T_empty.<br />
Step A.2) Check new state T_k&#8217; with customer: is this state a good enough approximation of the success state? Yes: proceed to B.1), No: proceed.<br />
Step A.3) Apply a different permutation of systems S_q, S_q+1, &#8230; , S_q+k (short: S_q1&#8242;) to T_empty.<br />
Step A.4) Check new state T_k1&#8242; with customer: is this state a good enough approximation of the success state? Yes: proceed to B.1), No: proceed.<br />
Step A.5) Apply a different permutation of systems S_q, S_q+1, &#8230; , S_q+k (short: S_q2&#8242;) to T_empty.<br />
&#8230;<br />
Step B.1) Design new component C_1, add this component to previously found near success system permutation S_q&#8221;.<br />
Step B.2) Check new state T_k1&#8221; with customer: is this state the success state? Yes: done, No: proceed.<br />
Step B.3) Design new component C_2, add this component to previously found near success system permutation S_q&#8221;.<br />
Step B.4) Check new state T_k1&#8221; with customer: is this state the success state? Yes: done, No: proceed.<br />
&#8230;</p></blockquote>
<p>The third, somewhat less traditional, starts by finding a good combination of systems. This combination should give a good approximation of the final state the customer wants to achieve. Only then you start adding new components.</p>
<blockquote><p>Classic PA strategy:<br />
Step A.1) Create a definition of T_success, called T_success&#8217;.<br />
Step A.2) Check T_success&#8217; with customer: is this state the success state? Yes: proceed to B.1), No: proceed.<br />
Step A.3) Change the definition of T_success&#8217; resulting in a new definition called T_success1&#8242;.<br />
Step A.4) Check T_success1&#8242; with customer: is this state the success state? Yes: proceed to B.1), No: proceed.<br />
&#8230;<br />
Step B.1) Directly derive definitions of components C_1, &#8230; C_u from best definition T_success&#8221;.<br />
Note that C_1, &#8230;, C_u =&gt; P_1 and P_2 and &#8230; P_N must hold.<br />
Step B.2) Match components C_1, &#8230; C_u with systems S_q, S_q+1, &#8230; , S_q+k.<br />
Step B.3) Choose best matching(s). For these matchings T_success&#8221; must be a subset of resulting state T_matching.</p></blockquote>
<p>PA first creates a state definition as close as possible to the success state. It then reviews and alters this state iteratively. Only when the definition is satisfactory the next phase starts. In this phase component definitions are derived from the success state definition. These component definitions are then matched with systems and the best matchings are chosen. Simplicity is important in PA: we always strive for a correct succes state with minimal size.</p>
<p>Note that the first two traditional strategies have no real focus on the final success state. This means that during development the chosen success state might actually be (a lot) different than the real success state. The biggest difference between the third strategy and the PA strategy is that in PA we disregard existing systems (read: solutions) until a really good success state definition has been found. Also, we extract as much information as we can from the success state definition. We then use this information to define components. Each component definition should represent a part of the success state. These component definitions should be mutually exclusive (i.e. no overlap) and all component definitions together should imply the success state. Next we match the component definitions with all known systems and come up with the best matchings. Classic PA is almost done here. We now compare the best matchings and present them, with cost figures, to the customer.</p>
<p>As mentioned earlier an important aspect of PA is the separation of the success state from any solution. This is important because of the reduced effort needed: anyone involved in the process can just think about the success state and can forget about (existing) systems. Depending on the number of systems this can be a serious advantage.</p>
<p>When there are only few solutions and the customer really doesn&#8217;t know what he or she wants, starting from an existing solution and building from that is the way to go. However, when there is one clear success state and many possible (existing) solutions PA will shine.</p>
<ul>
<li>[1]: <a title="http://www.procesacceleratie.nl/" href="http://www.procesacceleratie.nl/" target="_blank">http://www.procesacceleratie.nl/</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.bloggingaboutjava.org/2008/11/process-acceleration/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Separation of Concerns and SOA</title>
		<link>http://www.bloggingaboutjava.org/2008/11/separation-of-concerns-and-soa/</link>
		<comments>http://www.bloggingaboutjava.org/2008/11/separation-of-concerns-and-soa/#comments</comments>
		<pubDate>Sun, 23 Nov 2008 23:39:27 +0000</pubDate>
		<dc:creator>Michel Klabbers</dc:creator>
		
		<category><![CDATA[Development]]></category>

		<category><![CDATA[General]]></category>

		<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://www.bloggingaboutjava.org/?p=402</guid>
		<description><![CDATA[According to Google Trends SOA is not as &#8220;hot&#8221; as it was a year ago. According to a recent poll by Finalist [0] at the J-Fall [1] SOA is actually very &#8220;not&#8221;. Does this mean that companies are already preparing or even using SOA? Or are they abandoning SOA?

The idea behind SOA is actually very [...]]]></description>
			<content:encoded><![CDATA[<p>According to Google Trends SOA is not as &#8220;hot&#8221; as it was a year ago. According to a recent poll by Finalist [0] at the J-Fall [1] SOA is actually very &#8220;not&#8221;. Does this mean that companies are already preparing or even using SOA? Or are they abandoning SOA?</p>
<p><span id="more-402"></span></p>
<p>The idea behind SOA is actually very good. It loosely couples the service and the front-end, thus separating our concerns. The term seperation of concerns (SoC) was first introduced by Edsger Dijkstra about 35 years ago. The Wiki has an interesting qoute on SoC [2]:</p>
<blockquote><p>&#8220;All programming paradigms aid developers in the process of improving separation of concerns. For example, object-oriented programming languages can separate concerns into objects, and a design pattern like MVC can separate content from presentation and data-processing (model) from content. Service-oriented design can separate concerns into services.&#8221;</p></blockquote>
<p>In this context SOA really looks like the next step in programming.</p>
<p>Assuming your company is planning to &#8220;go SOA&#8221; in near future, what challenges await?<br />
Here are some of the implications that come to mind when using SOA:</p>
<ul>
<li> use of external services means higher internet bandwidth usage</li>
<li> exposure of internal services to external companies means additional security measures become necessary</li>
<li> using just a single connection to external services means a higher chance of losing messages</li>
<li> use of possibly badly written external services means additional infrastructure and code measures, such as timeouts, become necessary</li>
<li> when chaining services complex behaviour can emerge and message based testing tools are highly advised</li>
</ul>
<p>Using SOA we also have to be more aware of:</p>
<ul>
<li>connection failure</li>
<li> message loss</li>
<li>service failure</li>
</ul>
<p>By using a polling mechanism we could improve our awareness, but the transition to a Service Oriented Architecture will still be a step-by-step process [3], where we will learn by doing.</p>
<ul>
<li>[0]: <a title="http://www.finalist.com/content/19787/hot_or_not_contest_vermaakt_bezoekers_j-fall_" href="http://www.finalist.com/content/19787/hot_or_not_contest_vermaakt_bezoekers_j-fall_" target="_blank">http://www.finalist.com/content/19787/hot_or_not_contest_vermaakt_bezoekers_j-fall_</a></li>
<li>[1]: <a title="http://www.nljug.org/jfall/" href="http://www.nljug.org/jfall/" target="_blank">http://www.nljug.org/jfall/</a></li>
<li>[2]: <a title="http://en.wikipedia.org/wiki/Separation_of_concerns" href="http://en.wikipedia.org/wiki/Separation_of_concerns" target="_blank">http://en.wikipedia.org/wiki/Separation_of_concerns</a></li>
<li>[3]: <a title="http://it.toolbox.com/blogs/the-soa-blog/soa-benefits-challenges-and-risk-mitigation-8075" href="http://it.toolbox.com/blogs/the-soa-blog/soa-benefits-challenges-and-risk-mitigation-8075">http://it.toolbox.com/blogs/the-soa-blog/soa-benefits-challenges-and-risk-mitigation-8075</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.bloggingaboutjava.org/2008/11/separation-of-concerns-and-soa/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Pro4Pro season starting tomorrow</title>
		<link>http://www.bloggingaboutjava.org/2008/10/pro4pro-season-starting-tomorrow/</link>
		<comments>http://www.bloggingaboutjava.org/2008/10/pro4pro-season-starting-tomorrow/#comments</comments>
		<pubDate>Mon, 27 Oct 2008 09:31:07 +0000</pubDate>
		<dc:creator>Arjen van Schie</dc:creator>
		
		<category><![CDATA[Events]]></category>

		<category><![CDATA[General]]></category>

		<category><![CDATA[Java]]></category>

		<category><![CDATA[Oracle]]></category>

		<category><![CDATA[Pro4Pro]]></category>

		<guid isPermaLink="false">http://www.bloggingaboutjava.org/?p=392</guid>
		<description><![CDATA[



 Tomorrow is the start of a new &#8216;Pro4Pro season&#8217;. Pro4Pro sessions are given by some of the best professionals of Logica.
“Extreem RAD : Live Web Applicatie Ontwikkeling met Oracle Application Express”
“Standardizing SOA with Oracle&#8217;s Application Integration Architecture&#8221;
“Practical Approach to SOA Adoption”




Subject: “Extreem RAD : Live Web Applicatie Ontwikkeling met Oracle Application Express”
Pro: Roel Hartman
Office: [...]]]></description>
			<content:encoded><![CDATA[<table>
<tr>
<td>
<img class="alignleft" style="padding:4px;" src="http://www.bloggingaboutjava.org/cms/wordpress2/wp-content/themes/LogicaCMG/images/pro4pro-200x85.gif" alt="" width="160" align="left" /></td>
<td> Tomorrow is the start of a new &#8216;Pro4Pro season&#8217;. Pro4Pro sessions are given by some of the best professionals of Logica.</p>
<li><strong>“Extreem RAD : Live Web Applicatie Ontwikkeling met Oracle Application Express”</strong></li>
<li><strong>“Standardizing SOA with Oracle&#8217;s Application Integration Architecture&#8221;</strong></li>
<li><strong>“Practical Approach to SOA Adoption”</strong></li>
</td>
</tr>
</table>
<p><span id="more-392"></span></p>
<p><strong>Subject: “Extreem RAD : Live Web Applicatie Ontwikkeling met Oracle Application Express”</strong><br />
Pro: Roel Hartman<br />
Office: Arnhem, the Netherlands<br />
Date: 28 oktober 2008</p>
<p><strong>Subject: “Standardizing SOA with Oracle&#8217;s Application Integration Architecture&#8221;</strong><br />
Pro: Adri Greeve<br />
Office: Rotterdam<br />
Date: 13 november 2008</p>
<p><strong>Subject: “Practical Approach to SOA Adoption”</strong><br />
Pro: Edwin van Dis<br />
Office: Amstelveen<br />
Date: 27 november 2008</p>
<p><a href="http://www.logica.nl/pro4pro/">Register for a Pro4Pro session</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.bloggingaboutjava.org/2008/10/pro4pro-season-starting-tomorrow/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Guru4Pro: Thomas Erl @ Logica</title>
		<link>http://www.bloggingaboutjava.org/2008/10/guru4pro-thomas-erl-logica-nl/</link>
		<comments>http://www.bloggingaboutjava.org/2008/10/guru4pro-thomas-erl-logica-nl/#comments</comments>
		<pubDate>Mon, 13 Oct 2008 09:21:03 +0000</pubDate>
		<dc:creator>Arjen van Schie</dc:creator>
		
		<category><![CDATA[Events]]></category>

		<category><![CDATA[General]]></category>

		<category><![CDATA[Guru4Pro]]></category>

		<category><![CDATA[Java]]></category>

		<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://www.bloggingaboutjava.org/?p=378</guid>
		<description><![CDATA[
Guru4Pro Thomas Erl - - ‘How to overcome the key challenges within SOA’.
Date: 20 oktober 2008
On Monday the 20th of October Logica has invited Thomas Erl to speak on the Principles of Service Design and Patterns to transform the most important challenges into a successful realization of a Service Oriented Architecture. Business analyst, functional designers [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" style="padding:4px;" src="http://www.logica.nl/file/10754" alt="" width="160" align="left" /><br />
<strong>Guru4Pro Thomas Erl - - ‘How to overcome the key challenges within SOA’.<br />
Date: 20 oktober 2008</strong></p>
<p>On Monday the 20th of October Logica has invited Thomas Erl to speak on the Principles of Service Design and Patterns to transform the most important challenges into a successful realization of a Service Oriented Architecture. Business analyst, functional designers and architects will gain new valuable insights on the modeling of services and supporting architecture.</p>
<p><span id="more-378"></span></p>
<p><strong>About Thomas Erl:</strong><br />
Thomas Erl is the world&#8217;s top-selling SOA author, Series Editor of the &#8220;Prentice Hall Service-Oriented Computing Series from Thomas Erl&#8221; (www.soabooks.com), and Editor of The SOA Magazine (www.soamag.com). With over 95,000 copies in print world-wide, his books have become international bestsellers. His most recent titles “SOA Design Patterns” (www.soapatterns.com) and “Web Service Contract Design and Versioning for SOA” were co-authored with a series of industry experts and are being released in the latter half of 2008.</p>
<p>Thomas is also the founder of SOA Systems Inc. (www.soasystems.com), a company specializing in SOA training, certification, and strategic consulting services with a vendor-agnostic focus. For more information, visit www.thomaserl.com.</p>
<p><strong>Program</strong><br />
18.00 uur Welcome &#038; diner<br />
19.00 uur Welcome speach<br />
19.15 uur Thomas Erl – ‘How to overcome the key challenges within SOA’<br />
20.30 uur Drinks</p>
<p><em><strong>The presentation will be in English of course.</strong></em></p>
<p><strong>Location</strong><br />
Logica, Prof. W.H. Keesomlaan 14 in Amstelveen</p>
<p>There is more info on the Logica site (in Dutch). <a href="http://www.logica.nl/guru4pro+-+thomas+erl/400013044">You can also register (”aanmeldingsformulier”) there</a>.</p>
<p><img src="http://www.logica.nl/file/3192" alt="Guru4Pro" width="200" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.bloggingaboutjava.org/2008/10/guru4pro-thomas-erl-logica-nl/feed/</wfw:commentRss>
		</item>
		<item>
		<title>JAOO Conference day 3</title>
		<link>http://www.bloggingaboutjava.org/2008/10/jaoo-conference-day-3/</link>
		<comments>http://www.bloggingaboutjava.org/2008/10/jaoo-conference-day-3/#comments</comments>
		<pubDate>Thu, 02 Oct 2008 11:30:55 +0000</pubDate>
		<dc:creator>Nicolai Buch-Andersen</dc:creator>
		
		<category><![CDATA[Development]]></category>

		<category><![CDATA[Java]]></category>

		<category><![CDATA[JAOO]]></category>

		<guid isPermaLink="false">http://www.bloggingaboutjava.org/?p=373</guid>
		<description><![CDATA[This was my last day at JAOO. I was tired, but still looking forward to today’s speakers. It was hard to decide what to attend and what not to attend today. I just had to hope that I’ve chosen correctly.

The keynote today was held by Richard P. Gabriel and Guy L. Steele, Jr. It was&#8230; [...]]]></description>
			<content:encoded><![CDATA[<p>This was my last day at JAOO. I was tired, but still looking forward to today’s speakers. It was hard to decide what to attend and what not to attend today. I just had to hope that I’ve chosen correctly.</p>
<p><span id="more-373"></span></p>
<p>The keynote today was held by Richard P. Gabriel and Guy L. Steele, Jr. It was&#8230; strange. Very, very strange. Bizarre, in fact. The two of them went through the history of programming languages in a colourful slideshow spiked with music and video clips and singing and ringing on cowbells. They didn’t talk but recited, like they were reading poems instead of giving a tech talk. Bizarre, just bizarre. I couldn’t quite decide if it were madness or genius. So I suppose it must be art.</p>
<p><strong>Session 1: Five Considerations for Software Developers by Frank Buschmann and Kevlin Henney</strong><br />
I attended this session mostly because of Kevlin Henney. I listened to one of his talks last year and it was hugely entertaining, as well as insightful. This session wasn’t quite that entertaining, but it had a lot of good content. The five considerations were: Economy (strive for minimalistic solutions), visibility (your ideas should be visible in your code), spacing (keep separations between domain, services and infrastructure), symmetry (keep the code clean and balanced) and emergence (do not build too much explicit control in your code, let it emerge instead).</p>
<p><strong>Session 2: LEGO Develops a new robotics platform WeDo</strong><br />
This session was a disappointment. It was not a presentation on robotics or WeDo or LEGO’s vision for robotics in the future, or much of anything, really. Most of all it was a presentation of LEGO as a business, and of LEGO’s business processes. As if the audience was a group of business managers, and the speaker was trying to sell stocks. I should have attended Kevlin’s second talk instead.</p>
<p><strong>Session 3: Real-world Refactoring by Neal Ford</strong><br />
This was another session with a lot of content. It’s hard to summarise what he said in just a few sentences, but I’ll try anyway. First of all, he presented two principles to keep in mind when refactoring: The composed method (break down large methods into smaller well-named methods until it reads like a series of steps in an algorithm) and SLAP (keep the same level of abstraction in a method).  Next, he gave us two things to be cautious about: Dependencies on third-party frameworks and spider web dependencies among our own classes. In addition, he talked about detecting duplication in our code with the tool cpd, avoiding duplication of code in tests, doing large refactoring on branches and doing ‘scary’ refactorings of brittle code. Lastly, he advised us to use code metric tools to discover when and where to use refactoring.</p>
<p><strong>Session 4: Patterns of Internal DSLs by Martin Fowler</strong><br />
Martin Fowler is another of my favourite speakers. He always speaks loudly and clearly and I always feel as if I learn something when I’m reading one of his books or listening to him talk. This session was no different, although it was rather more technical than I had hoped for. He gave us several techniques for writing internal DSLs, but no pointers at all on when to use DSLs in the first place.</p>
<p><strong>Session 5: Building DSLs with External Workbenches by Neal Ford</strong><br />
Neal Ford opened this session with one interesting observation: IDEs are slowly moving from working on text files to working directly on the abstract syntax trees instead. Thus, text becomes just one possible representation of the software, among other possibilities. But the rest of the talk concentrated on two different tools for creating DSLs: An Eclipse based tool called Xtext, and a tool created by JetBrains, the company behind the IntelliJ IDE, called MPS. Both tools enabled the user to create DSLs and the tools to work efficiently with the DSLs. Xtext, for example, will automatically generate a new Eclipse editor plug-in for the language, complete with syntax-aware colour coding and context-sensitive help.</p>
<p><strong>Conclusion</strong><br />
Domain Specific Languages was hot topic this year. I think almost every speaker at JAOO mentioned them in some form or another. The most obvious use of DSLs I’ve seen is as a build language (Gant being an example of an internal DSL inside Groovy). But I would have liked to see some more (and more diverse) examples of using DSLs in real life projects.</p>
<p>Other hot topics included functional programming (emerging into the mainstream, both in the form of new languages such as F# and Scala, and as a heavy influence on the evolution of existing mainstream languages); dynamic languages (pretty well established in the mainstream by now, with representatives such as Ruby, Groovy and Python); parallel computing (mostly as a threat hanging over our heads, waiting to be overcome one way or another) and how best to utilize the internet in our applications (cloud-computing and rich internet applications).</p>
<p>In conclusion JAOO 2008 has been a wonderful conference. I’ve learned a lot, talked to a lot of very interesting persons and gotten a load of inspiration that will properly take me days, if not weeks or months, to process. I hope I’ll be able to attend next year too.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bloggingaboutjava.org/2008/10/jaoo-conference-day-3/feed/</wfw:commentRss>
		</item>
		<item>
		<title>JAOO Conference day 2</title>
		<link>http://www.bloggingaboutjava.org/2008/10/jaoo-conference-day-2/</link>
		<comments>http://www.bloggingaboutjava.org/2008/10/jaoo-conference-day-2/#comments</comments>
		<pubDate>Wed, 01 Oct 2008 17:38:47 +0000</pubDate>
		<dc:creator>Nicolai Buch-Andersen</dc:creator>
		
		<category><![CDATA[Development]]></category>

		<category><![CDATA[Java]]></category>

		<category><![CDATA[JAOO]]></category>

		<guid isPermaLink="false">http://www.bloggingaboutjava.org/?p=372</guid>
		<description><![CDATA[I skipped the introduction of today’s program in order to write up my impression of yesterday instead. The long introduction is boring anyway. I already knew which sessions I wished to attend.

Today’s keynote was about Google Chrome and their V8 JavaScript engine. It’s as nifty piece of technology, but wasn’t a very interesting subject for [...]]]></description>
			<content:encoded><![CDATA[<p>I skipped the introduction of today’s program in order to write up my impression of yesterday instead. The long introduction is boring anyway. I already knew which sessions I wished to attend.</p>
<p><span id="more-372"></span></p>
<p>Today’s keynote was about Google Chrome and their V8 JavaScript engine. It’s as nifty piece of technology, but wasn’t a very interesting subject for me. I can’t help but to doubt that JavaScript will be any kind of long-term solution for developing web applications, no matter how much Google optimizes their engine. The browser is a perfect distributing platform, but a lousy execution platform. I believe more in RIA technologies such as Flex, Silverlight and JavaFx.</p>
<p><strong>Session 1: Of Code and Change: Beautiful Software by Michele Lanza</strong><br />
One word: Amazing! The first thing Michele showed us was a first generation visualization tool running in an Eclipse plug-in. It visualized code as a 2D graph where classes where represented by simple squares. Different metrics was used to control the width, height and colours of the squares. It was impressive what could be seen at a glance from such a relative simple figure. But the second thing Michele demonstrated was really fantastic. It’s a tool developed by one of his PhD student and it’s called CodeCity. It draws an entire software system as a full colour-coded 3D model of a city. Packages appear as districts and classes as buildings in the districts. It gives a whole new way of visualizing the overall architecture of system, spot areas ripe for refactoring, identify areas of frequent change or stale code, and much more. Take a look at <a href="http://www.inf.unisi.ch/phd/wettel/codecity.html">.</p>
<p><strong>Session 2: The Times They Are A-Changin? by Sofia Svanteson</strong><br />
This was an interesting, at times funny, and quite inspirational talk about GUI’s for mobile devices. Perhaps it was not very rich on actual, concrete information. But I’m glad there’s room for these ‘softer’ subjects at JAOO too.</p>
<p><strong>Session 3: Not your Grandfather’s Architecture: Taking Architecture into the Agile World by James O. Coplien</strong><br />
James had some surprising (for me!) insights about architecture. Firstly, he claimed that architecture was about ‘form’, not structure. That is, architecture was the basic form of your application, wherein you poured your material, or structure, in the form of methods and classes and packages. Secondly, he claimed that architecture should come from the business domain, not from the requirements. Architecture should capture aspects inherent in the business domain and therefore stable across varying user requirements. Unfortunately these interesting claims were drowned out in a general rant against OO which – according to the speaker – destroyed the clarity of the Fortran algorithms that went before; against the toy language called Java specifically, and the fact that all OO languages was missing the concept of ‘roles’ or ‘traits,’ without which architecture could not be expressed properly.</p>
<p><strong>Session 4: Flex and Air by James Ward</strong><br />
This session had some good demos. But I’m not sure about the composition of the platform: A JavaScript ‘mutant’ is used to code the client and anything, apparently, goes on the server (as long as it can be presented as a webservice). It seems to me to have the potential to turn into a mess of different languages and standards. On the other hand, the combination of the Flash Player in the browser and the Air player for desktop application, which can pretty much share the same code, seems like a very good idea. </p>
<p><strong>Session 5: Silverlight by Josh Holmes</strong><br />
In contrast with the previous session this one had rather lacklustre demos. Some of them looked impressive enough, but they were all just toy projects. I didn’t feel that Josh did a good job of “selling” Silverlight. The biggest strength of Silverlight is that it will run on Microsoft’s Mobile OS and that it utilizes the well-known .NET technology stack (C# + WPF). </p>
<p><strong>Conclusion</strong><br />
For me, this day was all about Rich Internet Applications. I think Chrome is a good looking browser (I like the slick interface) but, as I said, I’m doubtful if JavaScript will continue to be the preferred language for web application in the face of the competition. Media codex’es aren’t build into the browsers but played through dedicated media players and plug-ins. I think we will see a similar trend for web application: They will use the browser as a distribution platform, but will run in dedicated ‘application players’ and/or ‘application player’ plug-ins. Whether these players will be build by Microsoft (Silverlight/.NET), Adobe (Air/Flex) or Sun Microsystems (JavaFX) I don’t know. Time will tell, I guess.<br />
</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.bloggingaboutjava.org/2008/10/jaoo-conference-day-2/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
