Как уже указывалось, некоторые функции API Commons превратили его в Java, часто реализуя (IMHO) лучше, чем они были изначально в библиотеке commons. Enums - классический пример.
С точки зрения того, почему они не принимают больше общего-ланга, у некоторых классов есть элемент путаницы. Возьмите, например, StrBuilder, он более мощный, чем Java StringBuilder, и он расширяемый. Но я не уверен, что был бы за добавление такого класса в базовый API Java, StringBuilder / StringBuffer достаточно хороши для большинства целей, и наличие там другого действительно немного сбивает с толку. Они не могли по-настоящему изменить StringBuilder таким образом, чтобы он учитывал все изменения, потому что это могло сломать существующий код. Даже если они добавят один, что, когда кто-то еще пришел с другой, более мощной версией? StrBuilder2? Вскоре все становится большим беспорядком (некоторые утверждают, что ядро API уже есть, не говоря уже о таких дополнениях).
И, как всегда, с этими вещами, главное - это , что должно быть включено из commons-lang. Некоторые люди, вероятно, хотели бы видеть добавленные классы MutableXXX, другие - классы XXXUtils, другие - пакет времени ... на самом деле не существует единого мнения.
Другая важная вещь заключается в том, что разработчики Java должны быть намного более осторожными в отношении основного API Java, чем разработчики Apache для commons-lang. Если в будущем выпуске дрянной дизайн в commons-lang будет заменен, старый может быть признан устаревшим и впоследствии удален (действительно, похоже, именно так и происходит). В основном Java API он должен остаться по причинам обратной совместимости, просто вызывая больше беспорядка.
Для чего это стоит, хотя я думаю, что больше функциональности в commons-lang, вероятно, следует включить. Я просто вижу причины, по крайней мере частично, почему это не так.