Current State Of The Project

Reflection Elements Resolved (%) Resolved from GraalVM (%)
Minecraft Server 2172 19.4% 0%
SpringProject 3592 5.7% 0%

Why Is This Hard?

GraalVM Native Image is a revolution in the JVM ecosystem but it is impossible to configure for most applications. This is what we want to fix.

For instance, the class below has one path for Development, and one for Live, and it crashes in Production.

This class is using an environment variable.



public class Main {
    public static void Main(String[] args) throws ClassNotFoundException {
        boolean flag = false;
        if (System.getenv("PROD").equals("1"))
            flag = true;
        if (flag) {
            for (int methodToCallCount=0; methodToCallCount <= 7; methodToCallCount++) {
                for (int i=0; i <= 15; i++) {
                    Class thisClass = Class.forName("io.manycore.reflection.Meng" + i);
                    System.out.println(thisClass.toString());
                }
            }
        }
    }
}

Exception in thread "main" java.lang.ClassNotFoundException: io.manycore.reflection.Meng0
        at com.oracle.svm.core.hub.ClassForNameSupport.forName(ClassForNameSuport.java:60)
        at java.lang.Class.forName(DynamicHub.java:1194)
        at io.manycore.Main.main(Main.java:12)


Using GraalVM tools, the program crashes.

Using Magicator tools, the program works.

class io.manycore.reflection.Meng0
class io.manycore.reflection.Meng1
class io.manycore.reflection.Meng2
class io.manycore.reflection.Meng3
class io.manycore.reflection.Meng4
class io.manycore.reflection.Meng5
class io.manycore.reflection.Meng6
class io.manycore.reflection.Meng7
class io.manycore.reflection.Meng8
...

Latest Tweets