Java One and Community day summary
12/05/08 13:08 Filed in: Java
Java One is one big conference. This year around
15000 people attended. This means that all sessions
were packed and there was lines for people to get in
and you had to be pre registered to get in. Though I
think most people got to see whatever they wanted.
All in all the organizational stuff was flawless and
besides the occational demo bug there wasn't anything
to ruin the presentations but the presenter himself.
Of the sessions I set out to listen to, there were 5 sessions that I didn't attend and I think I dropped in on 3 not listed. Two of those dropped were due to bad presenters, meaning that I left during the session. That said, most presentations were good and/or interesting, and I've decided to split my experiences into different sections first focusing on code as the nerdy hacker I am
From the session Playing nice with javaScript tech.: Five things you should know about DOM design patterns, there was a nice pattern for catching copy and paste to and from a native application. This trick works on all browsers - the details are described in the Sum Community one post.
From the session Netbeans 6.1 performance enhancements, which in general was a rather boring session, had two gems hidden. The first was a trick to use a security manager to track file access. This means that you could write an integratio n test that makes sure that your code does not read or write from disk more often that it should. The other trick was a technicque to check for memory leaks. This one relied on a library called ... which has the method assertGC. By creating a weak reference to the object and then making sure that it is garbage collected you make sure that no code is holding onto your object as it is garbage collected.
Closures in Java is a hot topic, and was covered in the lecture Closures Cookbook. It will make some code more elegant, but writing libraries that supports closures will be hard. If or when closures comes to the Java platform, you will need to look it up and learn it properly if you plan to do API's. If you are just a regular user, then it will make your day easier.
From the talk More Effective Java I got the following stuff to mention:
- Wildcard types: Producer extends, Consumer super.
void pushAll(Collection<? extends E> src);
void popAll(Collection<? super E> dst);
- Use enums to do singletons, if you need them.
- Double checked locking now works - if you need to do this, copy the code from someone who has written an implementation that works
Sun is really trying to push client side technology this year, in particular with focus on Java FX. My feeling of the matter is that this isn't ready yet. The success stories aren't present yet and what I saw on the sessions I attended the scripting turned ugly quite fast. Though, I haven't really tried it myself so I cannot vouch for it just being an artifact of the scripting language or if the the presenter just sucked at coding.
If you should decided on what was hot based on which sessions got full first, then SOA was the number one thing to learn about. Though after walking through the pavillion I can't say that there was that many companies trying to sell it. And the SOA lecture I actually attended was pointing out common sense stuff that I already knew. Though it is always nice to hear others confirm what you have always thought
Netbeans is picking up some real pace. It's javascript support looks really nice.
The pavillion was big as always. The stands gave out some swag, but there was in general less crap and longer between handouts. A lot of them had lotteri for I-pods and similar. I swiped my card a couple of times, but I didn't win anything. Luckily I do have a spam filter...
A lot of effort are being put into making Java run more efficient on multi core machines. Javas concurrency model isn't very easy to use, and often not very effective when you get passed 15 active threads being used by the same software (according to the speaker in one of the talks). The session I attended that covered this kinda of topic was Experiences with Debugging Data Races, Transactional Memory in Java™ Technology-Based Systems, Fortress, JVM™ Challenges and Directions in the Multicore Era. There was no particular good conclusion for how to handle this subject, but a couple of points were made:
- Java does not have strong enough support for this in either the language or the tools.
- The community at large is not ready for writing multi threaded applications.
- Some other languages, as Scala and Fortress, attempts to create better language constructs for dealing with this.
- There are being done research into transactional memory to solve this issue, but it is not ready.
- Debugging data races is hard and there is no good tooling for doing so. Debugging such problems is a pain and if you are not carful you can end up with "Heisenbugs" that goes away when you try to debug the problem. How to work such stuff got some more details that I mentioned in the Day 2 article.
Standards is nice. I attended two sessions where standards was a topic. One was a BOF (Are there any point to standards when we got Open Source) that really should have been a lecture where the point was the the industrial revolution would not have been possible without standards and if you want to build anything but toys you really need standards.
The other lecture was Composite Application Design Patterns, where it was pointed out that there are probably an ISO model for about whatever you want to do. Using such a model for your code might make interoperability much easier and one should never underestimate the work done by people who probably have given a problem domain a great deal of thought. (Even when it might have ended up to be a design by committee)
BOF:The Long Tail Treasure Trove
Nice libraries walkthrough - my favorites was (those that were new and looked useful to me):
* DisplayTag: Library for building tables in jsp.
* EHCache - library for doing caches.
* Janino - a java compiler for inline code - script with code.
* jarjar links - stack into one jar file several jar files, but also rename a given set of classes into a new classpath making it possible to use an old version of classpaths.
* jDBI - simple tool for making easier jdbc queries.
* JSON-lib - code for JSON <-> Java
* Mock Javamail - test mail sending. Fun - Mailbox.get("mailaddress@foo.bar");
* Smack - jabber client.
We tried to go to Adobe's party but it sucked. Stack lots of people into a pool hall where there really wasn't enough space to play pool and expect people to enjoy themselves? Stupid idea if you ask me. The after dark bash we missed as it collided with the Java Posse BOF. So this year, as same as previous time I was to Java One, I failed to find the epic parties. I guess I'm just too boring
The lunches and breakfast was pretty well organized and there was never long queues with waiting to get to the food. The food was ok, the breakfast quite boring. I think we all was glad that this wasn't our regular breakfast/lunch.
Moveis were played on a big screen all the time. Lots of XBOX-360 game machines was set up and a small area with 10 PC's, some coin up games (Asteroids, Donkey Kong Junior and one with several selectable games in it) and two football games was the total of silly activities available. This year I played 3-4 games of Asteroid and that was about it. There wasn't really much time to go do nothing with that many talks to attend to
Did you enjoy Java One?
It was fun to be there again. The environment is really buzzing and it is fun to see it all. My goal was to learn at least one useful thing on each talk and I think that in average I did. I have picked up a cool programming tip or two, and that always makes me happy!
Did you bring any good swag home?
Not really - I got some nice T-shirts which are always nice. I bought a nice one for Ask (my son) that looks smashing on him. Too bad they didn't have a matching T-shirts for me. As for other stuff - I got a squirt gun that was quite nice though, but I must say that there was way too little swag to be given out this year. I think they were replaced by competitions/lottery of more expensive items. That was probably cheaper and they got to get that precious email address of yours when you swiped your card.
How about San Fransisco?
Uhm, I really didn't spend much time in the city this time. Been there twice and experiencing SF was basically limited to shopping on saturday and some night out dancing.
Dancing?
Yeah, I blogged about it in my less code-ish blog.
What you do it again?
I don't regret going - it is probably on of the best Java conferences to go to. And I did learn some stuff, though not as much as my first visit. I don't think that the conference is to blame there - I am merely more experienced and try to keep up with what's hot and not so there wasn't any really big surprises. Getting to SF is also a pain - the travel time is quite long and the jet lag can be horrible. Spending a week away from family is also less appealing now so I would probably try and pick something closer to home that isn't that long. I would also consider attending some open space type conferences as discussing stuff with clever people is just as interesting as being talk upon
Of the sessions I set out to listen to, there were 5 sessions that I didn't attend and I think I dropped in on 3 not listed. Two of those dropped were due to bad presenters, meaning that I left during the session. That said, most presentations were good and/or interesting, and I've decided to split my experiences into different sections first focusing on code as the nerdy hacker I am
Programming Goodies
From the session Playing nice with javaScript tech.: Five things you should know about DOM design patterns, there was a nice pattern for catching copy and paste to and from a native application. This trick works on all browsers - the details are described in the Sum Community one post.
From the session Netbeans 6.1 performance enhancements, which in general was a rather boring session, had two gems hidden. The first was a trick to use a security manager to track file access. This means that you could write an integratio n test that makes sure that your code does not read or write from disk more often that it should. The other trick was a technicque to check for memory leaks. This one relied on a library called ... which has the method assertGC. By creating a weak reference to the object and then making sure that it is garbage collected you make sure that no code is holding onto your object as it is garbage collected.
Closures in Java is a hot topic, and was covered in the lecture Closures Cookbook. It will make some code more elegant, but writing libraries that supports closures will be hard. If or when closures comes to the Java platform, you will need to look it up and learn it properly if you plan to do API's. If you are just a regular user, then it will make your day easier.
From the talk More Effective Java I got the following stuff to mention:
- Wildcard types: Producer extends, Consumer super.
void pushAll(Collection<? extends E> src);
void popAll(Collection<? super E> dst);
- Use enums to do singletons, if you need them.
- Double checked locking now works - if you need to do this, copy the code from someone who has written an implementation that works
What's hot?
Sun is really trying to push client side technology this year, in particular with focus on Java FX. My feeling of the matter is that this isn't ready yet. The success stories aren't present yet and what I saw on the sessions I attended the scripting turned ugly quite fast. Though, I haven't really tried it myself so I cannot vouch for it just being an artifact of the scripting language or if the the presenter just sucked at coding.
If you should decided on what was hot based on which sessions got full first, then SOA was the number one thing to learn about. Though after walking through the pavillion I can't say that there was that many companies trying to sell it. And the SOA lecture I actually attended was pointing out common sense stuff that I already knew. Though it is always nice to hear others confirm what you have always thought
Netbeans is picking up some real pace. It's javascript support looks really nice.
The Other Stuff
The pavillion was big as always. The stands gave out some swag, but there was in general less crap and longer between handouts. A lot of them had lotteri for I-pods and similar. I swiped my card a couple of times, but I didn't win anything. Luckily I do have a spam filter...
A lot of effort are being put into making Java run more efficient on multi core machines. Javas concurrency model isn't very easy to use, and often not very effective when you get passed 15 active threads being used by the same software (according to the speaker in one of the talks). The session I attended that covered this kinda of topic was Experiences with Debugging Data Races, Transactional Memory in Java™ Technology-Based Systems, Fortress, JVM™ Challenges and Directions in the Multicore Era. There was no particular good conclusion for how to handle this subject, but a couple of points were made:
- Java does not have strong enough support for this in either the language or the tools.
- The community at large is not ready for writing multi threaded applications.
- Some other languages, as Scala and Fortress, attempts to create better language constructs for dealing with this.
- There are being done research into transactional memory to solve this issue, but it is not ready.
- Debugging data races is hard and there is no good tooling for doing so. Debugging such problems is a pain and if you are not carful you can end up with "Heisenbugs" that goes away when you try to debug the problem. How to work such stuff got some more details that I mentioned in the Day 2 article.
Standards is nice. I attended two sessions where standards was a topic. One was a BOF (Are there any point to standards when we got Open Source) that really should have been a lecture where the point was the the industrial revolution would not have been possible without standards and if you want to build anything but toys you really need standards.
The other lecture was Composite Application Design Patterns, where it was pointed out that there are probably an ISO model for about whatever you want to do. Using such a model for your code might make interoperability much easier and one should never underestimate the work done by people who probably have given a problem domain a great deal of thought. (Even when it might have ended up to be a design by committee)
BOF:The Long Tail Treasure Trove
Nice libraries walkthrough - my favorites was (those that were new and looked useful to me):
* DisplayTag: Library for building tables in jsp.
* EHCache - library for doing caches.
* Janino - a java compiler for inline code - script with code.
* jarjar links - stack into one jar file several jar files, but also rename a given set of classes into a new classpath making it possible to use an old version of classpaths.
* jDBI - simple tool for making easier jdbc queries.
* JSON-lib - code for JSON <-> Java
* Mock Javamail - test mail sending. Fun - Mailbox.get("mailaddress@foo.bar");
* Smack - jabber client.
The parties
We tried to go to Adobe's party but it sucked. Stack lots of people into a pool hall where there really wasn't enough space to play pool and expect people to enjoy themselves? Stupid idea if you ask me. The after dark bash we missed as it collided with the Java Posse BOF. So this year, as same as previous time I was to Java One, I failed to find the epic parties. I guess I'm just too boring
The food
The lunches and breakfast was pretty well organized and there was never long queues with waiting to get to the food. The food was ok, the breakfast quite boring. I think we all was glad that this wasn't our regular breakfast/lunch.
The fun stuff
Moveis were played on a big screen all the time. Lots of XBOX-360 game machines was set up and a small area with 10 PC's, some coin up games (Asteroids, Donkey Kong Junior and one with several selectable games in it) and two football games was the total of silly activities available. This year I played 3-4 games of Asteroid and that was about it. There wasn't really much time to go do nothing with that many talks to attend to
Summary
Did you enjoy Java One?
It was fun to be there again. The environment is really buzzing and it is fun to see it all. My goal was to learn at least one useful thing on each talk and I think that in average I did. I have picked up a cool programming tip or two, and that always makes me happy!
Did you bring any good swag home?
Not really - I got some nice T-shirts which are always nice. I bought a nice one for Ask (my son) that looks smashing on him. Too bad they didn't have a matching T-shirts for me. As for other stuff - I got a squirt gun that was quite nice though, but I must say that there was way too little swag to be given out this year. I think they were replaced by competitions/lottery of more expensive items. That was probably cheaper and they got to get that precious email address of yours when you swiped your card.
How about San Fransisco?
Uhm, I really didn't spend much time in the city this time. Been there twice and experiencing SF was basically limited to shopping on saturday and some night out dancing.
Dancing?
Yeah, I blogged about it in my less code-ish blog.
What you do it again?
I don't regret going - it is probably on of the best Java conferences to go to. And I did learn some stuff, though not as much as my first visit. I don't think that the conference is to blame there - I am merely more experienced and try to keep up with what's hot and not so there wasn't any really big surprises. Getting to SF is also a pain - the travel time is quite long and the jet lag can be horrible. Spending a week away from family is also less appealing now so I would probably try and pick something closer to home that isn't that long. I would also consider attending some open space type conferences as discussing stuff with clever people is just as interesting as being talk upon
|