Go to JSR:
On this page:
 
Print Format
JSRs: Java Specification Requests
JSR 199: JavaTM Compiler API

A service provider API that allows a Java program to select and invoke a Java Language Compiler programmatically.

  Status: Final              
  Stage       Start   Finish  
  Final Release   Download page   11 Dec, 2006      
  Final Approval Ballot   View results   24 Oct, 2006   06 Nov, 2006  
  Proposed Final Draft   Download page   02 Oct, 2006      
  Public Review Ballot   View results   18 Jul, 2006   24 Jul, 2006  
  Public Review   Download page   19 Jun, 2006   24 Jul, 2006  
  Early Draft Review   Download page   13 Jul, 2005   12 Aug, 2005  
  Expert Group Formation       10 Dec, 2002   28 Mar, 2005  
  JSR Review Ballot   View results   26 Nov, 2002   09 Dec, 2002  
   
JCP version in use: 2.6
Java Specification Participation Agreement version in use: 2.0
Please direct comments on this JSR to: jsr-199-comments@jcp.org
 
 
Specification Lead
Peter von der Ahe   Sun Microsystems, Inc. 
 
Expert Group
Bityukov, Serge S.   Borland Software Corporation   Curdt, Torsten
Google Inc.   IBM   Lefevre, Olivier
Litchev, Lubomir   Oracle   Pramati Technologies
Sun Microsystems, Inc.   Tmax Soft, Inc.
 

Updates to the Original JSR

The following updates have been made to the original request.

2006.10.24

2.15 Please provide a description of the business terms for the Specification, RI and TCK that will apply when this JSR is final.

Sun will license the RI binary for this JSR free of charge.

This JSR will be included in the Java SE 6 platform release. The JSR TCK will thus be licensed as part of the Java SE 6 TCK under the terms described in the JSR-270 business terms.

Sun will license the standalone TCK for this JSR for a flat fee of $50 K. In addition, Sun will make the standalone TCK available for no charge to Java SE TCK licensees, qualified individuals and not for profit organizations.

2006.10.12:

2.13 Please describe how the RI and TCK will de delivered, i.e. as part of a profile or platform edition, or stand-alone, or both. Include version information for the profile or platform in your answer.

We plan to include the RI and TCK as part of Java SE 6 as well as making the TCK available standalone.

2.15 Please provide a description of the business terms for the Specification, RI and TCK that will apply when this JSR is final.

Sun will license the RI binary for this JSR free of charge.


Original Java Specification Request (JSR)

Identification | Request | Contributions

Section 1. Identification

Submitting Member: Sun Microsystems, Inc

Name of Contact Person: Neal Gafter

E-Mail Address: Neal.Gafter@sun.com

Telephone Number: +1 408 276 7080

Fax Number: +1 408 276 7700


Specification Lead: Neal Gafter

E-Mail Address: Neal.Gafter@sun.com

Telephone Number: +1 408 276 7080

Fax Number: +1 408 276 7700


Initial Expert Group Membership:

TBD

Supporting this JSR:

Sun Microsystems
IBM
Oracle
Borland
Sybase
IBM



Section 2: Request

2.1 Please describe the proposed Specification:

The JavaTM Compiler API is a set of interfaces that describes the functions provided by a JavaTM Language Compiler, and a service provider framework so vendors can provide implementations of these interfaces.

The interfaces abstract the way a compiler interacts with its environment. While the existing command-line versions of compiler receive their inputs from the file systems and deposit their outputs there, reporting errors in a single output stream, the new compiler API will allow a compiler to interact with an abstraction of the file system. This abstraction will likely be provided by an extension of the NIO facilities in Tiger (1.5), and allow users to provide source and class files (and paths) to the compiler in the file system, in jar files, or in memory, and allowing the compiler to deposit its output similarly. Diagnostics will be returned from a compiler as structured data, with both pre- and post-localization messages available.

In addition, the new API should provide a facility for a compiler to report dependency information among compilation units. Such information can assist an integrated development environment in reducing the scope of future recompilations.

Future versions of this API might expose more of the structure of the program, for example the declaration structure of the program (ala the javadoc API), program annotations (JSR 175) or even the code itself (ASTs: Abstract Sytntax Trees). These are not goals of the initial version of this specifications.

2.2 What is the target Java platform? (i.e., desktop, server, personal, embedded, card, etc.)

J2SE

2.3 What need of the Java community will be addressed by the proposed specification?

The main initial audiences are
(1) JSP implementations, which must invoke a Java Language compiler on generated Java code
(2) IDE (Integrated Development Environments) which must process user-written source code
(3) Some internal Java facilities are simplified by the ability to generate class files efficiently through generation of source files.

2.4 Why isn't this need met by existing specifications?

There simply isn't anything like this in the platform.

2.5 Please give a short description of the underlying technology or technologies:

The reference implementation will likely be built on Sun's javac.

2.6 Is there a proposed package name for the API Specification? (i.e., javapi.something, org.something, etc.)

javax.compiler

2.7 Does the proposed specification have any dependencies on specific operating systems, CPUs, or I/O devices that you know of?

No

2.8 Are there any security issues that cannot be addressed by the current security model?

No

2.9 Are there any internationalization or localization issues?

These will be explicitly addressed by the specification.

2.10 Are there any existing specifications that might be rendered obsolete, deprecated, or in need of revision as a result of this work?

No

2.11 Please describe the anticipated schedule for the development of this specification.

We hope to have the specification completed in time to be included in the next major revision of the JavaTM platform (Tiger). Note that while this API would be part of Tiger, it would not be a required part of the JRE.

2.12 Please describe the anticipated working model for the Expert Group working on developing this specification.

Sun will lead the specification and implementation work, with experts contributing to the API specification.

2.13 Please describe how the RI and TCK will de delivered, i.e. as part of a profile or platform edition, or stand-alone, or both. Include version information for the profile or platform in your answer.

We plan to include the RI and TCK as part of J2SE 1.5.

NOTE that this section has been updated from this original request.

2.14 Please state the rationale if previous versions are available stand-alone and you are now proposing in 2.13 to only deliver RI and TCK as part of a profile or platform edition (See sections 1.1.5 and 1.1.6 of the JCP 2 document).

Not applicable.

2.15 Please provide a description of the business terms for the Specification, RI and TCK that will apply when this JSR is final.

The terms will be the same as those for J2SE 1.5, which are broadly the same as J2SE 1.4.

NOTE that this section has been updated from this original request.



Section 3: Contributions

3.1 Please list any existing documents, specifications, or implementations that describe the technology. Please include links to the documents if they are publicly available.

See http://groups.yahoo.com/group/javax_compiler for some very early thoughts.

Sun's javac will likely form the basis of the reference implementation.

3.2 Explanation of how these items might be used as a starting point for the work.

The expert group will consider them as a starting point for ideas on defining the specification.



 
Sun Microsystems
What's New
JSRs
JCP Procedures
Community Resources
Participation
Press & Success
What is the JCP