By a very crude look at the source, looks very lightweight indeed
> Just-In-Time (JIT) compilation for fast method execution
> Generational, copying garbage collection ensures short pause times and good spatial locality
> Thread-local heaps provide O(1) memory allocation with no synchronization overhead
> Null pointer dereferences are handled via OS signals to avoid unecessary branches
However, that's not what Avian is designed for. We (ReadyTalk) don't have the resources to compete in that sort of market, as fun as that might be. We designed Avian to run a relatively light-weight client application, so we can deploy the same code across all our platforms. We're not running a game or a server, so we don't care a lot frame rate or requests per second.
I still don't see how it's better than Java in that scenario, which also runs on all platforms?
Exceptions like page faults are very slow in modern CPUs in comparison to branches. Branch prediction works really well.
Is the idea that you can write an app in a language which is a subset of Java, then deploy it onto multiple different platforms? Given that you can already do that with actual Java, what's the advantage? Is it just that you can deploy on iOS, where there's no JVM?
Also, keep in mind that Avian predates at least some of the other solutions to this problem. You could use something like https://github.com/libgdx/packr as well.
It would also be possible to implement java.awt.Robot from scratch and add it to Avian's class library. That would give you a smaller executable but require significant effort and a lot of platform-specific code.
The best choice depends on what aspect(s) of a "full blown Java VM" you're trying to avoid: e.g. size, installation complexity, licensing issues, etc.
If there's interest in porting Avian on Android, we could do it, but since it already has Dalvik/ART, I'm not sure there's much of a point.
Both of those features work with Java, Clojure, Scala, etc. For example: https://groups.google.com/d/msg/clojure/U4i4nVsYfi8/1GSGgNM8...
More info is available here: http://oss.readytalk.com/avian-web/javadoc-1.2.0/avian/Conti...
[1] https://github.com/ReadyTalk/avian#building-with-the-openjdk...