Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros temas > La Taberna
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-06-2017
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Sobre Apache Cordova y su uso para el desarrollo multiplataforma

¡Hola a todos!

Antes de nada quiero disculparme por la tardanza en cumplir la promesa que hice de este otro hilo:

Cita:
Empezado por dec
P.S. Quedo pendiente un nuevo mensaje con algunos frameworks y herramientas. Tal vez lo abra ya en otro hilo diferente para no copar este.
... He estado más de una semana con un constipado (tal vez una gripe, qué sé yo, si no he visto a mi médico, y, mira que mi médico está de buen ver...) y también trabajando en cierta aplicación que estoy llevando a cabo junto con un cliente. Voy a intentar cumplir en este mismo hilo con mi promesa, aunque, no sé muy bien cómo enfocarlo, puesto que hablo de "un nuevo mensaje con algunos frameworks y herramientas", pero, básicamente, voy a hablar un poco de Apache Cordova, por otro lado, conocido de muchos vosotros.

En estas tres semanas poco más o menos he estado enfermo, pero, como buen autónomo, también he seguido trabajando, precisamente, en la aplicación que digo junto a un cliente: que se desarrolla gracias en buena medida a Apache Cordova. ¿Pero qué es Apache Cordova y en qué puede resultar útil? Pues bien, se trata de desarrollar aplicaciones utilizando utilizando HTML, CSS y Javascript, que, correrán en todo caso en el "WebBrowser" que incorporen las plataformas soportadas: Android, iOS, Windows, etc.

Dije que iba a hablar de "frameworks", pero, en realidad el HTML que utilicemos, así como el estilo (CSS) y el Javascript que usemos, no tiene porqué estar basado en "framework" alguno. Puede estarlo, y, podremos beneficiarnos de esto, pero, no es estrictamente necesario, muchos menos usar algún "framework" en concreto. Hay "frameworks" que pueden sernos muy útiles, por ejemplo, Bootstrap CSS, puesto que usándolo, sin irnos más lejos, nuestra aplicación será "responsive" sin preocuparnos nosotros de ello.

También "Boostrap CSS" proporciona controles como botones, "casillas de formulario", "barras de progreso", "ventanas modales", etc. Todos estos controles, puesto que hablamos de HTML+CSS, lucirán de forma muy similar en todas las plataformas: navegadores web de escritorio y para móviles, "WebBrowsers" de Android, iOS, Windows, etc. Bootstrap es ampliamente utilizado, se desarrolla por Twitter y permite su personalización (colores, tamaños) y el uso de temas para afinar en el estilo que corresponda con nuestras aplicaciones.

He dicho que me iba a centrar en Apache Cordova y no iba a hablar de "frameworks"... pero tocado un poco el CSS (yo diría que "hundido" gracias a Bootstrap CSS) tratar de Javascript no esté demás. ¡Pero aquí tenemos infinidad de posibilidades para agotar nuestras preferencias! Javascript es un lenguaje que se muestra muy potente, que puede hacer infinidad de cosas. Cada vez más de forma "estándar": notificaciones en el escritorio, tomar imágenes con la cámara, realizar peticiones HTTP de todo tipo, etc. Pero me estoy yendo por las ramas y no he hablado de ningún "framework" en particular...

No tengo ninguno favorito, al contrario que me pasa con el CSS y el "framework" Boostrap CSS. Quizá podría decirse que una de las cosas más interesantes que he encontrado en los últimos tiempos es la posibilidad de hacer lo que llaman "Two-Way Data Binding", mal y pronto, que el modelo de nuestra aplicación (un array de objetos con diversa información, por ejemplo) se "muestre" en la interfaz de nuestra aplicación y viceversa, es decir, que un cambio en la interfaz (alguien escribió en un "textarea") se vea reflejado directamente en el modelo de nuestra aplicación.

De modo que lo dicho sería algo así como una característica que yo le pediría a un "framework", tal vez también que fuese capaz de manejar lo que se conoce como "Single Page Application", que, en pocas palabras permite controlar el estado de la aplicación mediante "vistas" que en realidad no corresponden documentos HTML "que se cargan" en el navegador, puesto que de lo que se trata es de que el usuario pueda incluso navegar por dichas vistas o páginas, pero, sin recargar en absoluto el navegador.

Esto último nos viene muy bien para mantener el estado de nuestra aplicación de una forma más sencilla, puesto que al no haber recargas de página en el navegador del usuario, digamos que nuestras variables no se "initializan" a cada paso o "recarga" o "petición", aunque seguramente esto se pueda explicar mejor. Y yo creo que me voy a quedar aquí y no voy a mencionar ningún "framework" para Javascript en concreto. De existen "mini frameworks" o "componentes" que implementan lo dicho "por separado", dejándonos completa libertad para todo lo demás.

No quisiera extenderme mucho más para que este mensaje no resulte pesado, pero, justo ahora llevamos a Apache Cordova. En pocas palabras Apache Cordova trata de llegar adonde Javascript no llega todavía. Por ejemplo, supongamos que queremos utilizar el GPS que incorporan nuestros teléfonos. Javascript aún (ojo, aún...) no puede con ello, de modo que entra en escena Apache Cordova, que, proporcionando un API en Javascript, precisamente, nos permitirá acceder al GPS del dispositivo, obtener información, utilizar "eventos", etc.

Apache Cordova tiene una arquitectura basada en "plugins", de modo que existe un plugin "Camera" para "hacer" fotos y seleccionarlas, un plugin "File" que permite trabajar con archivos, un plugin "FileTransfer" que permite subir archivos a nuestro servidor, plugins como "Compass", "Device", "Device Motion" y "Device Orientation", que nos permiten trabajar con la "brújula", obtener información del dispositivo, sobre su "sensor de movimiento" y su "sensor de orientación".

