JDT Core R3.2.x

Back to Development Resources.

What’s Happening?

This section describes the JDT/Core implementation of the official plan.

  Rollup 3.2.3 - NOT planned   Rollup 3.2.2 - completed on 2007/02/12   Rollup 3.2.1 - completed on 2006/09/29  Release 3.2.0 - completed on 2006/06/29
  • available on the download area.
  • final build notes
  • Java SE 6 (jsr-270)
    •  Annotation processing tools (jsr-269)
      Work got initiated in org.eclipse.jdt.apt.core (and ui) project, requiring changes in JDT/Core which got released in "APT" branch. The content of this branch exposes new pluggable API for participating in compilation and completion (needed for APT processor) in a fashion which is not APT specific. This branch is intended to be merged into "HEAD" when it matures enough.
    • Javadoc (jsr-260)
      Mostly affecting Java Model rendering (see Java Model item below)
    •  Classfile (jsr-202)
      Except for StackMapTable attribute support (109980), all other items already got released into Eclipse 3.1.0.
    • Compiler API (jsr-199)
      Require 1.6 JRE libraries. Implementation of compiler API (81471) will thus likely be made available as a separate download.
  • [optional] Switching codebase to Java 5.0
    • If Eclipse 3.2 development switches, then will convert JDT/Core implementation (batch compiler remains 1.3 based)
    • Not enough reliable 1.5 runtimes available at the moment on each platform, will be reevaluated at end of 3.2 M4.
  • Incremental Java Compiler
    • Improved static analysis
      • Null reference analysis, coupled with use of @NonNull annotation (110030, 96063)
      • Signal references to raw types (89529)
      • Signal assignment to method parameters (53773)
      • Detect unnecessary $NON-NLS tags (48976)
      • Signal unused break/continue labels (63840)
    • Enable pluggable participation in compilation (36939) (e.g. APT)
    • Allow valid classfile generation in presence of optional compiler errors (configured by some preference) (107282)
    • Provide API to compute the list of files to be cleaned by the Java builder (for a UI to warn user) (110048)
    • Improve access restriction support:
      • restrictions should be inherited (76266)
      • check more scenarii based on annotations/doclet (@CannotImplement, ...)
      • hints on libraries
      • export rules
  • [optional] Provide API to retrieve class files generated for a given compilation unit or reference information (based on last build state) (6584)
  • DOM AST
    • More robust DOM AST: statement level recovery (42253)
    • OK mark Cleanup bindings: generic vs. parameterized (80472)
    • Make generic method invocation bindings unique
    • Surface more compiler functionalities on DOM bindings: precomputed override indicator (AccOverriding/AccImplementing) (90660)
    • Allow creating composite types on demand (array, parameterized, wildcard, capture, ...) (40096)
    • [optional] Investigate having binding comparisons work across AST contexts (80715)
  • Search
    • OK mark Enable Camel pattern matching (performance item for open type dialog) (110060)
    • OK mark Offer enclosing local variable when matching its type (110336)
    • [optional] Allow regex in Java search (requires JDK 1.4) (36897) (1 week)
    • [optional] Provide API for spell checking any symbol (i.e. is this symbol an identifier anywhere) (37528)
    • More powerful search (code pattern based, e.g. search where synchronized on 'JavaModelManager') (110157)
  • Java Model
    • LRU cache for working copy buffers (scalability of refactoring) (110158)
    • OK mark Surface javadoc @category (23669)
    • OK mark Working copy for classfiles (enablement for split refactoring) (110160)
    • OK mark Provide minimal support for working copy outside the workspace (open external file) (61013)
    • Provide support for reacting to option changes (delta? build?) (46780)
    • OK mark Address long standing issue with secondary types (not found by model name environment during reconcile) (36032)
    • OK mark Broadcast DOM AST requested during reconcile (110168)
    • OK mark Provide API to encode/decode a classpath entry into String/XML form (110171)
    • OK mark Provide API to access javadoc from either source (OK mark 110172) or attached HTML (OK mark 110173)
    • OK mark Size of the internal Java model cache is now function of the VM max heap size (-Xmx) (106202)
    • OK mark .classpath reading is now forward compatible with upcoming versions (for unknown attributes) (101425)
    • [optional] Investigate allowing classpath containers to refer to further container/variable entries (110176)
    • [optional] Consider removing the need for exclusion patterns when nesting source folders (110179) (1 week)
    • OK mark Relax the rule that Java source file extension is "java" (71460)
    • [optional] Provide more Ant functionalities, e.g. way to retrieve project classpath, etc... (5950) (3 weeks)
  • Code Assist
    • Enrich completion context: e.g. DOM AST near completion location (110181)
    • Enable pluggable participation in completion (e.g. APT) (106000)
    • OK mark Provide completion in javadoc (no longer done in UI layer) (related bugs)
    • Enable constructor completions in allocations: "new A<ctrl-space>" (83392)
    • OK mark Support for Camel prefix: e.g. "NPE<ctrl-space>  --> NullPointerException" (102572)
    • OK mark Provide completion on break/continue label (22072)
    • Completion in annotation member pair value
      • In progress provide hook for completing inside string literal (e.g. APT completion) (110188)
      • handle some standard annotations: target element types, suppress warning tokens (110190)
  • Code Formatter
    • Allow formatting directly from DOM AST by moving infrastructure from compiler AST to DOM AST (110194)
    • Improve alignment support for message cascades or nested message sends (59891)
    • Improve tolerance for syntax errors in formatted source (require work on more robust DOM AST) (110196)

