Thursday, December 13, 2007

Blessed and damned @Override annotation in JDK6!

When I've started to play with Java5 new features I'm surprised there no was a way to static check (at compile time) that a method is implementing a method of an interface. There is the @Override annotation but it's only useful to tell to the Java compiler I'm overriding a super class method, nor an abstract one neither an interface method.

Now I discovered Sun staff covered the gap in Java6 just extending the behavior of @Override annotation also to extend abstract methods or to implement interface methods. Great, apart there is no mention on public JDK 6 JavaDocs!!!

Someone raised a bug on Sun's tracker to correct it: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6399361

My Eclipse IDE 3.3.1.1 recognizes the new feature and add the @Override annotation every time I override a method or implement an interface method. Cool.

But now I've the big problem that Roma Framework's sources are full of them and many users reported me they won't compile under Java5! Yes, because Roma needs JDK 5 to compile (but some additional modules that require Java6 in order to use Scripting facilities. The modules now are just Workflow Tevere and ETL).

The fastest solution is to set JDK 5 as compliance level in every single projects don't use Scripting. It works. Blessed and damned @Override...

5 comments:

Giambattista said...

Ciao, ho appena dato un'occhiata all'home page del Roma Framework, e volevo segnalarti che il layout ha qualche problema:
in firefox(2.0.0.11) l'ultimo dei tre link in alto a destra resta mezzo nascosto sotto la barra verde, la colonna centrale è sfasata di circa 5 pixel a destra.
in IE7 inoltre la colonna di sinistra non viene proprio visualizzata.
OS: WinXP Pro.

Penso che non sia buona pubblicità per un prodotto del genere che mi sembra invece molto valido ;)

Cordialmente,
un web developer.

Luca Garulli said...

Ciao,
grazie della segnalazione. Per il sito usiamo XWiki (della OW2) ma visto che non è cosi configurabile come speravamo stiamo passando a un altro wiki engine: un motore ex-novo che attinge la sintassi da Wikipedia ed è costruito con Roma stesso ;-)

Lvc@

CresceNet said...

Hello. This post is likeable, and your blog is very interesting, congratulations :-). I will add in my blogroll =). If possible gives a last there on my site, it is about the CresceNet, I hope you enjoy. The address is http://www.provedorcrescenet.com . A hug.

marcello said...

Ciao, per quando è previsto il cambiamento del sito? Quello attuale è brutto e danneggia l'immagine che si vuole dare al framework.

IHMO l'annotazione @Override andrebbe rimossa, non serve a nulla!!!!

Marcello

Luca Garulli said...

Si, il sito non è gran che. Ci appogiamo a XWiki. A breve metteremo online la nuova versione basata su un Wiki creato con Roma stesso ;-)

Per @Override invece è utilissima! Ti accorgi a compile-time se hai esteso il metodo sbagliato oppure se hai definito un metodo con lo stesso nome di uno definito in una classe che estendi.