I've been coding Java almost since it started, and yet I learned today that there exist instance initialization blocks (see: What is an initialization block?). I was sure that static initialization blocks were the only option.
Since when have the instance initialization blocks been part of the language? I'd appreciate if the answer is backed up by documentation.
Instance initializers were added in Java 1.1.
Old versions of language documentation are somewhat spread around the web (Oracle hasn't kept a lot of them) but this document appears to be a copy of original tutorial docs, and shows the language changes for 1.1:
final
can be usedtransient
having a defined meaningSee more on this question at Stackoverflow