Primeros pasos con Codename One

Instalación y configuración

Instalación

Instalación de Codename One en NetBeans

Estas instrucciones asumen que ha descargado una versión reciente de NetBeans (en este momento 8.x), la instaló y la inició.

  • Seleccione la opción de menú Herramientas->Complementos Herramientas->Opción de menú Complemento

  • Seleccione la pestaña Complementos disponibles

  • Compruebe el complemento CodenameOne Asistente de instalación del complemento Netbeans

  • haga clic en el botón instalar a continuación. Siga las instrucciones del asistente para instalar el complemento Asistente de instalación del complemento de Netbeans, paso 2

Instalación de Codename One en Eclipse

Inicie Eclipse y haga clic en Ayuda->Instalar nuevo software. Debería obtener este cuadro de diálogo

Instalar nuevo software de Eclipse

Pegue https://www.codenameone.com/files/Eclipse/site.xml para la ubicación con la que trabajar y presione Entrar.

Seleccione las entradas y siga el asistente para instalar Entradas seleccionadas del asistente de instalación de Eclipse

Instalación de Codename One en IntelliJ IDEA

Descargue e instale IntelliJ/IDEA. Tenga en cuenta que Android Studio no funcionará.

Instale el complemento usando el Centro de complementos

Use la funcionalidad de búsqueda en el centro de complementos para encontrar e instalar el complemento Codename One.

¿Qué es Codename One y cómo funciona?

Codename One es un conjunto de herramientas para el desarrollo de aplicaciones móviles que deriva gran parte de su arquitectura de Java.

La declaración de misión de Codename One es:

Unificar la tarea compleja y fragmentada de la programación de dispositivos móviles en un conjunto único de herramientas, API y servicios. Como resultado, crear una más enfoque manejable para el desarrollo de aplicaciones móviles sin sacrificar el poder/control dado a los desarrolladores.

Esto significa efectivamente llevar el viejo mantra de Java “Escribir una vez y ejecutar en cualquier lugar” (WORA) a los dispositivos móviles sin “simplificarlo” al mínimo común denominador.

¿Cómo funciona Codename One?

Codename One unifica varias tecnologías y conceptos en una sola fachada:

  • API: abstrae las diferencias entre los distintos dispositivos.
  • Complemento: la única pieza de software instalada en las máquinas cliente, incluye las siguientes características:
    • IDE integration - preferences, completion, the ability to send a native build
    • Simulator - native device simulator that runs locally and allows debugging the application
    • Designer/GUI Builder - high level tools
  • Servidores de compilación: los servidores de compilación aceptan compilaciones de dispositivos nativos enviadas por el complemento y convierten los archivos binarios (JAR, no fuentes) en aplicaciones nativas, como se explica a continuación.
  • Servidores en la nube: los servidores en la nube brindan funciones como notificaciones automáticas, registro en la nube, etc.

La cadena de herramientas Codename One

¿Por qué construir servidores?

Los servidores de compilación permiten crear aplicaciones nativas de iOS sin una Mac y aplicaciones nativas de Windows sin una máquina con Windows. Eliminan la necesidad de instalar/actualizar cadenas de herramientas complejas y simplifican el proceso de creación de una aplicación nativa con un clic derecho.

Por ejemplo: dado que la creación de aplicaciones iOS nativas requiere una máquina Mac OS X con una versión reciente de xcode Codename One mantiene dichas máquinas en la nube. Cuando los desarrolladores envíen una compilación de iOS, se usará una Mac para generar código fuente C usando [ParparVM] 2 y luego compilará el código fuente C usando xcode y firmará el binario resultante usando xcode. Puede instalar el binario en su dispositivo o crear un binario de distribución para la tienda de aplicaciones. Dado que se genera el código C, también significa que su aplicación será “a prueba de futuro” en caso de cambios de Apple. También puede inyectar código nativo de Objective-C en la aplicación y mantenerla 100% portátil gracias a la capacidad de “interfaces nativas” de Codename One.

Los suscriptores pueden recibir el código fuente de C utilizando la función de incluir fuentes de Codename One y usar esas fuentes para la evaluación comparativa, la depuración en dispositivos, etc.

Lo mismo es cierto para la mayoría de las otras plataformas. Para Android, J2ME y Blackberry, el código Java estándar se ejecuta tal cual.

La sintaxis de Java 8 es compatible a través de retrolambda instalado en los servidores de Codename One. Esto se utiliza para convertir el código de bytes sin problemas a los niveles de sintaxis de Java 5. La sintaxis de Java 5 se traduce al subconjunto JDK 1.3 cldc en J2ME/Blackberry para proporcionar esas capacidades de lenguaje y API en todos los dispositivos. Esto se hace usando un procesador de código de bytes basado en servidor basado en retroweaver y una gran cantidad de código personalizado. Tenga en cuenta que esta arquitectura es transparente para los desarrolladores, ya que los servidores de compilación abstraen la mayoría de las dolorosas diferencias entre dispositivos.

Por qué ParparVM

En iOS, Codename One usa ParparVM, que traduce el código de bytes de Java a código C y cuenta con un GC sin bloqueo, así como compatibilidad con 64 bits/código de bits. Esta VM es completamente de código abierto en el repositorio Codename One git. En el pasado, Codename One usaba XMLVM para generar código nativo de una manera muy similar, pero la solución XMLVM era demasiado genérica para las necesidades de Codename One. ParparVM cuenta con una arquitectura única de traducción de código a C (similar a XMLVM), debido a que Codename One es la única solución de este tipo que puede garantizar compatibilidad futura con iOS, ya que la cadena de herramientas de iOS compatible oficialmente es siempre se usa en lugar de comportamientos no documentados.

NOTA: XMLVM podría garantizar eso en teoría, pero ya no se mantiene.

Las principales ventajas de ParparVM sobre otros enfoques son:

  • Verdaderamente nativo: dado que el código se traduce a C en lugar de directamente a código ARM o LLVM, la aplicación es “más nativa”. Utiliza las herramientas y enfoques oficiales de Apple y puede beneficiarse de sus avances, p. último bitcode o capacidades de creación de perfiles.

  • Biblioteca de clases más pequeña: ParparVM incluye un segmento muy pequeño de las JavaAPI completas, lo que da como resultado archivos binarios finales que son más pequeños que las alternativas en órdenes de magnitud. Esto se correlaciona directamente con el rendimiento y la sobrecarga de memoria.

  • Simple y extensible: para trabajar con ParparVM, necesita una comprensión básica de C. Esto es crucial para el rápido mundo del desarrollo móvil, ya que Apple cambia las cosas de izquierda a derecha, necesitamos una VM más ágil.

Windows Phone/UWP

Codename One tiene 2 puertos principales de VM de Windows y 3 o 4 canalizaciones de representación dentro de esos puertos.

El antiguo puerto de Windows Phone usaba XMLVM para traducir el código de bytes de Java a C#. Tenga en cuenta que el backend XMLVM que se traduce a C# es muy diferente del que se usaba en el pasado para traducir código para iOS.

Codename One ahora apunta a UWP aprovechando una versión modificada de iKVM para crear aplicaciones universales nativas de Windows.

Puerto JavaScript

El puerto JavaScript de Codename One se basa en el increíble trabajo del proyecto TeaVM. El equipo detrás de TeaVM creó efectivamente una JVM que traduce el código de bytes de Java en código fuente de JavaScript mientras mantiene la semántica de subprocesos utilizando un enfoque muy imaginativo.

El puerto de JavaScript permite que las aplicaciones Codename One no modificadas se ejecuten en un navegador de escritorio o móvil. El puerto en sí se basa en HTML5 Canvas API para proporcionar una implementación perfecta de píxeles de Codename One API.

