2010-07-13 7 views
25

Nachdem ich die ganze "Enterprise" -Programmierung für eine Weile gemacht habe, bin ich ernsthaft desillusioniert von der Sprache selbst und fühle mich immer ziemlich behindert, wenn ich wieder zurück muss. Die Projektgröße Ihrer durchschnittlichen Android-App ist nicht zu einschüchternd und die Bibliotheken sind eigentlich ziemlich nett in Bezug auf ihren Codierungsstil, aber wenn ich Java vermeiden könnte, würde ich es sicherlich tun.Android ohne Java

Also das ist die Frage: Kann ich es vermeiden? Zwar gibt es viele JVM-Sprachen, die auf Desktops und Servern eine Option darstellen, doch die Dalvik-VM und die Geräte selbst bieten einige Einschränkungen. Dies scheint bei der JIT etwas besser zu sein, aber die Beschränkung auf die Spitze wäre eine ziemlich harte Entscheidung.

Die einzige Alternative, die ich kenne, scheint Scala zu sein. Gibt es eine Möglichkeit, die ich vermisse? Clojure scheint genau die Probleme zu lösen, die ich oben mit Dalvik illustriert habe, aber da der AppInventor auf Kawa basiert, könnte es Hoffnung auf ein Lisp auf der mobilen Plattform geben?

Welche anderen Sprachen sind bereits verwendbar oder machen Fortschritte?

+2

