2013-10-23 10 views
5

Mit großem Interesse habe ich RoboVM für die Entwicklung von iOS verfolgt. Kann mir jemand auf die Einschränkungen Ihres JavaFX (oder welcher Technologie auch immer) hinweisen, wenn Sie auf iOS laufen?Grundlegende Einschränkungen des RoboVM-Compiler

Zum Beispiel können Sie Spring verwenden? Ich denke, dies wird niemals möglich sein, da RoboVM einen Voraus-Compiler verwendet und Spring eine Laufzeitabhängigkeits-Injektion ist. Kann jemand etwas ausarbeiten?

Wie wäre es mit JPA und anderen Java EE-Technologien?

Antwort

8

RoboVM unterstützt die meisten Dinge, die Sie von einer JVM erwarten, einschließlich der Reflektion, die Spring für die Abhängigkeitsinjektion verwendet. So etwas wie RoboGuice sollte auf RoboVM funktionieren.

Das bemerkenswerteste Merkmal, das von RoboVM nicht unterstützt wird, ist die Generierung und das Laden von Laufzeitbytecodes. Bibliotheken, die auf Bytecode-Manipulation beruhen, können auf RoboVM nicht verwendet werden.

Eine andere Sache, die in RoboVM fehlt, ist die Unterstützung für dynamische JNI. JNI wird weiterhin unterstützt, aber der systemeigene Code muss zur Kompilierungszeit statisch verknüpft werden, im Gegensatz zur Laufzeit dynamisch, wie dies bei einer normalen JVM der Fall wäre. Der Grund dafür ist, dass gewöhnliches JNI auf dynamischen Bibliotheken basiert, dynamische Bibliotheken jedoch auf iOS nicht erlaubt sind.

Die Laufzeitklassenbibliothek von RoboVM (java.*, javax.*, usw.) basiert auf den Nicht-UI-Teilen der Laufzeitklassenbibliothek von Android. Jede Technologie, die auf Android funktioniert und nicht die Android UI-Klassen verwendet, sollte theoretisch auf RoboVM funktionieren.

+0

Danke, damit AspectJ nicht funktioniert. – HighTML

+2

Es könnte funktionieren, wenn Sie statische Weben verwenden. – ntherning