Почему, определяя класс, поскольку финал улучшает производительность JVM?

Заключение в кавычки из http://sites.google.com/site/gson/gson-design-document:

Почему большинство классов в Gson отмечено как финал?

В то время как Gson обеспечивает довольно расширяемую архитектуру путем обеспечения сменных сериализаторов и deserializers, классы Gson не были специально предназначены, чтобы быть расширяемыми. Обеспечение незаключительных классов позволило бы пользователю законно расширять классы Gson и затем ожидать что поведение работать во всех последующих изменениях. Мы приняли решение ограничить такие примеры использования путем маркировки классов как финал и ожидания, пока хороший пример использования не появляется для разрешения расширяемости. Отмечание финала класса также обладает незначительным преимуществом обеспечения дополнительных возможностей оптимизации к компилятору Java и виртуальной машине.

Почему имеет место это? [Если я предположил бы: из JVM знает, что класс является окончательным, это не поддерживает таблицы переопределения метода? Есть ли какие-либо другие причины?]

Каково преимущество в производительности?

Это относится к классам, которые являются частотой, которая инстанцируют (POJO?) или возможно классифицировать, которые являются статическими методами держателей (Служебные классы)?

Методы определяются, поскольку финал также может теоретически улучшить производительность?

Есть ли какие-либо последствия?

Спасибо, Maxim.

42
задан Maxim Veksler 18 October 2010 в 17:51
поделиться