<?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; J2ee</title>
	<atom:link href="http://www.bloggingaboutjava.org/category/java/j2ee/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bloggingaboutjava.org</link>
	<description>Blogging about Software Development</description>
	<pubDate>Wed, 03 Dec 2008 15:09:11 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.2</generator>
	<language>en</language>
			<item>
		<title>TheServerSide Europe, third day</title>
		<link>http://www.bloggingaboutjava.org/2008/06/theserverside-europe-third-day/</link>
		<comments>http://www.bloggingaboutjava.org/2008/06/theserverside-europe-third-day/#comments</comments>
		<pubDate>Fri, 20 Jun 2008 14:25:19 +0000</pubDate>
		<dc:creator>Jesper de Jong</dc:creator>
		
		<category><![CDATA[Development]]></category>

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

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

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

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

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

		<category><![CDATA[TheServerSide Symposium Europe]]></category>

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

		<guid isPermaLink="false">http://www.bloggingaboutjava.org/?p=332</guid>
		<description><![CDATA[ The third and last day of the conference. The first session I went to this morning was a very interesting one, &#8220;The Busy Java Developer&#8217;s Guide to Scala&#8221; by Ted Neward. He explained the basics of the Scala programming language. Scala is a new and very interesting programming language that combines object oriented and [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" src="http://www.bloggingaboutjava.org/cms/wordpress2/wp-content/uploads/2008/06/serverside.jpg" alt="" align="left" /> The third and last day of the conference. The first session I went to this morning was a very interesting one, &#8220;The Busy Java Developer&#8217;s Guide to Scala&#8221; by <a href="http://www.tedneward.com">Ted Neward</a>. He explained the basics of the <a href="http://www.scala-lang.org/">Scala programming language</a>. Scala is a new and very interesting programming language that combines object oriented and functional programming. The name is a contraction of &#8220;Scalable Language&#8221;. It runs on the JVM and interoperates very easily with Java - you can use Java classes seamlessly in Scala. I&#8217;ve looked at Scala before, but there was one interesting thing Ted showed which I didn&#8217;t know yet and which would also be an interesting feature to put into Java: You can put import statements not only at the top of a source file, but also inside classes or even inside methods. By doing this, you limit the scope of the import statement.</p>
<p><span id="more-332"></span></p>
<p>For example (note, the &#8220;import BigDecimal._&#8221; is the same as &#8220;import static java.math.BigDecimal.*&#8221; in Java):</p>
<p><code>object HelloWorld {<br />
def main(args : Array[String]) = {<br />
// Import BigDecimal into the scope of this block of code<br />
import java.math.BigDecimal, BigDecimal._</p>
<p>val a = ONE.add(ONE);<br />
println(&#8221;One plus one is: &#8221; + a)<br />
}<br />
}</code></p>
<p><a href="http://lamp.epfl.ch/~odersky/">Martin Odersky</a>, the inventor of Scala, is currently busy writing a book of which a pre-print version is available at <a href="http://www.artima.com/">Artima</a>. At the moment, Scala is not yet ready for prime time (there are still some funky bugs in the compiler and some rough edges in the language itself, and IDE support is not yet complete), but there&#8217;s a good chance that this is going to be an important new programming language in the next two or three years.</p>
<p>The second session I went to today was &#8220;Distributed Computing and MapReduce: Technology Selection, Implementation and Deployment Made Easy&#8221; by Eugene Ciurana. He explained what <a href="http://en.wikipedia.org/wiki/MapReduce">MapReduce</a> is - an algorithm for processing large amounts of data efficiently in two steps (&#8221;map&#8221; and &#8220;reduce&#8221;). The idea came from Google. Eugene explains how it&#8217;s used in the company where he works to analyze log files from webservers, to find out from which countries people are accessing their website. There are a number of implementations of MapReduce available, for example the open source <a href="http://hadoop.apache.org">Hadoop</a> from Apache and commercial products from for example GigaSpaces, GridGain and Terracotta. He also used <a href="http://mule.mulesource.org/display/MULE/Home">Mule</a> (see also this <a href="http://www.theserverside.com/tt/articles/article.tss?l=CaseStudyMule">case study</a> from Eugene).</p>
<p>My third session of today was &#8220;Performance Tuning a Web Shop with Open Source Tools&#8221; by Jeroen Borgers of Xebia. Often, when developers have to solve a performance problem, they make a guess about what&#8217;s wrong with the application and try to fix that, but in reality the only way to know what&#8217;s really wrong is by measuring instead of guessing. Jeroen talked about a project in which he used tools such as <a href="http://jakarta.apache.org/jmeter/index.html">JMeter</a> and <a href="http://jamonapi.sourceforge.net/">JAMon</a> to measure performance, and <a href="http://sourceforge.net/projects/jarep">JARep</a>, a reporting tool for application performance data that he wrote himself.</p>
<p>After lunch I went to &#8220;How to Choose your Java Web Framework&#8221; by Shashank Tiwari. It&#8217;s a question that ofcourse interests a lot of developers, because there are hundreds of frameworks and it&#8217;s not easy to determine which one you should use. Besides discussing the characteristics of the most popular frameworks he also talked about whether you should use a framework at all, because there are also some disadvantages: you&#8217;ll have to deal with a learning curve, for simple applications a framework can unnecessarily complicate things, it can cause infrastructure bloat, and it presents challenges for testing and maintenance. Ofcourse he didn&#8217;t come up with a perfect recipe for choosing a framework. He finished with two conclusions: For simple applications, it doesn&#8217;t matter a lot which framework you choose (or if you use a framework at all), so you shouldn&#8217;t waste much time on it; for larger applications, that are part of a bigger system, it&#8217;s probably best to go for a &#8220;full stack&#8221; solution such as Spring or JBoss Seam, because you&#8217;ll have less integration problems in your project.</p>
<p>The last session I went to was &#8220;Real Google Web Toolkit Applications&#8221; by Jeff Dwyer. <a href="http://code.google.com/webtoolkit/">Google Web Toolkit</a> is a web application framework by Google which allows you to program in Java, as if you&#8217;re writing a Swing desktop application. It compiles your Java code into a web application with JavaScript. He showed how GWT works by looking at a real-world example application which integrates GWT with Spring MVC. GWT is one of those things that&#8217;s on my list of things to look at sometime.</p>
<p>So, it was an interesting conference, I&#8217;ve learned a number of new things and got some new ideas. Thanks to <a href="http://www.javaranch.com">JavaRanch</a> for giving me a free ticket for this conference!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bloggingaboutjava.org/2008/06/theserverside-europe-third-day/feed/</wfw:commentRss>
		</item>
		<item>
		<title>TheServerSide Europe, second day</title>
		<link>http://www.bloggingaboutjava.org/2008/06/theserverside-europe-second-day/</link>
		<comments>http://www.bloggingaboutjava.org/2008/06/theserverside-europe-second-day/#comments</comments>
		<pubDate>Thu, 19 Jun 2008 16:34:47 +0000</pubDate>
		<dc:creator>Jesper de Jong</dc:creator>
		
		<category><![CDATA[Development]]></category>

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

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

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

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

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

		<category><![CDATA[TheServerSide Symposium Europe]]></category>

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

		<guid isPermaLink="false">http://www.bloggingaboutjava.org/?p=331</guid>
		<description><![CDATA[ The first keynote of today was &#8220;Language-Oriented Computing: Shifting Paradigms&#8221; by Neal Ford. It was a good presentation (with nice slides), mainly about domain-specific languages. See also Martin Fowler&#8217;s page on DSLs.
At 9:10 I went to &#8220;Spring 2.5 On the Way to 3.0&#8243; by Jürgen Höller (one of the main committers on the Spring [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" src="http://www.bloggingaboutjava.org/cms/wordpress2/wp-content/uploads/2008/06/serverside.jpg" alt="" align="left" /> The first keynote of today was &#8220;Language-Oriented Computing: Shifting Paradigms&#8221; by <a href="http://javasymposium.techtarget.com/europe/speakers.html#NFord">Neal Ford</a>. It was a good presentation (with nice slides), mainly about <a href="http://en.wikipedia.org/wiki/Domain-specific_language">domain-specific languages</a>. See also <a href="http://martinfowler.com/bliki/DomainSpecificLanguage.html">Martin Fowler&#8217;s page on DSLs</a>.</p>
<p>At 9:10 I went to &#8220;Spring 2.5 On the Way to 3.0&#8243; by Jürgen Höller (one of the main committers on the Spring framework). He explained some new features in Spring 2.5, and went quite deep into the technical details of the @Autowired and other annotations - which was quite boring. He spent so much time on talking about those details that he had almost no time left to talk about 3.0. Spring 3.0 will be for Java 5 and newer only, and some new features that it will have are an expression language, support for REST and some preparation to support servlets 3.0. I wonder why they&#8217;re going to give it version number 3.0 instead of 2.6, since it didn&#8217;t sound like it would be a lot different from the current Spring 2.5.</p>
<p><span id="more-331"></span></p>
<p>The next session I attended was &#8220;Groovy in the Enterprise: Case Studies&#8221; by Guillaume Laforge. As the title suggested, he showed some examples of where and how Groovy has been used by companies. He discussed a number of use cases, such as: using Groovy as a developer tool (for example for testing or extending Ant or Maven), using Groovy to extend your applications (for example by using the Java scripting API to run Groovy scripts from within your application), using Groovy to create a DSL and using Groovy and Grails for web development. There was some overlap with his presentation about Grails that I attended yesterday.</p>
<p>At 11:40 there was an expert panel session titled &#8220;Languages: The Next Generation&#8221; with Ola Bini, Ted Neward and Guillaume Laforge. They discussed about the programming languages that are currently popular or that get a lot of attention. I found the session a bit disappointing, I had expected more. The panel didn&#8217;t come up with a clear answer or vision about what the next generation of programming languages is going to be. The only conclusion they came to was that Java is here to stay and that other languages such as Groovy, JRuby and Scala will be important additional languages, but they&#8217;re not going to completely replace Java.</p>
<p>After lunch I went to &#8220;Lifecycle APM: Monitor, Diagnose and Prevent Performance Issues&#8221; by Alois Reitbauer (from <a href="http://www.dynatrace.com">dynaTrace</a>). This session was a &#8220;vendor tech brief&#8221;, so there was some marketing talk, about dynaTrace&#8217;s tool that allows you to follow transactions through a whole chain of systems (so that you can monitor and debug performance of the system).</p>
<p>At 13:50 I went to &#8220;JRuby on Rails: Web Development Evolved&#8221; by <a href="http://ola-bini.blogspot.com/">Ola Bini</a>. He spent a lot of time on explaining the Ruby programming language, and had unfortunately not a lot of time left to explain how Rails works on JRuby, which was what I was interested in (I&#8217;ve already used Ruby for some time, so the intro to Ruby was not so interesting for me). Anyway, <a href="http://www.ruby-lang.org">Ruby</a> is an interesting, easy to learn and easy to use programming language, and I&#8217;d recommend any Java developer who wants to learn some other language to have a look at it.</p>
<p>The next session I went to was &#8220;Concurrency &amp; High Performance&#8221; by <a href="http://kirk.blog-city.com/">Kirk Pepperdine</a>. He&#8217;s a well-known guy in the field of high-performance and concurrent programming in Java. Writing software that efficiently uses multi-core processors is not easy, but it&#8217;s becoming more and more important with the current trend of multi-core processors. One of the things Kirk mentioned was the fork/join framework that will be <a href="http://www.infoq.com/news/2007/07/concurrency-java-se-7">added in Java SE 7</a>. One book that I want to read someday soon is <a href="http://www.amazon.co.uk/Java-Concurrency-Practice-Brian-Goetz/dp/0321349601/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1213883530&amp;sr=1-1">Java Concurrency in Practice</a>, I&#8217;ve heard that it&#8217;s a very good book.</p>
<p>At the end of the afternoon there were &#8220;fireside chats&#8221;, which were sessions in which a few people did some short demos and then discussed among each other and with the audience about the things they demonstrated. I went to the fireside chat titled &#8220;Zero Turnaround in Java development&#8221;, which was about developing in Java in such a way that you don&#8217;t have to go through stop / recompile / redeploy / start cycles all the time. Guillaume Laforge showed how you can edit your Groovy web application on the fly. Geert Bevin showed how the <a href="http://rifers.org/">RIFE framework</a> supports the same thing, and Jevgeni Kabanov (from <a href="http://www.zeroturnaround.com/">ZeroTurnaround</a>) showed his (commercial) tool JavaRebel, which is a JVM plugin that allows you to reload classes in a running JVM. They discussed about the use and limitations of their tools and answered questions from the audience.</p>
<p>I arrived here late in the evening last Tuesday and I&#8217;ve hardly been outside the hotel (the conference is held at the hotel), so I haven&#8217;t seen Prague yet. Tonight there&#8217;s a &#8220;meet a stranger&#8221; dinner - you could put your name on one of five lists, and you&#8217;re going out to dinner with the other people on the list. So I&#8217;m going to a restaurant in the center of the city tonight with a few other people to have traditional Czech food.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bloggingaboutjava.org/2008/06/theserverside-europe-second-day/feed/</wfw:commentRss>
		</item>
		<item>
		<title>TheServerSide Europe, first day</title>
		<link>http://www.bloggingaboutjava.org/2008/06/theserverside-europe-first-day/</link>
		<comments>http://www.bloggingaboutjava.org/2008/06/theserverside-europe-first-day/#comments</comments>
		<pubDate>Thu, 19 Jun 2008 06:23:20 +0000</pubDate>
		<dc:creator>Jesper de Jong</dc:creator>
		
		<category><![CDATA[Development]]></category>

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

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

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

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

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

		<category><![CDATA[TheServerSide Symposium Europe]]></category>

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

		<guid isPermaLink="false">http://www.bloggingaboutjava.org/?p=325</guid>
		<description><![CDATA[I am in Prague, at the TheServerSide Java Symposium Europe. It&#8217;s a conference much like other conferences about Java, but not as big (there are about 300 attendees) and with a focus on server-side Java technology (although non-Java stuff such as Adobe Flex and AIR, Groovy and JRuby also get some attention).
The first day started [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" src="http://www.bloggingaboutjava.org/cms/wordpress2/wp-content/uploads/2008/06/serverside.jpg" alt="" align="left" />I am in Prague, at the <a href="http://javasymposium.techtarget.com/europe/index.html">TheServerSide Java Symposium Europe</a>. It&#8217;s a conference much like other conferences about Java, but not as big (there are about 300 attendees) and with a focus on server-side Java technology (although non-Java stuff such as Adobe Flex and AIR, Groovy and JRuby also get some attention).</p>
<p>The first day started early at 8:00 AM with a keynote by <a href="http://www.javapolis.com/confluence/display/~stephan/Home">Stephan Janssen</a> from <a href="http://www.bejug.org">BeJUG</a> (famous for organising <a href="http://www.javapolis.com">JavaPolis</a>, which has now been renamed to Javoxx). His keynote was about different RIA (Rich Internet Applications) technologies. He gave an overview of the different choices that you have for the client side, server side and data protocols to communicate between the two (HTML, XML, JSON, Hessian, &#8230;). He demonstrated his <a href="http://www.parleys.com">Parleys</a> website, which is an AIR multimedia-application (have a look, it&#8217;s a very interesting website with lots of presentations with video and slides from the past few JavaPolises and other conferences). Besides the AIR version, he also had an implementation of the Parleys website done in <a href="http://code.google.com/webtoolkit/">GWT</a> and also one done in <a href="http://java.sun.com/javafx/">JavaFX</a>. He calls JavaScript &#8220;VoodooScript&#8221; because writing an application in JavaScript and DHTML requires black magic to make it work in all the webbrowsers that people might use.</p>
<p><span id="more-325"></span>After the keynote I went to a session titled &#8220;Integrating JPA and Hibernate with Rich Internet Applications&#8221; by <a href="http://shanky.org/">Shashank Tiwari</a> (from <a href="http://www.saventech.com">Saven Technologies</a>). He talked about using Hibernate (as an implementation of JPA, the Java Persistence API) on the server for a client written with Adobe Flex. There are different ways to do this, you can use LCDS (Lifecycle Data Services, a product by Adobe) or an open source alternative such as <a href="http://www.graniteds.org">GraniteDS</a> or <a href="http://code.google.com/p/dphibernate/">dpHibernate</a>. He gave an idea of how you could use those libraries by showing some examples of configuration files. I found this talk not the most interesting one I&#8217;ve seen on the first day (probably because the topic wasn&#8217;t really relevant to my current job).</p>
<p>The third session I went to was &#8220;Monitoring, Management and Troubleshooting in the Java SE 6 Platform&#8221; by Jean-Francois Denise (from Sun). He first talked about <a href="http://java.sun.com/javase/technologies/core/mntr-mgmt/javamanagement/">JMX</a> and how to write MBeans or MXBeans for your application so that you can monitor and manage your application with a tool like JConsole. Besides JConsole, Java SE 6 comes with a whole list of other useful tools, such as: jinfo, jstat, jstack, jps, jmap and jhat. Sun is working on a new tool, <a href="https://visualvm.dev.java.net/">jvisualvm</a>, which looks like a new and improved version of JConsole, which Jean-Francois demonstrated. This was an interesting session, and it reminded me of JMX and all those tools. I think JMX is a very useful API that people unfortunately often overlook; it&#8217;s not that hard to write MBeans and tools like JConsole can be very useful as a simple memory profiler and for managing running Java processes.</p>
<p>Next was another keynote, &#8220;Getting Ready for the Cloud&#8221;, by Nati Shalom from GigaSpaces. I was afraid that this was going to be not much more than a marketing talk, but it wasn&#8217;t really. Nati talked about cloud computing: instead of having a few big servers, you have a large amount of smaller computers to do the work. This has certain benefits for scalability.</p>
<p>The first session after lunch that I wanted to attend was &#8220;Comparing Dependency Injection Frameworks&#8221;, but a few minutes after the talk was supposed to start, it was announced that the presenter wasn&#8217;t there. So I went to &#8220;SOA Using Service Component Architecture&#8221; instead, by Mike Keith. This session was about SCA and <a href="http://www.osoa.org/">Open SOA</a>. SCA is a set of specifications about components and their interfaces for using in a service oriented architecture. It specifies components that have input and output interfaces, properties to configure them and how they can be wired together. There are also specifications for how SCA is implemented using for example Java, webservices, C++, PHP and other technologies. In Java, you can use annotations to specify a component and its interfaces and properties. The good thing about SCA is that it makes it possible to wire together service components that are implemented in different technologies, because the components will have a standard interface.</p>
<p>The next session I went to was &#8220;Simplifying Java EE Development with Grails&#8221; by Guillaume Laforge. It was a straightforward presentation about Groovy and Grails. Grails is a web framework and a set of tools that enables you to quickly build a (CRUD) web application, just like Rails (for Ruby). I&#8217;ve played with Ruby and Rails myself, but I haven&#8217;t really looked at Groovy and Grails much yet. Looks like an interesting language and framework to have a look at when I have time.</p>
<p>The last session of the first day that I went to was &#8220;Better Enterprise Software with the Spring Portfolio&#8221; by Eberhard Wolff (from <a href="http://www.springsource.com/">SpringSource</a>). He talked about a case study in which he used different Spring technologies, such as Spring Beans, Spring Webservices and Spring Batch. The Spring framework really tries to be a big framework which you can use for almost anything, and its popularity shows its success. While watching this session I thought back about the session about SCA, because there seemed to be some overlap in the way that you declare components with annotations in the way that SCA specifies and in how you declare and configure different kinds of components with annotations in Spring.</p>
<p>And now the first day is already over. I always feel that time goes by very quickly at conferences.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bloggingaboutjava.org/2008/06/theserverside-europe-first-day/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Back to Basics ?</title>
		<link>http://www.bloggingaboutjava.org/2008/05/back-to-basics/</link>
		<comments>http://www.bloggingaboutjava.org/2008/05/back-to-basics/#comments</comments>
		<pubDate>Mon, 26 May 2008 10:43:03 +0000</pubDate>
		<dc:creator>Arjen van Schie</dc:creator>
		
		<category><![CDATA[J2ee]]></category>

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

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

		<guid isPermaLink="false">http://www.bloggingaboutjava.org/cms/wordpress/?p=153</guid>
		<description><![CDATA[After developing in Ruby on Rails for a while I settled back in ‘Java land’ for a good old Java project. For this project we extended the capabilities of an existing webapplication built on Struts, Spring and iBatis. Sounds like fun doesn’t it ?
Well to be honest those frameworks are pretty solid and stable and [...]]]></description>
			<content:encoded><![CDATA[<p>After developing in Ruby on Rails for a while I settled back in ‘Java land’ for a good old Java project. For this project we extended the capabilities of an existing webapplication built on Struts, Spring and iBatis. Sounds like fun doesn’t it ?</p>
<p>Well to be honest those frameworks are pretty solid and stable and the documentation is easy to find. But on the other hand there are several annoyances when you are used to the Rails way of life.</p>
<p><span id="more-157"></span></p>
<p>What I miss most of all is the short edit-debug cycle. When I was working with Rails I figured this to be a minor improvement but right now I’m missing it the most. Every single small change leads to a project compile, log on to the application server, project (un/re)deploy, clear cache and then refreshing in the browser. The whole procedure takes multiple minutes, while in Rails I corrected the typo and refreshed the browser in a single second.</p>
<p>The second in order of frustrations is the number of XML configs, we got the struts config files, the iBatis config files, the spring config files and web config files. I would suggest drop the configs, I want my Rails conventions back  <img src='http://www.bloggingaboutjava.org/cms/wordpress2/wp-includes/images/smilies/icon_smile.gif' alt=':smile:' class='wp-smiley' /> </p>
<p>The last one I’ll mention is the enormous number of levels of indirection between a page call and page result. In Rails there will be some call-chain from controller to model and all, but it’s pretty clear, most of it is hidden by the framework and the conventions. In this project there are multiple ways along config-files, java-interfaces, businesslayers, model-layers, view layers, facades, multiple strutsactions, i.e. no conventions at all.</p>
<p>Of course it’s not all better in Rails. Read my Rails blog and you’ll notice there was a list of annoyances just as well, of which some don’t apply to good old Java. For instance it’s nice to skip the nil-errors as a result of typo’s in variable names(@eror instead of @error) which were one of my biggest frustrations in Rails. Or the joy of being able to refactor a methodname with one click. And of course the Java debugger kicks ass compared to the Ruby on Rails debugger.</p>
<p>Still it feels like a bit of a step back with all the extra work and coding that needs to be done to realize the same. So for programming web applications of this type I would prefer Ruby on Rails over Java (Spring, Ibatis, Struts). Programming in Ruby on Rails made me much more happy  <img src='http://www.bloggingaboutjava.org/cms/wordpress2/wp-includes/images/smilies/icon_smile.gif' alt=':smile:' class='wp-smiley' /> </p>
<p>On the other hand there are more things to consider (reliability, maintainability etc.) when selected the right tool for the job. Neither Rails nor Java is the silver bullet.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bloggingaboutjava.org/2008/05/back-to-basics/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Discontinued Java Exams</title>
		<link>http://www.bloggingaboutjava.org/2008/04/discontinued-java-exams/</link>
		<comments>http://www.bloggingaboutjava.org/2008/04/discontinued-java-exams/#comments</comments>
		<pubDate>Mon, 14 Apr 2008 17:57:24 +0000</pubDate>
		<dc:creator>Rob Reuvers</dc:creator>
		
		<category><![CDATA[J2ee]]></category>

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

		<guid isPermaLink="false">http://www.bloggingaboutjava.org/2008/04/discontinued-java-exams/</guid>
		<description><![CDATA[Working on your next SCWCD or SCBCD Java exam? You rather take a look at the SUN certification pages.
As you can see both ‘Sun Certified Web Component Developer for the Java Platform, Enterprise Edition 1.4 (CX-310-081)’ and ‘Sun Certified Business Component Developer for the Java Platform, Enterprise Edition 1.3 (CX-310-090)’ are discontinued by February 29, [...]]]></description>
			<content:encoded><![CDATA[<p>Working on your next <strong>SCWCD</strong> or <strong>SCBCD</strong> Java exam? You rather take a look at the <a href="http://www.sun.com/training/certification/java/discontinued.html">SUN certification pages</a>.<br />
As you can see both ‘Sun Certified Web Component Developer for the Java Platform, Enterprise Edition 1.4 (CX-310-081)’ and ‘Sun Certified Business Component Developer for the Java Platform, Enterprise Edition 1.3 (CX-310-090)’ are discontinued by February 29, 2008. So all you people using the Head First EJB or the Head First Servlets &amp; JSP, First Edition books, get rid of them (at least if you are using them for the exams mentioned):</p>
<p>Head First Servlets &amp; JSP, First Edition is based on Servlets 2.4 and JSP 2.0 (Sun exam CX-310-081).<br />
Head First EJB is based on EJB 2.0 (Sun exam CX-310-090).</p>
<p>However, there is a positive point to mention:<br />
A second edition of Head First Servlets &amp; JSP exists. If you’re thinking about buying this book read <a href="http://www.oreillynet.com/headfirst/blog/2008/02/so_you_wanna_be_a_servlets_stu.html#more">this</a> first. As you can see the latest SCWCD exam doesn’t differ much to the discontinued one. So maybe we shouldn’t throw these books aside.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bloggingaboutjava.org/2008/04/discontinued-java-exams/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Very interesting blog about J2EE performance</title>
		<link>http://www.bloggingaboutjava.org/2007/05/very-interesting-blog-about-j2ee-performance/</link>
		<comments>http://www.bloggingaboutjava.org/2007/05/very-interesting-blog-about-j2ee-performance/#comments</comments>
		<pubDate>Tue, 01 May 2007 08:36:56 +0000</pubDate>
		<dc:creator>Ruben Sprangemeijer</dc:creator>
		
		<category><![CDATA[General]]></category>

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

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

		<guid isPermaLink="false">http://www.bloggingaboutjava.org/cms/wordpress/2007/05/very-interesting-blog-about-j2ee-performance/</guid>
		<description><![CDATA[Hi all,
Vincent Partington from Xebia has been blogging about  J2EE performance problems he and his colleagues have encountered.
They have compiled a top 10 list. It is a very interesting read, as it is all very recognizable 
See http://blog.xebia.com/2007/04/30/ejapp-top-10-countdown-wrap-up/
(and TheServerSide.com as that is where I stumbled across the link to Vincents blogposts)
]]></description>
			<content:encoded><![CDATA[<p>Hi all,</p>
<p>Vincent Partington from Xebia has been blogging about  J2EE performance problems he and his colleagues have encountered.</p>
<p>They have compiled a top 10 list. It is a very interesting read, as it is all very recognizable <img src='http://www.bloggingaboutjava.org/cms/wordpress2/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br />
See <a href="http://blog.xebia.com/2007/04/30/ejapp-top-10-countdown-wrap-up/">http://blog.xebia.com/2007/04/30/ejapp-top-10-countdown-wrap-up/</a></p>
<p>(and <a href="http://www.theserverside.com/news/thread.tss?thread_id=45187">TheServerSide.com</a> as that is where I stumbled across the link to Vincents blogposts)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bloggingaboutjava.org/2007/05/very-interesting-blog-about-j2ee-performance/feed/</wfw:commentRss>
		</item>
		<item>
		<title>All I want is coffee flavoured coffee!</title>
		<link>http://www.bloggingaboutjava.org/2006/11/all-i-want-is-coffee-flavoured-coffee/</link>
		<comments>http://www.bloggingaboutjava.org/2006/11/all-i-want-is-coffee-flavoured-coffee/#comments</comments>
		<pubDate>Wed, 22 Nov 2006 13:03:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[J2ee]]></category>

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

		<guid isPermaLink="false">http://www.bloggingaboutjava.org/cms/wordpress/2006/11/all-i-want-is-coffee-flavoured-coffee/</guid>
		<description><![CDATA[Never thought I would ever quote Denis Leary in a J2EE context but I&#8217;m dying for coffee-flavoured-coffee right now. Just one (damn strong) taste of coffee which strikes the tongue and keep you awake. I&#8217;ll try to explain
The immediate cause: InfoQ&#8217;s has published an interview with Gaving King about the evolution of Seam, Gavin’s version of [...]]]></description>
			<content:encoded><![CDATA[<p>Never thought I would ever <a title="list of coffe quotes including the famous coffee-flavoured-coffee" href="http://en.wikiquote.org/wiki/Coffee" target="_blank">quote Denis Leary</a> in a J2EE context but I&#8217;m dying for coffee-flavoured-coffee right now. Just one (damn strong) taste of coffee which strikes the tongue and keep you awake. I&#8217;ll try to explain</p>
<p>The immediate cause: InfoQ&#8217;s has published an <a title="Gavin king interview" href="http://www.infoq.com/news/2006/11/seam-11-Gavin-King-interview" target="_blank">interview with Gaving King</a> about the evolution of Seam, Gavin’s version of a framework telling you how to build (web) applications. I’ve written about Seam before and at that time in my opinion the framework was based on some interesting ideas and principles but lacked simplicity mainly caused by hard to set-up working examples. Never looked at it again (although the intentions were there ….) and I’ll point out immediately I’ll probably won’t look at it right now. So what’s so interesting about the interview? Besides some nice food for thoughts about the implications of a fine grained AJAX approach on database load and some old insights about the effects of state management on clustered environments, not very much. Except for one small comment Gavin makes as a reply to someone commenting exactly what has hit me one year ago. Let me quote:</p>
<p>Comment: <em>I haven&#8217;t gotten the time to try out the new Seam release but I hope that setting up a project has gotten easier</em>.</p>
<p>Gavin King’s reply: <em>seam-gen makes it *super* easy, at least for EJB3 on JBoss users. We will be working on expanding the functionality of seam-gen to support other usecases (JavaBeans+Hibernate, Tomcat, J2EE, etc).</em></p>
<p>And that answer shows exactly what is completely wrong with the so called enterprise edition of java: There is no simple straightforward one-way road for doing things! Choices, choices, choices and a lot more choices that make life easy to model but hard to implement. Isn’t the power of application frameworks that choices are made four you? I would expect a framework like Seam dictates me to take the EJB3 route and pave things in such a way I really start to like the usage of EJB’s. Gavin, seam-gen is okay the way it is, actually it is right what was missing in your initial try. Instead of focusing on other choices, focus on more/better/advanced code generation! Expand into real functionality and help developers by filling room instead of giving it. Another illustration from the exact same interview: the different JSF frameworks Gavin lists. They seem to talk with each other to guarantee smoothness. Gavin calls this maturity, I rather use the term abstemious. A small sidestep without going into a fully blown JSF discussion but isn&#8217;t it remarkable (that&#8217;s the right word for maturity!) within EE we need a standard (<a title="web beans" href="http://jcp.org/en/jsr/detail?id=299" target="_blank">JSR 299</a>) as a glue between two other standards (JSF and EJB) in order to deal with application components in a unified way.</p>
<p>Right now I see a lot of developers (technical designers, architects, name them) spending too much ineffective hours on the <em>which framework to utilize and which standard to adopt</em> question. (not even mention the effort that can be thrown away due to steep learning curves and unexpected showstoppers after the answer to this question once again has lead to unknown trails). One can argue technical design is all about decision making and deciding what to apply is part of it. But in my point of view, technical design is all about the decisions that need to be made in order to translate a business problem into a technical solution. It’s not about choosing frameworks for every layer we can think of. Why are we programming Java? Not because at the start of every project we reconsider it. Nope it’s because we know the language and we know the language is capable of building what is desired in a (cost) effective way. And maybe once in a while we enter some self reflective mode to find arguments that reach beyond the arguments needed to make choices in a project context. And once in a while we pick up innovations, jump on bandwagons and maybe leave the paths we’re walking. Simply because we (as in the average software developer) know that when we do this every day, we can not keep pace with those who don’t.</p>
<p>Why is it frameworks and standards are treat in a different manner? What makes the adoption of yet another framework or standard so tempting?  The steps of changing seem to be relatively small. Due to the <em>it’s all Java isn’t it and hey we have a new project so what the hack we’re here to learn aren’t we</em> mentality, risks are not identified clearly. And as a result, unified application development is a farce and for every different twist, more glue is needed. And as soon as the need for glue is identified by more than one developer, new frameworks and standards arise.</p>
<p>Note, this blog entry is not meant to bash Seam nor the interview. It is meant to address a fundamental problem that has been floating around for a while and has been addressed in the past but seems to be persisting enough to get repeated every now and then. And Seam just functioned as a trigger (this time). Everyone who like to use Seam, go ahead, fine with me. If you do not mind, I’ll focus (projectwise) on a Spring based application design until Rails has really swallowed the way I think :-). But if you use Seam, stay with it at least the coming years (and so, stay with EJB3 and push Gavin to put all his energy in this choice instead of serving all other ways to technically layout an application).</p>
<p>A final thought: Is it a coincident Joel on software has published <a title="15 ways to shut down your laptop" href="http://www.joelonsoftware.com/items/2006/11/21.html" target="_blank">an article</a> about choices (=headaches) on the exact same date as the interview publication? It probably is. But what Joel describes (15 ways to shut down your laptop) is exactly how we (as in the java community) build applications. Nuff said. Where&#8217;s my coffee?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bloggingaboutjava.org/2006/11/all-i-want-is-coffee-flavoured-coffee/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Having fun with Spring AOP</title>
		<link>http://www.bloggingaboutjava.org/2006/08/having-fun-with-spring-aop/</link>
		<comments>http://www.bloggingaboutjava.org/2006/08/having-fun-with-spring-aop/#comments</comments>
		<pubDate>Thu, 24 Aug 2006 11:46:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[J2ee]]></category>

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

		<category><![CDATA[Nice to know]]></category>

		<guid isPermaLink="false">http://www.bloggingaboutjava.org/cms/wordpress/2006/08/having-fun-with-spring-aop/</guid>
		<description><![CDATA[Aspect Oriented Programming for me always has been something that is theoretically beautiful but in practice unfeasible to apply: A good idea that buried itself by bad examples and complex implementations. Until Google pointed me to this great article about AspectJ5 and its integration into the Spring Framework. Actually I was looking for some EJB3 [...]]]></description>
			<content:encoded><![CDATA[<p><span lang="NL"><font face="Arial" size="2">Aspect Oriented Programming for me always has been something that is theoretically beautiful but in practice unfeasible to apply: A good idea that buried itself by bad examples and complex implementations. Until Google pointed me to </font><a title="Simplifying Enterprise Applications with Spring 2.0 and AspectJ, by Adrian Colyer" href="http://www.infoq.com/articles/Simplifying-Enterprise-Apps" target="_blank"><font face="Arial" size="2">this great article</font></a><font face="Arial" size="2"> about AspectJ5 and its integration into the Spring Framework. Actually I was looking for some EJB3 related Spring material but I ended up reading probably one of the first articles that after finishing left me with a ‘yep, I really want to do AOP, even at home’-kind of feelings.</font></span></p>
<p><span lang="NL"><font face="Arial" size="2"><span lang="NL" /><span lang="NL"><font face="Arial" size="2">The whole idea is actually super simple. AspectJ has been extended with two very handy mechanisms: a run time (actually load time) weaving engine and support for aspects that are expressed in Java 5 annotations. Using AspectJ’s API we do not have to rely on a separate compiler but the process of aspect weaving can be initiated whenever we like. And that is exactly the trick Spring is using. Aspects are actually Spring managed instantiations that influence other spring managed beans. When Spring is loading bean classes, cross cutting aspects are weaved in like a breeze.</font></span></font></span><font face="Arial" size="2"><span lang="NL"><font face="Arial" size="2"><span lang="NL" /><span lang="NL"><font face="Arial" size="2">So, I grabbed the latest Spring release (2.0), read some more </font><a title="An Annotation Based Development Style" href="http://www.eclipse.org/aspectj/doc/released/adk15notebook/ataspectj.html" target="_blank"><font face="Arial" size="2">background</font></a><font face="Arial" size="2"> information and started right away. Within minutes an AspectJ based interception of a completely meaningless but spring managed hello world bean was up and running. Cool! Hello world never has been so enlighting. To make things a bit more practical, I tried to implement a typical architectural constraint like &#8220;Methods on classes belonging to the an applications data access layer may only be called through methods of classes belong to the service layer.&#8221;. Normally this constraint is written down by software designers in a plain ms-word or odf &#8216;thou shall not&#8217;-document,  but using Spring AOP it can be expressed in a bit of xml (yep, Spring &#8230;.) and a Java class. ( I am not going to argue the semantic practicalities and implications of this constraint, for me it is just an example to express the ‘aha feeling’.) Okay, here are some interesting pieces of the class I wrote. Full details can be found in this posts attachment (<span lang="NL"><font face="Arial" size="2"><a id="p108" title="Spring AOP Example" href="http://www.bloggingaboutjava.org/cms/wordpress/2006/08/having-fun-with-spring-aop/spring-aop-example/" rel="attachment">acsa.zip</a></font></span>). </font></span></font></span></font><font face="Arial" size="2"><span lang="NL"><font face="Arial" size="2"><span lang="NL" /><span lang="NL"><font face="Arial" size="2">@Aspect public class SystemLayeringAspect { // &#8230;&#8230;</font></span></font></span></font><font face="Arial" size="2"><span lang="NL"><font face="Arial" size="2"></font><font face="Arial" size="2"><span lang="NL"><font face="Arial" size="2">define the pointcuts to identify different layers </font></span></font></span></font><font face="Arial" size="2"></font><font face="Arial" size="2"><span lang="NL"><font face="Arial" size="2"><span lang="NL" /><span lang="NL"><font face="Arial" size="2">@Pointcut(&#8221;within(com.logicacmg..*.service.*)&#8221;) public void inServiceLayer() { }</font></span></font></span></font><font face="Arial" size="2"><span lang="NL"><font face="Arial" size="2">@Pointcut(&#8221;within(com.logicacmg..*.dao.*)&#8221;) public void inDataLayer() { }</font></span></p>
<p><span lang="NL"><font face="Arial" size="2" /></span></font><font face="Arial" size="2"><span lang="NL"><font face="Arial" size="2">add some thread local sugar for administrative purpose </font></span></font><font face="Arial" size="2"><span lang="NL"><font face="Arial" size="2"><span lang="NL" /><span lang="NL"><font face="Arial" size="2">private static ThreadLocal tlServiceCount = new ThreadLocal() {</font></span></font></span></font><font face="Arial" size="2"><span lang="NL"><font face="Arial" size="2">  protected Integer initialValue() { return 0; }</font></span></p>
<p><span lang="NL"><font face="Arial" size="2">};</font></span></p>
<p><span lang="NL"><font face="Arial" size="2"><span lang="NL" /><span lang="NL"><font face="Arial" size="2">define the advice to register the usage of service method calls</font></span></font></span></font><font face="Arial" size="2"><span lang="NL"><font face="Arial" size="2"><span lang="NL" /><span lang="NL"><font face="Arial" size="2">@Around(&#8221;inServiceLayer()&#8221;)</font></span></font></span></font><font face="Arial" size="2"><span lang="NL"><font face="Arial" size="2">public Object serviceUsage(ProceedingJoinPoint thisJoinPoint) throws Throwable {</font></span></p>
<p><span lang="NL"><font face="Arial" size="2">  tlServiceCount.set(tlServiceCount.get() + 1);</font></span></p>
<p><span lang="NL"><font face="Arial" size="2">  Object result = thisJoinPoint.proceed();</font></span></p>
<p><span lang="NL"><font face="Arial" size="2">  tlServiceCount.set(tlServiceCount.get() - 1);</font></span></p>
<p><span lang="NL"><font face="Arial" size="2">  return result;</font></span></p>
<p><span lang="NL"><font face="Arial" size="2">}</font></span></p>
<p><span lang="NL"><font face="Arial" size="2" /></span></font><font face="Arial" size="2"><span lang="NL"><font face="Arial" size="2">and define the advice how to deal with data access calls </font></span></font><font face="Arial" size="2"><span lang="NL"><font face="Arial" size="2"><span lang="NL" /><span lang="NL"><font face="Arial" size="2">@Before(&#8221;inDataLayer() &#038;&#038; this(dao)&#8221;)</font></span></font></span></font><font face="Arial" size="2"><span lang="NL"><font face="Arial" size="2">public void dataUsage(Object dao) throws Throwable {</font></span></p>
<p><span lang="NL"><font face="Arial" size="2">  if (tlServiceCount.get() == 0) {</font></span></p>
<p><span lang="NL"><font face="Arial" size="2">    throw new ArchitecturalConstraintFailed(dao + &#8221; can not be accessed directly&#8221;);</font></span></p>
<p><span lang="NL"><font face="Arial" size="2">  }</font></span></p>
<p><span lang="NL"><font face="Arial" size="2">}</font></span></p>
<p><span lang="NL"><font face="Arial" size="2"><span lang="NL"><font size="2"></font><font face="Arial">Note, the difference in the advice types. <span lang="NL">The service advice needs to work around the actual method call, the dao advice does its job only upfront.</span></font></span></font></span></font><font face="Arial" size="2"><span lang="NL"><font size="2"><span lang="NL"><font face="Arial" size="2"><span lang="NL" /><span lang="NL"><font face="Arial" size="2">That&#8217;s it. simply plug it into your Spring application context after the and off you go.  </font></span></font></span></font><font face="Arial" size="2"><span lang="NL"><font face="Arial" size="2"><span lang="NL" /><span lang="FR"><font size="2"></font><font face="Arial">ApplicationContext context = new ClassPathXmlApplicationContext(&#8221;application-context.xml&#8221;);<br />
</font></span><span lang="NL"><font face="Arial" size="2">ExampleService service = (ExampleService) context.getBean(&#8221;helloService&#8221;);</font></span></font></span></font></span></font><font face="Arial" size="2"></font><font size="2"><span lang="NL"><font face="Arial" size="2">ExampleHelper helper = (ExampleHelper) context.getBean(&#8221;helloHelper&#8221;);</font></span></p>
<p><span lang="NL"><font face="Arial" size="2">ExampleService service = (ExampleService) context.getBean(&#8221;helloService&#8221;);</font></span></p>
<p><span lang="NL"><font face="Arial" size="2">ExampleHelper helper = (ExampleHelper) context.getBean(&#8221;helloHelper&#8221;);</font></span></p>
<p><span lang="NL"><font face="Arial" size="2">  </font></span></p>
<p><span lang="NL"><font face="Arial" size="2">service.doSomething();</font></span></p>
<p><span lang="NL"><font face="Arial" size="2" /></span></font><font face="Arial" size="2"><span lang="NL"><font face="Arial" size="2">try {</font></span></font><font face="Arial" size="2"><span lang="NL"><font face="Arial" size="2">  helper.helpABit();</font></span></p>
<p><span lang="NL"><font face="Arial" size="2">} catch (ArchitecturalConstraintFailed afailed) {</font></span></p>
<p><span lang="NL"><font face="Arial" size="2">  System.out.println(&#8221;yep catched &#8221; + afailed);</font></span></p>
<p><span lang="NL"><font face="Arial" size="2">}</font></span></p>
<p><span lang="NL"><font face="Arial" size="2" /></span></font><font face="Arial" size="2"><span lang="NL"><font face="Arial" size="2">In the example used to test the architectural constraint, a dao is called through a helper bean. Calling the helper directly will result in a runtime failure, calling it through the service is no problem. Seems aspect orientation has finally been made easy. Although, one should be aware of the behaviour that aspects are honoured only by java classes that are loaded through Spring. So be careful with the new operator. But besides that, all I can advice is to have fun and make good use of it.</font></span></font><font face="Arial" size="2"> <span lang="NL"><font face="Arial" size="2"><span lang="NL" /></font></span></font><font face="Arial" size="2"><span lang="NL"> </p>
<p></span></font> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.bloggingaboutjava.org/2006/08/having-fun-with-spring-aop/feed/</wfw:commentRss>
		</item>
		<item>
		<title>JavaOne2006 To GWT or to JSF?</title>
		<link>http://www.bloggingaboutjava.org/2006/05/javaone2006-to-gwt-or-to-jsf/</link>
		<comments>http://www.bloggingaboutjava.org/2006/05/javaone2006-to-gwt-or-to-jsf/#comments</comments>
		<pubDate>Sat, 20 May 2006 00:15:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[J2ee]]></category>

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

		<guid isPermaLink="false">http://www.bloggingaboutjava.org/cms/wordpress/2006/05/javaone2006-to-gwt-or-to-jsf/</guid>
		<description><![CDATA[This years JavaOne was filled with JSF, Ajax and even more the combination of the two. On the Pavilion several commmercial vendors were selling their ajax enriched jsf components. The blueprint team showed us the petstore. Oracle showed us how to build custom ajax enabled jsf components. And so on.
In my previous post I noted [...]]]></description>
			<content:encoded><![CDATA[<p>This years JavaOne was filled with JSF, Ajax and even more the combination of the two. On the Pavilion several commmercial vendors were selling their ajax enriched jsf components. The blueprint team showed us the petstore. Oracle showed us how to build custom ajax enabled jsf components. And so on.</p>
<p>In my previous post I noted the Google Web Toolkit hadn&#8217;t landed yet completely in my java wasted brain. After four days of conference my brain is still completely wasted with java (two very positive exceptions, I saw the Ruby on Rails framework running on a java VM using JRuby! and I saw some really Groovy things a java programmer can only dream about) but I found some spare time to play with google&#8217;s new toy. While the conference only had one presentation about GWT (compare it with all those ajax and jsf sessions) the rumours/facts (find out yourself) on the internet are spreading. And somehow nobody seems to write something really interesting about JSF.</p>
<p>Is there a reason. Yes ofcourse. First it is the hype. GWT is new so GWT should be cool! Second, al the Ajax/JSF things are actually well known already (otherwise it would be impossible to have such a huge coverage on the conference). But between the rumours/facts I could not find out when to use JSF and when to use GWT?</p>
<p>Using GWT you will run into two major drawbacks. The amount of javascript that need to be downloaded will increase (lineair?) with the complexity of the interface. The KitchenSink example application is relative simple but already needs a 100kb of (compiled/generated) code. The other drawback is that your UI is fully (and I really mean fully) decoupled from your server logic. It&#8217;s like a Swing or Flash app making RPC calls. And altough very beautiful (designwise) not always as handy and productive as wanted.</p>
<p>GWT also has a lot of advantages. And they are obvious. No more javascript hackery. No more browser problems. All is taken care of by the toolkit. Another major advantage will be the usage of bandwidth after the application has been loaded. It will be minimized to the necessary RPC calls in order to add business functionality to the application. Which at the end will increase user experience. Using this approach state can be managed on the client (and/or in the database). And finally, the support for browser history works wonderful well.</p>
<p>But the biggest advantage is the fact it is a one stop shop. And here the biggest disadvantage of JSF had been mentioned. JSF is just like GWT (and Echo2 and several others) a component oriented approach for building rich web applications but it will allow you to combine several techniques together. It gives you the possibility to mix javascript library x with library y. It&#8217;s like combining Swing and SWT on the desktop. Javascript libraries are becoming the assembly languages of the web. And combining assembly languages does not feel right. (By the way, using Tapestry or Wicket this same problem can occur)</p>
<p>So when to use JSF and when to use GWT? I can&#8217;t answer this question. When all those beautiful JSF components provided by one and the same component vendor are being used and nothing more (not even self written ones!) JSF still seems a good choice. But if you can accept the drawbacks of GWT, I probably would recommend to at least investigate the possibilities GWT is opening up. (Or take a serious look at Echo2!)</p>
<p> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.bloggingaboutjava.org/2006/05/javaone2006-to-gwt-or-to-jsf/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Standards like JSR168 and JSR127 make your life easy, or &#8230;.</title>
		<link>http://www.bloggingaboutjava.org/2006/05/standards-like-jsr168-and-jsr127-make-your-life-easy-or/</link>
		<comments>http://www.bloggingaboutjava.org/2006/05/standards-like-jsr168-and-jsr127-make-your-life-easy-or/#comments</comments>
		<pubDate>Wed, 17 May 2006 13:39:19 +0000</pubDate>
		<dc:creator>Erik Pronk</dc:creator>
		
		<category><![CDATA[Frustrations]]></category>

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

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

		<guid isPermaLink="false">http://www.bloggingaboutjava.org/cms/wordpress/2006/05/standards-like-jsr168-and-jsr127-make-your-life-easy-or/</guid>
		<description><![CDATA[So what if you want to develop a rich portal application, let’s use the standards!
Standards are their to make live easy for you, right…..?  
I want to create a Portal application with a rich and easy to build interface, this leads me to the following standards JSR168, the portal standard and JSR127 the JavaServer Faces specification. [...]]]></description>
			<content:encoded><![CDATA[<p>So what if you want to develop a rich portal application, let’s use the standards!<br />
Standards are their to make live easy for you, right…..?  <img alt="JCP" src="http://www.jcp.org/images/common/masthead.gif" align="middle" /></p>
<p>I want to create a Portal application with a rich and easy to build interface, this leads me to the following standards JSR168, the portal standard and JSR127 the JavaServer Faces specification. First of all I want to find a portal that supports this standard and does not provide to much overhead. This lead me to the JSR168 Portal Jetspeed (<a href="http://portals.apache.org/jetspeed-1/">http://portals.apache.org/jetspeed-1/</a>). Jetspeed 1 also provides support for JSR168 under the codename Jetspeed Fusion.<br />
Yes there are other alternatives like Exo and Liferay that do the job but these provide to much overhead for my “simple” requirementSo the most important step is done I found myself a suitable OpenSource Portal with JSR168 support. Now we need to install it and as always Apache provides a out of the box solution including Jetspeed and Tomcat 5.0.3. The next step should be easy we need to create a rich JSR168 portlet application using JSF technology. In my opinion this should be as simple as 1.2.3. We just need to include the JSF jar into your project and start developing the portlet following the JSR168 API. After that we can just create a war-file which will be automatically deployed by Jetspeed.How wrong can one be, standards are not their to work with each other out of the box one must create a bridge for these two standards to work together. In this case I need to use the Apache Portals Bridges project ( <a href="http://portals.apache.org/bridges/">http://portals.apache.org/bridges/</a> ) for these two standards to work together. The bridge consists of a generic Portlet-class which forwards your actions according to your configuration in the portlet.xml. All in all it’s not the work that triggers me but the bridging method, is this also based on any standards?? Or will we have to build bridges to support bridges?? So why do we need a non-standard bridge, which by the way impacts your flexibility to code portlets, to couple two standards? Aren’t both standards all about presentation? And why isn’t the JSF standard not supported by JSR-168 (or the other way around)? JSR-286 seems to make some promises about a tighter integration but besides to late, it is still a long way to go.So, until then we’re struck with bridges and our history has learnt us how dangerous bridges can be <img src='http://www.bloggingaboutjava.org/cms/wordpress2/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br />
  <a href="http://www.civeng.carleton.ca/Exhibits/Tacoma_Narrows/TacomaNarrowsBridge.mpg"><img alt="The Tacoma Narrows Bridge" src="http://www.enm.bris.ac.uk/anm/tacoma/tac07.gif" align="middle" /></a><strong><br />
 </strong><strong> </strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.bloggingaboutjava.org/2006/05/standards-like-jsr168-and-jsr127-make-your-life-easy-or/feed/</wfw:commentRss>
<enclosure url="http://www.civeng.carleton.ca/Exhibits/Tacoma_Narrows/TacomaNarrowsBridge.mpg" length="700402" type="video/mpeg" />
		</item>
	</channel>
</rss>
