Free Software

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?