plugin one codename mobile cross-platform codenameone parparvm

mobile - plugin - codename one download



¿Cómo funciona Codename One? (2)

Codename uno tomó un enfoque muy equilibrado para la portabilidad. Me gustaría agregar un comentario pragmático.

Desde el lado de la interfaz de usuario, CN1 pinta toda su interfaz de usuario en el lienzo proporcionado por la plataforma. Trata de imitar el aspecto y la sensación nativa de la plataforma, si lo elige, pero tiene tanto éxito como Swing con su "apariencia y sensación de plataforma nativa", porque la plataforma nativa cambia constantemente, y "nativa l & f" siempre falta y en la mayoría los casos no se sienten del todo bien.

Pero, si eliges la apariencia independiente de la plataforma (que es el tipo de tendencia actual), no estás restringido por el conjunto de componentes predeterminado de Codenameone establecido de ninguna manera: es como Swing con su apariencia y sensación multiplataforma (" Metal, etc.). Lo que es bueno.

Desde el lado del lenguaje: en iOS, se compila en java a C, que luego está vinculado a Objective-C escrito a mano, y no empaqueta VM, solo la capa de portabilidad. Lo más importante aquí es el hecho de que java está compilado en C y no en Objective-C, lo que lo hace más rápido que el código Idiomático Objective-C, ya que realiza invocaciones de métodos virtuales o, más a menudo, directas en lugar de un lento despacho de mensajes de Objective C. Lo que es bueno.

También puede parecer un poco más rápido en Android, porque, al usar Dalvik / Art, no usa una interfaz de usuario nativa de Android que es voluminosa en comparación con la de CN1. Esto puede hacer que la creación de IU dinámica sea más rápida en tiempo de ejecución, lo cual es bueno.

Uno de los puntos más fuertes del enfoque CN1 es su emulador (implementado sobre el escritorio JavaFX canvas) que usted usa para desarrollar software. Emulator utiliza el mismo código de UI y API de portabilidad que en las plataformas móviles y le permite usar IDE de elección para la depuración. Se reinicia rápidamente, y el ciclo edit-compile-run es muy sostenible en comparación con Android. Lo que es bueno.

El segundo punto muy fuerte (¡principal!) Es la naturaleza abierta de su biblioteca de IU, todo el código nativo y el conversor de códigos de bytes a C. Si gastas un poco de esfuerzo, puedes evitar construir puertos Android / iOS en sus granjas y deshacerte de su revisión particular del producto (¡pero no de los pocos servicios de valor agregado que ofrecen, que no son de código abierto!). Dependiendo de su situación, esto puede ser (¡o no!) Bastante bueno para usted.

El punto débil de Codenameone es su madurez inferior a la ideal, lo que significa que puede dispararse fácilmente en el pie utilizando componentes de interfaz de usuario básicos, si los usa de la forma en que no fueron utilizados. También significa que su capa de portabilidad java no es lo suficientemente grande (y tiene agujeros) para cubrir las necesidades de todos, y es posible que tenga que usar nativos en algunos lugares y portar otras bibliotecas puras de java también.

Además, el estado actual del rendimiento de los gráficos no es óptimo; Si obtienes un montón de texto en la pantalla, perderás fácilmente el límite de 16 minutos de animación / tiempo de repintado del fluido, esto puede solucionarse con doble buffer, pero también tiene sus límites. Afortunadamente, todavía hay espacio para la optimización en la implementación en ambas plataformas principales, ojalá lo mejoren.

En general, Codenameone tiene un buen lugar como un marco multiplataforma para varias clases de aplicaciones; puede encontrar un valor en sus servicios, también.

Estoy buscando alternativas para desarrollar para múltiples plataformas móviles, y he encontrado Codename One , que usa Java como lingua franca , en lugar de HTML / CSS / JS o lenguajes de scripting.

Lo que no pude encontrar es cómo funciona. ¿Incluye un JVM con la aplicación para iOS y Win7 y usa Dalvik en Android? ¿Traduce el código fuente a nativo, y tenemos acceso a este código fuente? ¿Hay otra magia, considerando que prometen "no comprometerse"? ¿Qué limitaciones debería tener en cuenta al codificar Java de forma anómala?

Huelga preventiva: esta es una pregunta sobre Codename One, no sobre qué plataforma cruzada debería elegir o si debería volverme nativo o si debería ir a la web.


Codename One utiliza un enfoque basado en SaaS por lo que esto podría (y probablemente lo hará) cambiar en el futuro para adaptarse a las arquitecturas mejoradas. Tenga en cuenta que Codename One también proporciona una opción para construir fuera de línea, lo que significa que las empresas que tienen políticas que prohíben dichas arquitecturas en la nube aún pueden usar Codename One con cierta sobrecarga / complejidad adicional.

Actualmente, en Android, el código Java estándar se ejecuta tal cual. La sintaxis de Java 8 se traduce utilizando retrolambda para todas las plataformas cuando se usa. Esto le permite ser compatible con todas las versiones de Android y otros puertos.

En iOS Codename One construyó y abrió origen ParparVM que es una máquina virtual muy conservadora. ParparVM presenta un GC simultáneo (sin bloqueo) y está escrito completamente en Java / C. Esto significa que un proyecto xcode se genera y se compila en los servidores de compilación, por lo que es como si hubiera codificado una aplicación nativa y, por lo tanto, "prueba a futuro" para los cambios realizados por Apple. Por ejemplo, con cambios recientes de 64 bits y de código de bits en las compilaciones de iOS ParparVM no necesitaba modificaciones para cumplir con esos cambios.

En el pasado, Codename One utilizaba 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.

Las compilaciones iOS se compilan y firman en Macs en la nube utilizando xcode (la herramienta oficial de compilación de Apple). Esto los hace compatibles con los cambios actuales / futuros de Apple y permite a los desarrolladores usar Windows / Linux mientras se dirigen a iOS. Puede leer más sobre la compatibilidad de ParparVM con iOS ParparVM .

En el pasado, Codename One admitía Windows Phone utilizando un traductor de C # que dependía de XMLVM, pero no era un enfoque ideal. Tenga en cuenta que el backend de XMLVM que se traduce en C # es muy diferente del que se usaba anteriormente para traducir a iOS. Codename One optó por descontinuar ese backend antiguo ya que no era tan poderoso como el nuevo backend de UWP y no coincide con los objetivos de Microsofts en el futuro y se centra en UWP (Universal Windows Platform) .

Para Windows 10 Desktop y Mobile, Codename One usa iKVM para apuntar a UWP (Universal Windows Platform) y ha abierto los cambios al código iKVM original en el repositorio de Codename One github .

Tenga en cuenta que las compilaciones de UWP se realizan en una máquina con Windows 10 en la nube, lo que permite a los desarrolladores utilizar Mac / Linux o versiones anteriores de Windows al compilar aplicaciones de Windows nativas ...

Los objetivos de compilación de JavaScript que están disponibles en los suscriptores de nivel empresarial usan TeaVM para hacer la traducción estáticamente. TeaVM proporciona soporte para el uso de JavaScript al dividir la aplicación de una manera bastante elaborada. Para admitir la interfaz de usuario compleja, Codename One utiliza HTML5 Canvas API, que permite una flexibilidad absoluta para crear aplicaciones.

Para compilaciones de escritorio, Codename One usa javafxpackager , ya que las máquinas Macs y Windows están disponibles en la nube, la naturaleza específica de la plataforma de javafxpackager no es un problema.

Lo que hace que Codename One se destaque es el enfoque que le lleva a la interfaz de usuario donde utiliza una "arquitectura liviana" para permitir que la interfaz de usuario trabaje sin problemas en todas las plataformas y se desarrolle casi por completo en Java. Se ve aumentado por la capacidad de incorporar widgets "pesados" en su lugar entre los "pesos ligeros". Puede obtener más información sobre esto en esta publicación de blog . Tenga en cuenta que en este momento el peering está experimentando algunas mejoras y ahora admite usos más elaborados, como el uso de capas.

Un componente ligero está escrito completamente en Java, esto permite a los desarrolladores obtener una vista previa de la aplicación con precisión en los simuladores y el generador de GUI.

Codename One logra un rendimiento rápido dibujando usando las API de juegos nativas de la mayoría de las plataformas, por ejemplo, OpenGL ES en iOS.

Las principales tecnologías detrás de Codename One son todas de código abierto incluyendo la mayoría de las cosas desarrolladas por Codename One, como ParparVM pero también la biblioteca completa, puertos de plataforma, herramientas de diseño , ParparVM dispositivos , etc. here puede obtener más información sobre el uso de las fuentes de Codename One.

FYI Shai Almog, el autor de esta respuesta, es el CEO de Codename One.