JavaPolis is great! Lots of interesting people, lots of interesting sessions. Here are my experiences, with a summary of most of the sessions I attended.
I attended the JavaPolis 2004
conference in Antwerp, Belgium. I was
invited to talk about the JMX API and was very glad of it because it
occasion to discover a very interesting conference. The conference is
organized by volunteers from the Belgian Java Users Group (BeJUG) and
manages an extraordinary level of quality, especially given how
inexpensive it is (200). Any slight criticisms I might have below
should be read with that in mind.
The conference takes place in the Metropolis cinema complex on the
outskirts of Antwerp, which is the second largest cinema complex in the
world. (The largest is in Spain.) To give you an idea, they have 32
different films showing at the moment.
The conference presentations are in
film theatres. For once it is possible to read even the small print on
people's slides, projected as they are on huge cinema screens.
Some speakers were a bit nonplussed by this, showing slides that were
supposed be a blur of illegible XML text so they could say "instead of
this illegible XML text, uh, text that would be illegible anywhere
I noticed that nobody seemed to be able to agree how the name of the
conference should be pronounced. Is the accent on the second syllable,
like "photography", or on the third, like "photographic"?
One particularly nice innovation they have is that the video output
from the laptop you're presenting from is captured and recorded along
with your voice. The recorded presentations will soon be downloadable,
and what you will see when you play one back is the presentation as it
appeared to the audience, including any animations, and in particular
including demos. I haven't seen that with other conferences, and it is
a big plus.
The downside is that I only discovered five minutes before I was due
to present that in order for the recording to work, the output has to
be 1024x768@60Hz. The laptop I was planning to present from, running
the Sun Java Desktop System (i.e. Linux) could do 1024x768, but it
couldn't do 60Hz. So I had to reboot it into MS Windows, which could. I
thought I had a backup of the
demo on the Windows partition, but after rebooting I discovered that
all I had was some uncompiled sources. So I had to frantically root
around to find a JDK I could use to compile them and set up the demo,
all in front of a roomful of people waiting for my by-now-late presentation.
Not the best way to start, but I got there, only a few minutes late.
But of course I realized half-way into the demo that the sources were
old and didn't completely correspond to what I wanted to show. Just as
well I'd included my "in case the demo doesn't work" slides.
I was presenting
the JMX API. (You have to sign up at
javapolis.com to access this and other presentations.) I gave a
two-part presentation, as I often do. In the first part, I explained
what the JMX API is for and showed how easy it is to use it with JDK 5.
Creating a managed resource is just writing a Java interface and an
implementation of that interface; registering the resource is a couple
of Java calls; and once you've done that you can launch your app with java -Dcom.sun.management.jmxremote
and connect with jconsole.
Then I did the demo (oops, the names in the demo don't correspond to
the source I just showed; oops, the managed resource doesn't emit
notifications; oh well).
In the second part I gave a snapshot of a few of the API additions
we're planning in JSR
255 (JMX API 2.0):
Use of annotations to include additional metadata in Standard
"MXBeans" to remove the need for model-specific classes in
"Cascading" (federation) to handle distributed instrumentation.
The talk was well attended and apart from the minor demo problems I
thought it went pretty well. Here's a photo
of me during the talk where it looks as if something very
unpleasant has happened to my hand. I'm all right, though.
I also gave a BOF to talk in more detail about what people wanted
from the next version of the JMX API. Unfortunately, the earlier BOFs
overlapped the later conference sessions so only three people came. We
had an interesting discussion all the same. The other BOF at the same
time was given by one of the conference organizers, and despite an
interesting subject (TopLink) nobody at all came, so I'm guessing that
next year the BOFs won't overlap the sessions.
There was a great deal of interesting stuff at this conference, and
I couldn't see it all. Here are some things I did see.
Rod Johnson, Howard Lewis Ship, and Sven Beauprez gave a joint BOF about
Inversion of Control frameworks.
This was particularly interesting to me because JMX is sort-of such a
framework. I was left wondering, not for the first time, whether we
couldn't add some simple form of dependency injection to the JMX model.
Every technology has its overblown trivial debates and for IoC it's Constructor
versus Setter Injection. Rod feels that constructor injection
starts with a major handicap, which is that the Java reflection API
doesn't allow you to know the names of constructor parameters. I
suggested that this could be corrected with a standard annotation, for
example as in this request
Rod Johnson also gave an
excellent if controversial presentation called J2EE
without EJB. To summarize his position: EJB 2.x is too hard to use;
EJB 3.0 will correct this somewhat; but it will be another couple of
years before it will be in all the major app servers. Unless you are
using MDBs or need distribution, you are better off forgetting EJBs
entirely and using an Inversion of Control framework like Spring. Of course, Rod is
co-founder of the Spring project, so you might guess that he is a bit
Tim Bray gave a keynote
"When Not To Program in Java" about dynamically-typed
languages targeting the JVM. There are a number of these now,
notably Groovy and Jython (Python for the JVM). Tim
recently organized a summit
to discuss the subject and he was obviously still on a high. One of the
outcomes was that there should be some JVM support to make it easier to
support dynamic languages, for example extra bytecodes.
Tim quoted Seán
McGrath to the effect that static languages limit your possible
failures but in so doing they also limit your possible successes. Tim
is not advocating throwing out static languages like Java, but rather
suggesting that there are places where dynamic languages are a better
fit. Test development is an obvious candidate. Scripting in large
systems is another ("all large systems end up having scripting").
Gluing together components in frameworks is a third.
(Seán McGrath was in the same Computer Science class as me
lo! these many years ago. He seems to have become geek-famous while I
Greg Bollella gave a keynote
on the Real-Time Specification for
Java, with technical details and some of the uses to which it
has been put. I saw a lot of interest in this talk during and
afterwards. Greg and his team are at Sun's site in Grenoble, as am I,
so I was already familiar with the material, but this was the first
time I actually saw the famous "Viagra
demo". (The white stick is on a pivot and would normally hang
downwards, but a little electric motor driven by RTSJ conspires to keep
it in the air by moving sideways as necessary. Like balancing a ruler
on your hand. If you tilt the stick sideways the motor compensates and
gets it vertical again. All of this while the same JVM runs a
non-real-time but compute-intensive animation. And if you switch off
the machine piloting the motor a second machine in hot-standby takes
over immediately and the stick doesn't budge. This got a round of
Jon Bostrom of Nokia gave a
keynote on Mobile Java. I'm
ashamed to admit that I was sitting in the very back row and fighting
with my laptop's flaky connection to the very expensive WiFi access I
had paid for, so I wasn't paying as much attention as I should have.
The key thing I understood was that Java is winning the war for
application platforms in mobile phones and is set to achieve the same
monopoly position as Microsoft has on the desktop. (This is my
interpretation of the figures and trends presented.)
While I was sitting in the back row, a person emerged from
a hatch in the wall above my head and jumped onto the seats beside me.
I felt like William Shatner in the famous Twilight Zone
with the gremlin. Before anybody else could see him, he disappeared
back into the hatch.
Tim Boudreau presented NetBeans
4.0. I've been using the beta of this for a while and have been
very happy with it, so Tim was preaching to the converted as far as I
was concerned. Tim showed a couple of nifty new things, though. One is
the integration with the
JFluid profiler, which I'll certainly be using once it's available
for JDK 5. The other is the support for J2ME. For J2ME, there's support
for different flavours ("configurations") via a preprocessor that gives
the moral equivalent of #ifdef,
so you can extend NokiaCanvas
if building for Nokia and plain Canvas
otherwise (or whatever). This would probably be considered
ideologically unsound in the J2SE world, though it is mitigated by the
fact that NetBeans builds both
the plain source code without any flavours defined and the flavour you have selected
in the IDE. So (if I understand correctly) you must have at all times a
version of your app that compiles portably.
Susan Landau presented the Trusted Computing
Group. I got the impression she was expecting more animosity from
the audience than she got, because people do associate this name with
some of the more hostile Digital Rights Management proposals. Her
presentation made it clear that DRM is not a goal of what the TCG does,
and that there are many conflicting goals in the area of data security,
from which the usual evil-record-labels-trying-to-control-everything
discourse is mostly a distraction. The sort of questions they really
tackle are: If you connect to me, how can I trust you are who you say
are? Can I be sure your machine hasn't been taken over by a virus that
is piloting the authenticated connection from it to me? Will I still
trust you if you tinker with the open-source OS your machine is running?
The presentation was interesting, but it was the questions and
answers that really woke the audience up. It was clear that Susan was
choosing her words very carefully and balancing her own opinions, those
of Sun on whose behalf she participates in the TCG, and contrary
opinions held by other TCG members.
Gregor Hohpe talked about event-driven
architectures. After an exposition of some of the nice stuff now
available in java.util.concurrent,
he went into more detail on event systems, point-to-point versus
publish/subscribe, channel naming, testing, and more. Although it
wasn't the subject of the talk, a natural follow-on is the use of
messaging for Enterprise Integration, which is a hot topic in which
Gregor is an expert. I
missed the course that Gregor gave earlier in the week, but the online
slides are excellent.
Mark Hapner talked about Java
Business Integration (JSR
208). The main thing I saw people discussing afterwards was that
JBI isn't exclusively about Web Services, which is the impression
people often get, but more generally about linking together disparate
components through exchange of XML messages.
I was of course chuffed to see JMX figure prominently in many of the
slides. The idea being that JMX technology is used to control
installation of plug-in engines and bindings, their life-cycle
management, and their monitoring and control.
Microsoft had a stand in the
exhibition hall, which surprised me not a little. I kept meaning to
visit it to see what they were pushing, but never got around to it, so
I don't know. They also had a bunch
of Xbox arcade games, which didn't seem to attract people much.
Rick Ross and Matt Schmidt of JavaLobby gave a BOF purportedly
but actually vaunting the activities of JavaLobby, of which JDocs is
one. The main thing I retained was that JDocs.com contains a big
collection of Java API docs that are cross-indexed and searchable, and
that users can add clarifying comments to the APIs to accumulate wisdom
in them. They only really needed five minutes to talk about that,
though, not an hour. I had a look at JDocs.com in the meantime and
wasn't unduly impressed; but maybe it will improve.
Mark Proctor and Bart Strubbe gave a BOF about Drools,
an open-source rules engine. Although rules engines are of interest in
the management world (in particular for event correlation and automatic
reactions), I was mainly attending because their BOF was just before
mine and I wanted to be in place. It was an interesting experience,
because they made the reasonable assumption (for a Drools BOF) that the
audience already knew the basics of rules engines and the Drools API.
Mark started by asking if anybody needed an explanation of the
notorious Rete algorithm. As an
interloper, I didn't want to hold up proceedings by asking for one, but
maybe I should have, because I spent most of the rest of the BOF in a
bewildering state of half-comprehension. It may be that the other ten
people present all understood everything perfectly, and it may also be
that like me they were totally lost but didn't dare say so. Quite an
interesting experience in any case, and afterwards I read
up a bit on Rete and revisited the BOF
In summary, this was an excellent conference, and I would strongly
recommend it to anyone, especially my American colleagues when they are
looking for an excuse to travel to Europe.
Hi Mark Proctor here from the Drools presentation. It was my first presentation on Drools and I wasn't quite sure what to present, its a difficult subject at the best of times and I didn't have the material to focus on more applied areas. In this case I wanted to try and talk on why Drools makes sense form a declerative language point of view and how it can efficiently process large numbers of rules and facts, ie the Rete algorithm, which I did covering how rules translate into networks. Its a very difficult subject to explain, and in hindsight when talking about drools I'm not sure if I would go that route again, instead I will try and focus more on applied drools, with hand outs for those that want to know more about Rete. I would really love feedback for future presentations as I hope to improve on my content and give many more, you can email me at: mproctor at codehaus dot org