
Originariamente Scritto da
BlackCaesar
Fosse solo per quello... Ha i generics che fanno pietà: è nato come il sostituto del C++ e all'epoca non aveva nemmeno i generics, dovevi castare tutto ad Object, quando C++ aveva i template da 8 anni prima che sono fatti coi controcoglioni e sono un linguaggio turing-equivalente con cui puoi anche fare metaprogrammazione. Nel 2005 (!!!!) hanno aggiunto i Generics, e ovviamente sono fatti di merda: non si possono creare array di generics (perché mai non è dato saperlo), non si possono utilizzare i tipi primitivi per istanziare i generics, bisogna boxarli dentro alle rispettive classi, tutto è allocato sullo heap così gli array perdono il vantaggio della contiguità in memoria, non aveva le lambda e le funzioni di ordine superiore, non ha un linguaggio dichiarativo come LINQ in C# per manipolare strutture dati (perché connessioni e query su Database in Java giustamente vanno fatte via stringhe, che è più sicuro di utilizzare un type system). Due anni fa hanno aggiunto le lambda, e sono pure buggate: ho fatto una fold con una map dentro e a run-time la virtual machine ha tirato Uncompilable Code Exception o una cosa del genere, praticamente il compilatore generava bytecode buggato per la virtual machine. L'unica ragione per cui Java ancora esiste sono le tonnellate di legacy code delle aziende.