Otra forma de escribir aplicaciones multiplataforma: elementos internos de Neutralinojs y comparación con Electron y NW.js


Soy Shalitha Suranga de Sri Lanka. Comencé el proyecto Neutralinojs con otros dos miembros como nuestro proyecto de investigación en la universidad.


El desarrollo de aplicaciones multiplataforma es extremadamente √ļtil entre las organizaciones de desarrollo de software porque puede dirigirse a una gran audiencia de usuarios finales. Anteriormente hab√≠a varios enfoques, como escribir m√ļltiples bases de c√≥digo por cada plataforma, escribir una sola base de c√≥digo usando condicionales para la selecci√≥n de la plataforma, o usar un lenguaje de programaci√≥n que tiene una m√°quina virtual multiplataforma en tiempo de ejecuci√≥n. Hubo inconvenientes de cada uno como complejidad de dise√Īo, accesibilidad limitada de bajo nivel y tasa de aprendizaje lenta. El desarrollo de aplicaciones multiplataforma con tecnolog√≠as web vino [1] despu√©s. Electron y NW.js son los marcos m√°s populares que permiten a los desarrolladores crear aplicaciones multiplataforma con Javascript. B√°sicamente, estos marcos populares combinan el navegador Chrome integrado y el tiempo de ejecuci√≥n de nodo [2], [3].


Estos marcos se est√°n utilizando para crear numerosas aplicaciones multiplataforma. Mientras que la comunidad se√Īal√≥ varios inconvenientes invisibles de estos marcos. Las aplicaciones clave que fueron criticadas a trav√©s de foros y sitios web de Internet [4], [5], [6], [7], [8] fueron el gran tama√Īo del paquete de aplicaciones, el alto consumo de memoria y el largo flujo de trabajo de desarrollo. La Tabla 1.1 muestra las ventajas y desventajas de Electron / NW.js.


Tabla 1.1: Ventajas y desventajas de Electron / NW, js


Ventajas de Electron y NW.jsDesventajas de Electron y NW.js
El desarrollo es muy f√°cil ya que se usa JavascriptEl paquete de aplicaciones se considera bloatware (uso elevado de espacio en disco)
Acceda a funciones nativas a trav√©s del nodo de tiempo de ejecuci√≥n Base de c√≥digo √ļnico para todas las plataformas compatibles Linux, Windows y macOSAlto consumo de memoria y lentitud
Se deben instalar muchos módulos de nodo

Motivación


Electronjs y NW.js, como los marcos basados ‚Äč‚Äčen nodos de cromo, no pudieron reducir a√ļn m√°s el tama√Īo del paquete de aplicaciones porque el tama√Īo de los componentes integrados no se pudo reducir a√ļn m√°s. Una posible soluci√≥n es introducir un nuevo marco de desarrollo de aplicaciones multiplataforma que tenga todas las ventajas de Electron y NW.js pero que sea ligero, port√°til y ligero para la memoria de la computadora. Es importante destacar que cada plataforma tiene un componente de navegador incorporado que se puede utilizar en lugar de cromo incrustado. La plataforma de Windows tiene MSHTML (IE10 / 11) y Linux tiene gtk-webkit2.


Además, también hay un navegador web predeterminado en cada plataforma. Por lo tanto, el módulo de cromo se puede reemplazar con el navegador web del usuario o el componente del navegador web. El tiempo de ejecución del nodo se puede reemplazar con un servidor web liviano que expone la funcionalidad nativa del sistema operativo.


Objetivos clave


Esta investigaci√≥n presenta una nueva arquitectura de marco que ofrece una implementaci√≥n de un marco de desarrollo de aplicaciones multiplataforma port√°til y liviano que incluye la prueba del uso de los mejores marcos frontales. El nuevo marco utilizar√° el componente del navegador o el navegador del usuario en lugar de Chrome integrado y reemplazar√° el tiempo de ejecuci√≥n del nodo al introducir un tiempo de ejecuci√≥n del servidor liviano que expone las funciones requeridas a nivel del sistema operativo. Las caracter√≠sticas clave del nuevo dise√Īo de arquitectura de marco pueden clasificarse como flujo de trabajo de desarrollo ligero, port√°til, simple y acceso nativo.


Ligero


El paquete de aplicaciones y el kit de desarrollo de aplicaciones son iguales, y ocupar√° muy poco espacio en disco. El paquete de aplicaciones se puede comprimir en un formato de archivo deseado para reducir a√ļn m√°s su tama√Īo.


Totalmente port√°til


El kit de desarrollo de aplicaciones debe ser totalmente portátil, lo que significa que no se requieren requisitos previos antes del proceso de desarrollo. Por lo tanto, el paquete de la aplicación también debe ser totalmente portátil, por lo tanto, no se requieren requisitos previos antes de la ejecución de la aplicación que se creó con el nuevo marco.


Flujo de trabajo de desarrollo simple


El flujo de trabajo de desarrollo de aplicaciones debe ser lo más simple posible. No se deben instalar dependencias en Internet, lo que ahorra tiempo y uso de la red del desarrollador. Por lo tanto, la aplicación de depuración debe ser simple como lo hace Electron [12].


