Tue 28 Aug 2007
http://linuxandcomputerscience.blogspot.com
Últimamente, muchos desarrolladores están cuestionándose en qué plataforma realizar sus proyectos (véase aquí). La razón puede ser el revuelo que está ocasionando la consolidación de Linux, el crecimiento en usuarios de Mac, el fracaso de Windows Vista…Cada día más desarrolladores enfocan el desarrollo hacia un software multiplataforma. Todo esto me ha incitado a escribir este artículo donde pretendo expresar de la forma más objetiva posible qué plataforma (tanto Sistema Operativo como de programación) son las que pueden triunfar.
Por motivos de sencillez, he elegido Windows, Linux, Macintosh y Solaris como Sistemas Operativos, además de ser los más populares. Además, personalmente creo que son las plataformas más aptas para desempeñar esta importante tarea.
Windows
Windows no solo es el sistema operativo más usado, sino que también es el que más desarrolladores y software tiene. Es todo un gigante entre los sistemas operativos, un emperador si lo queréis ver así. Pero por supuesto, eso no significa que sea el mejor sistema operativo (SO). Opiniones personales aparte, Windows es una muy buena plataforma para distribuir tu software porque el número de clientes potenciales es realmente elevado (En torno al 93% (datos de Mayo de 2007) de los ordenadores de todo el mundo usan Windows). Por lo tanto, es una plataforma que aunque no nos guste (a
los linuxeros), hemos de tener muy en cuenta.
Además, Microsoft ha creado una plataforma realmente muy buena para engañarse a un mismo. Existe un port (Mono) de .NET para Linux,Mac, Solaris y más SO’s basados en UNIX gracias a que Microsoft liberó el código (parcialmente).
La plataforma .NET es realmente muy buena porque es capaz de abstraer gran cantidad de lenguajes (C#, Visual Basic, Delphi (Object Pascal), C++, J#, Perl, Python, Fortran y Cobol.NET). Además dispones de muy buena
documentación en msdn. Ahora bien, la gran pega que tiene es que sólo el núcleo de .NET fue lo que liberó Microsoft. Es decir, que uno puede hacer un programa para consola que sea totalmente multiplataforma. El problema es que se supone que nosotros queremos hacer un programa que no solo sea multiplataforma sino que también sea accesible para muchos usuarios, así que tendremos que usar GUI’s. Y aquí está el problema. Microsoft no
quiere/interesa liberar esta parte de .NET porque supondría liberar buena parte de Windows. Entonces, proyectos como Mono tienen que usar GTK# para dibujar las GUI’s. Ventaja, que estas si que son libres y multiplataforma.
Inconvenientes, que no están todo lo bien documentadas que uno querría. Y no solo eso, sino que además siempre que uno desarrolle en .NET bajo Mono, irá por detrás de Microsoft. Pese a eso, es una muy buena alternativa.
Además de .NET, otras plataformas muy buenas para Windows son Java (Swing para las GUI’s), Gtk/Gtk+ (C/C++) y Qt4 (C++).
GNU/Linux
Linux es un SO que está viviendo sus mejores momentos desde que fuera creado en 1991. El que este sistema operativo venga preinstalado en computadoras de DELL y Lenovo (Asia) está ayudando muy positivamente a que se consolide como un gran competidor a Windows. Además, es muy estable, gratuito (si no se compra versiones de pago) y libre. Linux se está convirtiendo en una perfecta plataforma para programar, véase .NET (gracias a Mono) , Java y Gtk/Gtk+ o Qt(sobre todo gracias a su última versión, Qt4
como ya hablamos con anterioridad en el blog). Y es que personalmete, como usuario de KDE, creo que Qt4 es una plataforma ideal, no solo por la eficiencia sino por el soporte de bindings para Java y C#. Además, esta última revisión ha mejorado de forma muy notable la potencia en gráficos (además de estar muy bien documentada). No puedo hablar igual de Gtk (lo siento para los Gnomeros).
Java sigue siendo el líder de los lenguajes al ser el más usuado. Y en Linux no iba a ser menos. Java por supuesto que también es una muy buena alternativa multiplataforma, ya no solo por estar muy instaurado sino porque la documentación es buena y sus bibliotecas muy completas. Eso sí, el inconveniente que plantea es la eficiencia. Pero sí que es una opción muy buena desarrollar software multiplataforma.
Macintosh
El sistema operativo de la manzana está viviendo unos momentos dorados. Y eso también se nota en que cada vez hay más aplicaciones para Mac OS X. Lógicamente esto también se nota en el interés mayor por parte de los desarrolladores. Por eso, también analizaré este sistema operativo como plataforma para desarrollo software. Las ventajas que aporta respecto a Windows es una robusted mucho mayor. Ahora bien, también es un sistema de
pago (como Windows) con la pega de que a día de hoy sólo funciona “oficialmente” bajo hardware de Apple. No sabemos si con Mac OS X 10.5 Leopard, Apple permitirá su instalación en todos los x86, aunque con casi toda seguridad no.
Con la nueva versión de Qt4, ya no hay problema para usar estas librerías en Macintosh (al igual que en Windows). También puedes usar Gtk, pero como dije antes, no las considero una alternativa real puesto que para desarrollar software serio hay que convencer a muchos desarrolladores, y eso se hace con una API potente y bien documentada. .NET está disponible gracias a Mono. Por supuesto que Java también, pero aquí sí que hay un problema. Apple se encarga de revisar/optimizar Java para Mac, por lo que en Macintosh, la versión oficial es la 1.5 (en Windows, Linux y Solaris la
versión actual es 1.6).
Solaris
Finalmente hablaremos de Solaris, el sistema de Sun. Ya en 2005 fue liberado su código fuente. Sun está haciendo grandes esfuerzos para robarle terreno a Linux y afianzar la posición de Solaris. Las grandes ventajas que aporta este sistema operativo frente a Linux es que Java es el núcleo de todo. Está perfectamente integrado este lenguaje en el sistema. Por supuesto que podemos programar también en .NET, en C++ con QT y también con Gtk.
El problema que le encuentro a Solaris es que aunque se están haciendo grandes esfuerzos en aumentar el soporte hardware, todavía falta tiempo para que el número de drivers sea más grande.
Conclusión
Después de este análisis de los diferentes sistemas operativos, he de destacar algo que hasta ahora no había tenido en cuenta. La virtualización. Tanto Windows, como Linux, Mac y Solaris disponen de software de virtualización de sistemas operativos. Así que en esta parcela no se decidirá qué sistema es mejor para convertirse en la plataforma de
desarrollo software del futuro.
Personalmente, yo me decantaría por Linux si se trabaja bajo un hardware probado (como los PC’s de DELL). ¿Las razones? Seguridad, robusted, gran variedad de bibliotecas de programación multiplataforma. Probablemente sea la plataforma del futuro. Ahora bien, si se pretende programa exclusivamente en Java no olvidaría a Solaris. Las razones por las cuáles no opto por Windows y Mac creo que son previsibles. Sistemas de pago, cerrados y que a día de hoy aportan poco más de lo que disponemos en la comunidad Open Source.
Y aconsejo, pónganse las pilas con Qt4, que va a seguramente va a dar mucho de qué hablar. Y vosotros, ¿qué haríais?