Codename OneErste Schritte mit Codename One


Bemerkungen

Dieser Abschnitt bietet einen Überblick über Codenameone und warum ein Entwickler es möglicherweise verwenden möchte.

Es sollte auch alle großen Themen innerhalb von Codenameone erwähnen und auf die verwandten Themen verweisen. Da die Dokumentation für Codenameone neu ist, müssen Sie möglicherweise erste Versionen dieser verwandten Themen erstellen.

Installation und Einrichtung

Installation

Codename One in NetBeans installieren

Diese Anweisungen setzen voraus, dass Sie eine aktuelle Version von NetBeans (zu diesem Zeitpunkt 8.x) heruntergeladen, installiert und gestartet haben.

  • Wählen Sie die Menüoption Tools-> Plugins Menüpunkt Extras-> Plugin

  • Wählen Sie die Registerkarte Available Plugins

  • Überprüfen Sie das CodenameOne-Plugin Installationsassistent für das Netbeans-Plugin

  • Klicken Sie unten auf die Schaltfläche install . Folgen Sie den Anweisungen des Assistenten, um das Plugin zu installieren Installationsassistent für Netbeans-Plugin Schritt 2

Codename One in Eclipse installieren

Starten Sie Eclipse und klicken Sie auf Help -> Install New Software . Sie sollten diesen Dialog erhalten

Eclipse Installieren Sie neue Software

Fügen Sie https://www.codenameone.com/files/eclipse/site.xml als Standort für die Arbeit ein und drücken Sie die Eingabetaste.

Wählen Sie die Einträge aus und folgen Sie dem Assistenten zur Installation Der Eclipse-Installationsassistent wählt Einträge aus

Codename One in IntelliJ IDEA installieren

Laden Sie IntelliJ / IDEA herunter und installieren Sie es. Beachten Sie, dass Android Studio nicht funktioniert.

Installieren Sie das Plugin mit The Plugin Center

Verwenden Sie die Suchfunktion im Plugin-Center, um das Codename One-Plugin zu suchen und zu installieren.

Was ist Codename One und wie funktioniert es?

Codename One ist ein Satz von Tools für die Entwicklung mobiler Anwendungen, die einen großen Teil ihrer Architektur von Java ableiten.

Codename One's Mission Statement lautet:

Vereinheitlichen Sie die komplexe und fragmentierte Aufgabe der Programmierung mobiler Geräte in einem einzigen Satz von Tools, APIs und Services. Infolgedessen schaffen Sie einen besser verwaltbaren Ansatz für die Entwicklung mobiler Anwendungen, ohne die Leistung / Kontrolle der Entwickler zu beeinträchtigen.

Dies bedeutet effektiv, das alte WORA-Java-Mantra (Write Once Run Anywhere) auf mobilen Geräten zu verwenden, ohne es auf den kleinsten gemeinsamen Nenner zu bringen.

Wie funktioniert Codename One?

Codename One vereint mehrere Technologien und Konzepte in einer einzigen Fassade:

  • API - abstrahiert die Unterschiede zwischen den verschiedenen Geräten.
  • Plugin - die einzige auf Client-Computern installierte Software, die folgende Funktionen enthält:
    • IDE-Integration - Präferenzen, Fertigstellung und die Möglichkeit, native Builds zu senden
    • Simulator - nativer Gerätesimulator, der lokal ausgeführt wird und das Debuggen der Anwendung ermöglicht
    • Designer / GUI Builder - Werkzeuge auf hohem Niveau
  • Build-Server - Die Build-Server akzeptieren native Geräte-Builds, die vom Plugin gesendet werden, und konvertieren die Binärdateien (JARs, nicht Quellen) in native Anwendungen (siehe unten).
  • Cloud-Server - Die Cloud-Server bieten Funktionen wie Push-Benachrichtigung, Cloud-Protokollierung usw.

Die Codename One-Werkzeugkette

Warum Server bauen?

Mit den Build-Servern können native iOS-Apps ohne Mac und native Windows-Apps ohne Windows-Computer erstellt werden. Sie machen die Installation / Aktualisierung komplexer Toolchains überflüssig und vereinfachen das Erstellen einer nativen App mit einem Rechtsklick.

