My question is mainly about performance. The compiler knows better that, for example, some variable is NOT modified after object instantiation. So, why bother with final?
final is used at compile-time to accept or reject your source code as valid. It shouldn't have any run-time implications.
final