|
| 1 | +# Functional Specifications |
| 2 | + |
| 3 | +This directory contains functional specifications for Native Image. |
| 4 | + |
| 5 | +- [JCA Security Provider Inclusion](security-providers.md): provider lookup and factory-call behavior |
| 6 | + based on metadata. |
| 7 | +- [Java Reflection Registration](reflection.md): class acquisition, metadata queries, invocation, |
| 8 | + serialization, and unsafe access. |
| 9 | +- [Functional Decisions](decisions/): product behavior decisions and tradeoffs for the |
| 10 | + specifications. |
| 11 | + |
| 12 | +## Notation |
| 13 | + |
| 14 | +The specifications in this directory share the following notation. |
| 15 | + |
| 16 | +Non-normative text appears as an indented note. |
| 17 | +It explains or motivates a rule and states no requirement of its own. |
| 18 | + |
| 19 | +> This is non-normative text. |
| 20 | +> It gives rationale, intuition, or examples. |
| 21 | +
|
| 22 | +A definition that introduces a **bold term** states the exact condition under which that term |
| 23 | +applies, with the phrase *if and only if*. |
| 24 | + |
| 25 | +Each specification names its default package. |
| 26 | +Whenever it refers to a class or interface using a single identifier N, the intended reference is to |
| 27 | +the class or interface named N in that package. |
| 28 | +Classes and interfaces from other packages are named by their canonical name, for example |
| 29 | +`java.util.ServiceLoader`. |
| 30 | + |
| 31 | +A cross-reference within a specification is shown as §x.y and links to that section. |
| 32 | +A reference to The Java Language Specification is written as JLS §12.4, and a reference to the Java |
| 33 | +SE API documentation names the specified class, interface, or member. |
| 34 | + |
| 35 | +The specifications use the following terms of the Java Platform specifications with their standard |
| 36 | +meaning: |
| 37 | + |
| 38 | +- *Loading* (JLS §12.2) is finding the binary form of a class and constructing a `java.lang.Class` |
| 39 | + object for it. |
| 40 | + *Creation of a new class instance* (JLS §12.5) is the separate act of instantiating that class. |
| 41 | +- *Class initialization* (JLS §12.4) is the execution of a class's static initializers. |
| 42 | +- The *binary name* (JLS §13.1) of a class is the name by which reflection metadata, |
| 43 | + `java.lang.Class.forName`, and diagnostics identify it. |
0 commit comments