Beispiel: Da native iOS-Anwendungen erstellt werden müssen, ist ein Mac OS X-Computer mit einer aktuellen Version von xcode Codename One erforderlich, der solche Computer in der Cloud verwaltet. Wenn Entwickler ein iOS-Build senden, wird ein solcher Mac verwendet, um C-Quellcode mit ParparVM zu generieren. Anschließend wird der C-Quellcode mit xcode kompiliert und die resultierende Binärdatei mit xcode signiert. Sie können die Binärdatei auf Ihrem Gerät installieren oder eine Verteilungsbinärdatei für den Appstore erstellen. Da C-Code generiert wird, bedeutet dies auch, dass Ihre App bei Änderungen von Apple "zukunftssicher" ist. Sie können auch nativen Objective-C-Code in die App einführen, während er dank der "nativen Schnittstellen" von Codename One zu 100% portabel ist.

Abonnenten können den C-Quellcode mithilfe der Include-Quellenfunktion von Codename One zurückerhalten und diese Quellen für Benchmarking, Debugging auf Geräten usw. verwenden.

Gleiches gilt für die meisten anderen Plattformen. Für Android, J2ME und Blackberry wird der Standard-Java-Code unverändert ausgeführt.

Java 8-Syntax wird durch Retrolambda unterstützt, das auf den Codename One-Servern installiert ist. Dies wird verwendet, um Bytecode nahtlos in Java 5-Syntaxebenen umzuwandeln. Java 5-Syntax wurde in J2ME / Blackberry in das JDK 1.3-Cldc-Subset übersetzt, um diese Sprachfunktionen und APIs auf allen Geräten bereitzustellen. Dies geschieht mithilfe eines serverbasierten Bytecode-Prozessors, der auf Retroweaver und einer großen Menge benutzerdefinierten Codes basiert. Beachten Sie, dass diese Architektur für Entwickler transparent ist, da die Build-Server die meisten schmerzhaften Unterschiede zwischen den Geräten abstrahieren.

Warum ParparVM?

Unter iOS verwendet Codename One ParparVM, das Java-Bytecode in C-Code konvertiert und über eine nicht blockierende GC sowie 64-Bit / Bitcode-Unterstützung verfügt. Diese VM ist vollständig Open Source im Codename One git-Repository . In der Vergangenheit hat Codename One XMLVM verwendet , um nativen Code auf eine sehr ähnliche Weise zu generieren, aber die XMLVM-Lösung war zu generisch für die Anforderungen von Codename One. ParparVM bietet eine einzigartige Architektur für die Übersetzung von Code in C (ähnlich wie XMLVM), da Codename One die einzige Lösung dieser Art ist, die zukünftige iOS-Kompatibilität gewährleisten kann , da die offiziell unterstützte iOS-Toolchain immer anstelle von undokumentiertem Verhalten verwendet wird.

HINWEIS : XMLVM kann dies theoretisch garantieren, es wird jedoch nicht mehr verwaltet.

Die wichtigsten Vorteile von ParparVM gegenüber anderen Ansätzen sind:

  • Wirklich nativ - da Code in C und nicht direkt in ARM- oder LLVM-Code übersetzt wird, ist die App "nativer". Es verwendet die offiziellen Tools und Ansätze von Apple und kann von deren Weiterentwicklungen profitieren, z. B. neueste Bitcode- oder Profilierungsfunktionen.

  • Kleinere Klassenbibliothek - ParparVM enthält ein sehr kleines Segment der vollständigen JavaAPI-Dateien, sodass die endgültigen Binärdateien um Größenordnungen kleiner sind als die Alternativen. Dies entspricht direkt der Leistung und dem Speicheraufwand.

  • Einfach und erweiterbar - Um mit ParparVM arbeiten zu können, benötigen Sie ein grundlegendes Verständnis von C. Dies ist für die sich schnell entwickelnde Welt der mobilen Entwicklung von entscheidender Bedeutung, da Apple die Dinge nach links ändert und rechts ein flexibleres VM benötigt.

Windows Phone / UWP

Codename One verfügt über 2 große Windows VM-Ports und 3 oder 4 Renderpipelines innerhalb dieser Ports.

Der alte Windows Phone-Port verwendete XMLVM, um den Java-Bytecode in C # zu übersetzen. Beachten Sie, dass sich das XMLVM-Backend, das in C # übersetzt wird, sehr von dem unterscheidet, das in der Vergangenheit zum Übersetzen von Code für iOS verwendet wurde.

Codename One richtet sich jetzt an UWP, indem eine modifizierte Version von iKVM zur Erstellung nativer Windows Universal Applications verwendet wird.

JavaScript-Port

Der JavaScript-Port von Codename One basiert auf der erstaunlichen Arbeit des TeaVM-Projekts . Das Team hinter TeaVM entwickelte effektiv eine JVM, die Java-Bytecode in JavaScript-Quellcode umwandelt und dabei die Threading-Semantik auf sehr phantasievolle Weise beibehält.

