Last year I wrote (in Bulgarian) that the Java2Days conference was the best conference that I have been to. Well, this had been the only conference where I had gone at that time. This year the situations is nearly the same – I have not gone to any other conference yet (hopefully this will change for good in a month), but now I can say that I am impressed. The content this edition is great so far.
For those of my (ten) readers that were not there, there are three tiers going on in parallel. I must confess that for some of the slots I had hard times to decide where I would like to go, but sometimes life is harsh. 🙂
So, the conference started with a half hour delay and an improvised key note from the Oracle sales director for Bulgaria, Serbia and Montenegro. The only thing that I liked about the guy was that he was speaking half Bulgarian half Serbian language, which is always great fun for me (I pretend that I speak Serbian too :-)).
The first real session that I attended was Alex Moussine Pouchkine’s “Why and how Java EE became popular”. I knew Alex from the last Java2Days, from his blog and of course from the Glassfish podcast. His presentation was perfect for a developer who was interested in what is new in Java EE 6. However, my colleague and friend Vlado Pavlov asked me: “did he explain why and how”? And I realized that even though the presentation was great for me and my colleagues, it was not following too much its title. Anyway, I think the Bulgarian community needed this introduction for many reasons. And it was perfect that the conference, or at least one of its tiers, started with it.
Next I half-visited Spring Summer session (didn’t get too much of it as I tuned in right before its end) and then visited Spring integration. I realized why I like Spring so much – it integrates very well with merely everything. It’s so easy. If you wish, you can keep your Java code independent of any technology/product specific packages and classes and use XML. Or otherwise you can code everything by yourself. With the help of the tooling (and even without it), it is a piece of cake to follow both approaches. I still don’t understand the Java EE evangelists that keep polluting the web with claims that Spring is all about XML. Disclaimer: Spring integration does not have anything to do with integrating Spring with anything. It helps you integrate your code with other systems through different channels.
The next session was the most impressive of the day. Not that the presenter was perfect as such, but it was the content – Pseudo Functional Domain Specific Languages in Java. The guy (BTW coming from Macedonia) presented his work (still in progress) on a Java library that uses static inserts, generics, dynamic proxies and other language and JDK features that can make writing Java seem like writing functional coding (think about Lisp and lambdas). This does not only save a lot of boilerplate, but also makes the code look more elegant. The presenter (Nikolce Mihajlovski is his name) was quite shy and said that he is not yet ready to publish his work, though he will do it soon.
After the lunch break I went to the Apache Wicket session. It was presented by Andrew Lombardi, who was here also last year. He is a great presenter, very entertaining speaker and even a developer (Wicket contributor). He had a very interesting approach to demonstrate Java code – everything was recorded in a video clip. From creating the classes, to writing their content, the tests, running and displaying the result in the browser. However, the guy was very ill disposed to JSF. Before JSF 2 I would agree with him, but now it is quite better. When you want to implement a JSF component, you can do it even easier than in Wicket (at least you don’t have to create a tone of anonymous inner classes). The xhtml code and all the special tags are not quite different from the HTML tags from the designer’s perspective. And Andrew mentioned that HTML should be written by designers. But anyway, it was a great presentation which I hope persuaded a lot of people to come to the bright side of the [web app development] world :-). And he also pointed wicket’s cons…
In the next slot my former colleague Vassil Popovski talked about developing RESTful web services in Java. This is a very important topic, because in my opinion the Java community should leave the WS-* bloat to Microsoft and other mastodons who use their SOAP implementations as apology for lacking integration with the REST of the world. My opinion is that REST is a very simple topic, which only sounds complex. As Vasko mentioned: the specifications sounds like an article in a popular blog rather than an ivory tower paper.
The last session in the agenda (and not in the day hopefully) that I attended was Reza Rahman’s Testing Java EE Applications. Testing and continuous integration is one of my topics of interest so I was wondering how it is done in the Java EE world, where the dependency on containers and the infrastructure they provide seems huge. I was even more intrigued because I am just reading a book on Java EE 6 and alongside all the simplifications there (even there is an EJB container which can be embedded in the client JVM) I felt very disappointed by the fact that it is not possible (or at least for me) to inject EJB’s inside JUnit tests. At the same time you can inject EJBs virtually in every class managed by a Java EE container. And on top of that my experience with Spring has taught me that you can inject everything everywhere. Well, Reza showed us that Java EE can also do it, but not through the specification. JBoss’s Arquillian library comes to help here. And not only here, but in all the cases where you want to test Java EE components (Servlets, JSF, EJBs, JPA, etc.).
Finally the toughest listeners watched Arun Gupta‘s session on bringing Java EE 6 to the cloud. He again scratched the surface of what is new in Java EE 6. The presented four different cloud solutions (Amazon amongst them, I did not keep notes, so I forgot the rest). And he showed how you can install database and several app server instance (Oracle Glassfish of course) on each one of them. He described the monitoring, management and deployment capabilities and finished with the pricing. One of the proposals from Arun’s presentation had a very appealing developer (free) edition, but I forgot which it was. Follow this blog, I promise to publish it tomorrow. Finally Arun promised that Java EE 7 will stress on making the Java enterprise platform more suitable for cloud computing. We’ll see. According to the presentation, we’ll wait until 2012 to find out.
So, this was the first day. Tomorrow I’ll surely visit Arun’s tools show (no ppt, just NetBeans and Glassfish), Vasko Dichev’s Scala session, Vlado Pavlov’s JRuby memory and thread issues (Ruby has also scalability issue, but this is another topic), JavaOne’s star OSGi Migration headaches and finally we’ll all take a look inside the JCP together with Reza Rahman 🙂