At first, I'd like to tell you that I'm spaniard, so, if I do mistakes, please, consider them just languages problems. If you know Spanish, I strongly recommend you visit this post. OK. Let's start.
Recently, many developers are taking into consideration where to develop their software, because as you could se here, Windows still is the most OS used, but Macintosh and Linux are growing very fast. Maybe, the reason could be the mess that Windows Vista has done and it's propting to migrate many developers to Linux and Mac. Specially the first because of be free and open source (it's improving very fast). Every day more developers focus their software projects on multiplatform solutions. All those reasons had incited me to write this article where I pretend to show the way I see nowadays software.
I've chosen Windows, Linux, Macintosh and Solaris (openSolaris) for this article.
Windows is the most OS and also it's the OS who have more developers and software. It's a emperor in that "world". Obviously it doesn't mean that it's the best OS. In my opinion, Windows is a very good platform to distribute your software because the number of potencial clients it's very high (around 93%). Because of this, everybody should take into consideration distribute it's software under Windows, despite the fact that linux users (and mac, too) don't like nothing Windows.
On the other hand, everybody should note that Microsoft had made a extremly good platform to develop software that it's also very productive. I'm thing in .NET. Luckily, there's a port for UNIX OS's: Mono . It works under Linux, Macintosh, Solaris and more UNIX OS's.
.NET platform is really very good because it's able to abstract many languages like C#, Visual Basic, Object Pascal, C++, J#, Perl, Python, Fortran, Cobol.NET (look here for more).
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). Also there's a cool place to search and learn more about Microsoft tecs in msdn. Just there's a problem. Microsoft released to open source community the kernel of .NET, not Windows Form API. So, you can make a non GUI multiplatform application. Then, projects like Mono are forced tu use GTK# for drawing GUI's. The advantages of use Gtk# is that it's free and multiplatform. Inconvenience are that it's very bad documented. Also, if you develop under Mono, you always will be steps behind Microsoft. After all, .NET it's a great platform.
Despite the fact that .NET it's very good platform to develop software, I think that Java is too very good. Both .NET and Java are the more extended platforms, and Java plays with advantage. It's truly multiplatform, and not only this. Also it will be open source. Sincerelly, SUN has done a good game.
Finally, there's two more alternatives in Windows. Gtk and Qt. Both are multiplatform and open source, but I prefer Qt. The are few reasons:
- Well documentated
- Comprehensive API
- More efficient
- More easy to use
Linux is an OS that is living its best moments since it was created by Torvalds on 1991. Maybe, DELL and Lenovo (Asia) has also made it easier (recently it seems that HP also will begin to sell Linux preinstalled) preinstalling this OS in their machines. Linux is nice because it's free, open source and also good looking (Mac users should admit that Beryl/Compiz Fusion looks very cool). In my opinion, Linux is becoming the future OS. Why? Simple. You could develop for free .NET (using Gtk# for drawing GUI's), Java (SWT or Swing for GUI's), C++ (Qt4, really seems very good API). As KDE user, I think that Qt4 will be future's multiplatform API because it's very eficient, easy to use and also support bindings for Java and C#. I'm sorry for "gnomers", but Gtk isn't good enough compared to Qt4.
Java still is programming languages leader. So Java is a very good alternative to develop "serious" software. The only inconvenient i found is that it needs a virtual machine like .NET. After all, it's really very good platform.
Apple is living it's best moments. It's too obvious because their incomes are increasing very fast, there's more software, more users. So, someone who wants to distribute multiplatform software should take into serious consideration this OS. It's stable, fast, secure and very productive. Like Linux, in Macintosh we could programmate using .NET with Mono, Qt4 and Gtk. The advantages compared to Linux are, in my opinion, none. Maybe just being more productive. Otherwise, Macintosh is much better than Windows, at least I think so. Windows quite good because of the fact that it's got a huge repertory of software. Just for this.
With Qt4 new version, right now there's no problem tu run this libraries in Mac (the same in Windows). Java is in Macintosh a great platform, but official version here it's 1.5 (1.6 hasn't been released to Macintosh because Apple is who optimize/revise Java for Mac). So, if you want to use Java 1.6 you should use a Virtual Machine program like Parallels or VMware (with its advantages/disadvantages).
Finally we'll analyse Sun's OS. In 2005 was released to open source community Solaris source code. Sun's doing many efforts to steal Linux users and affiance it's position. The great advantages that openSolaris offers you is a system where Java plays the most important role. It's really very good integrated in the OS. Of course we could programme in .NET, C/C++ (Gtk or Qt for example).
The only problem I found to Solaris is that it needs more drivers to be completely useful, although Sun is doing efforts to increase hardware support.
After this OS analysis, I ought to stand out virtualization technologies. Virtualization in Windows, Linux, Mac and openSolaris works very good. There are many options like VMware (Windows, Mac and Linux), Parallels (Mac, Windows, Linux), XEN (Linux and openSolaris), VirtualBox...So, virtualization wont be the fact that will decide what's the best programming platform.
Personally, I will chose Linux to develop professional software if we work under a tested hardware (like DELL PC's). ¿The reasons? Security, solid, huge libraries collection...All those things made Linux the best multiplatform development software. It may be future platform. Anyway, if you want to develop using Java I strongly recommend you to use openSolaris. The reasons why I haven't choose Windows or Mac are obvious. Closed systems, expensives and nowadays really doesn't offer too much to final users than what we have for free in the open source community.
Also, I strongly recommend you to learn Qt4 API because, in my opinion, it will be very important in the future. What dou you think? Do you agree with me? Give you opinion, please!