Feature List

Work items completed in the 3.2 stream, also see build notes.

  Incremental Java Compiler
  • added complete API for Compilation participant
  • leveraged suppress warning options for silencing some diagnostics
  • leveraged compiler inlining finally blocks
  • added option to specify whether optional errors should be fatal or not
  • leveraged diagnosis for assignment with no effect
  • added API to allow to specify extra attributes in problem markers.
  • added option to perform full build when managed class files are modified
  • added option to signal fall-through switch cases.
  • added option for null reference analysis of local variables.
  • added partial support for statement recovery in Parser
  • added batch compiler discouraged and forbidden options
  • added support to compute the stack map frames
  • added optional problem to signal method parameter assignments
  • modified some javadoc options default value to reduce number of initial warnings
  • added optional problem to signal unused label
  • added optional problems for raw type references
  • added API to extend problem definitions with notion of problem category and marker type
  • leveraged optional problem for unnecessary cast
  Java Model
  • leveraged @Deprecated annotation visibility in model
  • leveraged accomodation of very big JAR files (i.e. containing lots of packages)
  • removed unnecessary API for overriding method
  • added support for depending projects with specific builder
  • added API to know whether a variable is a parameter or not
  • added API to transform a binding key into a resolved signature
  • added marker category attribute onto Java problem markers
  • added API for editing compilation units outside the workspace
  • added full EFS support
  • added support for optional classpath entries
  • added API to enable statements recovery for reconcile operation
  • added API to indicate that a rule should be ignored if a better rule is found
  • added API to find secondary types while searching for type on a project
  • added API to change the output location as well as the classpath without touching resources.
  • added JavaCore constant to retrieve the Java source content type from the content type manager
  • added API to set the classpath without touching the .classpath file.
  • added API to return the relative position of the member in the source.
  • added API to create a new working copy without an underlying resource.
  • modified JavaCore initialization not to use a specific job
  • added API for Java-like extensions
  • added API to get column and line number in a compilation unit
  • added API that returns the invented names arg0...argn for a binary method.
  • added API that finds the line separator for the given Java element.
  • added API to get first leading and last trailing node comment in a compilation unit
  • added support for participating in reconcile
  • added API to retrieve the source range of a javadoc comment attached to the corresponding member
  • added element delta flag when one or more categories of an element are added/changed/removed
  • added API that allows to the creation of an class file reader object using an input stream
  • added API that allows to register an resource listener for a given event type that runs before JDT Core
  • added APIs to get the values of the @category tag in the Javadoc of a type, field or method
  • added API for element delta during reconcile
  • added API to encode and decode a classpath entry
  • added API to create working copy on a given class file
  DOM AST
  • DOM type bindings for generics got adjusted
  • added support of DOM/AST without initializing JDT/Core
  • leveraged way to flag nodes as RECOVERED
  • added API to get actual value of a property as managed by the rewriter
  • added API for DOM ASTNode recovered information
  • added API to enable statements recovery for ASTParser
  • added API for the Import Rewrite
  • added new APIs for checking modifiers
  • modified API for attached javadoc
  • added new API in order to retrieve the binding corresponding to the component type of the array binding
  Code Assist
  • added Camel Case support in completion
  • added API for completion context
  • added support for completing on label in break/continue statement
  • added option to filter deprecated types and members
  • leveraged variable name completion
  • added API to get all the valid warning tokens used into @SuppressWarnings annotations
  Code Select
  • added support for completion inside javadoc comments
  Search
  • added support for CamelCase search patterns
  • added API to report local element and other elements while searching for type references
  • added API to remove index file
  • leveraged search for implementors to consider also subclasses
  Code Formatter
  • updated Java conventions built-in code formatter profile to reflect the tab size at 8
  • added option to indent body declarations compare to its enclosing annotation declaration header
  • added option to insert a new line in an empty annotation declaration
  • added support to format code in a headless environment
  • added API to return the indentation string corresponding to the given indentation level.
  • added support for indentations

