code
docs
tests
First of all, your code should never, ever, have a dependency on Core Runtime. If you think you need this, you should probably contact users@polygene.apache.org mailing list and see if your usecase can either be solved in a existing way or perhaps that a new Core SPI Extension is needed.
Table 18. Artifact
| Group ID | Artifact ID | Version |
|---|---|---|
org.apache.polygene.core | org.apache.polygene.core.runtime | 3.0.0 |
Let’s repeat that; Never, never, ever depend on Core Runtime. Make sure that the compile dependency does NOT include
the org.apache.polygene.core.runtime jar.
BUT, there are super-rare cases, where a custom AssemblyHelper might be needed. One known use-case is to introduce an alternative bytecode generation algorithm, either better than the one we have, or for a different system, such as Dalvik.
To do this, add the AssemblyHelper implementation instance as metaInfo to the ApplicationAssembly
We think this is so rare, that the AssemblyHelper class will remain in the core/runtime module and has not
been promoted to the core/bootstrap module. If you plan to use this feature, please contact the Polygene development
team at dev@polygene.apache.org to ensure we can make this a better supported, backed by real usecases.
Fictitious example of using a hypothetical Dalvik capable classloader;
private static Energy4Java polygene;
private static Application application;
public static void main( String[] args )
throws Exception
{
// Create a Polygene Runtime
polygene = new Energy4Java();
// Create the application
application = polygene.newApplication( factory -> {
ApplicationAssembly assembly = factory.newApplicationAssembly();
assembly.setMetaInfo( new DalvikAssemblyHelper() );
[...snip...]
return assembly;
} );
// Activate the application
application.activate();
}
public static class DalvikAssemblyHelper extends AssemblyHelper
{
@Override
protected FragmentClassLoader instantiateFragmentClassLoader( ClassLoader parent )
{
return new DalvikFragmentClassLoader( parent );
}
}
public static class DalvikFragmentClassLoader extends FragmentClassLoader
{
public DalvikFragmentClassLoader( ClassLoader parent )
{
super( parent );
}
}