Custom Search
Bloggers Activos
Emacs como IDE para CakePHP aarkerio
La Negación del Viaje Lunar tonathiu
Porque los mononeurones si tenemos madre! blacksoul
BrunoFerías thot
The Art vendaval
Aclimatación extraterrestre ¿para qué? ahuramazdah
¿A que le tienes miedo? teosho
Sobre nazis, terror y medios tonathiu
Amenazas a la cuarta dimensión ¿de veras? ahuramazdah
Tarjeta Broadcom BCM94311MCG rev 02 teosho
Last Download
Segunda Fundación
Segunda Fundación
Pidiendo OpenSolaris 2008.5
vendaval
Sospechosismo
aarkerio
Slackware 12.1 Final
vendaval
Jaime Maussan da por auténtico video trucado del chupacabras hecho en Blender 3D
asarch
Linux hot girl
aarkerio
Calderón puede ser sujeto a juicio político, sostiene Carrancá
tonathiu
La desnutrición en México
aarkerio
Sistema Infalible
ordbal
Histórico
aarkerio
Nietzsche en la FCPyS
aarkerio
Google Groups Karamelo
Visit this group
GNU/Linux
GNU/Linux
Hacktivismo
Hacktivismo
Debian
Debian
NetBSD
NetBSD
WWW
WWW
Guia Linux
Guia Linux
Server Side
Server Side
Ofimatica
Ofimatica
Despabilando...
Despabilando...
Mundo Maya
Mundo Maya
Literatura
Literatura
Agora
Agora
Psicologia
Psicologia
Economia
Economia
Ambientalismo
Ambientalismo
Desarrollo
Desarrollo
Biologia
Biologia
No a la crueldad
No a la crueldad

Hacktivism

LinuxChix button

GNU/Linux \ Un pequeño análisis de wxWidgets
GNU/Linux
Un pequeño análisis de wxWidgets

Este artículo ha sido consultado en 495 ocasiones.

Un pequeño análisis de wxWidgets. Un framework para desarrollos multiplataforma

Por Manuel Cerón.

Al desarrollar aplicaciones muchas veces nos encontramos con el hecho de que nuestros usuarios no siempre van a usar el mismo sistema operativo. Para que nadie se sienta discriminado, como a veces nos sentimos discriminados los usuarios de GNU/Linux cuando se desarrollan programas que solo sirven en sistemas de Microsoft, es una buena idea tratar de hacer que nuestra aplicación pueda funcionar en varias plataformas, o al menos sea fácil de portar.

Hace poco tuve que realizar una aplicación que funcionara perfectamente tanto en GNU/Linux, como en Microsoft Windows. Para resolver el problema decidí analizar varias alternativas:

  • Java. La primera alternativa que se me vino a la mente fue Java, funciona perfectamente en varias plataformas sin necesidad de recompilar, tiene un Framework muy bien diseñado, avanzado y potente. Sin embargo, existen algunos inconvenientes que me hicieron desistir de java: el primero es que, aunque es gratuito, el JDK no es software libre y mi intención era construir una aplicación completamente con herramientas libres. Por otro lado, Java no está diseñado para construir aplicaciones rápidas, el hecho de correr bajo una máquina virtual, y utilizar en exceso herramientas como polimorfismo dinámico y RTTI hacen que las aplicaciones Java tiendan a ser lentas, algo que definitivamente no deseaba para mi aplicación.
  • Qt. La otra alternativa a considerar es el Framework Qt, en el cual se basa el escritorio de GNU/Linux KDE. Como ventajas tiene el hecho de tener una buena velocidad, debido a que está escrito en C++ y tener un muy buen diseño orientado a objetos que hacen muy placentero programar con Qt. Por otro lado, el problema con Qt consiste principalmente en que solo es software libre en su versión para GNU/Linux [1], todas las demás versiones (Win32, MacOS y otros) son propietarias (y además con alto costo), lo que hizo que descartara inmediatamente a Qt.
  • GTK+. Otra librería importante a considerar era GTK+. Tiene varias ventajas, como por ejemplo que está disponible para muchísimos sistemas operativos y es completamente libre, con licencia LGPL. Sin embargo, GTK+ tenía algunos inconvenientes que me hicieron desistir de usarlo: En primer lugar, GTK+ solo posee funcionalidad para desarrollar interfaces gráficas de usuario y deja un lugar vacio a aspectos como bases de datos, redes, etc. Por otro lado, el API de GTK+ está escrito de forma estructurada en lenguaje C, y mi intención era trabajar de forma orientada a objetos. Aunque existe GTKmm[2], me parece que tiene el mismo diseño estructurado pero usando clases en C++.

