Throughout my development career, I’ve repeatedly come across notions that are only learnt by experience – things that seniors know, but don’t really know how to explain well, and that juniors never really learn at all.
From simple questions like “why does my local variable not have a default value, but my instance variable does ?” (well, if you only learn empirically it will be hard to answer this !) to “what is a JSESSIONID, and why is it not sent in this specific request ?” – can you describe what a JSESSIONID is beyond a simple “authorization cookie in Java apps” ?
Most Java blogs today give a (wide) repository of solutions to common problems, but few aim to deepen the theoretical knowledge of the language and environment. My goal is to answer those theoretical questions which are rarely useful in a day-to-day life, but which every senior should know how to explain well – and which give junior developers starting with Java as full and comprehensive an understanding of the language as feasible.