Update 3. KOTLIN WIRD JETZT OFFIZIELL FÜR DIE ENTWICKLUNG VON ANDROIDEN UNTERSTÜTZT . VON GOOGLE. YAAAAAAAAS!
Update 2 : Es sieht so aus, als ob JetBrains Kotlin für Android langfristig wirklich unterstützt . Ich bin ein glücklicher Kotlin-Benutzer :).
Update : Hadi Hariri von JetBrains erwähnte, dass sie einige Informationen zu diesem Thema veröffentlichen werden . Ich werde diesen Beitrag aktualisieren, sobald sie es tun.
=== DEPRECATED STUFF NEXT ===
Google hat gerade eine Vorschau für das kommende Android N mit einigen interessanten Funktionen veröffentlicht. Die bemerkenswerteste ist die teilweise Unterstützung der Java 8-Sprache . Dies ist aufgrund der neuen Jack-Toolchain möglich, an der Google arbeitet.
Die aktuelle Toolchain mit javac oder kotlinc :
javac ( .java
-> .class
) -> dx ( .class
-> .dex
)
kotlinc ( .kt
-> .class
) -> dx ( .class
-> .dex
)
Neue Jack-Toolchain:
Jack ( .java
-> .jack
-> .dex
)
Ich gehe davon aus, dass Google Jack zur Standard-Toolchain für die Android-Entwicklung machen wird. Update: Jack ist jetzt veraltet . Ja.
Meine Frage ist, wie sich diese neue Toolchain in Zukunft auf mich als Kotlin- Benutzer für die Android-Entwicklung auswirken wird . Werde ich "in der Vergangenheit stecken bleiben"?
quelle
Antworten:
Haftungsausschluss: Ich arbeite an Jack
Dies wird Sie nicht betreffen. Kotlins Compiler erzeugt Java 6-Bytecode, den Jack / Jill problemlos importieren können.
quelle
@ Pavel Dudka
Jack - ist ein Compiler. Ähnlich wie Javac, aber es macht etwas anderes:
Wie Sie sehen können, kompiliert Jack Java-Quellcode direkt in die Dex-Datei! Wir haben keine * .class-Zwischendateien mehr, daher wird das dx-Tool nicht benötigt!
Aber warte! Was ist, wenn ich eine Bibliothek eines Drittanbieters in mein Projekt einbinde (die als Sammlung von .class-Dateien geliefert wird)?
Und dann kommt Jill ins Spiel:
Jill kann Klassendateien verarbeiten und in ein spezielles Jayce-Format umwandeln, das als Eingabe für den Jack-Compiler verwendet werden kann.
Lassen Sie uns jetzt für eine Sekunde beiseite treten und überlegen ... Was wird mit all den coolen Plugins passieren, nach denen wir so süchtig geworden sind? Sie alle brauchen .class-Dateien und Jack Compiler hat diese nicht mehr ...
Glücklicherweise bietet Jack einige der für uns wichtigen Funktionen sofort an:
Vorteile:
Jack unterstützt die Java-Programmiersprache 1.7 und integriert zusätzliche Funktionen, die unten beschrieben werden.
Vordexen
Beim Generieren einer JACK-Bibliotheksdatei wird der .dex der Bibliothek generiert und als Pre-Dex in der .jack-Bibliotheksdatei gespeichert. Beim Kompilieren verwendet JACK den Pre-Dex aus jeder Bibliothek erneut. Alle Bibliotheken sind vordexiert.
Inkrementelle Zusammenstellung
Inkrementelle Kompilierung bedeutet, dass nur Komponenten, die seit der letzten Kompilierung berührt wurden, und ihre Abhängigkeiten neu kompiliert werden. Inkrementelle Kompilierung kann erheblich schneller sein als eine vollständige Kompilierung, wenn Änderungen nur auf einen begrenzten Satz von Komponenten beschränkt sind.
Umpacken
JACK verwendet jarjar-Konfigurationsdateien, um das Umpacken durchzuführen.
Multidex-Unterstützung
Da Dex-Dateien auf 65K-Methoden beschränkt sind, müssen Apps mit über 65K-Methoden in mehrere Dex-Dateien aufgeteilt werden. (Weitere Informationen zu Multidex finden Sie unter "Erstellen von Apps mit über 65.000 Methoden".)
Nachteile:
quelle
Google wird Jack nicht als Standardwerkzeug verwenden, aber
Jack and Jill
.Das Kompilieren von .class-Dateien zu dex mit Jill ist hier, um zu bleiben. Ansonsten können Sie sich von jar / aar-Bibliotheken verabschieden.
Ob Jack oder Jill langsamer werden, steht noch zur Debatte. Das Android-Team hofft, dass Jack schneller sein wird als der aktuelle Build-Prozess, aber das ist derzeit nicht der Fall
Darüber hinaus sind Jack und Dex offen verfügbar. Nichts hindert das Kotlin-Team daran, ein Tool zu schreiben, das .jack- oder .dex-Dateien aus dem Kotlin-Quellcode ausgibt.
quelle
UPDATE (16.03.2017)
Zum Glück ist Jack tot und hat keine Auswirkungen auf Kotlin-Entwickler.
Wenn Jack die Zukunft ist, werden Sie mit Kotlin in der Vergangenheit stecken bleiben. Derzeit unterstützt Jack keine Plugins, die Nicht-Java-Quellen in Dalvik-Bytecode kompilieren können. Und selbst wenn dies der Fall wäre, müsste JetBrains dem Kotlin-Compiler ein neues Backend hinzufügen, was keine triviale Aufgabe ist. Sie müssen also Kotlin mit Jill verwenden und es wird etwas sehr ähnliches sein wie die Toolchain, die Sie jetzt verwenden.
Wie Sie im Bild unten sehen können, können Sie das Projekt auch dann in ein Bibliotheksprojekt konvertieren, um Jill zu verwenden, wenn es unmöglich ist, Jack explizit auszuschalten. Das Anwendungsprojekt verweist nur auf dieses Bibliotheksprojekt.
Ich sehe nur, wie Kotlin mit Jack arbeiten kann, was wahrscheinlich nicht implementiert wird, indem ich dem Kotlin-Compiler ein Java-Backend hinzufüge, dh ein Backend, das Java-Code wie Xtend generiert . In diesem Fall kann vom Kotlin-Compiler generierter Code von Jack wie jeder andere Java-Code verarbeitet werden.
Aber im Moment wissen wir nicht genau, was Jack unterstützen wird, wenn es veröffentlicht wird. Vielleicht ändert sich etwas dramatisch und das Hinzufügen von Kotlin-Unterstützung zu Jack wird möglich.
quelle
Wie in dem Blog-Beitrag ( Kotlins Android Roadmap ) gesagt , der heute erschien:
Also wird Kotlin Jack & Jill irgendwann unterstützen und davon profitieren.
quelle
Laut aktueller Google-Ankündigung -
Wir müssen uns also keine Sorgen machen, dass die Jack-Toolchain zur Standard-Toolchain für die Android-Entwicklung wird. Sie können weiterhin Kotlin oder normale Javac / DX-Tools verwenden.
Quelle: Future of Java 8 Language Feature Support für Android
quelle
Ich habe diesen Blog-Beitrag bereits im offiziellen Kotlin-Blog gefunden :: Kotlins Android-Roadmap
Dort würden Sie einen Teil finden, der Folgendes sagt:
Also, wie @LukasBergstrom sagte, wird es kein Problem mit "in der Vergangenheit stecken bleiben" geben ;-)
Sie können auch die
Reddit
Diskussion zu diesem Thema überprüfen : Wie ist der Status von Kotlin mit Jack und Jill?Viel Spaß beim Codieren.
quelle
Laut Kotlin-Blog wird der Abschnitt mit den neuen Funktionen von Version 1.1-beta2 veröffentlicht:
quelle