RoboVM obsługuje większość rzeczy, których można oczekiwać od maszyny JVM, w tym odbicie, które Spring wykorzystuje do iniekcji zależności. Coś takiego jak RoboGuice powinno działać poprawnie na RoboVM.
Najbardziej zauważalną funkcją nieobsługiwaną przez RoboVM jest generowanie i ładowanie kodu bajtowego w czasie wykonywania. Biblioteki, które polegają na manipulowaniu kodami bajtowymi, nie będą mogły być używane w RoboVM.
Kolejną rzeczą, której brakuje w RoboVM, jest obsługa dynamicznego JNI. JNI jest nadal obsługiwany, ale kod natywny musi być połączony statycznie w czasie kompilacji, a nie dynamicznie w środowisku wykonawczym, jak zrobiłaby to zwykła maszyna JVM. Powodem jest to, że zwykłe JNI jest oparte na bibliotekach dynamicznych, ale biblioteki dynamiczne nie są dozwolone w systemie iOS.
Biblioteka klasy runtime RoboVM (java.*
, javax.*
, itp.) Jest oparta na częściach biblioteki środowiska uruchomieniowego Androida innych niż UI. Tak więc każda technologia działająca na Androida i nie używająca klas UI Androida powinna teoretycznie pracować nad RoboVM.
Dzięki, więc AspectJ nie będzie działać. – HighTML
Może to działać, jeśli używasz tkania statycznego. – ntherning