Цитата из http://sites.google.com/site/gson/gson-design-document:
Почему большинство занятий в Gson отмечены как финальные?
Хотя Gson предоставляет достаточно расширяемую архитектуру, предоставляя подключаемые сериализаторы и десериализаторы, классы Gson не были специально предназначены для расширения. Предоставление неокончательных классов позволило бы пользователю законно расширять классы Gson, а затем ожидать, что такое поведение будет работать во всех последующих версиях. Мы решили ограничить такие варианты использования, пометив классы как окончательные и дождавшись появления хорошего варианта использования, обеспечивающего расширяемость. Пометка класса как final также имеет небольшое преимущество, так как предоставляет дополнительные возможности оптимизации для компилятора Java и виртуальной машины.
Почему это так? [Если бы я мог предположить: JVM знает, что класс окончательный, он не поддерживает таблицы переопределения методов? Есть ли другие причины?]
Какая польза от производительности?
Применимо ли это к классам, экземпляры которых создаются с частотой (POJO?), Или, возможно, к классам, которые являются статическими методами-держателями (служебные классы)?
Могут ли методы, определенные как окончательные, теоретически улучшить производительность?
Есть ли какие-нибудь последствия?
Спасибо, Максим.
final
больше связано с документированием их дизайна (или его отсутствия) с точки зрения расширяемости, чем с производительностью. (С другой стороны, @Maxim Veksler спросил не об этом ...) - person andersoj   schedule 18.10.2010final
выполняет JIT, а не JVM. Подробнее см. в этой статье. - person b1nary.atr0phy   schedule 07.06.2013