Codename OneAan de slag met Codename One


Opmerkingen

Deze sectie geeft een overzicht van wat codenameone is en waarom een ontwikkelaar het misschien wil gebruiken.

Het moet ook alle grote onderwerpen binnen codenameone vermelden en naar de gerelateerde onderwerpen verwijzen. Aangezien de documentatie voor codenameone nieuw is, moet u mogelijk eerste versies van die gerelateerde onderwerpen maken.

Installatie & Setup

Installatie

Codename One installeren in NetBeans

In deze instructies wordt ervan uitgegaan dat u een recente versie van NetBeans (op dit moment 8.x) hebt gedownload, geïnstalleerd en gestart.

  • Selecteer de menu-optie Extra> Plug-ins Hulpmiddelen-> Plugin menu-optie

  • Selecteer het tabblad Beschikbare plug-ins

  • Controleer de CodenameOne-plug-in Netbeans Plugin Install Wizard

  • klik op de onderstaande install . Volg de instructies van de wizard om de plug-in te installeren Netbeans Plugin Install Wizard stap 2

Codename One installeren in Eclipse

Start Eclipse op en klik op Help -> Install New Software . Je zou dit dialoogvenster moeten krijgen

Eclipse Installeer nieuwe software

Plak https://www.codenameone.com/files/eclipse/site.xml voor de locatie om mee te werken en druk op Enter.

Selecteer de vermeldingen en volg de wizard om te installeren Eclipse Install Wizard selecteert items

Codename One installeren in IntelliJ IDEA

Download en installeer IntelliJ / IDEA. Merk op dat Android Studio niet zal werken.

Installeer de plug-in met behulp van The Plugin Center

Gebruik de zoekfunctionaliteit in het plug-incentrum om de Codename One-plug-in te vinden en te installeren.

Wat is codenaam één en hoe werkt het?

Codename One is een set tools voor mobiele applicatie-ontwikkeling die een groot deel van zijn architectuur ontleent aan Java.

De missie van Codename One is:

Breng de complexe en gefragmenteerde taak van het programmeren van mobiele apparaten samen in één set tools, API's en services. Hierdoor ontstaat een beter beheersbare benadering van de ontwikkeling van mobiele applicaties zonder de kracht / controle voor ontwikkelaars op te offeren.

Dit betekent in feite dat die oude "Write Once Run Anywhere" (WORA) Java-mantra naar mobiele apparaten moet worden gebracht zonder het naar de kleinste gemene deler te brengen.

Hoe werkt codenaam één?

