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.