Find JSRs
Submit this Search


Ad Banner
 
 
 
 

JSR-000292 Supporting Dynamically Typed Languages on the Java Platform - Proposed Final Draft

JSR-000292 Supporting Dynamically Typed Languages on the JavaTM Platform
(Proposed Final Draft)

This Specification is Proposed Final Draft as per Section 3.3 of the Java Community ProcessSM Program, version 2.7.

Specification:
  • Download
Submit your comments to the Specification Lead directly: john.r.rose@oracle.com

Note: This specification will be part of JSR 336. It will be incorporated into relevant sections of the API javadoc, the Java Language Specification, and the Java Virtual Machine Specification.

Annex Three in the Proposed Final Draft of JSR 336 contains updated versions of the JLS and JVMS books. Within these books, only a few of the sections are relevant to JSR 292. Here is a summary of those sections:

JSR 292 defines new features in Java™ SE 7 which improve support for the compilation and execution of languages other than Java, especially dynamic languages. These changes affect not only the Java SE 7 APIs, but also affect the bytecode format and the Java language itself. Although the API specifications discuss and outline these latter changes, they are defined normatively in the Java Virtual Machine Specification and the Java Language Specification, as updated for Java SE 7. Both of those specifications are updated by the JSR 336 umbrella JSR. They may be downloaded as pdf files in Annex 3 of the Proposed Final Draft of JSR 336.

The language changes are specified by updates to the Java Language Specification (JLS). The JLS changes which are specific to JSR 292 appear with change bars in purple text in the associated pdf file in the JSR 336 download. In that file, the changes may be observed in two places:

§15.12.3
definition of signature polymorphic methods; typing of their arguments
§15.12.4.4
special rules for invoking signature polymorphic methods

The virtual machine changes are specified by updates to the Java Virtual Machine Specification (JVMS). The JVMS changes which are specific to JSR 292 appear with change bars in the associated pdf file in the JSR 336 download. In that file, the changes may be observed in a number of places:

§4.1
mentions BootstrapMethods as a standard attribute
§4.4
table 4.3 mentions the new constant pool tags; see also 4.7 table 4.6
§4.4.8
CONSTANT_MethodHandle_info
§4.4.9
CONSTANT_MethodType_info
§4.4.10
CONSTANT_InvokeDynamic_info
§4.7.21
BootstrapMethods attribute
§4.10.1
adjustment of method/imethod functor to include new dmethod
§4.10.1
invokedynamic instruction rules (“An invokedynamic instruction is type safe...”)
§4.10.1
ldc instruction rules (“An ldc instruction with operand CP...”)
§5.1
definition of symbolic references derived from new constant pool types
§5.4.3
resolution of invokedynamic occurs once per instruction
§5.4.3.3
resolving signature polymorphic methods
§5.4.3.5
resolving symbolic references to MHs and MTs
§5.4.3.6
resolving call site specifiers
§5.5
initialization triggered by some method handle constants (get/put/invoke static)
§6.5
definition of invokedynamic instruction (“Each specific lexical occurrence of an invokedynamic instruction...”)
§6.5
adjustment of invokevirtual instruction (“If the method is signature polymorphic...”)
§6.5
adjustment of ldc instruction (“a symbolic reference to a method type or a method handle...”)
See Also
JSR-000292 Supporting Dynamically Typed Languages on the Java Platform Detail Page
List of Proposed Final Drafts Page
Community Process Main Page