möglich duplicate von [Kann ich für Android mit jeder JVM-Sprache programmieren?] (Http://stackoverflow.com/questions/3002566/can-i-program-for-android-using-any-jvm-language) –

+1

Diese und andere Diskussionen haben viele potentielle Kandidaten erwähnt. Und es ist wirklich nicht so schwer, irgendeine JVM-Sprache etwas unter Android laufen zu lassen, Praktikabilität und Performance sind andere Probleme ... – mhd

+0

In Bezug auf Oracles Vorwürfe gegen Android, kann es eine echte Zukunftsmöglichkeit aus Sicht von Google sein, Java fallen zu lassen und einige zu markieren andere Sprache als Haupt unterstützt? (Vielleicht sollte ich eine echte Frage stellen, nicht nur einen Kommentar.) – pcjuzer

Antwort

14

Persönlich würde ich sagen, dass Scala Ihre beste Wette ist. Es funktioniert wirklich gut, mit dem einen Nachteil, dass Sie Scala als eine Abhängigkeit einschließen müssen (was die Größe Ihrer Anwendung erhöht).

+4

Die Größe der Anwendung kann mit ProGuard unter Kontrolle gehalten werden. – missingfaktor

+0

@missingfaktor zustimmen, der endgültige Unterschied in der Größe apk kann so niedrig wie ~ 500Kb sein –

1

This link hat einige details wie man scala apps auf android funktioniert. Ich bin mir sicher, dass Sie etwas Ähnliches für Clojure oder andere JVM-Sprachen tun können.

Ruboto strebt in JRuby zu bringen.

9

Gibt es eine Möglichkeit, ich bin fehlt?

Tonnen von 'em!

scheint Clojure genau die Probleme laufen in die ich oben mit Dalvik dargestellt habe

Ich bin davon nicht bewusst. Jede JVM-Sprache, die ein Voraus-Compiler ist (d. H. Java-Bytecode auf dem Entwickler-PC erzeugt) sollte mit Dalvik arbeiten. für die Codegenerierung

aber als der AppInventor auf Kawa gebaut es könnte die mobile Plattform

AFAIK, App Inventor verwendet Kawa nur auf Hoffnung auf eine Lisp sein.

Welche anderen Sprachen sind bereits nutzbar oder machen Fortschritte in Richtung dieser?

Nun, es gibt HTML5 (Javascript), die im Offline-Modus OK funktioniert.

Oder es gibt PhoneGap (HTML + CSS + Javascript).

Oder gibt es Rhodes (Rails-ähnliche Apps in Ruby auf dem Gerät).

Oder es gibt Titanium Appcelerator Mobile (HTML + Javascript, aber mit Javascript-Hooks, um native UI Widgets zu rendern).

Oder es gibt Flash, zumindest für Android 2.2+.

Oder, es gibt AIR ... nun, OK, das ist immer noch in der Vorabversion.

Wie Elfred bemerkte, während ich dies schrieb, gibt es JRuby mit Ruboto.

Es gibt Bedrock, Corona, DroidScript, Flixel, MobiForms, MonoDroid, MoSync, Squeak und SuperWaba.

Es gibt C/C++ über das NDK, obwohl das hauptsächlich für das Hinzufügen von Erweiterungsbibliotheken zu einer Java-App ist, mehr als das Schreiben von vollständigen nativen Code-Anwendungen.

Es gibt SL4A (früher Android Scripting Environment oder ASE), das Ihr Gateway zu Python, Perl, Lua und anderen Skriptsprachen ist. Ab diesem Moment können Sie diese Skripte nicht als APKs verpacken, aber sie arbeiten daran.

Nun, keiner von ihnen wird Ihnen genau das Aussehen einer "normalen" Android-App geben. Für diese benötigen Sie eine JVM-Sprache mit einer Kompilierung vor der Zeit. Und es ist keine Frage, dass Mood-Standard-Java-Android-Apps mit Abstand die zahlreichsten sind. Aber im Gegensatz zu einigen Betriebssystemen mit Fruchtgeschmack, die solche Dinge blockieren, gibt es viele Möglichkeiten, mit Alternativen zur traditionellen Java-Programmierung mit Android zu experimentieren.

Irgendein baldender Kerl schreibt ein Buch, das alle diese Optionen überprüfen wird, aber das ist nur teilweise jetzt bereit.

+2

Momentan schaue ich mir hauptsächlich "native" Anwendungen an. Und meine Informationen über Clojure könnten ein bisschen alt sein, aber ich erinnere mich an etwas auf der Mailingliste vor ein paar Monaten, wo die Startzeiten ziemlich unerschwinglich waren. Es ist nicht schwer, etwas auf Dalvik/Android zu installieren, aber es ist schwer, etwas zu verkaufen, das dramatisch unterdurchschnittlich abschneidet. – mhd

+1

"Clojure scheint genau die Probleme zu lösen, die ich oben bei Dalvik illustriert habe" Die Probleme mit Clojure haben mehr mit miesen Startup-Zeiten, viel Overhead und einem schlechten JIT-Compiler (verglichen mit Hotspot) zu tun. Die funktionelle Natur von Clojure bedeutet auch, dass es sehr auf den Müllsammler ankommt, ein weiteres Gebiet, in dem Dalvik weit hinter Hotspot liegt. – technomancy

11

Haben Sie bei Mirah geschaut? Es gibt Ihnen eine Ruby-artige Syntax und kompiliert zu Java. Es wurde als CoffeeScript von Java bezeichnet.

+1

Mirah ist ideal, da es mehr moderne Features wie Inferenz und Schließungen Typ fügt aber Null Laufzeit Overhead hinzu. Schauen Sie sich Pindah an: https://github.com/mirah/pindah ein kleines Tool, um beim Aufbau von Mirah Android Apps zu helfen. Dr. Dobbs hat einen guten Überblick über die Sprache: http://drdobbs.com/java/229400307 – technomancy

+0

@technomancy, Richtig, aber wie bekommt man IDE-Unterstützung dafür? – Pacerier

0

Mit Xamarin Studio können Sie C#/Mono erstellen und Apps für Android und iOS erstellen. Jetzt müssen die Präsentationsebenen auf beiden Plattformen anders implementiert werden, aber für die Möglichkeit, C# zu verwenden, ist es ein großer Gewinn.

1

DroidScript ist wahrscheinlich eines der einfachsten Entwicklungstools für die Android-Entwicklung. Wie Cordova verwenden Sie JavaScript, aber im Gegensatz zu Cordova haben Sie die Wahl, native Android GUI oder HTML5 zu verwenden, um Ihre App-Oberflächen zu erstellen.

Auch haben Sie immer noch Zugriff auf alle Geräte Sensoren/Hardware, ohne dass Sie viele komplizierte Plugins importieren müssen. Außerdem erhalten Sie den Bonus, dass Sie auf Ihrem mobilen Gerät auch wirklich entwickeln können (Sie können sogar APKs erstellen und sie von Ihrem Gerät aus veröffentlichen).

Ich würde sagen, es ist sehr gut für Anfänger oder Prototyping, aber vielleicht nicht flexibel genug für erfahrene Entwickler.

0

Ich habe es noch nie benutzt, aber Kotlin ist eine neue Sprache, die auf der JVM von JetBrains (der Hersteller von Android Studio) läuft, die eine Erwähnung verdient. Die Kotlin-Website behauptet, dass die Sprache 100% kompatibel mit Java ist und hat ein Tutorial für Getting started with Android and Kotlin und Android Studio kommt jetzt tatsächlich mit Kotlin-Unterstützung.