La última opción que consideré fue wxWidgets, un framework antes conocido como wxWindows [3], especializado en el desarrollo de aplicaciones multiplataforma en lenguaje C++. Fue en definitiva el que escogí para realizar mi aplicación, por las siguientes razones:

  • Soporta varios sistemas operativos, pero con una pequeña particularidad: de acuerdo a la plataforma en que se ejecute la aplicación, esta tomara el look and feel del SO donde se esté ejecutando. Por ejemplo, si se ejecuta en MS-Windows, la aplicación tendrá la apariencia de una aplicación hecha con el API de Windows, pero si se ejecuta en GNU/Linux, tendrá la apariencia de una aplicación GTK2. Es decir que la parte de GUI es solo una capa para el API nativa de cada SO. Además de lo anterior, wxWidgets cuenta con una versión embebida [4] para dispositivos como PDAs y teléfonos celulares.
  • Es cien por ciento libre en todas las plataformas que soporta, con una licencia LGPL modificada [5].
  • Tiene un API orientada a objetos que es, en extremo, fácil de aprender y utilizar. Creo que ninguna otra de las opciones mencionadas anteriormente tiene una curva de aprendizaje tan suave.
  • Posee funcionalidades para muchos aspectos aparte de la construcción de interfaces gráficas. Como gráficos 2D, 3D con OpenGL, Bases de Datos (ODBC), Redes, Impresión, Hilos, entre muchas otras.

Pese a todas estas ventajas, wxWidgets también tiene algunas desventajas: Su diseño orientado a objetos no es el mejor que uno pueda ver. A veces abusa de la utilización de macros para realizar ciertas operaciones (como las tablas de eventos), aunque esto hace que codificar sea más fácil, también complica la labor de depuración, especialmente para los mismos desarrolladores de wxWidgets. Por otro lado, debido a que el framework se comenzó a desarrollar hace bastante tiempo, no cuenta con soporte para algunas características relativamente modernas [6] del lenguaje C++ como por ejemplo el manejo de excepciones, y la STL.

Debido a sus grandes pros y sus pocos contras, puedo decir que recomiendo ampliamente wxWidgets como una herramienta para el desarrollo de aplicaciones sean o no sean multiplataforma. Y tal vez en un artículo posterior pueda profundizar un poco más en los detalles de este extraordinario Framework.

[1]Aun así, la licencia de Qt para GNU/Linux es la GPL y no la LGPL que es lo común en las librerías.

[2]GTKmm es la versión C++ de GTK+

[3]WxWindows tuvo que cambiar su nombre a finales de 2003 debido a una demanda de Microsoft, en la que alegaba que podrían haber confusión con el nombre de sus sistemas operativos.

[4]Aunque esta versión aun está en una etapa muy temprana de desarrollo.

[5]La modificación a la licencia LGPL consiste básicamente en que permitir que los derivados puedan cambiar de licencia aún si se compilan con ligadura estática.

[6]Al decir modernos me refiero a lo referente a la publicación del estándar C++ de 1998.


El contenido del material publicado por nuestros columnistas es responsabilidad de sus autores.

Obtenido de http://gluc.unicauca.edu.co

El Contenido de este texto está disponible bajo la GNU Free Documentation License 1.2


Última actualización: 2007-04-29 10:57:00-05

Printable version

Add comment:



Captcha




Que estas haciendo?
teoshoteosho está:
Preparandome para el viaje a Puerto Vallarta... que triste...
1 hour, 27 minutes ago

scarecrowscarecrow está:
Du hast?
5 hours, 30 minutes ago

der_teufelder_teufel está:
Ich habe einen Kater, aber nicht so schlecht...
13 hours, 4 minutes ago

rnstuxrnstux está:
Y yo un Abrazo.
1 day, 13 hours ago

saidjosesaidjose está:
Dandole su habrazote a mi santa madre que me soporta
1 day, 15 hours ago

dsquiddsquid está:
esperando a que este el pozole
1 day, 16 hours ago

Que estuvimos haciendo >>
Chipotle Software

En tu equipo tienes:
Sólo Windows
Windows y Linux
Sólo Linux
Linux y un BSD
Solaris, linux y BSD
Sólo MacacOS
Rapiditas
Problemas de Lenguaje en niños
10410 lecturas
Sexualidad infantil y juvenil
9166 lecturas
Anticoncepción de Emergencia
7840 lecturas
Rompiendo cualquier clave WEP en unos pocos minutos
6917 lecturas
Sinapsis y exocitosis
6227 lecturas
Mi primer CakePHP, mmmmm cakeee
5260 lecturas
Evolución filética en las hepáticas
4698 lecturas
BASH y Primeros Comandos
4012 lecturas
CakePHP II Active Record
3742 lecturas
Cómo convertirse en hacker
3619 lecturas
Add to Technorati Favorites

ir arriba
Bienaventurados los que no tienen nada que decir, y que resisten la tentación de decirlo. Anónimo

The Queen is here Mozilla Firefox The Best DataBase CakePHP Framework XHTML GNU Hacker Chipotle Software

Too Cool for Internet Explorer