aha, a kdyz to neni alternativa k jave, tak proc:
1) je .net navrzen jako bytecode (a navic ma .net i definovany asemblerovy zapis instrukci: http://en.wikipedia.org/wiki/Common_Intermediate_Language)
2) ten bytecode umi prakticky to same jako java (pokud tedy pomineme javoidni prasarny typu instrukce „alokuj n-rozmerne pole“).
3) resi javove problemy s bezpecnosti – .net ma docela promakany system podpisu kodu
4) c# jako jazyk je de facto java (http://www.25hoursaday.com/CsharpVsJava.html)
Nezafunguje. Za prve java je jedina skutocna multiplatformova alternativa. Na MONO nemozete bezat nic v enterprise prostredi. Jedine ze by ste bol sebevrah. Na to vam nikto nevyda certifikovanu konfiguraciu.
Navyse DOT NET nema nic co by Java nemala takze ziadny dovod na pouzitie Mono a DOT NET neexistuje. Za to Java ma vela toho co DOT NET nema.
To je jako hádání co je lepší? Dělal jsem s Javou celou dobu. Od roku 2000 jsem začal dělat s .Netem. Rozdíl byl markantní.
Java je stará záležitost a nestíhá na .Net dotahovat. Multiplatformní sice být může, ale k čemu to je? Možná na nějaké specifické případy ano. Ale jinak je přínos nulový. Vždy se kód upravuje nebo se dělají branche pro jednotlivé stroje. Protože systémy jsou jinačí z pohledu filosofie. Např. Windows Registry, system countery na Linuxu nejsou. Stejně tak cesty k souborům, rozlišování malých a velkých písmenek apod. Takže při multiplatformním vývoji se s tím musí počítat. Říct, že je Java multiplatformní je výkřik lidí, kteří tomu nerozumí a není o nic lepší než říct, že také .Net je multiplatformní. Jednoduše prostě přenést aplikaci na různé platformy nelze. A tohle je stejné i na .Netu. Můžu si v asp.net (a už jsem to udělal) napsat web aplikaci a bez překompilování ji spustit v Monu na Linuxu, ale lepší je vytvářet přímo pro Linux a nebo přímo pro Windows a obě varianty se společným kódem hodit do 1 balíku. Jinak to prostě nejde.
Několik poznámek proč je .Net lepší než Java.
1. Java má zastaralý jazyk. Sun Microsystems mu nechtěl měnit syntaxi. C# je oproti tomu novější a moderní. Plno věcí jako vazba na nativní knihovny, reflexe, eventy, properties, linq, lambda výrazy se Java vývojářům ani nezdá a tak ani neví jak moc to dokáže ulehčit vývoj a prsty při psaní. Pamatuju si když Java ještě neměla ani atributy (V C# dekorace třídy, metod). Java je prostě starší než .Net a navíc to není ECMA standard jako .Net, C#. A Mono je implementací ECMA standardu, takže jakýpak Microsoft?
2. Aplikace napsané v .Netu běží mnohem rychleji než v Javě.
3. Díky různým vychytávkám v syntaxi se píše kód snadněji a rychleji.
4. Knihovny mají logické rozvětvení Namespaců, názvy metod jsou jasné.
5. .Net má lepší běhové prostředí. Pamatuju si dobu, kdy Java neměla ani JIT compilér. Ten .Netí je moderní a rychlý s generačním garbage colletorem.
Java prostě zaspala dobu. Ano není špátná, ale je zastaralá a je v ní pomalý vývoj. Uvidíme co přinese Java 7, 8...
Mono je (částečná) implementace platformy .NET (viz nadpis http://www.mono-project.com/Main_Page). Není to jenom jazyk. Stejně tak GTK není jenom gui toolkit (je to C knihovna pro psaní multiplatformních aplikací). Dají se v něm psát i konzolové aplikace stejně jako v QT.
Když už jsme u té konzole, .NET produkuje programy s příponou .exe, což je v pohodě pod Windows, ale pro řádkové utility v *nixových systémech je to holé neštěstí a zběsilost. Nevím, jestli jde Mono přinutit, aby vygenerovalo namísto widloidního .exe s DOS stubem linuxovský ELF formát, ale pokud ne, je to pro mě dostatečný důvod k tomu, abych se ho nedotknul ani klackem. Někdo může argumentovat javovskými .jar archivy, ale ty se aspoň netváří jako spustitelný soubor.