Acceso nativo


El nuevo marco debería exponer las funciones requeridas del sistema operativo de bajo nivel a través de una biblioteca basada en Javascript y las llamadas nativas deberían manejarse de manera concurrente utilizando hilos a nivel del sistema.


Arquitectura de la solución


Neutralinojs tiene dos componentes principales en una perspectiva de dise√Īo. Neutralino run-time es un servidor port√°til y liviano que escucha las solicitudes que provienen del SDK del cliente. Adem√°s, ejecuta un subproceso separado para ejecutar una ventana nativa que contiene el componente del navegador incorporado para representar la aplicaci√≥n. Client SDK es una biblioteca de Javascript que se comunica con el servidor a trav√©s de XHR. Las funciones y m√≥dulos del SDK del cliente se utilizan para realizar llamadas al sistema de forma asincr√≥nica.



Figura 1.1: Dise√Īo de la soluci√≥n Neutralino


Servidor Neutralino



Figura 1.2: Dise√Īo del servidor Neutralino


Una solicitud HTTP entrante obtiene acceso a interfaces nativas a trav√©s de CML que crea o reutiliza un hilo separado para la ejecuci√≥n funcional. El analizador del cuerpo analiza el mensaje y env√≠a datos relevantes para solicitar el enrutador que llama a interfaces nativas particulares. Hay dos hilos de fondo. El subproceso de la interfaz de usuario ejecuta el bucle principal de la ventana nativa, el subproceso del receptor de Ping detiene el servidor Neutralino cuando la pesta√Īa del navegador se cerr√≥ en modo de depuraci√≥n. El mapa de configuraci√≥n es una estructura en memoria que contiene pares clave-valor para la configuraci√≥n de la aplicaci√≥n.


Cliente Neutralino



Figura 1.3: Dise√Īo del cliente Neutralino


Una llamada a la API Neutralino invoca una función en la biblioteca del cliente Neutralino. Posteriormente, la función relacionada envía un XHR a través de la biblioteca XHR al servidor Neutralino que responde a las solicitudes entrantes.


Neutralinojs ofrece un mejor marco de desarrollo de aplicaciones multiplataforma port√°til y liviano en comparaci√≥n con otros marcos como Electron y NW.js seg√ļn los resultados de la investigaci√≥n. Mientras que el equipo de investigaci√≥n ha implementado solo la mayor√≠a de las caracter√≠sticas requeridas b√°sicamente enfoc√°ndose en un POC. Por lo tanto, todas las caracter√≠sticas que se encuentran en esos marcos pueden no estar disponibles en Neutralino en este momento.


¬°Comience con Neutralinojs hoy!


Sitio web
Github


Encuentra a Shalitha Suranga en Github para más proyectos de código abierto


Referencias

01 Lnu.diva-portal.org. (2018) [en línea] Disponible en: http://lnu.diva-portal.org/smash/get/diva2:1081105/FULLTEXT01.pdf


02 Electronjs.org. (2018) Sobre Electron | Electrón [en línea] Disponible en: https://electronjs.org/docs/tutorial/about


03 GitHub. (2018) nwjs / nw.js. [en línea] Disponible en: https://github.com/nwjs/nw.js/wiki/NW13-architecture


04 GitHub. (2018) NW Tama√Īo del archivo ejecutable: haga un ejecutable independiente liviano Problema # 3955 ¬∑ nwjs / nw.js. [en l√≠nea] Disponible en: https://github.com/nwjs/nw.js/issues/3955


05 GitHub. (2018) ¬ŅTama√Īo de paquete de aplicaci√≥n esperado? Edici√≥n # 2003 electron / electron. [en l√≠nea] Disponible en: https://github.com/electron/electron/issues/2003


06 medio. (2018) El electrón es cáncer - Registro de confirmación - Medio. [en línea] Disponible en: https://medium.com/commitlog/electron-is-cancer-b066108e6c32


07 medio. (2018) Por qué sigo usando Vim - Commit Log - Medium. [en línea] Disponible en: https://medium.com/commitlog/why-i-still-use-vim-67afd76b4db6


08 News.ycombinator.com. (2018) Preg√ļntele a HN: ¬ŅCree que Electron es bueno para crear aplicaciones de escritorio? El | Hacker News. [en l√≠nea] Disponible en: https://news.ycombinator.com/item?id=14245183


09 GitHub. (2018) neutralinojs / evaluación. [en línea] Disponible en: https://github.com/neutralinojs/evaluation


10 Neutralino.js.org. (2018) NeutralinoJs | Marco de desarrollo de aplicaciones multiplataforma portátil y ligero. [en línea] Disponible en: https://neutralino.js.org/


11 github. (2018) Neutralinojs. [en línea] Disponible en: https://github.com/neutralinojs


12 Electronjs.org. (2018) Depuración de aplicaciones | Electrón [en línea] Disponible en: https://electronjs.org/docs/tutorial/application-debugging

Source: https://habr.com/ru/post/443572/


All Articles