JDT APT 3.5 Plan

Platform Text 3.5 Plan

Last revised $Date: 2008/09/12 05:33:59 $

This plan is under continuous refinement. Please send comments about this plan to the jdt-apt-dev@eclipse.org developer mailing list.

Overall Goals

The goals for Eclipse 3.5 for the JDT APT component are as follows.

[1] Performance. Develop performance tests for the JDT APT component, and use them to guide performance improvements.

[2] Reliability. Provide APIs for clients where needed and fix critical bugs.

[3] Usability. Improve the ability to configure annotation processing and troubleshoot failures.


Work Items

This section details the possible work items for Eclipse 3.5 for the JDT APT component with the [corresponding theme]. The JDT APT component is volunteer-staffed, and not all items on this list may be achieved without community support. Some of those items have a higher priority than others.

  • Performance tests [1]

    • There are currently no automated performance tests for the JDT APT component. Tests need to be created and integrated into the Eclipse performance testing framework. Priority will be given to the JSR-269 (Java 6) processing API rather than the com.sun.mirror.apt (Java 5) API, because the latter is deprecated for future development, but ideally both will be tested.
  • Performance improvements [1]

    • When performance tests are available, it will be possible to profile and improve performance of the annotation processing API. Again, the Java 6 API will be given priority over the Java 5 API. Note that compilation with APT is inherently slower than compilation without, because annotation processors contain third-party code that can ask for any type information at any time, and the compiler is not (and should not be) a general-purpose type database; thus, it will only be appropriate to optimize certain scenarios. Part of this work item will be to determine what those scenarios should be.
  • Implement unimplemented methods [2]

    • Implementations of some of the JSR269 (Java 6 annotation processing) APIs have been left incomplete, particularly for processors running in the IDE rather than at the command line (e.g., bug 240264). These methods should be fleshed out with working implementations.
  • Monitor annotation-related JSRs [2]

    • JSR-305 concerns annotations for software quality monitoring, and JSR-308 concerns annotations in additional locations. It is not currently clear whether either of these changes will have an effect on the annotation processing API. The JSRs need to be monitored and responded to as necessary.
  • Improved documentation [3]

    • The JDT APT project web site is out of date and needs to be updated with good instructions on how to use APT, particularly with JSR269 (Java 6) processors (bug 213636). Material for this can be drawn from the EclipseCon 2006 tutorial on writing annotation processors.
  • Improved troubleshooting [3]

    • Developing and configuring an annotation processor is a difficult task. The canonical experience is that "nothing happens" when the processor is run. This is often because of exceptions thrown within the processor, because the processor has not been correctly declared, or because Eclipse is not running on a JRE of the appropriate level (e.g., running on a Java 5 JRE while trying to execute a Java 6 processor). The tracing options, problem markers, log entries, and configuration UI all need to be improved to help with this.
Milestone M1 (2008-08-08)

Planning

  • 3.5 planning 1d

Permanent Items

  • bugzilla inbox tracking
  • bug fixing
  • increase correctness test coverage
  • monitor annotation-related JSRs
Milestone M2 (2008-09-19)

Permanent Items

  • bugzilla inbox tracking
  • bug fixing
  • increase correctness test coverage
  • monitor annotation-related JSRs
Milestone M3 (2008-10-31)

Performance [1]

  • develop an approach for performance testing (e.g., how to create a large body of interestingly-annotated code and correspondingly interesting annotation processors to exercise it with)

Reliability [2]

  • implement unimplemented JSR269 Filer methods in IDE (bug 240264)

Permanent Items

  • bugzilla inbox tracking
  • bug fixing
  • increase correctness test coverage
  • monitor annotation-related JSRs
Milestone M4 (2008-12-12)

Performance [1]

  • develop performance test framework based on plan in M3

Usability [2]

Permanent Items

  • bugzilla inbox tracking
  • bug fixing
  • increase correctness test coverage
  • monitor annotation-related JSRs
Milestone M5 (2009-01-30) - Major/Big Features Done

Performance [1]

  • Integrate performance test framework into Eclipse automated perf tests

Usability [3]

  • Make targeted improvements to troubleshooting: how to help users when a processor is doing nothing?

Permanent Items

  • bugzilla inbox tracking
  • bug fixing
  • increase correctness test coverage
  • monitor annotation-related JSRs
Milestone M6 (2009-03-13) - API Freeze

Performance [1]

  • Identify key optimization scenarios
  • Use performance test framework to profile and optimize these scenarios

Permanent Items

  • bugzilla inbox tracking
  • bug fixing
  • increase correctness test coverage
  • monitor annotation-related JSRs
Milestone M7 (2009-05-01) - Feature Freeze, Focus on Performance and Polish

Permanent Items

  • bugzilla inbox tracking
  • bug fixing
  • increase correctness test coverage
  • monitor annotation-related JSRs
Legend
item is under development. item is under investigation.
item is finished. ( ) item is time permitted.
[xyz] item is deferred (>) from xyz or continues in xyz. new