Release Process

Bug Resolution

Updates

These patches are not yet part of any official release or rollup; but provide an early access to the next delivery for quality assessment. If you find any regression using these patches, please inform the JDT/Core team by entering a bug report

 Batch compiler

(Binary) posted on 2008/12/16, 1,26 MB (click on picture)
(Source) posted on 2008/12/16, 1,01 MB (click on picture)
extracted from build 3.2

 Post 3.2.2 update

posted on 2008/12/16, 6.99 MB (click on picture), sources included
applies to Rollup 3.2.2
description Post 3.2.2 update.
Note: No official 3.2.3 is planned so far, this is only a courtesy of the JDT/Core team.
Plug-in revision ID is "3.2.9".Corresponding sources are versionned using tag v_693_R32x
Addresses the following issues (since 3.2.2):
138184 [search] Type Dialog (Could not uniquely map the name to a type)
240214 [compiler] final bit should be cleared from class file access flag for anonymous class
225744 Bottleneck in SetClasspathOperation
219855 [1.5][compiler] StackOverflowError during: "Requesting Java AST from selection"
216569 backport bug 178551 to R3_2
214981 Race condition allowed with SetClasspathOperation
213723 JDT not resolving classpath references to jars in other projects
208263 [ast rewrite] performance problems with lots of changes
193210 [1.5][compiler] Internal compiler error java.lang.NullPointerException
154984 Jars in library not recognized sometimes.
162054 [build] Got a failure on MultiProjectTests.testCycle5 on my speedy test box...
181270 [1.5][compiler] Class literal of array of type parameter should be rejected
184957 [1.5][compiler] Compiler crash
182930 JavaModelCache's size grows when displaying type hierarchy
161175 JarPackageFragmentRoot slow to initialize
172444 build workspace operation launched after each startup
179699 type.newTypeHierarchy doesn't cancel
138309 [index] Optimize index files path storage in DiskIndex and IndexManager
171653 [index] Java Tooling initialization performance issue after startup
183216 [1.5][compiler] Cannot refer to a generic member type using a non static subclass of the enclosing type
151787 [compiler] compiler allows assignment to final field in constructor other than through 'this'
176118 Missing library classes kill Intellisense without Error
177194 [1.5][compiler] preserveAllLocals option has undesirable side-effect when invoking generic method
177372 [1.5][compiler] Missing unboxing conversion when no value required from message send
177115 NullPointerException in BindingKeyResolver.consumeTypeVariable(...)
Also see corresponding build notes.

Getting the sources

  • Make sure to target a recent SDK R3.2.x maintenance build.
  • Define a CVS connection to server pserver:anonymous@dev.eclipse.org:/cvsroot/eclipse
  • Check out the R3_2_maintenance branch of the project org.eclipse.jdt.core.
  • The sources of this project have been compiled against a 1.4 JRE. A 1.4 JRE should thus be installed.