Gnome+Java vs. Gnome+Mono a souboj plaforem v pozadí
Včera jsem narazil na docela zajímavý článek od Havoca Penningtona, popisující jedno současné dilema vývojářů Gnome a open-source obecně. V kostce jde o to, že Microsoftí technologie .NET si získává mezí programátory stále větší oblibu a stává se významným argumentem při volbě prostředí, ve kterém poběží tvořená aplikace. V "dotnetu" se zkrátka hezky (a produktivně) programuje. Totéž se ovšem nedá říct o klasickém C/C++, které je stále hlavním jazykem open-source projektů. Otázkou, kterou si autor klade, je, zda podobně pro open-source potřeby využít Javu, projekt Mono (implementace .NET runtime a C# v UNIXu) nebo něco jiného, a také do jaké míry tuto technologii začlenit do Gnome a propojit se stávajícím světem.
Článek docela dobře ukazuje, jaká je dnešní situace na poli programovacích jazyků pro klasické (desktopové) a velké webové aplikace. Ukázalo se, že správnou cestou ke zvýšení programátorova pohodlí a výkonu je zřejmě odstínit ho od systémových detailů (typu správa paměti) a soustředit se spíš na kvalitní objektový model a knihovny. Začala to před lety právě Java (která z dnešního pohledu možná přišla příliš brzo a příliš nevyzrálá) a nyní v tom pokračuje .NET. Výsledkem je, že tu máme dva konkurující si světy, přičemž konkurence je nádherně vidět třeba na nových verzích obou prostředí (Java 1.5, .NET 2.0), kde obě strany zavádějí nové funkce, občas i dost podobné (mám na mysli třeba generiky).
Konkurence je obecně dobrá věc a pravděpodobně v brzké době povede k dalšímu vylepšování obou platforem. Microsoft má momentálně několik výhod:
- je silnější (finančně, marketingově i technologicky)
- má svůj operační systém, se kterým může řadu věcí provázat
- .NET narozdíl od Javy není zdaleka jen jeden jazyk (i když C# v něm hraje hlavní roli)
- a v neposlední řadě je součástí nabídky Microsoftu velmi povedené vývojové prostředí – Visual Studio
Osobně se přiznávám, že v současné podobě se mi trochu víc líbí C# než Java, protože je to jazyk poněkud pragmatičtěji navržený (nenutí vám checked exception, má více specializovaných základních datových typů apod.). V Javě se navíc některé věci musí dělat jaksi "přes ruku" (třebas enumy nebo event handling). Ale můj osobní názor je v tomto případě poněkud irelevantní. Spíš jsem zvědavý, jak se bude tenhle souboj platforem dál vyvíjet a jak nakonec dopadne.