Codename OneIniziare con Codename One


Osservazioni

Questa sezione fornisce una panoramica di ciò che è codenameone e perché uno sviluppatore potrebbe voler usarlo.

Dovrebbe anche menzionare tutti i soggetti di grandi dimensioni all'interno di codenameone e collegarsi agli argomenti correlati. Poiché la Documentazione per codenameone è nuova, potrebbe essere necessario creare versioni iniziali di tali argomenti correlati.

Installazione e configurazione

Installazione

Installazione di Codename One in NetBeans

Queste istruzioni presuppongono che sia stata scaricata una versione recente di NetBeans (in questo momento 8.x), installata e avviata.

  • Seleziona l'opzione di menu Strumenti-> Plugin Strumenti-> Opzioni del menu Plugin

  • Seleziona la scheda Plugin disponibili

  • Controlla il plugin CodenameOne Installazione guidata plug-in Netbeans

  • fai clic sul pulsante install seguito. Seguire le istruzioni della procedura guidata per installare il plug-in Installazione guidata plug-in Netbeans passaggio 2

Installazione di Codename One in Eclipse

Avvia Eclipse e fai clic su Help -> Install New Software . Dovresti ottenere questa finestra di dialogo

Eclipse installa il nuovo software

Incolla https://www.codenameone.com/files/eclipse/site.xml per la posizione su cui lavorare e premi Invio.

Seleziona le voci e segui la procedura guidata da installare Eclipse Install Wizard seleziona le voci

Installazione di Codename One in IntelliJ IDEA

Scarica e installa IntelliJ / IDEA. Si noti che Android Studio non funzionerà.

Installa il plugin usando The Plugin Center

Usa la funzionalità di ricerca nel centro plugin per trovare e installare il plug-in Codename One.

Cos'è Codename One e come funziona?

Codename One è un insieme di strumenti per lo sviluppo di applicazioni mobili che traggono gran parte della sua architettura da Java.

La dichiarazione di missione di Codename One è:

Unifica il compito complesso e frammentato della programmazione di dispositivi mobili in un unico set di strumenti, API e servizi. Di conseguenza, crea un approccio più gestibile allo sviluppo di applicazioni mobili senza sacrificare il potere / controllo fornito agli sviluppatori.

Ciò significa in effetti portare il vecchio mantra Java "Write Once Run Anywhere" (WORA) ai dispositivi mobili senza "sminuirlo" al minimo comune denominatore.

Come funziona Codename One?

Codename One unifica diverse tecnologie e concetti in un'unica facciata:

  • API - astra le differenze tra i vari dispositivi.
  • Plugin: l'unico software installato sulle macchine client, include le seguenti funzionalità:
    • Integrazione IDE: preferenze, completamento, possibilità di inviare una build nativa
    • Simulatore - simulatore di dispositivo nativo che viene eseguito localmente e consente il debug dell'applicazione
    • Designer / GUI Builder: strumenti di alto livello
  • Build Servers - I build server accettano build di dispositivi nativi inviati dal plugin e convertono i binari (JAR, non fonti) in applicazioni native come spiegato di seguito.
  • Cloud Server: i cloud server forniscono funzionalità quali notifica push, registrazione cloud ecc.

La catena di strumenti Codename One

Perché costruire server?

I server di compilazione consentono di creare app iOS native senza un Mac e app Windows native senza una macchina Windows. Eliminano la necessità di installare / aggiornare complessi toolchain e semplificano il processo di creazione di un'app nativa con un clic destro.

Ad esempio: dal momento che la creazione di applicazioni iOS native richiede che una macchina Mac OS X con una versione recente di xcode Codename One mantenga tali macchine nel cloud. Quando gli sviluppatori inviano una build iOS, tale Mac verrà utilizzato per generare il codice sorgente C utilizzando ParparVM e quindi compilerà il codice sorgente C utilizzando xcode e firmerà il binario risultante usando xcode. È possibile installare il binario sul dispositivo o creare un binario di distribuzione per l'appstore. Poiché il codice C è generato, significa anche che la tua app sarà "a prova di futuro" in caso di modifiche da parte di Apple. È inoltre possibile inserire il codice nativo Objective-C nell'app mantenendolo al 100% portatile grazie alla funzionalità "native interface" di Codename One.

Gli abbonati possono ricevere il codice sorgente C utilizzando la funzione di inclusione delle fonti di Codename One e utilizzare tali fonti per il benchmarking, il debug sui dispositivi ecc.

Lo stesso vale per la maggior parte delle altre piattaforme. Per Android, J2ME e Blackberry, il codice Java standard viene eseguito così com'è.

La sintassi di Java 8 è supportata tramite retrolambda installato sui server Codename One. Questo è usato per convertire bytecode perfettamente fino ai livelli di sintassi di Java 5. La sintassi di Java 5 viene convertita nel sottoinsieme JDK 1.3 cldc su J2ME / Blackberry per fornire quelle funzionalità linguistiche e le API su tutti i dispositivi. Questo viene fatto utilizzando un processore bytecode basato su server basato su retroweaver e una grande quantità di codice personalizzato. Si noti che questa architettura è trasparente per gli sviluppatori in quanto i server di generazione distruggono la maggior parte delle dolorose differenze tra i dispositivi.

Perché ParparVM

In iOS, Codename One utilizza ParparVM che traduce il bytecode Java in codice C e vanta un GC non bloccante e supporto a 64 bit / bitcode. Questa VM è completamente open source nel repository git Codename One . In passato Codename One utilizzava XMLVM per generare codice nativo in un modo molto simile, ma la soluzione XMLVM era troppo generica per le esigenze di Codename One. ParparVM vanta un'architettura unica di traduzione del codice in C (in modo simile a XMLVM), poiché Codename One è l'unica soluzione del suo genere in grado di garantire la futura compatibilità iOS poiché la toolchain iOS ufficialmente supportata viene sempre utilizzata al posto di comportamenti non documentati.

