TheYearOfAnnotations2009
From APIDesign
(New page: As I noted recently, I see the year 2009 as the year of annotations. The NetBeans project is about to rely on them more heavily. Finally! We've been waitin...) |
|||
Line 1: | Line 1: | ||
- | As I noted recently, I see the year 2009 as [[TheYearOfAnnotations2009|the year of annotations]]. The [[NetBeans]] project is about to rely on them more heavily. Finally! We've been waiting for that for ages, but finally we can compile with [[JDK]] 1.6 [[JavaC]] and we can use compile time [[AnnotationProcessor|annotation processors]. As a result we can replace our [[NetBeansLayers|layer based registrations]] with annotation and benefit from compile type checking, code completion, from having the registrations in the same place as the code that is being registered, etc. Also we can provide the users simple looking annotations and let their [[AnnotationProcessor|annotation processors] do more advanced and more effective processing. As a result the developers have simple API to deal with, while actual registration hidden behind can be as effective as possible, even at the cost of complexity, without compromises to reliability (as the complexity is kept in the processing infrastructure, not exposed to | + | As I noted recently, I see the year 2009 as [[TheYearOfAnnotations2009|the year of annotations]]. The [[NetBeans]] project is about to rely on them more heavily. Finally! We've been waiting for that for ages, but finally we can compile with [[JDK]] 1.6 [[JavaC]] and we can use compile time [[AnnotationProcessor|annotation processors]]. As a result we can replace our [[NetBeansLayers|layer based registrations]] with annotation and benefit from compile type checking, code completion, from having the registrations in the same place as the code that is being registered, etc. Also we can provide the users simple looking annotations and let their [[AnnotationProcessor|annotation processors]] do more advanced and more effective processing. As a result the developers have simple [[API]] to deal with, while actual registration hidden behind can be as effective as possible, even at the cost of complexity, but without compromises to reliability (as the complexity is kept in the processing infrastructure, not exposed to [[API]] users). |
- | The other project related to annotations that we are likely to incorporate during 2009 is our extended use of [http://jcp.org/en/jsr/detail?id=305 Annotations for Software Defect Detection]. This is heavily based on the [ | + | The other project related to annotations that we are likely to incorporate during 2009 is our extended use of [http://jcp.org/en/jsr/detail?id=305 Annotations for Software Defect Detection]. This is heavily based on the [http://jcp.org/en/jsr/detail?id=305 JSR 305], yet until it is stable we do not want to expose such unstable API to users of our stable [[APIs]]. As such we are going to create our own annotations (still recognizable by [[FindBugs]] and co.). The hope is that our annotation will stay compatible even if the underlaying [http://jcp.org/en/jsr/detail?id=305 JSR 305] slightly changes. Please find our [http://www.netbeans.org/nonav/issues/showattachment.cgi/73321/annotations_tmp.patch current patch] and comment here or in the [http://www.netbeans.org/issues/show_bug.cgi?id=137437 issue 137437]. |
Last project that deals with annotations is developed by our editor hints guru Jan Lahoda - its aim is to ''bring complex refactoring to masses''! Using @Deprecated annotation is good hint to help your API users recognize that some part of your [[API]] is obsolete and shall no longer be used, however that in no way help users of your [[API]] with converting their code to new, non-deprecated version. We have a solution: Use [https://lang.dev.java.net/ Code Transformation Annotations]! Dear [API] writers, let's adopt these annotations and use them in your [API]! They are completely standalone ([http://hudson.apidesign.org/job/net.java.lang/javadoc/ read more]), but indeed, my plan is to bring these ''easy to use and flexible refactorings'' to [NetBeans] soon, hopefully for version 7.0. | Last project that deals with annotations is developed by our editor hints guru Jan Lahoda - its aim is to ''bring complex refactoring to masses''! Using @Deprecated annotation is good hint to help your API users recognize that some part of your [[API]] is obsolete and shall no longer be used, however that in no way help users of your [[API]] with converting their code to new, non-deprecated version. We have a solution: Use [https://lang.dev.java.net/ Code Transformation Annotations]! Dear [API] writers, let's adopt these annotations and use them in your [API]! They are completely standalone ([http://hudson.apidesign.org/job/net.java.lang/javadoc/ read more]), but indeed, my plan is to bring these ''easy to use and flexible refactorings'' to [NetBeans] soon, hopefully for version 7.0. |
Revision as of 21:39, 11 December 2008
As I noted recently, I see the year 2009 as the year of annotations. The NetBeans project is about to rely on them more heavily. Finally! We've been waiting for that for ages, but finally we can compile with JDK 1.6 JavaC and we can use compile time annotation processors. As a result we can replace our layer based registrations with annotation and benefit from compile type checking, code completion, from having the registrations in the same place as the code that is being registered, etc. Also we can provide the users simple looking annotations and let their annotation processors do more advanced and more effective processing. As a result the developers have simple API to deal with, while actual registration hidden behind can be as effective as possible, even at the cost of complexity, but without compromises to reliability (as the complexity is kept in the processing infrastructure, not exposed to API users).
The other project related to annotations that we are likely to incorporate during 2009 is our extended use of Annotations for Software Defect Detection. This is heavily based on the JSR 305, yet until it is stable we do not want to expose such unstable API to users of our stable APIs. As such we are going to create our own annotations (still recognizable by FindBugs and co.). The hope is that our annotation will stay compatible even if the underlaying JSR 305 slightly changes. Please find our current patch and comment here or in the issue 137437.
Last project that deals with annotations is developed by our editor hints guru Jan Lahoda - its aim is to bring complex refactoring to masses! Using @Deprecated annotation is good hint to help your API users recognize that some part of your API is obsolete and shall no longer be used, however that in no way help users of your API with converting their code to new, non-deprecated version. We have a solution: Use Code Transformation Annotations! Dear [API] writers, let's adopt these annotations and use them in your [API]! They are completely standalone (read more), but indeed, my plan is to bring these easy to use and flexible refactorings to [NetBeans] soon, hopefully for version 7.0.
So these are my three annotation related projects. I found them quite exciting and I cannot wait to see them being used. As soon as they do, will have complete right to call the year 2009 the year of annotations!
<comments/>