Java нельзя понять, взглянув на него только как на коллекцию некоторых характеристик, необходимо понять задачи этого языка как частные задачи программирования в целом. Книга \"Философия Java. Библиотека программиста\" о проблемах программирования: почему они стали проблемами и какой подход использует Java в их решении.