More highlights of JavaPolis 2005
14 and 15 December of last year I got the chance to visit the first and second conference day at Javapolis 2005. And although (or maybe because) I got flooded with input, I enjoyed it a lot.I’m not (yet) very familiar with all the new frameworks, and the way Java is evolving, but got a very nice taste of it. Lots of interesting speakers, at times it was very hard to choose which one to go see. An overview:
The first thing (after the welcome speech) I went to see was the â€œMore Java puzzlesâ€? presentation by Neal Gafter and Joshua Bloch.
They showed how, if your not careful, very logical looking code can seem to behave very irrational. And why its still logical behavior. They showed the effect of mixed mode arithmetic, String concatenation and the affect of doing more than 1 assignment at a time. And it wasn’t easy. For every peace of code they gave 4 possible outcomes and the audience was asked to raise there hands for a, b, c or d, the audience (me included) was merely wrong, all the time.
The second presentation I saw was by Mikael Nerde from Sony Ericsson. And although it wasn’t a very programmer oriented presentation (mostly facts and figures) , I was happy to hear that 78% of all mobile phones sold worldwide, are Java enabled.And for us programmers Ericsson had to say that they think mobile web services and portals, unlocking live data (like weather, news, traffic and flight information) will be the future for mobile applications.
After the lunch went to see a presentation about â€œXOMâ€? by Elliotte Rusty Harold. He started to tell about the things he doesn’t like about dom, jdom and the java.io api for handling xml, which are much to complex, and have to many ways to do things . There should be only 1 way to do 1 task, and that should be a clear, easy to use, standard way. He says XOM provides a correct (no corrupt XML), easy to use, easy to learn, fast enough, small enough framework to handle XML. The presentation ended with an interesting discussion about Interfaces, java-generics, runtime and checked exceptions and more subjects, that mister Harold has a very interesting opinion on.
Went to see the presentation by John Crupi about â€œSOAâ€? after that. It was my first introduction to â€œSOAâ€?, and simultaneously my first introduction to web services,and I’m still no expert, but think I understand some of it now. He talked about the different layers (access,business,service,resource) , lose and tight coupling, the need for standards in web service communication,graining, and about a-synchronous and conversational services. Found it very interesting, but will leave the explaining of SOA to the experts for now.
After the next break went to see â€œConcurrency Utilities in JDK 5.0â€? by Brian Goetz. He talked about the Executor and ExecutorService classes in the new JDK, which give you a way to influence the thread load, by setting a maximum pool size. The new Callable interface, like runnable, but returns a Future handle. A ScheduledExecutorService that can be used to schedule task, Queue’s and BlockingQue’s, flexible locking, read/write locks, and atomic variables (who have their own memory location). all of it seems very exciting.
Stayed for the next presentation also by Brian Goetz about â€œThe new Java Memory Modelâ€œ. He explained how every thread has his own cache for storing variables, and that synchronization is not only needed to prevent simultaneous access, but also to make sure that the cache variables are flushed and up to date. Explained that volatile is a weaker form of synchronization by preferring write over read. How in synchronized blocks the â€œhappens beforeâ€? rule secures execution order within threads. And about code re-writes compilers do at compile-time.
Brian Goetz presentations kept me awake, at the end of a long/busy day.
First went to see Rod Johnson , with his â€œSpring updateâ€? presentation.
Spring2 has lots of new features, that include AspectJ’s â€œpoint cut expressionsâ€?, message driven Pojo’s, Toplink integration, And simpler XML configuration. It looked really strong, fast and easy. final release is expected march 2006
The next one I went to see was â€œExtreme Swingâ€? by Romain guy. Using 3D in Java is usually done by using pseudo-3D, its a technique that uses reflection, size and transparency to make thinks appear to be closer or further away. which was explained with some code examples. An other way to do 3D is by OpenGL rendering, which lets you create a 3D environment with objects, texture and lighting. which was also explained in code samples.
Java OpenGL rendering is currently considered to slow, but speed will improve a lot in Java Mustang.
After lunch I saw â€œSecure and Reliable Web Servicesâ€? by Guy Crets.
Mostly about the need for standardizations in securing web services. Because there are too many small standards to secure messages (ssl+xmlsigning, soap over smtp, soap over ftp etc.) services cannot always directly send messages to each other.
After that came â€œSAMLâ€? Security Assertion Markup Language by David Vandaele.
SAML is a solution for â€œcross domain SSOâ€?, its not a security server, but integrates in existing services, and provides a way for a relying party to find out if,how and when someone is authenticated on an other (trusted)domain. SAML 2.0 also supports mobile devices.
Then after the last break, â€œMaven 2.0â€? by Vincent Massol
I was in the minority of people there that has never used Maven before, so for me it was an introduction instead of an update. To me it looked like the ultimate build and deploy tool (ant and more), but I ‘m told its much more than that. You can install numerous Maven-PlugIns for lots of different tasks. like visual project management, dashboards and much more. And to demonstrate the power of Maven they showed 2 build files, the first an ant-build file that had 1000 lines, and than an Maven-build file that only used 50 lines for the same tasks.
After 2 days of information, my head was totally filled with new input and ideas. And I went home dreaming about stronger, readable and more reliable code.