Jak rikam - java vychazi z C/C++ co se tyce syntaxe. Schopnosti jazyka jako takoveho jsou nekde jinde (ne kvalitativne).
Ze je Java moderni jazyk souhlasim, vsak jsem nepsal nic jineho :) Bohuzel se ale vydala tim smerem, ktery je mi krajne nesympaticky. Pokud to vezmu z hlediska vypichovani nedostatku a nekonzistenci (at se mame v "diskuzi" o co oprit) - vse berte s rezervou, rad vsak kdyz se k tomu nejak vyjadrite :)
1. Java je nekonzistentni - Prikladem budiz System.out v.s. System.setOut. Konstrukce instance stringu pomoci operatoru =, scitani prez plus (toto je vyjimka z krajni nehostinosti obhajovane moznosti sprasit jazyk pretezovanim operatoru). int v.s. Integer - ten samy duvod (pretezovani operatoru neni Cool, rikaji tvurci Javy). Boxing a unboxing (tam kde by slo zavest implicitni konverze) ktery je opet aplikovatelny pouze na predem vymezene objekty jazyka. To jsou jen stripky na ktere si ted z hlavy vzpomenu.
2. Java je nepohodlna. Rada konstrukci je zdlouhavych a ukecanych, k jednoduchym cinnostem clovek potrebuje mnohem vice instanci ruznych trid, nez je v ostatnich jazycich zvykem. Vysledkem je casto neprehledny kod. Neexistence const (nebo alespon propagovatelnost final), nestandardni nebo casto nepodporovane clone() misto copy konstruktoru - toto ma spolu s predavanim odkazem u volani metod nebezpecne vedlejsi ucinky na konzistenci API.
Ja bych cekal od moderniho jazyku konzistentnost a pohodli, ne krok zpet (Syntax orezaneho C++ a featury Basicu).