NOTA: XMLVM potrebbe garantire che in teoria, ma non è più mantenuto.

I principali vantaggi di ParparVM rispetto ad altri approcci sono:

  • Davvero nativo - poiché il codice viene tradotto in C piuttosto che direttamente nel codice ARM o LLVM, l'app è "più nativa". Utilizza gli strumenti e gli approcci ufficiali di Apple e può trarre vantaggio dai loro progressi, ad esempio le ultime funzionalità di bitcode o di profilazione.

  • Libreria di classi più piccole - ParparVM include un segmento molto piccolo di JavaAPI completo che genera binari finali che sono più piccoli delle alternative per ordine di grandezza. Questo mappa direttamente al sovraccarico delle prestazioni e della memoria.

  • Semplice ed estensibile: per lavorare con ParparVM è necessaria una conoscenza di base di C. Questo è fondamentale per il mondo in rapido movimento dello sviluppo mobile, poiché Apple cambia le cose a destra e sinistra abbiamo bisogno di una VM più agile.

Windows Phone / UWP

Codename One ha 2 principali porte Windows VM e 3 o 4 pipeline di rendering all'interno di quelle porte.

La vecchia porta Windows Phone utilizzava XMLVM per tradurre il bytecode Java in C #. Si noti che il backend XMLVM che si traduce in C # è molto diverso da quello utilizzato in passato per tradurre il codice per iOS.

Codename One ora prende di mira l'UWP sfruttando una versione modificata di iKVM per creare native Universal Applications di Windows.

Porta JavaScript

La porta JavaScript di Codename One è basata sul fantastico lavoro del progetto TeaVM . Il team di TeaVM ha costruito in modo efficace una JVM che traduce il bytecode Java in codice sorgente JavaScript, mantenendo la semantica del threading usando un approccio molto fantasioso.

La porta JavaScript consente l'esecuzione di applicazioni Codename One non modificate all'interno di un browser desktop o mobile. La stessa porta è basata sull'API HTML5 Canvas per fornire un'implementazione pixel perfetta delle API Codename One.

NOTA: la porta JavaScript è disponibile solo per gli abbonati di livello aziendale di Codename One.

Desktop, Android, RIM e J2ME

Le altre porte di Codename One utilizzano le VM disponibili sui computer / ambienti host per eseguire il runtime. https://github.com/orfjackal/retrolambda[Retrolambda] viene utilizzato per fornire funzionalità di linguaggio Java 8 in modo portabile, per i dispositivi precedenti retroweaver viene utilizzato per portare le funzionalità di Java 5.

La porta Android utilizza gli strumenti Android nativi tra cui l'ambiente di sviluppo gradle nelle ultime versioni.

La porta desktop crea un'applicazione JavaSE standard che è inclusa nel pacchetto con JRE e un programma di installazione.

NOTA: la porta del desktop è disponibile solo per gli abbonati di livello professionale di Codename One.

Componenti leggeri

Ciò che distingue Codename One è l'approccio che richiede all'interfaccia utente in cui utilizza una "architettura leggera" che consente all'interfaccia utente di funzionare senza problemi su tutte le piattaforme. Di conseguenza, la maggior parte dell'interfaccia utente è sviluppata in Java ed è quindi notevolmente portatile e debugabile. L'architettura leggera include ancora la possibilità di incorporare i widget "pesanti" in posizione tra i "pesi leggeri".

Origine leggera

I componenti leggeri risalgono ai framework Smalltalk, questa nozione è stata resa popolare nel mondo Java da Swing. Swing è stata la principale fonte di ispirazione per il predecessore di Codename One LWUIT. Molti framework hanno adottato questo approccio nel corso degli anni, tra cui JavaFX e, più recentemente, Ionic nel mondo JavaScript.

In Codename One

Un componente Lightweight è un componente interamente scritto in Java, che disegna la propria interfaccia e gestisce i propri eventi / stati. Questo ha enormi vantaggi di portabilità poiché lo stesso codice viene eseguito su tutte le piattaforme, ma comporta molti vantaggi aggiuntivi.

I componenti leggeri sono personalizzabili all'infinito utilizzando l'ereditarietà standard e la gestione prevalente della vernice / degli eventi. Poiché un componente leggero è scritto interamente in Java, gli sviluppatori possono visualizzare l'applicazione in modo accurato nel simulatore e nel builder della GUI. Ciò evita molte insidie ​​comuni di altre soluzioni WORA in cui il comportamento specifico della piattaforma sventa qualsiasi sforzo salvato. Quindi tutto lo sforzo salvato nella codifica è stato perso nel debugging delle stranezze del dispositivo esoterico.

Codename One raggiunge prestazioni veloci disegnando utilizzando le API di gioco native della maggior parte delle piattaforme, ad esempio OpenGL ES su iOS.

Versioni in Codename One

Una delle cose confuse su Codename One sono le versioni. Poiché Codename One è una versione di prodotto SaaS non è semplice come un moniker 2.xo 3.x. Tuttavia, per conformarsi a questa convenzione, Codename One crea versioni con versioni che contribuiscono alla confusione generale.

Quando viene rilasciata una versione di Codename One, il numero di versione fa riferimento alle librerie al momento del rilascio. Queste librerie vengono quindi congelate e rese disponibili agli sviluppatori che utilizzano la funzione di versioni con versione . Il plug-in, che include il designer e tutto lo sviluppo non correlato alle versioni con versioni, continua con i suoi aggiornamenti regolari subito dopo il rilascio. Lo stesso vale per i build server che si spostano direttamente al loro ciclo di aggiornamento standard.