Microsoft je 2002. predstavio .NET framework, novi sustav za razvoj programa neovisnih o platformi. Njegova je namjena pojednostavljenje razvoja mrenih i Internet aplikacija. Prakticki sav noviji Microsoftov softver dolazi pisan u toj tehnologiji. Podrava objektno orijentirano programiranje i dolazi s bibliotekom klasa pogodnom za programske jezike poput novog C# jezika i Visual Basic .NET-a. Takoder sadri prevoditelj (compiler) koji izvorni kod prevodi u bytecode, binarni format neovisan o platformi. Nudi velik broj vec gotovih dijelova za tipicne zahtjeve programera, poput iscrtavanja grafickog sucelja, pristupa datotekama i podacima, kodiranja i zatite, razvoja aplikacija za web, algoritama i mrene komunikacije.
Programi u .NET-u pokrecu se u softverskoj okolini, tzv. Common Language Runtime (CLR), po funkcionalnosti usporedivoj s Javinom JVM (Java Virtual Machine) koja sakriva specificnosti hardvera i prua identicnu okolinu za sve programe. Usput dodaje i sigurnosne opcije, upravljanje memorijom i obradu greaka. Framework garantira sve te opcije, bez obzira na programski jezik koji se koristi. Poneki programi zbog CLR-a imaju sporije performanse od ekvivalenta u starijim programskim jezicima.
CLR i biblioteke rutina zajedno cine .NET framework. On se najvie usporeduje s Javom, ali kljucna je razlika da Java sustav omogucuje pokretanje programa pisanih samo u Java jeziku, dok je .NET CLR zamiljen za pokretanje brojnih programskih jezika. Jednako dobro podrava proceduralne (C, Pascal) kao i objektne, a dozvoljava i razmjenu podataka i poruka o grekama (exceptions) izmedu njih, pa cak i medusobno nasljedivanje objekata.
Standardizacija
Microsoft, HP i Intel standardizirali su CLR i C# programski jezik i 2001. dobili ECMA standard, a u 2003 ISO certifikat. Svi patenti nad implementacijom zbog pravila ECMA-e i ISO-a moraju biti razumni i otvoreni. Dodue, neki dijelovi frameworka nisu pokriveni standardom, pa tako patenti i dalje vrijede. To su Windows.Forms, ADO.NET i ASP.NET. Slabije je poznato da Microsoft cak i ima verziju .NET platforme za Linux, BSD sustave i Mac OS X, zvanu Shared Source Common Language Infrastructure (SSCLI). Njena licenca ne dozvoljava komercijalnu upotrebu programa u .NET-u vec samo za osobnu i akademsku upotrebu.
Mono - zamjena za .NET
Svi ovi razlozi licenciranja potaknuli su zajednicu da na temelju otvorenih specifikacija pocne pisati svoju implementaciju .NET frameworka. Tako je prije cetiri godine nastao Mono, open source projekt koji je uspio u nekoj mjeri zamijeniti .NET, odnosno Linuxu donijeti novu razvojnu okolinu i nacin breg razvoja aplikacija. Pokretac projekta Miguel de Icaza, a i trenutni sponzor Novell, prvenstveno su htjeli olakati ivot programerima i dobiti bolje alate za razvoj.
Mono sadri virtualno racunalo CLR koje se moe pokrenuti na Linuxu, BSD sustavima (i Mac OS X) i Windowsima, prevoditelje za C# i Basic i vec gotov izvjestan broj biblioteka klasa, odnosno gotovih funkcija. Iako se vec dosta dugo razvija, sve opcije nisu do kraja zavrene, pogotovo Windows.Forms za iscrtavanje Windows grafickog sucelja. Kao zamjena ili nadopuna tome, razvijeno je sucelje za GTK, tako da se aplikacije pisane za Linux mogu pokrenuti i pod Windowsima, ako je instaliran GTK graficki toolkit. Gtk#, odnosno jezik za razvoj baziran na GTK-u i Gnome bibliotekama jedna je od znacajnijih prednosti Monoa. Objektna orijentiranost jezika, slicnost s C#-om olakavaju programiranje pa se tako GTK# cini vrlo ozbiljnom GUI platformom.
Od ostalih komponenti .NET-a koje nisu mogle biti implementirane slijedeci standarde, spominjemo ADO.NET i ASP.NET. Prvi sadri klase za pristup bazama podataka, odnosno model pristupa bilo kakvoj vrsti podataka iz bilo kojeg izvora. ASP.NET web podrka podijeljena je na dva dijela: web forme i web servisi. Forme izgraduju korisnicko sucelje za web aplikacije. To olakava izradu sucelja (u nekom alatu za crtanje i izradu sucelja, primjerice Glade za Gnome) i odvaja prezentaciju od samog kôda. Web servisi nude SOAP (Simple Object Access Protocol) bazirano udaljeno pozivanje klasa i procedura. Tako vie servisa moe dijeliti podatke i logiku rada preko mree pa cak i kroz firewallove (protokoli poput HTTP-a i XML-a). ASP.NET kod je preveden i kao takav postavljen na server, za razliku od interpretiranih jezika poput PHP-a i starog ASP-a. Razlike u brzini su velike.
Od ostalih zanimljivih dijelova Monoa, nalazimo Gst# za Gstreamer multimediju, OpenGL#, MonoGLo i CsGL za OpenGL programiranje 2D i 3D grafike te SDL.NET za programiranje igara. Cak i kad ne bi postojalo .NET kompatibilnosti, sa svim ovim dodacima jo bi uvijek imali kvalitetnu platformu za programiranje.
To je posebno znacajno znajuci koliko pod Linuxom ima nacina programiranja grafickog sucelja (GUI widgets) - uz GTK tu su Qt, Motif i drugi. Njihovo pozivanje iz raznih programskih jezika dodatni je problem. Zato je ujednaceno programiranje sucelja koje na isti nacin radi iz raznih programskih jezika dodatna je prednost Monoa. Osim toga, brojni Windows programeri zaticu poznatu okolinu pa je prijelaz na programiranje za Linux puno laki.
Razvoj Mono programa
Besplatne i slobodne programske jezike obicno progoni nedostatak kvalitetne razvojne okoline. Dok Microsoft ima Visual Studio .NET, njegova alternativa je Sharpdevelop pod Windowsima, odnosno Monodevelop okolina na Linuxu. Njima nedostaje debugger, tj. alat za lake otklanjanje bugova. Zanimljivo je da mogu uvoziti gotove Visual Studio projekte, pa ako oni ne koriste neke sloenije funkcije Windows.Formsa, mogu se odmah prevesti i pokrenuti.
Primjer najosnovnijeg programa u Monou mogao bi izgledati nekako ovako:
using System;
class first {
public static void Main (string[] args)
{Console.WriteLine ("Hello, World!");
} }
Program se prevodi naredbom "mcs program.cs". Dobit ce se izvrna verzija koja ima tipican Windows nastavak EXE.. Na kraju, taj se program pokrece s "mono program.exe". Taj se program zatim moe prenijeti na Windowse i pokrenuti (i obrnuto). Do grafickog sucelja tek je par dodatnih naredbi u kodu. Zanimljivost je da i biblioteke nastale na Linuxu imaju DLL nastavak datoteke.
Brojni gotovi programi
Najbolji dokaz prihvacenosti Monoa su programi nastali koristeci ga. Otkad ga je Novell preuzeo napravio je iFolder, ZenWorks, F-Spot, Stetic i jo nekoliko, a i ostali su visoko rangirani na gnomefiles.org. Najrazvikaniji od njih, koji smo i mi svojedobno opisivali, je Beagle, program za indeksiranje datoteka u lokalnim direktorijima i njihovo pretraivanje po imenu i sadraju. Ovaj program odlikovao je brz razvoj, u tek nekoliko mjeseci od pocetka razvoja uspio je doci do dovoljno funkcionalne, iako poneto bugovite verzije, s dotjeranim grafickim suceljem (upravo odlika brzog razvoja zbog Monoa i GTK#). Trenutno je najbolje integriran u Novellovom Suse Desktopu 10 (SLED10). Moe pretraivati dokumente raznih Office programa, e-mailove, privremeni spremnik browsera, Instant Messenger komunikaciju, metapodatke multimedije i slika (ID3, EXIF itd.), imena datoteka, arhive (i njihov sadraj), RSS, zabiljeke (Tomboy, KNotes) i slicno. Beagle je jedan od alata na koje je Novell racunao kod izgradnje SLED-a kao produktivne distribucije za desktop korisnika.
U istu je svrhu popularan i Tomboy za izradu zabiljeki na desktopu, odnosno zapisivanje ideja i informacija bilo koje vrste. Iako ovakvih programa ima dosta i svi su u osnovi vrlo jednostavni, Novellova podrka i integracija u distribucije doprinijeli su njegovoj rairenosti. Osim to i sam ima pretraivanje, dobro se integrira u Beagle i Evolution kao i sistemski tray kako bi bio dostupniji.
Jo jedan program koji dobiva dosta panje korisnika je F-Spot, program za upravljanje slikama. Nije potpuno dovren, no stabilan je i dosta brz. Ono to mu nedostaje su naprednije mogucnosti obrade fotografija koje primjerice imaju slicni programi: digiKam i gThumb. Korisnici se takoder ale na njegovu neintuitivnost kod dodavanja slika u albume i njihovog oznacavanja, tj. dodjeljivanja tagova. Takoder je izgraden na GTK# okvirima i sucelje je od prvih verzija bilo sredeno.
Mono i stereo multimedija
Banshee je jo jedan program koji ima velik potencijal. Slui za stvaranje kolekcije glazbe iz audio CD-a, njihovu organizaciju, izvodenje, dijeljenje i razmjenu s mobilnim glazbenim uredajima. Podrava i pametne playliste, podcastove, glazbene preporuke (temeljene na dosadanjem izboru glazbe) itd. Posebno se preporucuje za koritenje s iPodom. Ne daje dojam nedovrenosti, no jo se ne moe usporedivati s npr. Amarokom po mogucnostima.
Zanimljiv projekt ciji bi razvoj trebalo pratiti je Diva, softver za video editiranje, odnosno uvoz, uredivanje, poboljavanje i izvoz video materijala u razne formate.
Programeri Monoa svakako su u prednosti jer su kvalitetne aplikacije za razvoj programa bile medu prvima dostupne i tako omogucile bri razvoj. Monodevelop kao kvalitetnu razvojnu okolinu smo vec spomenuli, a tu su i Glade za izgradnju GTK grafickih sucelja, Nant, novi alat za izgradnju izvrnih programa (funkcionalnost naredbe make), MonoUML, alat za brz dizajn softverskog sustava UML-om, Object Browser za provjeru objekata u nekom projektu. Spomenimo i IronPython, implementaciju Python skriptnog jezika za .NET.
I administratori imaju nekoliko programa koji im mogu pomoci. To su LDAP browser, OpenVPN Admin, vmx-manager za upravljanje virtualizacijom i Sussen za sigurnosni nadzor.
Nedavna suradnja Novella i Microsofta zabrinula je zajednicu buduci da bi Microsoft na neki nacin mogao utjecati na razvoj Monoa ili zaprijetiti patentnim tubama. Zasad se to nije dogodilo, a Novellovci nas uvjeravaju kako ce Mono, u slucaju da se netko pozove na svoj patent, pokuati ponititi njegovu vjerodostojnost ili naci alternativnu implementaciju neke funkcije. Takoder, nije se usporio ni razvoj aplikacija tako da moemo ocekivati jo dosta programa temeljenih na Monou.