NOTA: El puerto de JavaScript solo está disponible para suscriptores de nivel empresarial de Codename One.

Escritorio, Android, RIM y J2ME

Los otros puertos de Codename One usan las VM disponibles en las máquinas/entornos host para ejecutar el tiempo de ejecución. https://github.com/orfjackal/retrolambda[Retrolambda] se usa para proporcionar características del lenguaje Java 8 de forma portátil, para dispositivos más antiguos se usa retroweaver para traer características de Java 5.

El puerto de Android utiliza las herramientas nativas de Android, incluido el entorno de compilación gradle en las últimas versiones.

El puerto de escritorio crea una aplicación JavaSE estándar que se empaqueta con JRE y un instalador.

NOTA: El puerto de escritorio solo está disponible para suscriptores profesionales de Codename One.

Componentes ligeros

Lo que hace que Codename One se destaque es el enfoque que adopta para la interfaz de usuario, donde utiliza una “arquitectura liviana”, lo que permite que la interfaz de usuario funcione sin problemas en todas las plataformas. Como resultado, la mayor parte de la interfaz de usuario está desarrollada en Java y, por lo tanto, es notablemente portátil y depurable. La arquitectura ligera todavía incluye la capacidad de incrustar widgets “pesados” entre los “pesos ligeros”.

Origen de la arquitectura ligera

Los componentes ligeros se remontan a los marcos de Smalltalk, esta noción fue popularizada en el mundo de Java por Swing. Swing fue la principal fuente de inspiración para LWUIT, predecesor de Codename One. Muchos marcos adoptaron este enfoque a lo largo de los años, incluidos JavaFX y, más recientemente, Ionic en el mundo de JavaScript.

En nombre en clave uno

Un componente ligero es un componente que está escrito completamente en Java, dibuja su propia interfaz y maneja sus propios eventos/estados. Esto tiene enormes ventajas de portabilidad ya que el mismo código se ejecuta en todas las plataformas, pero conlleva muchas ventajas adicionales.

Los componentes ligeros son infinitamente personalizables mediante el uso de la herencia estándar y la anulación del manejo de pintura/eventos. Dado que un componente liviano está escrito completamente en Java, los desarrolladores pueden obtener una vista previa de la aplicación con precisión en los simuladores y el generador de GUI. Esto evita muchas trampas comunes de otras soluciones WORA donde el comportamiento específico de la plataforma frustró cualquier esfuerzo ahorrado. Por lo tanto, todo el esfuerzo ahorrado en la codificación se perdió en la depuración de las rarezas del dispositivo esotérico.

Codename One logra un rendimiento rápido al dibujar utilizando las API de juegos nativas de la mayoría de las plataformas, p. OpenGL ES en iOS.

Versiones en Codename One

Una de las cosas confusas sobre Codename One son las versiones. Dado que Codename One es un producto SaaS, el control de versiones no es tan simple como un apodo 2.x o 3.x. Sin embargo, para cumplir con esta convención, Codename One hace versiones versionadas que contribuyen a la confusión general.

Cuando se lanza una versión de Codename One, el número de versión se refiere a las bibliotecas en el momento del lanzamiento. Estas bibliotecas luego se congelan y se ponen a disposición de los desarrolladores que usan la función [Compilaciones con versiones][7]. El complemento, que incluye al diseñador, así como todo el desarrollo que no está relacionado con las compilaciones versionadas, continúa con sus actualizaciones periódicas inmediatamente después del lanzamiento. Lo mismo ocurre con los servidores de compilación que pasan directamente a su ciclo de actualización estándar.

4: https://github.com/nombre en código uno/Nombre en código uno/ 5: http://www.xmlvm.org/ 6: http://teavm.org [7]: https://www.codenameone.com/how-do-i—get-repeatable-builds-build-against-a-consistent-version-of-codename-one-use-the-versioning- característica.html