Codename One es un primer entorno multiplataforma móvil para desarrolladores de Java y Kotlin. Puede compilar código de bytes de Java en ejecutables del sistema operativo nativo (iOS, Android, UWP, etc.). Es una plataforma móvil completa que incluye máquinas virtuales, simulador, herramientas de diseño (tema visual/constructor/css), integraciones IDE, puertos para múltiples sistemas operativos y mucho más. Proporciona acceso completo al código del sistema operativo nativo subyacente (por ejemplo, Objective-C, C#, Dalvik/ART) a través de una abstracción portátil que permite la reutilización del código al 100%.
A diferencia de los emuladores que puedes ver en Android, etc. Codename One utiliza un simulador. Esto significa que se inicia rápidamente incluso durante la depuración. Puede disfrutar de funciones IDE como la recarga de código en vivo para modificar el código en tiempo de ejecución, etc.
¡Esto significa un ciclo de depuración más rápido y un proceso de desarrollo más rápido!
Elija entre una gran selección de "máscaras" de dispositivos para ver cómo se verá su aplicación en dispositivos específicos. La máscara tiene en cuenta factores como la resolución y la densidad del dispositivo para proporcionar una presentación perfecta en píxeles de su aplicación, tal como aparecería en el dispositivo real. Cambiar entre diseños de dispositivos es casi instantáneo.
Puede editar y contribuir con máscaras en su propio proyecto de código abierto aquí.
Interactúe con las API de su aplicación en tiempo de ejecución mediante la consola Groovy interactiva. Inspeccione el estado de la aplicación o experimente con cambios mientras la aplicación se está ejecutando.
Esto le permite investigar problemas y experimentar sin siquiera la pequeña sobrecarga de volver a compilar.
El simulador le permite aprovechar la función "Recargar clases modificadas" en IntelliJ (llamada "Aplicar cambios de código" en NetBeans) para que los cambios que realice en su código fuente Java se apliquen inmediatamente a su aplicación que ya se está ejecutando en el simulador.
Tenga en cuenta que esto suele ser superior a la consola interactiva, pero existen limitaciones como la capacidad de agregar métodos/cambiar la estructura del código. ¡Estos límites no se aplican a la consola interactiva!
Cuando realiza cambios en la hoja de estilos CSS de su aplicación, los cambios se reflejan instantáneamente en el simulador. Esto incluye cambiar su tema, imágenes, fuentes, etc. Todos los cambios se actualizan instantáneamente al guardarlos, ¡no es necesario recargar/actualizar ni nada por el estilo!
Esto hace que el proceso de diseñar una aplicación sea notablemente fácil y rápido.
Utilice el potente inspector de componentes para explorar la jerarquía de componentes de la interfaz de usuario en su aplicación. Esta herramienta hace que sea fácil descubrir de dónde proviene ese relleno adicional o por qué algo simplemente no se alinea como desea. También puede cambiar el UIID (selector) de un componente en tiempo de ejecución para ver cómo afecta la interfaz de usuario y ver qué componente en la jerarquía se asigna a un elemento en el árbol de componentes (equivalente a DOM).
Vea todas las conexiones de red que realiza su aplicación utilizando Network Monitor. Esta valiosa herramienta resulta útil cuando intenta descubrir por qué una solicitud HTTP no funciona para usted. Verifique los encabezados y cuerpos tanto de la solicitud como de la respuesta. Incluso puedes acelerar la red para simular una conexión de red lenta.
Utilice la herramienta Test Recorder para registrar pruebas unitarias para su aplicación. Una vez que comience a grabar, guardará sus interacciones en una prueba unitaria que se puede reproducir más tarde para verificar que el comportamiento sigue siendo correcto.
Luego puede conectar las pruebas grabadas a su proceso de CI, incluidas las pruebas automatizadas en el dispositivo.
Codename One es un proyecto maduro de código abierto con raíces que se remontan a Sun Microsystems (2006), donde uno de sus componentes principales subyacentes fue desarrollado y de código abierto. Puedes conocer su historia y cómo funciona en este vídeo.
Las aplicaciones Codename One funcionan como aplicaciones nativas, porque son aplicaciones nativas reales.
Se compilan estáticamente en archivos binarios nativos utilizando las herramientas de compilación oficiales de la plataforma de destino.
En plataformas que no admiten Java de forma nativa, como iOS, el código de bytes JVM de la aplicación se transpila primero a un formato que las herramientas de compilación nativas acepten. En iOS, el código de bytes JVM de la aplicación se transforma en código fuente C, en un proyecto xcode real. En Android, dado que Java es compatible de forma nativa, no es necesaria dicha transformación. El jar de la aplicación se incluye directamente en un proyecto Gradle de Android Studio, que se puede compilar directamente utilizando las herramientas de compilación del SDK de Android.
Puede hacer clic en la imagen para ampliarla o ver una versión en PDF aquí.
SUGERENCIA: Actualmente estamos haciendo la transición a Maven y hemos creado un método nuevo y más simple para crear proyectos. Visita https://start.codenameone.com para comenzar ahora.
Hay mucho que saber sobre Codename One, este video de 3 minutos ofrece una visión muy concisa de alto nivel. Observe que hay videos similares para Eclipse, IntelliJ/IDEA y Netbeans aquí:
Codename One se puede ampliar fácilmente utilizando bibliotecas de terceros que pueden incluir código nativo del sistema operativo. Hay una lista extensa de estas bibliotecas (cn1libs) aquí. La lista de bibliotecas se genera automáticamente en función de este proyecto de github.
Puede obtener más información sobre Codename One y sus capacidades en el sitio principal y puede ver una lista extensa de documentación y tutoriales aquí.
Puede comenzar con el binario y la vista aérea en la sección de descargas. Enlaces importantes adicionales son:
NOTA: Estamos en el proceso de migrar de Ant a Maven, lo que simplifica el proceso de compilación desde el código fuente. Consulte Inicio rápido de Ant para obtener instrucciones de compilación de Ant heredadas.
La configuración se trata en profundidad en este artículo y video.
IMPORTANTE: Actualmente, el edificio Codename One requiere JDK 8 . No puede usar JDK 11 ya que algunos submódulos deben usar -source 1.5
y -target 1.5
para mantener la compatibilidad con partes de la cadena de herramientas.
git clone https://github.com/codenameone/CodenameOne
cd CodenameOne/maven
mvn install
Esto compilará e instalará Codename One en su repositorio local de Maven. Este proceso puede tardar un poco ya que descarga automáticamente dependencias con un tamaño de ~1 GB.
Para construir los proyectos de arquetipos desde el código fuente, debe consultar el repositorio cn1-maven-archetypes y compilarlo también:
git clone https://github.com/shannah/cn1-maven-archetypes
cd cn1-maven-archetypes
mvn install
Ahora que Codename One está instalado en su repositorio local de Maven, puede usar esa versión en un proyecto en lugar de la versión de lanzamiento. Se puede generar rápidamente un nuevo proyecto de prueba con Codename One initializr.
Después de descargar y extraer el proyecto, abra su archivo pom.xml y busque las propiedades <cn1.version>
y <cn1.plugin.version>
. Luego cámbielos para que apunten a la versión que se instaló en su repositorio maven local mediante mvn install
. La versión construida localmente será normalmente una versión SNAPSHOT (por ejemplo, 7.0.21-SNAPSHOT).
Obtener y construir fuentes
$ git clone https://github.com/codenameone/CodenameOne
$ cd CodenameOne
$ ant
Ejecución de pruebas unitarias
$ ant test-javase
Ejecución de muestras
El directorio Samples contiene un conjunto cada vez mayor de aplicaciones de ejemplo. Estos ejemplos no pretenden ser demostraciones, sino más bien ejemplos de cómo utilizar las API.
Puede iniciar la aplicación de ejecución de muestra desde la línea de comandos usando:
$ ant samples
La máquina virtual iOS de Codename One es bastante única y también es de código abierto. Puede leer más al respecto en su carpeta dedicada en este repositorio.
ParparVM es una máquina virtual exclusivamente conservadora que traduce el código de bytes de Java a código C. Proporcionando así rendimiento y acceso nativos y al mismo tiempo proporcionando una red de seguridad. ¡Este enfoque es exclusivo de Codename One y es esencial para la compatibilidad futura!
Apple tiene una tendencia a cambiar las cosas abruptamente, por ejemplo, soporte de 64 bits, código de bits, etc. Dado que ParparVM genera un proyecto Xcode estándar, no se requirieron cambios de código para ninguno de estos cambios tectónicos. ¡Es como si usted mismo hubiera codificado el proyecto a mano!
Incluso puedes abrir el proyecto resultante en xcode y depurarlo o perfilarlo directamente en el dispositivo iOS. Esto proporciona mucha información útil, como pilas de llamadas legibles y seguimiento del rendimiento valioso/accionable...
Los compiladores tradicionales fracasan en estos casos.
Codename One mantiene una bifurcación de iKVM que es una JVM para CLR. Este puerto modificado nos permite ejecutar la implementación de la Plataforma universal de Windows de Codename One de forma nativa en dispositivos con Windows 10.
Brindamos soporte en StackOverflow cuando etiqueta usando codenameone, puede preguntar cualquier cosa allí e intentamos ser bastante receptivos. El enlace StackOverflow también sirve como una excelente sección de preguntas frecuentes impulsada por la comunidad, ya que literalmente asigna las preguntas de los usuarios a las respuestas.
Codename One tiene un grupo de discusión donde puedes publicar preguntas. Sin embargo, debido a la naturaleza de ese grupo, intentamos limitar las discusiones sobre la fuente. El foro de discusión está pensado para un uso más sencillo y los hacks de código fuente/compilación nativa más complejos pueden generar ruido allí.
Gracias a estas maravillosas personas (tecla emoji):
beazl-peter | liannacasper | sergeyCodenameOne | ThomasH99 | Javier Antón | Diamante | Francesco Galgani |
kutoman | ramsestom | Martín | durank | ddyer0 | carlosverdier | Robert Edelman |
adalberto393 | Steve Hanna | digappsepp | Pavneet Singh | sorpresa | jrmydev | Terry Wilkinson |
Juan Hansen | Yaakov Gesher | michael munch | saeder | Miguel Muñoz | Ahmed Aboumalwa | fabio |
Piotr | Bahía Matías | sanny sanoff | McSym28 | Eric Lee | día de david | Nick precio |
Ahnaf Bin Azad | Octavio E Anino | Espinilla de Yash | niña | FercueNat | InmediatoSrl | davideprimasc |
DB107 | Ikko Eltociear Ashimine |
Este proyecto sigue la especificación de todos los contribuyentes. ¡Las contribuciones de cualquier tipo son bienvenidas! ❤️