Codename One verenigt verschillende technologieën en concepten in één gevel:

  • API - vat de verschillen tussen de verschillende apparaten samen.
  • Plugin - het enige stukje software dat op clientcomputers is geïnstalleerd, bevat de volgende functies:
    • IDE-integratie - voorkeuren, voltooiing, de mogelijkheid om een native build te verzenden
    • Simulator - native apparaatsimulator die lokaal wordt uitgevoerd en waarmee fouten in de toepassing kunnen worden opgelost
    • Designer / GUI Builder - tools op hoog niveau
  • Build-servers - De build-servers accepteren native apparaat builds die door de plug-in worden verzonden en converteren de binaire bestanden (JAR's, geen bronnen) naar native applicaties zoals hieronder wordt uitgelegd.
  • Cloud Servers - De cloud servers bieden functies zoals push notificatie, cloud logging etc.

De gereedschapsketen van Codename One

Waarom servers bouwen?

Met de build-servers kunnen native iOS-apps zonder een Mac en native Windows-apps zonder een Windows-machine worden gebouwd. Ze verwijderen de noodzaak om complexe toolchains te installeren / updaten en vereenvoudigen het proces van het bouwen van een native app met een rechtermuisklik.

Bijvoorbeeld: omdat het bouwen van native iOS-applicaties een Mac OS X-machine vereist met een recente versie van xcode Codename One onderhoudt dergelijke machines in de cloud. Wanneer ontwikkelaars een iOS-build verzenden, wordt een dergelijke Mac gebruikt om C-broncode te genereren met ParparVM en vervolgens compileert de C-broncode met xcode en ondertekent de resulterende binaire code met xcode. U kunt het binaire bestand op uw apparaat installeren of een distributie-binair bestand voor de appstore bouwen. Omdat C-code wordt gegenereerd, betekent dit ook dat uw app "toekomstbestendig" is in geval van wijzigingen van Apple. U kunt ook Objective-C native code in de app injecteren en deze 100% draagbaar houden dankzij de "native interfaces" -functie van Codename One.

Abonnees kunnen de C-broncode terug ontvangen met behulp van de functie include-bronnen van Codename One en deze bronnen gebruiken voor benchmarking, debugging op apparaten, enz.

Hetzelfde geldt voor de meeste andere platforms. Voor Android, J2ME en Blackberry wordt de standaard Java-code uitgevoerd zoals deze is.

Java 8-syntaxis wordt ondersteund via retrolambda geïnstalleerd op de Codename One-servers. Dit wordt gebruikt om bytecode naadloos te converteren naar Java 5-syntaxisniveaus. Java 5-syntaxis wordt vertaald naar de JDK 1.3 cldc-subset op J2ME / Blackberry om die taalmogelijkheden en API's op alle apparaten te bieden. Dit gebeurt met behulp van een servergebaseerde bytecode-processor op basis van retroweaver en veel aangepaste code. Merk op dat deze architectuur transparant is voor ontwikkelaars omdat de buildservers de meeste pijnlijke verschillen tussen apparaten abstraheren.

Waarom ParparVM

Op iOS gebruikt Codename One ParparVM dat Java bytecode vertaalt naar C-code en beschikt over een niet-blokkerende GC en ondersteuning voor 64 bit / bitcode. Deze VM is volledig open source in de godenrepository van Codename One . In het verleden gebruikte Codename One XMLVM om native code op een zeer vergelijkbare manier te genereren, maar de XMLVM-oplossing was te generiek voor de behoeften van Codename One. ParparVM heeft een unieke architectuur voor het vertalen van code naar C (vergelijkbaar met XMLVM), omdat Codename One de enige oplossing in zijn soort is die toekomstige iOS-compatibiliteit kan garanderen, omdat de officieel ondersteunde iOS-toolchain altijd wordt gebruikt in plaats van ongedocumenteerd gedrag.

OPMERKING: XMLVM kan dat in theorie garanderen, maar wordt niet langer onderhouden.

De belangrijkste voordelen van ParparVM ten opzichte van andere benaderingen zijn:

  • Echt native - omdat code wordt vertaald naar C in plaats van rechtstreeks naar ARM- of LLVM-code, is de app "meer native". Het maakt gebruik van de officiële tools en benaderingen van Apple en kan profiteren van hun vorderingen, bijvoorbeeld de nieuwste bitcode of profileringsmogelijkheden.

  • Kleinere klassenbibliotheek - ParparVM bevat een zeer klein segment van de volledige JavaAPI's, wat resulteert in definitieve binaire bestanden die kleiner zijn dan de alternatieven in volgorde van grootte. Dit wordt rechtstreeks gekoppeld aan prestaties en geheugenoverhead.

  • Eenvoudig en uitbreidbaar - om te werken met ParparVM heeft u een basiskennis van C nodig. Dit is cruciaal voor de snel veranderende wereld van mobiele ontwikkeling, aangezien Apple dingen van links en rechts verandert, hebben we een wendbaardere VM nodig.

Windows Phone / UWP

Codename One heeft 2 belangrijke Windows VM-poorten en 3 of 4 rendering pipelines binnen die poorten.

De oude Windows Phone-poort gebruikte XMLVM om de Java-bytecode te vertalen naar C #. Merk op dat de XMLVM-backend die zich vertaalt naar C # heel anders is dan degene die in het verleden werd gebruikt om code voor iOS te vertalen.

Codename One richt zich nu op UWP door een aangepaste versie van iKVM te gebruiken om native universele Windows-toepassingen te bouwen.

JavaScript-poort

De JavaScript-poort van Codename One is gebaseerd op het geweldige werk van het TeaVM-project . Het team achter TeaVM heeft effectief een JVM gebouwd die Java-bytecode vertaalt in JavaScript-broncode met behoud van threading-semantiek met behulp van een zeer fantasierijke aanpak.

Met de JavaScript-poort kunnen ongewijzigde Codename One-applicaties worden uitgevoerd binnen een desktop- of mobiele browser. De poort zelf is gebaseerd op de HTML5 Canvas API om een perfecte pixelimplementatie van de Codename One API's te bieden.

OPMERKING: de JavaScript-poort is alleen beschikbaar voor Enterprise-grade abonnees van Codename One.

Desktop, Android, RIM & J2ME

De andere poorten van Codename One gebruiken de VM's die beschikbaar zijn op de hostmachines / -omgevingen om de runtime uit te voeren. https://github.com/orfjackal/retrolambda[Retrolambda] wordt gebruikt om op een draagbare manier Java 8-taalfuncties te bieden, voor oudere apparaten wordt retroweaver gebruikt om Java 5-functies te bieden.

De Android-poort gebruikt de native Android-tools, waaronder de gradle build-omgeving in de nieuwste versies.

De desktoppoort creëert een standaard JavaSE-applicatie die is verpakt met de JRE en een installatieprogramma.

OPMERKING: de Desktop-poort is alleen beschikbaar voor professionele gebruikers van Codename One.

Lichtgewicht componenten

Wat Codename One opvalt, is de benadering van de gebruikersinterface waar het een "lichtgewicht architectuur" gebruikt, waardoor de gebruikersinterface naadloos op alle platforms kan werken. Als gevolg hiervan is het grootste deel van de gebruikersinterface ontwikkeld in Java en is dus opmerkelijk draagbaar en te debuggen. De lichtgewicht architectuur omvat nog steeds de mogelijkheid om "zwaargewicht" widgets op hun plaats te plaatsen tussen de "lichtgewichten".

Lichtgewicht architectuur oorsprong

Lichtgewicht componenten dateren uit Smalltalk-frameworks, dit begrip werd populair in de Java-wereld door Swing. Swing was de belangrijkste inspiratiebron voor de voorganger LWUIT van Codename One. Veel frameworks hebben deze aanpak door de jaren heen gevolgd, waaronder JavaFX en het meest recent Ionic in de JavaScript-wereld.

In Codename One

Een lichtgewicht component is een component die volledig in Java is geschreven, het tekent zijn eigen interface en behandelt zijn eigen gebeurtenissen / toestanden. Dit heeft enorme portabiliteitsvoordelen omdat dezelfde code op alle platforms wordt uitgevoerd, maar het heeft veel extra voordelen.

Lichtgewicht componenten zijn oneindig aanpasbaar door standaard overerving en dwingende verf / gebeurtenisafhandeling te gebruiken. Aangezien een lichtgewicht component volledig in Java is geschreven, kunnen ontwikkelaars de toepassing nauwkeurig in de simulators en GUI-builder bekijken. Dit vermijdt veel voorkomende valkuilen van andere WORA-oplossingen waarbij platformspecifiek gedrag opgeslagen inspanningen verijdelde. Vandaar dat alle moeite die is bespaard bij het coderen verloren ging bij het opsporen van fouten in alleen esoterische apparaten.

Codename One behaalt snelle prestaties door te tekenen met behulp van de native gaming-API's van de meeste platforms, bijvoorbeeld OpenGL ES op iOS.

Versies in Codename One

Een van de verwarrende dingen over Codename One zijn de versies. Omdat Codename One een SaaS-productversie is, is het niet zo eenvoudig als een 2.x- of 3.x-naam. Om aan deze conventie te voldoen, maakt Codename One echter versies met versies die bijdragen aan de algemene verwarring.

Wanneer een versie van Codename One wordt uitgegeven, verwijst het versienummer naar de bibliotheken op het moment van uitgave. Deze bibliotheken worden vervolgens bevroren en worden beschikbaar gesteld aan ontwikkelaars die de functie Versioned Builds gebruiken. De plug-in, die de ontwerper omvat, evenals alle ontwikkeling die geen verband houdt met versies met versiebeheer, gaat door met zijn regelmatige updates onmiddellijk na de release. Hetzelfde geldt voor de buildservers die rechtstreeks naar hun standaardupdatecyclus gaan.