2013-10-23 16 views
5

Z wielkim zainteresowaniem śledzę RoboVM dla rozwoju iOS. Czy ktoś może wskazać mi ograniczenia twojej JavaFX (lub jakiejkolwiek technologii, której używasz) podczas pracy na iOS?Podstawowe ograniczenia RoboVM z wyprzedzeniem kompilatora

Na przykład, czy możesz użyć Springa? Wydaje mi się, że to nigdy nie będzie możliwe, ponieważ RoboVM używa kompilatora z wyprzedzeniem, a Spring jest wtyczką zależną od czasu wykonywania. Czy ktoś może rozwinąć?

Co z JPA i innymi technologiami Java EE?

Odpowiedz

8

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.

+0

Dzięki, więc AspectJ nie będzie działać. – HighTML

+2

Może to działać, jeśli używasz tkania statycznego. – ntherning