NetBeans is capable of being extended by pluggable modules providing additional functionality.
Allows the generated constructor to call any constructor, signature is derived from specified static method parameters. See javadoc for @ConstructorDelegate
allows to require that a class should serve as a superclass of some other class.
See @PatchFor javadoc for further
To support removing obsolete constructors,
@ConstructorDelegate has been
created to mark moved initialization code. See @ConstructorDelegate javadoc
for more details.
Most of JDK installations come with additional JavaFX JAR. Alas the location of the JAR is different on JDK7 and JDK8, moreover on some operating systems (think of Solaris) the JAR is not present at all. To hide the differences and allow smooth consumption of JavaFX APIs NetBeans provide following conventions.
If you want to code against JavaFX APIs, add dependency
org.netbeans.libs.javafx library. Then you'll
be able to compile and run while using the API.
If you want to depend on presence of JavaFX JAR inside of JDK installation structure, use:
This token is made available by the module system, if the
JavaFX module is present in the JDK. Btw. the
org.netbeans.libs.javafx library has such
dependency and as a result, all modules that depend on it
will be disabled on Solaris or on OpenJDK (if installed without
findCodeNameBase(String) method returning
Dependency.create now allows code name base where dot is followed by number (like org.apache.servicemix.specs.jsr303_api_1.0.0). This increases the inter-operability with OSGi bundles using such naming style.
To maintain binary compatibility, method implementations may be injected at runtime, in a form of a superclass in the class' inheritance hierarchy. Modules compiled against older version of APIs which contains MethodReferences to methods removed from the oficial APIs will be then linked according to JVM Resolution algorithm to a matching method present in the superclass of the referenced type.
Annotations are used to instruct the ClassLoader to make transformations to the API classes. PatchFor causes the annotated class to be injected as a superclass of the API class identified by the annotation's value. ConstructorDelegate marks a method, which is called as constructor implementation in the case that it is necessary to preserve a constructor for binary compatibility.
Read more about the implementation in the answers to architecture questions.