05 November 2009

Nearly missed OpenFest


A colleague of mine sent this link today http://openfest.org/. I've missed it last year and I am not sure if I can make it this year again, but yet there seem to be some interesting things to see and hear.

The program is available here. A couple of things caught my eye : a Flex presentation, a practical comparison between different DB engines, Open source SOA presentation etc.

There is also a sale discount on O'Reilly books, check the full list here.

It'd be a good conference to visit.

01 November 2009

Java2Days (Day 2, morning)

Spring and JBPM

The presenter on this topic was Josh Long, a well respected speaker, author and entrepreneur, a lead engineer of the SpingSpurce dm Server.

"… a UML process state is typically displayed in as a transaction in a UML activity diagram …"

Josh started by explaining that process state should not be kept as a property in the entity beans of an application. The reason they do not belong there is that they do not describe our business objects, but rather they describe the state of the business process and thus they belong to a higher (or just different) layer of our code.

"… BPM was, as you might suspect, not originally a technological discipline …"

Another interesting thought was that BPM is (or at least should be) a very good way of collaborating between developers and business analysts.

"… anything that has more than one step could be a business process"

One of the most interesting thoughts was that BPM is best at just keeping the transactional state and more importantly it allows temporal decoupling. This last statement is a food for thought – if a BPM does not in fact work that way it might be poorly designed or not suitable at all. Also one other thing mentioned is

"… the state of BPM today is broken …"

Why? No worklist for each actor in the UML diagram for instance.

".NET also uses Windows Workflow – if it is good enough for them it is good enough for us, right?"

There are also many open source solutions : Spring has an extension called Spring Workflow and jBPM is a part of JBoss's EAP. JBPM is very lightweight, and as easy to you as dropping a WAR file. It could also be used as a Hibernate transactional source.

If you are interested in this topic try reading Josh Long's article.

Also some examples here:

http://jboss.org/jbossjbpm

http://workflowpatterns.com

J2EE portability

As much as Alexis Moussine-Pouchkine (a member of the Glassfish team and a person with over 10 years of work experience at Sun Microsystems) tried to make this a "general" presentation it still remained a very hard-core Glassfish propaganda. I must say he had some interesting stories about porting different J2EE applications and, as one might suspect, the task was not as trivial as it sounded. Many issues could come up such as:

  • Packageing and classloader issues – you probably know there is no strict policy on how each application server loads its packages and this might prove to be a problem whenever you need to load your packages in a certain order.
  • Shared libraries location and usage
  • Manifest description – most servers actually ignore any dependencies described in the MANIFEST.MF file
  • Specific to each application server optimizations are not portable at all

A very interesting tool that might help you understand the level of portability of your application is the Java EE Verifier (a part of the Glassfish distribution, but might be used separately). It is extremely useful especially when there is a very good continuous integration strategy as it runs checks and produces reports with warnings. It might also be run as an ANT task and be used the same way FindBugs is used for instance. Yet another thing in my TO-CHECK list.

Advanced Apache Wicket

My personal favorite speaker in this conference – Andrew Lombardi, whose professional career and experience speaks a lot for himself, presented some hands-on experience using the Apache Wicket technology. Unfortunately I was not able to visit his first presentation (which was going through the basics of Apache Wicket) and I was not able to grasp much of what he really wanted to show. Nevertheless he was able to quickly convince me that in an universe of UI frameworks Apache Wicket is worth giving a try.

"… jetty, log4j, apache wicket – all that is required to use Apache Wicket"

Simplicity being the main aim the framework requires nothing other or fancy to run than a simple servlet container and some logging utility. What made a very bad impression to me personally was the fact that the HTML files need to be inside of the binary / source code (no physical separation between the two). I am not sure if this can't be avoided though.

Now the good part comes. Apache Wicket is a lot like SWING (or SWT for that matter) – very easy to use, especially if you have some experience with the former two technologies.

" … see Wicket is SIMPLE … "

Very easy (or at least this is how it looked) 3rd party integration (such as SWF files, though no other technology was actually presented other than that). Another very interesting thing is that Wicket also provides its own unit testing framework, which is a great relief for every team that considers quality a very important goal. Be careful though – executing these tests is not actually taking place in the same renderer, but instead in another test renderer. So if you want to be 100% sure you would still need some way to make functional (and probably automated) tests. But as Andrew said :

"… if you worry about having 98% of test coverage … you probably have other problems to worry about …"

And finally if you are interested you can visit http://wicketbyexample.com