Über den JavaScript-Port können nicht geänderte Codename One-Anwendungen in einem Desktop- oder mobilen Browser ausgeführt werden. Der Port selbst basiert auf der HTML5 Canvas-API, um eine pixelgenaue Implementierung der Codename One-APIs bereitzustellen.

HINWEIS: Der JavaScript-Port ist nur für Abonnenten der Enterprise-Klasse von Codename One verfügbar.

Desktop, Android, RIM und J2ME

Die anderen Ports von Codename One verwenden die auf den Hostmaschinen / -umgebungen verfügbaren VMs, um die Laufzeitumgebung auszuführen. https://github.com/orfjackal/retrolambda[Retrolambda] wird verwendet, um Java 8-Sprachfunktionen auf tragbare Weise bereitzustellen. Für ältere Geräte wird Retroweaver verwendet, um Java 5-Funktionen bereitzustellen.

Der Android-Port verwendet die nativen Android-Tools, einschließlich der Gradle-Build-Umgebung in den neuesten Versionen.

Der Desktop-Port erstellt eine JavaSE-Standardanwendung, die mit der JRE und einem Installationsprogramm geliefert wird.

HINWEIS: Der Desktop-Anschluss ist nur für Abonnenten von Codename One verfügbar.

Leichtbaukomponenten

Was Codename One auszeichnet, ist die Herangehensweise an die Benutzeroberfläche, bei der eine "schlanke Architektur" verwendet wird, wodurch die Benutzeroberfläche nahtlos über alle Plattformen hinweg funktioniert. Infolgedessen wird der größte Teil der Benutzeroberfläche in Java entwickelt und ist daher bemerkenswert portabel und debugierbar. Die leichtgewichtige Architektur bietet immer noch die Möglichkeit, "schwere" Widgets in die "Leichtgewichte" einzubetten.

Leichtbau Architektur Origin

Leichte Komponenten gehen auf Smalltalk-Frameworks zurück. Diese Vorstellung wurde von Swing in der Java-Welt populär gemacht. Swing war die Hauptquelle der Inspiration für Codename One's Vorgänger LWUIT. Viele Frameworks nutzten diesen Ansatz im Laufe der Jahre, einschließlich JavaFX und zuletzt Ionic in der JavaScript-Welt.

In Codename One

Eine Lightweight-Komponente ist eine Komponente, die vollständig in Java geschrieben ist. Sie zeichnet eine eigene Schnittstelle und verarbeitet ihre eigenen Ereignisse / Zustände. Dies hat enorme Vorteile in Bezug auf die Portabilität, da derselbe Code auf allen Plattformen ausgeführt wird, er bietet jedoch viele zusätzliche Vorteile.

Leichte Komponenten sind durch die Standardvererbung und das Überschreiben von Paint / Event-Handling unbegrenzt anpassbar. Da eine kompakte Komponente vollständig in Java geschrieben ist, können Entwickler die Anwendung in den Simulatoren und im GUI-Builder genau anzeigen. Dies vermeidet viele gängige Fallstricke bei anderen WORA-Lösungen, bei denen plattformspezifisches Verhalten den eingesparten Aufwand zunichte machte. Daher ging der gesamte beim Codieren eingesparte Aufwand beim Debuggen von Esoterik-Geräten nur bei Eigenheiten verloren.

Codename One erzielt eine schnelle Leistung durch Zeichnen mit den nativen Spiele-APIs der meisten Plattformen, z. B. OpenGL ES für iOS.

Versionen in Codename One

Eines der verwirrenden Dinge an Codename One sind die Versionen. Da Codename One ein SaaS-Produkt ist, ist die Versionierung nicht so einfach wie ein 2.x- oder 3.x-Moniker. Um dieser Konvention zu entsprechen, erstellt Codename One jedoch versionierte Versionen, die zur allgemeinen Verwirrung beitragen.

Wenn eine Version von Codename One veröffentlicht wird, bezieht sich die Versionsnummer auf die Bibliotheken zum Zeitpunkt der Veröffentlichung. Diese Bibliotheken werden dann eingefroren und stehen Entwicklern zur Verfügung, die die Versioned Builds- Funktion verwenden. Das Plugin, das den Designer sowie alle Entwicklungen enthält, die sich nicht auf versionierte Builds beziehen, wird sofort nach der Veröffentlichung mit den regulären Updates fortgesetzt. Dasselbe gilt für Build-Server, die direkt zu ihrem Standard-Aktualisierungszyklus wechseln.