ReadyTalk / avian

[INACTIVE] Avian is a lightweight virtual machine and class library designed to provide a useful subset of Java's features, suitable for building self-contained applications.
https://readytalk.github.io/avian/
Other
1.22k stars 172 forks source link

What Java/JVM subset does Avian support? #543

Closed cubuspl42 closed 4 years ago

cubuspl42 commented 7 years ago

"Avian is a lightweight virtual machine and class library designed to provide a useful subset of Java’s features"

But what subset? It's a critical question everyone would ask before considering to integrate Avian into a serious, commercial application. Do you plan to provide some compatibility chart?

dicej commented 7 years ago

We've basically implemented the subset of functionality that we've needed to make our applications work, where "we" means the original developers at ReadyTalk and subsequent contributes. To get an idea of what that encompasses, you can browse the JavaDocs on the website and the test suite in the test directory of the repo.

There's no existing or planned compatibility chart. If you're considering using Avian in a commercial project, be aware that it's no longer under active development. I maintain it in my spare time these days, accepting pull requests and investigating bug reports, but have no plans to add new features myself.

cubuspl42 commented 7 years ago

Thank you for your answer. Are you at least aware of any major missing features? What would be the expected symptoms of a missing functionality? A crash (like segfault) or maybe more like an JVM exception?

dicej commented 7 years ago

Your best bet is to try running your app with Avian and see what happens. I can tell you that in the VM, Java 8 lambda support is incomplete (see recent pull requests for details) but handles most common cases. There's also no JVMTI support. Other than that, most everything else should work, e.g. JNI, reflection, threading, etc.

As far as the Avian class library goes, it only supports a small fraction of the classes and methods that Java 8's standard class library supports. You can also use the OpenJDK class library with the Avian VM, although depending on your needs you might as well just use OpenJDK as-is, i.e. with the HotSpot VM.