Tady se to trollama jenom hemží, každopádně pár věcí - nechápu, proč tady spousta lidí považuje Javu za hloupý jazyk?
Obecně platí, že samotný jazyk nestačí, je potřeba znát i věci kolem, v případě Javy:
- přehled ve standardní knihovně
- buildovací nástroje Maven, Ant
- konfigurační XML soubory
- Java EE standardy (a jejich implementace, např. JPA -> Hibernate), znát nějaké frameworky atd.
- JUnit
Takže diskuze pouze o znalosti pouze jazyka je k ničemu. A druhá věc je, že záleží, na čem chcete dělat. Pominu-li pár desktopových a nějaké mobilní aplikace, tak hlavní doménou Javy jsou rozsáhlé enterprise systémy. Java s nativním paralelismem se hodí pro distribuované aplikace. K tomu patří velká podpora transakcí, persistence, posílání zpráv, atd. To jsou nástroje, bez kterých se u rozsáhlých aplikací těžko obejdete.
Takže Java není pouze o jazyku, ale o znalosti celé platformy. Znalost platformy pak můžete využít i jiných jazyků, např:
Jython - napíšete aplikaci v Pythonu a provozujete v JVM
Jaskell - napíšete aplikaci v Haskellu a provozujete opět v JVM
...
A k té hlouposti Javy - když má Java garbage collector, tak to beru jako větší pohodlí, ne jako hloupost Javy. Ušetřím čas, než abych musel hlídat a debugovat memory leaky. Chci, aby mi programovací jazyk usnadňoval práci a neházel klacky pod nohy. Já jsem toho napsal hodně v C a prostě mě nebaví tam řešit ty samé problémy dokola. Jistě cenou za toto pohodlí, je vyšší paměťová náročnost, ale u zmiňovaných aplikací to není překážka.
Vyzkoušel jsem hodně jazyků a rozhodl jsem se živit Javou EE. Proto obhajuji její vlastnosti. Pokud vás baví psát ovladače nebo síťové aplikace, tak se učte C/C++. Pokud vás baví weby, učte se PHP, Python, Ruby, atd. Pokud chcete být serveroví admini, učte se Bash, Python, Perl, atd. Pokud chcete být akademici, učte se Prolog, Lisp, Haskell, Smalltalk, atd.