He abierto varios hilos en el pasado sobre frameworks, tanto para Web como para crear Juegos. Aquí va uno especial, porque ahora le dedico el 100% de mi tiempo a este proyecto. Iré ampliando el post con las dudas que vayan surgiendo en los comentarios.
Xojo
Xojo es una herramienta RAD comercial para crear aplicaciones nativas en todas las plataformas habituales, además de poder crear aplicaciones web, tipo SPA. Se le conoce como Xojo al IDE, al lenguaje de programación y al propio framework que incluye.
Lo descubrí en 2018, gracias a un mediavidero. Tanto me gustó, que acabé trabajando para esta empresa, en el framework Web, desde 2022 hasta hoy
Aunque inicialmente surgió como un dialecto de Basic, se ha desligado y ha evolucionado por su cuenta a lo largo de más de 20 años (su nombre original era RealBasic). La programación es 100% Orientada a Objetos.
Tienes varios tipos de proyecto:
- Escritorio (Windows, macOS, Linux)
- iOS
- Android
- Web (Tanto para aplicaciones tipo SPA, como para montarte una API)
- Consola (Para aplicaciones de linea de comandos)
Salvo en consola, todo el diseño de la interfaz gráfica se hace de manera visual, colocando los controles en el panel de diseño.
Todos los tipos de proyecto funcionan más o menos igual. Hay particularidades, por ejemplo en iOS tendrás una pantalla especial "LaunchScreen", que es la que se ve al abrir la app en el móvil.
La manera de trabajar es poner controles en la pantalla y luego implementas los eventos que quieras manejar.
Este es un ejemplo de una ventana con un botón:
Estos son eventos que puedes implementar en ese control, yo voy a implementar en "Pressed":
Y dentro de ese evento, escribes el código que quieres que se ejecute, cuando el usuario pulse el botón:
Si te fijas en la última captura de pantalla, nada más que ves una linea de código. En Xojo no se trabaja con diferentes ficheros. Todas las clases, sus métodos, propiedades y eventos, se ven en el navegador del proyecto. Para editar un método concreto, buscas en el árbol y editas el código ahí mismo.
Esta manera de trabajar es común a todos los tipos de proyectos, ya sea escritorio, móvil o web.
Aplicaciones de escritorio
Las aplicaciones que se crean con Xojo son 100% nativas en cada plataforma, por lo que soportan cosas como modo oscuro, auto-completado, o las opciones de accesibilidad. En Linux se usa GTK, mientras que en macOS se usa Cocoa. Cuando Xojo migre los controles a controles XAML, para las aplicaciones de Windows, no tendrás que hacer nada, todo de manera transparente para ti, como desarrollador.
Soporta 32-bit y 64-bit, tanto en x86 como en ARM. Por lo que puedes crear aplicaciones nativas para Raspberry Pi 5, por ejemplo.
Cuando tienes la aplicación lista, desde el propio IDE puedes marcar las plataformas para las que quieres compilar, le das al botón "Build" y... listo. Se te creará un directorio con la aplicación compilada, para cada sistema operativo que hayas elegido.
Algunos ejemplos de apps creadas desarrolladas usando Xojo son PubCoder, para crear eBooks, o EverWeb, para crear sitios web.
Aplicaciones móviles y tablets
Ahora mismo está dividido en dos tipos de proyecto diferentes, iOS y Android, la idea es que se unan más adelante, como en los proyectos de Escritorio.
La particularidad de iOS es que se usa "Auto-Layout" para el posicionamiento de los controles.
De resto, funciona igual. Añadiendo el código para los eventos que quieras controlar.
Android se ha unido a la familia de proyectos de Xojo hace poco.
Si quieres ver una aplicación muy chula que ha lanzado este año uno de los usuarios de Xojo, busca "Photo Tape" en la App Store de iOS.
Aplicaciones web
Con Xojo también se pueden hacer aplicaciones Web. Funciona como una SPA. Al funcionar como una SPA y no indexarse bien en buscadores, el caso de uso de una aplicación Web hecha en Xojo serían aplicaciones que están detrás de un login.
Por ejemplo, una Intranet, una aplicación tipo SaaS, aplicaciones para controlar una Raspberry Pi de manera remota o cosas similares son un buen caso de uso. Si quieres montar un Idealista o un MilAnuncios, que dependen mucho del posicionamiento web, pues no.
Eso sí, incluso para este tipo de webs se pueden crear aplicaciones internas en Xojo para la gestión y el mantenimiento.
Aquí el límite entre "frontend" y "backend" es difuso, porque en Xojo lo puede hacer todo la misma persona desde el propio IDE. Siguiendo con el ejemplo que has visto más arriba, en el que pones un botón y se muestra un mensaje al pulsarlo. Tu código siempre se ejecuta en el servidor y es Xojo quien se encarga de actualizar el navegador.
Se pueden crear controles más avanzados combinando controles con un "contenedor". Por ejemplo, puedes crear los típicos botones de navegación combinando una imagen (WebImageViewer) con una etiqueta de texto (WebLabel).
Si quieres crear controles personalizados, ya sea desde cero, integrando una biblioteca de terceros, o usando un Web Component, hay un SDK que hace de puente usando JavaScript o TypeScript.
También puedes obviar toda la parte gráfica y simplemente montarte una API REST.
Al ejecutar la aplicación que has compilado, se expone un puerto TCP y ya puedes acceder desde el navegador.
Pero la manera más normal de desplegar las aplicaciones web en producción es lanzando varias instancias, usando algún Service Manager y que se balancee la carga detrás de NGINX o Apache. Si lo prefieres, también puedes meterlas en contenedores y usar Docker Compose, Nomad, Kubernetes y demás.
Si no te quieres complicar la vida, Xojo ofrece su propio servicio de managed hosting, con soporte técnico (Xojo Cloud). Y si prefieres hostearla tú pero sin tener que pelearte con NGINX, hay un usuario de Xojo que ha creado una aplicación de escritorio para gestionar servidores de Linux, que se llama Lifeboat.
Depuración remota
En todos los tipos de proyecto puedes depurar código. Pones tu punto de interrupción y, si la ejecución pasa por ese punto o si el programa encuentra una excepción, podrás depurar tu aplicación. Hasta ahí, todo normal, nada nuevo.
Ahora bien, puedes desarrollar una aplicación desde la comodidad de tu Mac o Windows, por ejemplo, y lanzar una sesión de depuración remota en una Raspberry Pi Zero 2, que no es muy potente. En ese caso, no hace falta instalar todo el IDE en la Raspberry Pi. Lo único que tienes que hacer es abrir una aplicación, que se incluye entre las herramientas de Xojo, en la Raspberry Pi. Luego, en tu IDE, le pones la IP y le pides que ejecute tu proyecto en ese dispositivo.
El mismo proceso funciona si estás ejecutando otro sistema operativo en una máquina virtual.
Licencia
Aunque es un producto comercial, desde este año se pueden compilar aplicaciones de escritorio, para Linux, de manera gratuita. De resto, se pueden usar todas las opciones del IDE sin necesidad de una licencia, incluyendo ejecutar las aplicaciones desde el propio IDE, o incluso la depuración remota.
Una vez que quieras distribuir la aplicación, toca pasar por caja (salvo en Linux). Hay diferentes licencias que van desde $99 (Desktop Lite) a $799 (la Pro, con la que puedes compilar cualquier tipo de proyecto). A lo largo del año se suelen sacar promociones y descuentos del 20%.
Con tu licencia puedes hacer la cantidad de aplicaciones que quieras, sin límite de usuarios, ni de ningún otro tipo.
La licencia te incluye un año de actualizaciones. Una vez que expira, puedes seguir usando esas versiones indefinidamente sin tener que renovar. Si la licencia ha expirado y quieres versiones nuevas, es ahí cuando te tocará renovar.
Recursos
- Canal de YouTube - 600+ videos sobre Xojo, la mayoría en inglés, pero también en español
- La playlist de YouTube sobre Xojo en español - Hay más de 200 videos
- Blog de Xojo en español - Artículos sobre Xojo en español, muchos son traducciones del blog oficial
- Introduction to Xojo Programming Textbook - Un eBook gratis, en inglés, para aprender a programar en Xojo (incluye también la edición para profesores)
- Programming the Raspberry Pi with Xojo - Un eBook específico para la Raspberry Pi
Recopilación de dudas y preguntas
No hay ninguna de momento. Dispara.