Bohuzel i Java aplikace se da naprogranovat tak, ze bezi jen pod Windows. U Mona je navic problem ze vzdy zaostava za posledni verzi .NET, takze aplikace vyuzivajici posledni verzi .NET API pod Monem nepobezi. Pokud je ale aplikace psana multiplatformne, tak bezi jak na Windows, tak treba na Linuxu stejne.
„i Java aplikace se da naprogranovat tak, ze bezi jen pod Windows“
Ano (stejnětak mohou běžet jen pod Linuxem nebo kterýmkoli jiným OS), hned mě napadají tyto způsoby:
* nativní metody, JNI
* volání shellu
* použití cest a napevno uvedeným oddělovačem místo java.io.File.separatorString
Podobně to jde i u mobilů, i když tam je mnohem méně možností. Ale zase může být k dispozici proprietální API, například Sony Ericssony mají od Sony Ericsson Java Platform 7.5 API pro zápis událostí do menu činností.
Nicméně z toho, co píšeš, je celkem jasné, že Java je na tom s multiplatformností lépe.
C# je to dobre z Javy doplnene o ine dobre napady (a mozno aj nejake nie velmi dobre napady), takze by bolo divne keby to nebol pekny jazyk (minimalne v porovnani s Javou).
Problem je jeho platforma, jej vyvoj a licencie okolo toho. A to uz zalezi na konkretnom pripade, ci tie problemy s platformou stoja za ten pekny jazyk, alebo je lepsie rovno zvolit este nejaky krajsi jazyk, ktory take problemy ani nema. (poradit nemozem, ja som rokmi deformovany a preferujem C++ syntax, takze napr. z interpretovanych jazykov som skoncil u PHP, co je objektivne hnus, aj v 5.3.x verzii. Ale mne vyhovuje a robi skoro presne to co som od neho potreboval a dokazal som ho rychlo pouzit. Ale ak si niekto novy vybera co sa nove naucit, tak by som to nedokazal doporucit, rozhodne nie ako prvy jazyk, mozno neskor pre doplnenie obzorov.)
Osobne si myslim ze dnes ma zmysel skusit nieco hodne high level (smalltalk, atd…), jscript asi tiez (mam osobnu averziu, ale nieco na tom bude co pise), C#/Java, pripadne C/C++ (ak vam to robi radost a pride vam to prirodzene, ako mne, nasilu to uz dnes nema vyznam).
Přesně to samé a v lepším provedení dnes pro platformu JVM nabízí třeba Scala. Syntace je ± stejná jako v C++ (s malými odchylkami typu hranaté závorky pro generika namísto lomených). Rychlost je v principu stejná jako u Javy, nabízí typovou inferenci, lepší objektový model, traits jsou mocnější nástroj než interfaces, strukturované typy nabízejí podobný komfort jako duck-typing v dynamických jazycích nebo beztřídní objektový model v Go, nabízí přetypování operátorů a vytváření nových (operátor je funkce), perfektní podporu pro singletony, rozšiřování možností „uzavřených“ knihoven pomocí implicitní konverze atd. atp. C# má proti ní v podstatě jenom dvě výhody – lepší IDE, pokud se omezíš na platformu Windows a LINQ. Jinak z hlediska jazyka víceméně jenom samé nevýhody.
„Rychlost je v principu stejná jako u Javy“
Možná u Scaly jo, ale četl jsem o jednom benchmarku, kde Groovy, Jython i JRuby byly řádově (asi stokrát!) pomalejší než Java (byť JRuby bylo cca dvakrát rychlejší než nějaký běžný Ruby runtime).
Nezkoumal jsem moc kvalitu toho benchmarku, ale takovýto poměr je IMHO dosti významný a podle toho, co vím o bytecode, se tomu u dynamicky typovaných jazyků na platformě Java nedivím.
Scala je ale staticky typovaná ( http://en.wikipedia.org/…_language%29#… ), takže tam asi tento problém nebude.
http://www.jakprogramovat.cz/ tady můžeě začít. Je to tam napsané snad pro každého. Vše přehledně vysvětleno po lekcích.