Java má pitomá a neintuitivní generika a na cokoli trochu zavánějící pozdní vazbou se musí použít reflexe, i když by de fakto stačila interface. To jsou podle mě největší bolesti javy.
Pre mňa je to neexistencia obyčajných funkcií. Túto nepochopiteľnú chybu okopírovali aj v C#; potom 
sa to snažili nejako napraviť cez built-int delegáty, ale nie je to ono. 
Podľa mňa to vyplýva z toho, že Java je ako sa dnes hovorí opinionated jazyk; všetko musí byť objektovo. 
Pre veľkú časť úloh objektové programovanie nie je potrebné a dokonca je zbytočné. Nemožnosť tvoriť 
obyčajné funkcie zabrzdil rozvoj Javy ako jazyka a oproti moderným jazykom pôsobí zastaralo. Nuž, keď 
sa raz základy zle postavia, tak už stavbu neprerobíme.