Apache Cordova publica otros plugins, que, digamos son los "oficiales", pero, gracias a que existe la posibilidad de que otros desarrolladores lleven a cabo este tipo de plugins, lo cierto es que existen un buen número de ellos, algo así como los componentes para Delphi, aunque, no en tanta cantidad. Tal vez no sea lo más común, pero, llegado el caso, si tuviésemos que hacerlo, estos plugins se desarrollan en Java y existe la documentación correspondiente para llevarlos a cabo.

Apache Cordova no es perfecto. ¡Ni nada lo es! Está en constante desarrollo desde hace años, y, se encuentran problemas todos los días, supongo. Por ejemplo, algo tan aparentemente sencillo como un control HTML "input file" no funciona en Android 4.4 debido a cierto "bug" (creo que lo aceptan así) en el "WebBrowser" de esa versión de Android en concreto. Podemos utilizar plugins, por ejemplo, si se trata de imágenes, el plugin "Camera" nos servirá, aunque tampoco es perfecto, y, en algunas versiones de... podríamos seguir...

Concluyendo, lo bueno de Apache Cordova vendría a ser, que, con la misma base de código, es posible desarrollar aplicaciones para plataformas como Android, iOS, Windows y aún otras... El ideal sería que Javascript contase con API estándar que permitiesen lo que ahora no es posible, puesto que además, de este modo, estaríamos hablando de que nuestras aplicaciones podrían funcionar en literalmente cualquier navegador web o "WebBrowser". Lamentablemente esto aún no parece algo cercano.

Seguramente dependa de nuestras necesidades y habilidades decantarse por unas herramientas u otras. No creo que ninguna sea mejor ni peor. Delphi, por ejemplo, es una magnífica herramienta (me está permitiendo ganarme la vida, ¡¿se puede decir más para valorarla?!) que desde hace poco, sin prisa pero sin pausa, permite desarrollar aplicaciones multiplataforma, utilizando no pocos de los conocimientos que se adquiriesen antes utilizando este lenguaje y entorno de desarrollo.

Personalmente, mezclo ambos "mundos"... porque ahora mismo estoy desarrollando una aplicación para Android e iOS (en principio) utilizando HTML, CSS, Javascript y Apache Cordova, pero, utilizando para ello un programa que está desarrollado en Delphi, precisamente. Sin embargo, como dije en el hilo que enlazo arriba, en realidad con el bloc de notas podría bastar. Para terminar, tal vez podría comentar algo acerca de la aplicación en que estoy trabajando, mencionando algunas características.

Esta aplicación en que trabajo, como digo, se está probando en Android e iOS. Hasta hace poco, con una única limitación (notificaciones "push") podía funcionar perfectamente en cualquier navegador, pero, el problema de Android 4.4 y el "input file" nos ha "obligado" a usar el plugin "Camera" de Apache Cordova, de modo que, algunas vistas de la aplicación no funcionarían ya en el navegador: pero sí las otras, y, también diré que hemos preferido mantener una sola base de código para todo.

La aplicación en que trabajo, tanto en su versión de Android como la de iOS, permite recibir notificaciones "push" (algo así como mensajes SMS "modernos", capaces de "levantar" nuestra aplicación aunque esta no estuviese corriendo en ese momento), cuenta con un "mercadillo" de anuncios, donde es posible publicar artículos a la venta, permitiendo la comunicación entre los distintos usuarios de la aplicación, estableciendo "chats" en tiempo real donde los usuarios pueden mostrarse interesados, cerrar una compraventa, etc.

La aplicación tiene otras muchas vistas en donde se muestran novedades, avisos, información personal de cada usuario (nóminas, otros documentos), permite a usuarios "administradores" enviar mensajes a diferentes "canales" de usuarios, en fin, se trata de una aplicación ideada para ser utilizada por los trabajadores de cierta empresa con vistas a mantener cierta comunicación entre la dirección y los trabajadores y entre estos mismos trabajadores. Funciona bastante bien, aunque, para decir la verdad, todavía no se ha "lanzado" públicamente...

Y no sé si se me olvida comentar algo... quizás insistir en el hecho de que todo esto tal vez pueda competir con Delphi de alguna manera, pero, desde luego, si pienso en alguna otra herramienta capaz de generar aplicaciones multiplaforma y de una forma que además me place, estoy pensando en Delphi. HTML, CSS, Javascript, Apache Cordova... son otras posibilidades para según qué casos en que quizás convenga utilizarlas, o quizás no, dependiendo, como se ha dicho, de nuestras necesidades, conocimientos y requerimientos de nuestras aplicaciones.

¿Y qué? ¿Cómo se os queda el cuerpo? Quizás tenía que haber puesto alguna imagen para ilustrar... ¡pero las que se me ocurren son todas NSFW!
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Solicito orientación sobre un desarrollo para GPS. TiammatMX OOP 6 28-03-2014 15:37:29
Sobre .NET en multiplataforma SMTZ Noticias 2 16-09-2006 17:58:14
Compiladores y Entornos de desarrollo multiplataforma Crandel Debates 9 16-08-2005 18:29:18
Desarrollo de webservice para apache padillarj Internet 0 14-08-2005 08:24:05
Crear un componente multiplataforma para conectar un BD RONPABLO OOP 0 10-02-2005 20:25:49


La franja horaria es GMT +2. Ahora son las 14:06:26.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi