REALbasic

Cuando compré el iMac comencé a mirar como programar para OS X. Uno de los entornos de desarrollo disponibles que me llamó mucho la atención fue REALbasic, que es un producto con unas capacidades fuera de lo común, consistentes en poder realizar software multiplataforma simplemente compilando un proyecto dado indicando la plataforma para la cual se quisiera tener el ejecutable. REALbasic puede generar aplicaciones para entornos Windows, Mac y Linux. El entorno es un IDE no muy pesado, con unas opciones claras y bastante sencillo de utilizar. El lenguaje que utiliza es una evolución de BASIC orientado a objetos y el acceso a datos puede ser con una versión propia de SQLite o bien se puede conecta a distintos servidores SQL.

REALbasic es un producto comercial desarrollado por una empresa llamada REALsoftware y con sede en Austin – Texas. Existen dos versiones de REALbasic, una standard y otra denominada profesional. La edición standard incluye en entono de desarrollo en una de las plataformas soportadas, la generación de ejecutables para esa plataforma y el acceso a bases de datos SQLite. El precio de la edición standard es de 75 € en las versiones para Windows y Mac. La edición standard para Linux es gratuita. La edición profesional sí permite realizar ejecutables para las tres plataformas soportadas y añade además conectividad con diversos motores de bases de datos relacionales, encriptado AES 256 para la base de datos SQLite, depuración desde un equipo remoto, controles contenedores, auto-detección de aplicaciones en red, sockets y soporte de SSL. La edición profesional cuesta 400 €.

Desde mi punto de vista el entorno tiene carencias, sobre todo la falta de un generador de informes aunque existe un componente de terceros denominado On-Target Reports que cuenta con conexión para su uso con REALbasic. Sin embargo, lo que menos me gusta de REALbasic es su modo de distribución: cada tres meses lanzan una versión del producto, empaquetando en ese momento las funcionalidades que tienen disponibles. No hay un planning de versiones que diga qué estan haciendo o que características van a implementar en cada versión sino que lo anuncian un par de semanas antes de lanzar cada versión. Cuando compras una licencia tienes derecho a actualizaciones durante seis meses, y luego hay un plan de actualizaciones que sale más económico que ir pagando cada vez. Uno de los puntos fuertes de REALbasic es su documentación. El producto se entrega con varios manuales muy completos y multitud de programas de ejemplo.

Uno de los puntos a favor de REALbasic es cuenta con una comunidad bastante activa. Existen unos foros donde los programadores comparten experiencias y plantean problemas que encuentran en sus desarrollos. Existen multiples componentes de terceros que añaden extensiones y funcionalidades al entorno de desarrollo, entre los que destacan los plugins de Monkeybreadsoftware. El contrapunto de los plugins comerciales se encuentra en RBDevZone que aglutina tanto noticias sobre REALbasic y plugins gratuitos. También hay una publicación bimensual llamada RBdeveloper y recientemente se ha formado la Asociación de Profesionales de REALbasic.

Hay muchos blogs en inglés de desarrolladores de REALbasic, pero no he encontrado apenas sitios en castellano que hablen sobre este entorno de desarrollo. Mi intención es usar la versión de evaluación hasta conseguir un cierto dominio del lenguaje y realizar algún pequeño programa para uso personal. Si esto fructifica compraré la edición standard para Mac y liberaré los programas como software libre.

