18 november 2009

Devoxx 2009 - Day 3: the key notes

The key notes... usually the ideal moment to update my blog... This morning was no exception. The first part was reserved to Stephan Janssen himself, to talk about the conference itself and to present Parleys 3.0. Nice, especially the sub-domains and branding possibilities.

Then the mike was passed to Oracle, to talk about the platform of the future. Not really interesting or fancy stuff. But 1 remarkable thing: Since Sun has become Oracle, OSGi is more prominently present in Java... For the rest, former BEA software (WebLogic) was used for the demo. No fancy JDeveloper demo's like the previous years. Their talk was really an extension of their booth downstairs: boring and nothing to offer... Yes, this was the right time to update my blog, finalizing my post on yesterday's talk about Java EE 6.

Speaking of JEE6... The next speaker was Roberto Chinnici, spec lead of JEE6. As expected, he had nothing new to tell... Again. I already heard all the interesting stuff yesterday.

And finally, there was some space and time left for the toys department: Flash, Flex, etc. Or how can you make your colleague sweat to finalize his demo in time? OK, it looks all nice and it all integrates well (talking about Photoshop, Illustrator and Catalyst). But, doesn't this all smell like vendor lockin?

Anyway, these 2 hours were excellent to consume most of my laptop's battery for the rest of the day... But luckily I had a connection during these 2 hours. The rest of the day I was unable to reach my blog. That's why this update (of this morning) is writting at nearly 9 o'clock in the evening...

I expect a lot more from tomorrow's keynote by Ivar Jacobson. I think it is really amazing that a man almost the age of my dad is still so much involved in the IT business. And he knows what he is talking about, believe me! I saw him last year. That's way I'm so eager to see him again.

21:04 Gepost door There's more to life than what you see through windows in Javapolis | Permalink | Commentaren (0) | Tags: devoxx09, keynote |  Facebook |

Devoxx 2009 - Day 2: Java EE 6 platform

After 2 subsequent years of getting the same information on Java EE6, it was about time to get some real information on the evolution of Java EE. And with a different speaker than the past 2 years it was more likely to get a different story. After all, Roberto Chinnici wasn't the most interesting speaker to me (and he's doing a keynote on JEE 6 :-?).

But as the 2 speakers said in the beginning, JEE 6 was very close to being delivered (which means that all the reference implementations of the specs have been developed as well), so we were definitely about to get something new here...

And sure we did! The presentation was a mix of slides and demo's with real code for each topic of the presentation:

  • JPA 2.0
  • servlet 3.0
  • EJB 3.1
  • JSF 2.0
  • bean validation 1.0
  • JAX-RS 1.1

The entire demo is based on Glassfish, which is the platform on which all the reference implementations were built. Glassfish has modularity built in via OSGi, but it is encapsulated into HK2, to make it more extensible. Yes, former Sun was never keen on OSGi, but there was no escaping since so many main players in the Java community use OSGi (with IM in the first place, but also SpringSource).

Configuration in Java EE is more and more optional. All the specs make extensive use of annotations, with better default values. Hope they keep it to a usable level (and avoid annotation hell...).

The Java EE spec as a whole is around since 2001 (starting with J2EE 1.2, built upon the concepts of Java 2).  Back then there were about 10 specs; the newest JEE 6 counts 27 different specs.  Some concepts will be pruned (marked obsolete, might disappear in JEE7): CMP entity beans (replaced by JPA), JAX-RPC (replaced by JAX-WS), JAX-R (XML-registries) and JSR-88 (application deployment).

The major change in the Java EE specification is that a software vendor no longer needs to implement the full specification to be Java EE compliant. The spec allows the definition of profiles for specific (development) domains. The first profile that is defined, is the web profile. This profile is a subset of the full Java EE specification. To be JEE Web Profile compliant, you need to implement the following specs:

  • jsf
  • servlet
  • jsp
  • el
  • jstl
  • ejb lite
  • managed beans
  • interceptors
  • jta
  • jpa
  • bean validation
  • jcdi
  • @inject

This means the e.g. Tomcat can be extended to meet the web profile specs to be JEE 6 compliant. Apart from the typical web specifications, the EJB Lite spec should be implemented. This means the following:

  • local session beans
  • injection
  • cmt/bmt
  • interceptors
  • security

These EJB-related specs are not required in the web profile:

  • message driven beans,
  • rmi/iiop
  • remote interface

Managed beans

New in the Java EE spec is the concept of managed beans. These are container managed POJO's, with support for life cycle management, injection of resources and interceptors. It is a lightweight component model. Sounds familiar. I think I heard something like this about 4 years ago. It was called "Spring" or something... :-) Anyway, the concept of managed beans is re-used for EJB's (= a managed bean with transaction support, security and remotely invocable).

Lifecycle management can be achieved by specifying PostConstruct and PreDestroy annotations to certain methods. There is no more need for a formal constructor; let the beans be created by the container and add lifecycle method to invoke you own logic.

Java Persistence API (JPA)

JPA: evolves separately from EJB spec now. New features:
richer mapping

Querying: JPQL
non-polymorphic querying
joins in subqueries
extra keywords for new functions like ABS, etc.
new locking methods, not only optimistic, also pessimistic, lock, lock and read, read then lock
criteria-API: type safe way for querying data
caching added in persistence
not in the JEE spec, but added cache API because all JEE platform vendors have a second level cache. Annotation @cacheable and api methods to check if data is in the cache.

Servlet API

In the servlet API the remarkable thing is that the web.xml becomes optional/obsolete. Annotations take over the role of configuration: @webservlet.

Pluggability of third-party servlets and web frameworks is improved by providing web-fragment XML-files.

Other new stuff in the servlet API:

  • static resources
  • config api
  • file upload
  • servlet security annotation


EJB 3.1

The EJB specification is extended with interceptors, the AOP-way (like - again - in SpringAOP). This means that you can easily plug-in security, logging or performance measuring components.

Local & remote interfaces become optional (only the bean itself with annotations and default all methods are public and locally invocable). Just specify @EJB and you automatically assume a stateless session bean with local invocation and all the (public) methods can be reached.

Asynchronous invocation has been added to EJB's. This means that you don't have to apply JMS for asynchronous calls. JMS is meant for asynchronous message delivery, not method invocation. With asynchronous invocation you can do a fire and forget of a method (if you're not expecting a result of the invocation, off course). Don't start spawning your own threads, because they are not managed by the container!

The timer service has be modified with a cron-likke syntax. The entire principle of the timer got its inspiration from crontab. This can simply be done by adding a @schedule annotation (with the right parameters) to a method of your stateless session bean.

And finally, on the EJB 3.1 spec, there is the singleton bean. By specifying the @singleton annotation to your bean class, you can be absolutely sure that there will be exactly 1 instance of your bean class present in your container. This can e.g. be useful for caching.

Java Server Faces (JSF)

I've never quite understood much of Java Server Faces... And the same goes for the novelties introduced in this new spec... Anyway, I try to recap the key features in the new spec. The new JSF spec can be run indepently of the latest servlet spec. It can runb on Servlet 2.5 but then it requires a web.xml config file (won't work with tghe typical @nnotations).

JSF has always been a rather healthy concept for the component market (re-usable web components) and had good IDE support. But writing your own components was pretty hard. This has been improved in JSF 2.0.

New is also the support for AJAX in JSF. THis can be done in 2 different ways: either via javascript or via a specific AJAX-tag.

Other new stuff in JSF:

  • bookmarkable urls
  • templating
  • project stages (dev/test/prod)

The reference implementation of the new JSF spec is available in Mojarra. It can be used in any runtime (could be tomcat or whatever server).

Bean validation

The bean validation is a new spec in the Java EE platform. It offers a mechanism for validations (hence the name :-)), in a constrain once, validate anywhere way. Validations can be added to properties via annotations and these can be checked on all parts of the application: frontend, mid-tier and backend. A standard number of validation rules are available: not null, length check, range check, ... But you can easily add your own custom validations.

JAX-RS 1.1

The JAX-RS spec is available since mid 2008, but it has has some (minor) changes to fully integrate with Java EE6 (and EJB in particular). As far as REST-support is concerned, there wasn't much new here compared to the talk I attended last year.

This was a very interesting talk. It finally showed something tangible compared to the talks of the JEE6 spec lead the last  years... Besides, at this very moment, he (Roberto Chinnici) is doing a key note on JEE 6. Again: nothing new here (espacially not after I attended this JEE 6 university session).

10:45 Gepost door There's more to life than what you see through windows in Javapolis | Permalink | Commentaren (0) | Tags: devoxx09, java ee 6 |  Facebook |

17 november 2009

devoxx 2009 - yes we have a world crisis going on

I already wrote here that this year's Devoxx is not sold out, most likely due to the crisis. But there are other symptoms of the world crisis currently going on:

  • there are approx. 1/3 less companies in the exhibition hall
  • gadgets? what gadgets? Not much to collect here. Just some product flyers, pens, ... Not much more. Not even a Java t-shirt at the Sun-booth (because there IS NO Sun booth). Will never be a Sun booth any more. The Oracle booth takes a lot of space, but doesn't have much to offer. IBM never gave a lot of gadgets away. And tell me honestly, would you really walk across the street, beach or fitness center in a t-shirt with "I love Spring" written on it?
  • No Parleys magazine. The past 2 years we received a glossy magazine with interview, blog excerpts and interesting Java related news. Not this year: probably too expensive.
  • The breakfast: not much, really. Better eat at home (or in your hotel) first!
  • I haven't seen any beer tap in the exhibition hall... Or didn't I look around good enough?

We can only hope that things get really better next year, because collecting goodies IS part of a conference like this...

16:23 Gepost door There's more to life than what you see through windows in Javapolis | Permalink | Commentaren (0) | Tags: crisis, devoxx09 |  Facebook |

16 november 2009

Devoxx 2009 - my program for day 2

After 2 years of attending a talk of Roberto Chinnici on Java EE6 (with nothing new last year), I hope that the talk of Antonio Gonclaves and Alexis Moussine-Pouchkine will give us some new insights in the JEE 6 platform. I will certainly start my day witgh that talk. If that isn't satisfying, I guess I will move to the hallway upstairs and pick some available bandwidth from the wireless network for writing on this blog. Anyway, this talk can be considered as a barometer for the keynote of Roberto Chinnici on Wednesday...

The afternoon will be SOA-time again. By elimination: Java FX is not really applicable to me, neither is Business Intelligence or Hibernate (I hope that ain't cursing...). With the battery of my laptop fully charged, I will have a connection in no time when things get  boring, or on the contrary, super-interesting that I really have to write it on my blog so I remember it...

23:08 Gepost door There's more to life than what you see through windows in Javapolis | Permalink | Commentaren (0) | Tags: devoxx09 |  Facebook |

Devoxx 2009 - not sold out!

It was already clear, because there were no "Devoxx is sold out!" mails sent the preceeding weeks. There was still a possibility to pay the entrance fee at the entrance. And finally the conference floor was far less crowdy than usually. Not that I feel sorry about the fact that you don't have to fight for food, but it is clear that crisis has its impact on training budgets... Additionally, now that Sun and Oracle have merged (or do I have to say: "now that Oracle "eclipsed" Sun"?), there is only 1 company present, instead of 2. This also means that less employees of the merged company can be present... Less gadgets to collect? Anyway, I will definitely miss the Sun/Java t-shirts...

22:56 Gepost door There's more to life than what you see through windows in Javapolis | Permalink | Commentaren (0) | Tags: crisis, devoxx09, not sold out |  Facebook |

Devoxx 2009 - Day 1: SOA (openESB & openSSO)

The afternoon of day 1 brought me to room 9 for a talk of Sang Shin on SOA - as in Service Oriented Architecture, not the Dutch abbreviation of ugly deseases Schamen.

The presentation was very well built up, starting from the basics with SOAP and WSDL definition, over BPEL. JBI, Java Business Integration was the next topic: a standard way to integrate applications in Java. To pick the quote of his slide: JBI is to application integration as Java EE is to enterprise applications. It is a standard way for EAI, whereas(traditional) EAI is proprietary technology and leads to vendor lockin. JBI is a container of containers. Services can either be locally or remote. Communication is based on BPEL.


  • Service Engines
    These provide access to a certain type of backend
    • BPEL
    • Java
    • XSLT
    • SQL
    • ETL-systems (Extract/Transform/Load)
    • ...
  • Binding components
    These provide connectivity to and from different protocols (even proprietary)
    • HTTP
    • SMTP
    • FTP
    • JMS
    • IMS
    • ...
  • normalized message router
    A high-performant in-memory routing mechanism

Each service engine and binding component has its own WSDL document, whether they are locally or remotely deployed.

OpenESB is an enterprise service bus with JBI as foundation. There is OpenESB and there is GlassfishESB. OpenESB is open source and forms the foundation of the commercial product, GlassfishESB. The difference is that OpenESB by default comes with a limited number of service engines and binding components, whereas GlassfishESB comes with the whole scala of available services and bindings, plus Netbeans development environment AND support (that is mainly what companies want to pay for Knipogen). Even though OpenESB comes with a limited number of service engines and binding components, the full set is easily downloadable from http://www.open-esb.dev.net . The same goes for Netbeans: that can easily be downloaded from http://www.netbeans.org .

As far as Netbeans support for BPEL and the likes is concerned, this looks really great! Sang Shin did a quick demo of a Hello World! service in Netbeans, beginning with the XSD definition for the SOAP WSDL, generate the abstract WSDL (without the port definitions), visual composition of the BPEL orchestration and finally binding the components and service engines together with CASA, the Composite Application Service Assembly Editor. Most of this was done by a click of the mouse, in Netbeans, without any code written. Really strong stuff! The rest of the demo's of Sang Shin were all available on his web site, www.javapassion.com where Sang posts a large number of exercises and course material for download.

Before the break the were 2 quickies on intelligent pattern matching (IEP), which can be interesting to detect patterns in malicious behavior, and EDM, a data mashup application which allows you to query data from different (remote) sources in 1 result set.

After the break, Sang talked about OpenSSO, the single signon and federated access system. This was not much new to me, because I attended 2 sessions dedicated to OpenSSO and SAML 2 years ago. The 1 thing to remember though is that OpenSSO is also based on Glassfish. They can really do anything with Glassfish, I guess they even use it to make coffee...Lachen

22:48 Gepost door There's more to life than what you see through windows in Javapolis | Permalink | Commentaren (0) | Tags: soa, devoxx09, opensso, openesb |  Facebook |

Devoxx 2009 - Day 1: Generics

I arrived "just in time" at Metropolis this morning to pick up my conference backpack, grab a breakfast and rush into the room where my colleagues reserved a seat for me: room 8, for the talk on Generics of Eric Steegmans. Just in time, means that I had still had plenty of time to have my breakfast and do a little chat with my colleagues before the talk started.

The talk started with a few "growing pains": it was the first talk of the week and after less than 5 minutes the entire screen went blank... Less than 15 minutes later prof. Steegmans had to switch microphones, because he went "silent"... The rest of the talk however went flawless.

The talk itself then. As someone who is not a fulltime Java developer (and with a "company-standard" runtime environment that is still stuck at Java 1.4.2 - yes they still exist, supported by Big Blue), this was an interesting talk. Not only because it gave a good recap on the principles of generics, but also because Eric compared the generics implementation of Java with e.g. C#.

Interesting to know was the fact that instanceof and array instantiations of generic types is not possible, that you need wildcards to be able to apply polymorphism (in 2 ways: extends and super) and the restrictions of generics (read-only for ? extends T, write-only for ? super T).

Apparently this was not all common knowledge to everyone, because during this session I didn't see many people leaving the room (which is very common if a session is not interesting). Or was this because there were no gadgets to collect yet???

11:47 Gepost door There's more to life than what you see through windows in Javapolis | Permalink | Commentaren (0) | Tags: devoxx09, generics |  Facebook |