Finally Played with JDK 1.5 Some... I Likee!
So many things with various workarounds for manipulating the JVM are so much easier now. Java really is becoming a language for smart people, slowly but surely. OoOOoOO. I dearly hope that Apple gets off its ass [their asses] and releases the 1.5 JDK somewhere around the time that the Linux JDK is released or I am going to be stuck running IDEA over X =/
The java.lang.instrumentation
combined with java.lang.annotation
is going to lead to some of the coolest stuff seen in a long time. As Guillaume discussed some this evening, I think that the first things will see are all the XDoclet tools moved to Annotation, followed rapidly by bytecode manipulation and generation at the classloader stage (and a new idiom of Class.forName(...)ing everything in file (using the new Scanner class to read them out) in order to pre-instrument them at server startup time).
AOP is getting a big endorsement with all of the metaclass hackery being enabled. AspektWerkz may or may not take off, but if it doesn't it will only be because Rickard got around to releasing his baby (and promptly got bored with it and moved on, allowing it to explode in popularity). I think tools like my interception library will see use, but the design will need to be rethought since much more powerful things will be easier to do (why use a broker? You can effectively intercept new
magic!). I may have to do that, actually =)
Btw, came up with a name for the unnamed interception library which I think I like, won't be official until Chris weighs in, but "Nail" is the idea. Sort of a play on YAIL (Yet Another Interception Library) with a (I hope) obvious pun on the N (use your imagination, or pretend you are Hani and think what you would put there); along with the idea that we've been trying to keep it as flexible as possible so that no matter what hammer you are wielding you can still use it (including an experiment I did to swap out the backend and use Nanning to handle interception instead of CGLIB -- it added a lot more limitations as Nanning is proxy based, and the Broker doesn't map well to an AspectInstance, but... it worked and I even got the unit tests to pass once I changed them from intercepting HashMap to Map).