L'indice è un int, che quindi arriva a 2^32-1 (valore contenuto anche nella costante Integer.MAX_VALUE). Dando un'occhiata ai primi risultati di Google sembrerebbe che la massima dimensione per un array sia il suddetto valore meno otto, e in effetti nelle librerie del linguaggio c'è qualcosa del genere, ad esempio nella classe ArrayList.
Tuttavia penso che occuperesti troppa memoria e riceveresti un errore ben prima di quel valore... ma ti basta provare, danni non ne fai.

P.S.: "altri linguaggi più seri" è un po' troppo semplificativo, non dipende sempre dal solo linguaggio. A meno che non siano seri neanche C e C++...