Prečo je Java zaostalý a neefektívny jazyk
Java je vraj napopulárenejší programovací jazyk. Prečo, to naozaj nechápem a asi ani nikdy nepochopím. Najpopulárnejší však zďaleka nemusí znamenať najlepší, Java je toho jasným príkladom. Java je programátorsky neefektívna
Som zvyknutý na C# 3.5 a naplno využívam všetky jeho možnosti. Java mi pripadá ako hrozne zaostalý a programátorsky neefektívny jazyk, všetko sa v ňom robí zbytočne zložito a zdĺhavo. Uvediem niekoľko príkladov.
Chcem odstrániť prefix zo začiatku čísla zamestnanca, márne hľadám funkciu ltrim, musím si ju napísať sám. Alebo chcem zo zoznamu zamestnaneckých čísel odstrániť duplicity a vybrať len tie, ktoré sú väčšie ako nejaké X, kvôli príslušnosti k organizačnej jednotke. V Jave musím duplicity odstrániť prevodom do HashSet a späť, dané čísla vybrať pomocou prechodu zoznamom. Pre človeka zvyknutého na
var employeeNumbers = employeeNumbers.Where(l=>l > X).Distinct().ToList();
a uvedomujúceho si, že žijeme v roku 2010 je to jednoducho nepochopiteľné.
Spomínané príklady sú triviálne veci, so zložitejšími je na tom Java ešte horšie. Ak napríklad chcete z J2SE volať nejakú webovú službu, znamená to pre vás vygooglenie potrebných knižníc, stiahnutie nejakej, zistenie,že nepodporuje pri webových službách autentifikáciu, stiahnutie ďalšej, vygenerovanie proxy tried a ich použitie. Pri zmene webovej služby samozrejme znovu vygenerovanie proxy tried, pridanie nahradenie pôvodných novými v projekte, možno s medzikrokom znamenajúcim zaspomínať si,ako ste to vlastne vtedy prvýkrát generovali.
V C# projekte vo Visual Studiu pomocou asi 3 troch kliknutí pridáte referenciu na webovú službu, .NET sám vygeneruje triedy a všetko potrebné za vás, nestaráte sa, samozrejme s podporou autentifikácie. Pri zmene webovej služby stačí jedno kliknutie na refresh reference.
Ak ste nútení v Jave nielen programovať, ale riešiť aj deployment, výraz Jar Hell vám asi bude dobre známy. Ak v .NET používam v projekte nejakú knižnicu, môžem si určiť, či sa má použiť jej najnovšia, alebo nejaká špecifická verzia. To v Jave nejde. Nalinkujete si JAR knižnicu a je na vás, aby ste program dodávali presne s verziu, ktorú potrebujete, aby nikto neurobil update knižníc na verzie, s ktorými váš program nebude fungovať.
Toto sú asi hlavné veci, ktoré mi na Jave naozaj vadia a nedokážem sa s nimi zmieriť. Samozrejme,je to určite tým, že som zvyknutý na C#, ktorý je oveľa komfortnejší, ale aj tak zástancov Javy nechápem.
Aktualizácia: článok Java vs C# z hľadiska pohodlnosti programovania