2015-07-26

Here's to jjsb4a

Vielleicht erinnern Sie sich an meinen Post über den glücklosen Versuch, JSR 223 unter Android lauffähig zu machen. Damals habe ich beschrieben, dass es nicht klappt, weil in javax.script.ScriptEngineManager auf die nicht vorhandene Klasse sun.misc.Service zugegriffen wird. Und ich hatte angedeutet, mir Gedanken über eine entsprechende Wrapper-Klasse zu machen. Denn seit Java 6 gibt es mit ServiceLoader ja eine Alternative, die auch unter Android vorhanden ist.

Der Wrapper ist in trivialer Form fertig. Damit steht JSR 223 unter Android zur Verfügung. Oder auch nicht, denn die Rhino-Version, die mit der Referenzimplementierung ausgeliefert wird, erzeugt zur Laufzeit Bytecode. Und das klappt unter Android aus naheliegenden Gründen nicht. Wer mehr darüber erfahren möchte, kann dies in zwei Talks tun, die ich auf dem Herbstcampus und der TopConf Linz halten werde.

Allerdings ist in Android ja ein moderner JavaScript-Interpreter enthalten. Auf ihn zugegriffen werden kann über die Klasse WebView, also die Browser-Komponente. Warum sollte sich dies nicht nutzen lassen, um doch noch JSR 223 lauffähig zu bekommen?

Hier kommt mein Mini-open source-Projekt jjsb4a ins Spiel, das seit heute auf GitHub zu finden ist. Der unaussprechliche Name bedeutet übrigens Java-JavaScript-Bridge for Android. Derzeit kommt die Brücke noch nicht als eigenständiges Jar daher, sondern in Gestalt einer Demo. Sie befindet sich nämlich noch im Rohbau. Erste kleine Versuche sind aber möglich.

Übrigens wäre Android vermutlich nicht Android, wenn es nicht auch hier ein kleines caveat geben würde. Mehr dazu finden Sie im readme.

No comments:

Post a Comment