7 comentarios en «REALbasic»

  1. ¿Has probado las librerías Qt? Para programar en multiplataforma lo mejor que he visto es Qt/C++

  2. Hola,
    Pues debe ser lo único que me queda por probar porque mira que he mirado entornos de desarrollo para Mac y no se me había pasado por la cabeza las Qt. Lo miraré, gracias por el consejo.
    Saludos

  3. Si lo que buscas es un entorno multiplataforma, has mirado la opción Python + Wxwidgets ?

    Python como lenguaje de programación no tiene discusión, su biblioteca de modulos “de serie” cubre ampliamente lo que ofrece mayoritariamente REALbasic (Internet, E-mail, XML, Sockets, SQLite, …)

    WxWidgets (proyecto de codigo abierto muy maduro) aunque es un framework GUI para C++, tiene un binding para Python (entre otros, tambien para Ruby, …) de hecho el de Python es el mas completo despues de la implementación nativa para C++.

    Existen utilidades (multiplataforma) para compilar una aplicación Python de manera que entregas al usuario un unico ejecutable. Bueno, realmente lo que se hace es recoger el byte code que de por si genera el interprete de Python e incrustarlo en un unico ejecutable junto con las librerias utilizadas y el propio interprete de Python, de manera que la aplicación corre en cualquier otro ordenador sin necesidad de “obligar” al usario a instalarse previamente Python, de hecho ni siquiera sabra que tienen una aplicación Python en sus manos.

    La cosa es tal que el Mac OS X 10.5, en el Xcode incluye plantillas de proyecto para generar una aplicaciones Python “compiladas” y que usan de manera nativa Cocoa (con lo que tiene acceso a la API propia de Mac OS X)

    Pero si se necesita multiplataforma pues en vez de Cocoa, usamos Wxpython y listo. El ejecutable que se obtiene, a pesar de incluir el interprete de python, es generalmente mas liviano que el que genera REALbasic que tampoco es “realmente compilado”, ya que usa una tecnica similar (de ahi la facilidad de generar multplataforma).

    Si no lo has hecho aun, descargate el Wx para python y su demo(en wxpython.org) y veras que como GUI no tiene nada que enviar a los otros.

    Por otro lado usar SQLite es un vicio, muchas cosas se resuelven facilmente con ella (siempre que no necesitemos ir a mayores en terminos de multiusuario, red, …) REALbasic tiene una buena implementación de clases para manejar bases de datos y un concepto de “driver” muy interesante que separa bastante el codigo que maneja la operaciones con la BD, de la fuente propia de base de datos. Por ejemplo, podemos crear una aplicacion prototipo funcionando con la implementacion que REALbasic hace de SQLite y luego para pasar finalmente a producción, modificando apenas unas lineas de codigo y tenemos la aplicación conectada a un MySQL o a un Oracle, o un ODBC … Pero eso con Python 2.5 tambien, SQLite ya viene de serie en el.

    En fin, todo esto lo planteo como una opción a tener en cuenta en función de que necesidades/curiosidades/proyectos se tenga en mente desarrollar. Pues como usuario de REALbasic Profesional, desde hace ya unos cuantos años he pasado de llevarme gratas sorpresas a algunas profundas decepciones.

    Evidentemente todo depende de gustos y necesidades y es cierto que para las mias donde lo multiplataforma esta actualmente mas a la orden del dia, REALbasic no es todo lo que promete, especialmente si la aplicación hace más uso de temas graficos y de elementos de GUI mas concretos o personalizados. El tema se estrella. Si por el contrario la aplicación es basicamente un front-end para una base de datos, pocos problemas habra, pero si vamos a màs, luego empiezan las decepciones, o en todo caso mucho mas trabajo para adaptarse a casi tres versiones de la aplicación.

    En todo caso si es cierto que desde la version profesional en un sistema operativo (por ejemplo windows) generas ejecutables para los otros dos (Linux y Mac) por lo que puedes desarrollar si tener los otros sistemas instalados, … aunque a la larga no es muy recomendable porque te encunetras con sorpresas como que una aplicación compila si errores en Windows y luego no corre en Mac, … en resumen: que ojo, que “no es oro todo lo que reluce”

    De todas maneras, en mi caso particular lo que ha llevado a desencantarme un poco de REALbasic (y ya digo que en si me gustava mucho, como lenguaje y entorno) ha sido su precisamente su politica de actualizaciones y enfoque empresarial, ejemplos:

    1- Durante bastantes versiones, se distribuia con RB el driver para MySQL. curiosamente ese driver quedo fuera del entorno a partir del momento en que los de Realsoftware (la compañia que ha creado REALbasic) creo su propio servidor de bases de datos. Ahora el driver para MySQL esta bajo domino publico con otra compañia, lo que en si no es malo, pero este enfoque ha sido el inicio de otras cosas “buenas” que han ido eliminando de RB y al final te asustas pensando en la suerte de las actualizaciones de tus proyectos, que van a tener componentes constantemente depreciados o en otras manos y licencias diferentes. En fin, que tienen mucho de “ahora pongo, ahora quito”.

    2- Actualizaciones. Con los años que llevo como usario, me he actualizado unas cuantas veces, y no hay cosa que me haya molestado mas que pagar por actualizaciones (que se realizan cada 90 dias, en eso no fallan) y ver que la novedades son zero y solo se han corregido bugs. Que esta muy bien, pero cuando pagas lo haces -sobre todo- para obtener nuevas prestaciones, y al final agotas el periodo de actualizaciones con versiones que son simples correcciones sin apenas o ninguna novedad, para tener que acabar pagando de nuevo cuando sale una “siguiente” actualización en que si las hay novedades. Con lo años he comprovado que no soy el unico usario que se queja de ello, y en la misma lista de correo de REALbasic se leen mensajes de gente descontenta con ello.

    En fin, es solo una reflexión para que tengas en cuenta en tu camino hacia REALbasic, disculpa que me hay extendido tanto en un comentario.

  4. Tengo algunas dudas sobre lo que comentas del Python Daniel, ¿tiene generador de informes? ¿gráficos de tarta/barras? ¿qué tal es el grid (rejilla de datos) para la edición del detalle de una factura por ejemplo. Gracias por tus comentarios, voy a investigar un poco.

  5. Daniel, gracias por tu comentario. Me ha sido de mucha ayuda.
    Antes de decidirme por Rb estuve mirando muchas cosas, entre ellas Cocoa, Python e incluso un port de Mono a OS X llamado Monobjc.
    Lo que comentas de Rb de problemas con el cambio de plataforma lo conocía. De hecho hubo un post en los foros de Rb donde decía que el GUI que ofrece Rb es un subconjunto común de los API de las distintas plataformas, pero que si querías ir mas alla tenías que ir a entornos nativos de cada plataforma. El tema de las actualizaciones que pagas por bugs es algo que realmente tira para atrás, y que también conocía. Y en mi caso tengo claro que lo que haga para OS X va a ser libre, por lo que preferiría un entorno también libre.
    De Python conozco las dos alternativas: el PyObjc y usar una GUI propia de Python, pero en este ultimo caso no tengo tan claro las posibilidades que existen pues creo que hay varias alternativas: wxWidgets, Tkinker,… Si tienes tiempo y escribes sobre esto en tu blog te lo agradecería mucho, y me darias la puntilla para decidirme con Python.

    Pedro, yo he probado las wxWindgets en Win y realmente tienen de todo.

  6. José Luis,

    Pues aprovechando que ya hace un tiempo tenia en mente dedicar un weblog a Python y a raiz de las «puertas abiertas» que deja mi primer comentario, me he puesto las pilas y justo hoy he «abierto» el weblog PITONEANDO ( http://www.danielribes.com/pitoneando ) donde voy a hablar en detalle de estos temas. Dedicare unos cuantos articulos en concreto a Python y Wxwidgets, espero que te sean de ayuda para tomar cualquier tipos de decisión al respecto.

    Pedro,

    Python directamente no tiene un generador de informes ni de graficos, pero hay algunas librerias que se pueden usar en Python para hacer esto, siempre en función de las dependencias multiplataforma que se tengan.

    Por ejemplo, WxPhyton en Windows puede usar controles ActiveX y existe un estupendo modulo ActiveX (gratuito) para generar todo tipo de graficos: http://www.rmchart.com/ con lo que (no lo he probado personalmente) en principio en este sentido no habria problemas.

    De todas formas mejor hecha un vistazo a la demo de WxPython, como apunta José Luis, los Wx «tienen de todo».

    Aprovecho para matizar un poco mi primer comentario, en el apuntava Python+Wx para crear aplicaciones de escritorio, como una opción, abierta, escalable, potente, con todas la virtudes de Python y posibilidades de Wx, y que en mi caso, personalmente fue precisamente la alternativa a lo que REALbasic no me permitia/convencia.

    Pero con eso no quiero decir que sea la «panacea» para todo, segun que aplicaciones o necesidades REALbasic o otro entorno puede ser màs optimo.

    En todo caso queria poner un toque de atención a no dejar pasar las oportunidades y opciones que Python+Wx nos puede ofrecer, y màs concretamente que Python y Mac OS X.

    Con Wx, SQLite, etc … podemos ver a Python como algo màs que un lenguaje script para automatizar tareas, administración de sistemas, …

    Y donde queria hacer especial incidencia, era en que REALbasic y una de sus «banderas», la multiplataforma, no es tan facil y resuelta como ellos quieren vender.

    Bueno, no me enrollo màs, disculpar que siempre me voy por la nubes 🙂

Los comentarios están cerrados.