I attended the first day of the JavaPolis 2007 conference in Antwerp today, after travelling from London via Eurostar, with the VYRE senior developers (Albert, Sindri, Mindaugas, and H.Stefan). We went to JavaPolis last year too, and really enjoyed it, so this is becoming a definite tradition.
The keynote speaker this year was James Gosling, the so called "father of Java". I was really looking forward to seeing the legendary author of the Java programming language, writer of the first compiler and virtual machine, in action. He took the stage wearing a T-shirt and jeans, with his trademark grey beard and big glasses.
His talk was a "tour of the Java landscape". He spoke about the fact that Java was all around us, and most of the time we don't even know about it. Some of the examples he mentioned were sensor grids on bridges in the US, moisture sensors used in vineries in the Napa valley, controllers at the CERN particle physics lab in Switzerland, and the London Oyster cards being Java SmartCards.
He also spent some time talking about JavaFX (which is Sun's answer to Adobe's Flex/AIR and Microsoft's Silverlight), and announced the release of Netbeans 6, Sun's IDE.
Towards the ends he took questions from the audience, but none of the questions or answers are really worth mentioning here.
I have to admit that I thought Gosling was far from being an impressive speaker. He digressed quite often, and seemed overly preoccupied with proud statements about Java being everywhere, without really showing us anything cool or interesting.
His laptop was running Solaris 10, and his slides were handmade using Java 2D. Quite messy and unimpressive. He should have at least hired a designer to go through his presentation, because honestly it looked like s***.
Following Gosling were a couple of demos from Sun. Now this is when it got really embarrassing for Sun. First up, to show us the new and powerful plugin architecture of NetBeans 6.0, a developer from Jasper Reports showed us the Jasper designer as a NetBeans plugin. First of all, his demo was really bad, all he did was tweak some parameters without explaining what they were, and then generate a pie chart with so many sectors that I could not read any of the labels. To make things really interesting, he was chewing gum through his demo, which made understanding his English a bit hard. When Gosling realised that this demo wasn't what he thought it was, he quickly cut it short. Good idea.
Second demo was supposed to really motivate the audience by showing how magnificent Java technology is and how it can be used outside the regular realm. This was done by a team of two, who's job description sounds really good: write cool stuff in Java and then travel the world showing it off. Apparently they were going to show us how JavaFX could be used to control touch screens, but they did not have time to finish that demo, so instead they just did it without the touch screen! The demo was basically a few images scattered around the screen, and I must say the audience wasn't exactly impressed as they demonstrated how these images could be moved, scaled, and rotated. The second part of their demo was using sunspots (Java based micro controllers) to control the movements of a small robot. The sunspots used had embedded gyroscopes and could therefore detect acceleration and direction. So when the Java evangelist raised his hand, the robot raised its hand (albeit quite a few seconds later). That was basically it (they did a similarly unimpressive sunspot demo last year at JavaPolis).
The main issue for me here was that no code was shown. That made a bad demo worse.
But things did get a lot better later in the day.
Next I went to see Bob Lee ("Crazy Bob") from Google give a presentation about Guice (pronounced "juice"), Google's lightweight dependency injection framework. After seeing this presentation, I'm definitely going to run some tests on Guice. I use the Spring framework a lot, and it is great for many things. However one of the things that annoys me a bit with Spring is the huge application context XML files, and the fact that I often end up storing configuration parameters inside the same XML file that declares injected dependencies. Guice seems to alleviate that headache nicely. Dependency injection is defined in pure Java code, making good use of Java 1.5 annotations. I'll post my findings on Guice here once I have had some time to play around with it.
David Nuescheler gave an interesting talk about "AJAX meets JCR". David is the spec lead of both JSR-170 and JSR-283, so he speaks with authority on the JCR subject. I was quite excited to see him speak, since at VYRE have been doing some research about using the Java Content Repository (JCR) specification to move away from our proprietary data model. We've been building web services (SOAP and REST) on top of JCR (we've used the JackRabbit implementation so far), and client APIs in JavaScript, ActionScript, etc. David's talk focused mainly on a projects being incubated by Apache, called Sling. Sling basically provides REST based web services on top of a JCR. David showed JavaScript API (that he called microJAX) for reading content from a JCR (writing was done using HTTP POST), and also handles all the heavy lifting (especially regarding security). He then installed a JCR repository, pumped in some content via WebDAV, and created a JCR-based WebLog in 15 minutes. Very cool stuff, and I recommend you monitor the Apache Sling project closely.
What was also interesting was the points that David made about the JCR standard. In his words, JCR combines the best of the database and file system worlds, and adds a layer of services on top of that (versioning, full-text search, multivalued properties, etc.). He went on to say "I will never use a relational db again". Quite a bold statement, but after using JCR for a few months now, I tend to agree that the data structures of my applications are now designed on JCR node types rather than as tables in the database.
I also saw IBM's Thomas Schaeck's talk about Web 2.0 Collaboration and Social Networking, a topic quite close to my heart these days. He talked about some of the collaboration issues that companies face today, such as hidden information being stored where only a few can benefit from it (file systems, email, etc.), lack of ways to discover people with certain skills within the organisation, and people simply not sharing information and knowledge they possess. He then went on describing the aspects of Web 2.0 that enterprises will benefit from, such as profile management, communities, media sharing, blogging, personalisation, mashups, feeds and services.
In my view, the social networking part of Web 2.0 (profiles, contacts, relationships) with tagging is the glue that binds all the other patterns (blogging, wikis, etc.) together, with search (with saved filters) being the primary interface to all content. IBM is obviously taking Web 2.0 in the enterprise seriously, but their solutions seem a bit fragmented and disjointed, and I got the feeling that to install an Enterprise 2.0 solution from IBM you would need lots of servers with lots of Websphere app servers and portals running many different applications, which means lots of hassle and lots of money. I think we need an application that encompasses what Enterprise 2.0 is all about, and is easy to set up and maintain. It looks like there isn't one on the market at the moment, so there may be a big opportunity there.
I fell asleep at the JSR-318 (Enterprise JavaBeans 3.1) seminar, not because it was that boring, but mainly because I was simply really tired. I then saw the "Future of Computing" panel with big guns like James Gosling, Neal Gafter, Joshua Bloch, and Martin Odersky. Unfortunately the panel was badly moderated in my view, and the discussions never really got off. Nothing exiting really came up, which is disappointing considering the names that were gathered for the panel.
Anyway, overall a great day at JavaPolis, lots of interesting people as always, followed by quality Belgian beer in the evening.