Я бы избавился от Object.hashCode и вместо этого определил бы интерфейсы Hashable / Hasher.(Но я бы сохранил System.identityHashCode (Object), потому что, несмотря на его накладные расходы, он делает что-то очень полезное, что невозможно сделать любым другим способом.)
Я бы избавился от Object.equals и определил Equatable/ Экваториальные интерфейсы вместо.(Но с лучшими именами, если бы я мог управлять этим.)
Я бы избавился от Object.clone.Я мог бы сохранить его как метод для классов массивов.
Я бы избавился от Object.finalize и заменил бы его чем-то, что наивные программисты на C / C ++ не заметят, пока не приобретут достаточный опыт, чтобы знать, чтофинализация - почти всегда неправильное решение.
Я бы избавился от System.gc ();
Я бы заменил неуклюжий глобальный материал System.in/out/err чем-то, чтоиспользовались Readers / PrintWriters, и это было / могло быть легко "ограничено" потоком или группой потоков.
Я бы убрал возможность примитивной блокировки любого объекта (... ОК, не строго изменение библиотеки).
Я бы попытался выяснить, как реализовать безопасные версии thread.stop / suspend / resume ... даже если бы это означало реализацию Isolates в JVM J2SE.