Avianは軽量、ポータブル、組み込み可能なVMであり、Linux、FreeBSD、Windowsと並んで、iOSでJavaの縮小サブセットをサポートすることを目指している。バージョン1.2では、LinuxとiOSにおけるARM64のサポートが追加された。
Avianは主として、VMと追加のクラスおよびリソースを提供するjarファイルを埋め込んだ、自己完結したアプリケーションをデプロイ可能にするために作られている。AvianはJITコンパイラをベースとする。iOSの場合には、署名されたコードしか実行できず、動的なコード生成ができないというプラットフォームの要件に従うため、JITコンパイラはAOTを動かしている。
Avianのコアコントリビュータの一人であるJoshua Warner氏によると、Avianは特に、十分な権限がないなどの理由で「クライアントマシンすべてにJavaを展開したくない」企業に適しているそうだ。そうしたシナリオでは、様々なプラットフォームに同じコードをデプロイするため、Avianはぴったりの方法になるだろう。自ら認めているように、Avianはパフォーマンスの観点で、HotSpotやRoboVMのようなものと張り合うつもりはない。
軽量であることを目指していいるにもかかわらず、AvianはAvianのデフォルトライブラリの代わりにOpenJDKクラスライブラリを使ってビルドすることもできる。これはAvianのデフォルトライブラリで使えない機能を必要としているアプリケーションにとって役立つだろう。
RoboVMのCo-FounderであるNiklas Therning氏(@ntherning)は、RoboVMとAvianの有用な比較を書いている。
- RoboVMはより積極的にiOSをターゲットにしているが、Avianはよりクロスプラットフォームであろうとしている。
- RoboVMはCocoa Touchに対するカスタムブリッジ、broを提供している。RoboVMは言うには、これはJNIよりも高速な仕組みを提供するという。
- 加えて、RoboVMは内部的にLLVMを使ってマシンコードを生成しており、「タダで」各種最適化の恩恵を得ることができる。
RoboVMとAvianのもう一つの大きな違いは、最近のXamarinの買収に続くRoboVMのクローズソース化だ。Avianはオープンソースであり、GitHubから手に入る。