EDGE East in Boston Andy making a “Case for Mail Services” in JBoss
Feb 23

XDoclet, JSR 175, and the mistakes

Tech Add comments

There is currently a lot of discussion on TheServerSide on Is XDoclet really needed?. There is a lot of talk on the subject of when codegen is OK, and how much of a saviour metadata annotations are.

JSR 175

I am looking forward to see the innovation that comes along with annotations. I expect to see a slew of annotations (some standardized), and some will be great. Within this shift, we will probably do what developers always seem to do: overuse new “fun” features.

Let’s face it… when a new technology comes in, a lot of people jump on the bandwagon and play with it. Over time we figure out “oh, we went too far down this path”. We are probably destined to do this with annotations. I can invision classes like:

@Overrides
@RequestForEnhancement(
id = 2868724,
synopsis = “Provide time-travel functionality”,
engineer = “Mr. Peabody”,
date = “4/1/2004″
)
@Hibernate(some=”thing”)
… insert 20 more annotations …
public ….. {}

Annotation hell will be abound. I look forward to having this settle down for a few years, and I know we will work out what SHOULD be an annotation, and what wouldn’t.

XDoclet

XDoclet certainly won’t “die” due to JSR 175. Code generation is a good thing. I think the Java community poo-poo’s it a lot. When I think about the majority of projects that I have worked on, MOST have multiple levels of code generation going on. Many times, if you test the generator, then you can develop extremely rapidly, with solid results.

XDoclet will grow, will integrate with JSR 175 in some ways, and we will see a brighter future :)

One Response to “XDoclet, JSR 175, and the mistakes”

  1. system log Says:

    Is code generation neccessary?

    A number of small blog entries has recently been asking this question
    specifically with XDoclet in mind, all started with this post by Javid Jamae and continued here and here .   My answer is very simple; yes, it is
    a necessary evil.