Это потому, что браузеры не имеют интерпретаторов для Java. Они интерпретируют JavaScript. DOM - это модель, которую можно использовать где угодно, но в основном она используется в браузерной среде, и браузеры оптимизировали синтаксический анализ DOM на протяжении многих лет ... для javascript.
Причина, по которой браузеры оптимизировали синтаксический анализ DOM, заключается в том, что анализ DOM является краеугольным камнем динамической веб-разработки. Рассмотрим обычный способ сделать страницу более динамичной:
1.) Listen for some events fired on the page.
2.) When those events are fired, modify some number of DOM objects,
e.g., by changing their visibility, geometry, or actually moving
them to other portions of the DOM.
Причина, по которой DOM важен в этом, заключается в том, что он предоставляет спецификацию для хранения документа в памяти браузера, так что не нужно перерисовывать всю страницу путем изменения небольших частей разметки. И эти объекты DOM, хранящиеся в памяти браузера, структурированы так же, как нативные объекты JavaScript; следовательно, для них проще оптимизировать их под javascript.
И с тех пор, как динамические веб-страницы стали необходимостью, браузеры боролись друг с другом изо всех сил, чтобы иметь самый быстрый пользовательский интерпретатор javascript, и в динамичной веб-среде, главном месте, где вы сможете увидеть большинство наград за оптимизацию - это анализ DOM.
Я не вижу насущной необходимости в Java-среде использовать DOM, но это абсолютно необходимо в браузерной среде. Это наиболее вероятная причина, по которой вы видели лучшую оптимизацию в javascript для анализа DOM, чем в java. Все больше людей заинтересованы в том, чтобы это работало в браузере. Однако, для пояснения, я не уверен в точных технических причинах на уровне кода, почему это на самом деле быстрее.