Thomas Zink wrote: What advanced subject in the book should a programmer have mastered in Java in order to consider himself proficient in the language?
Hi Thomas,
That's a really tough question to answer. For one thing, the old phrase: "There's always another level" is as true here as it is elsewhere. As our journey with programming, and particular languages, continues, then what we consider "proficient" may well change along with us!
The second thing to think about is that Java is, by design, a fairly simple language. The real action is in the libraries and frameworks - and so this means that on any project, what we need to get up to speed up with is the unique architecture and stack and practices of the team.
The core of the language is, and should be, fairly simple. For example - did you know that Java 8 has only 53 keywords - an amazingly small number compared to the competitor languages? Or that in Java, the grammar is very regular and rigid - keywords cannot hide, and a user-defined construction (such as a library method) can never have as special a place in the language that a keyword does!
This means that it should be easier to grasp the core of the language. Of course, a programmer also needs to understand the idioms and the style of their chosen language as well. For this, I recommend "Effective Java" by Josh Bloch - the 3rd Ed has just come out and is by far the best for the modern Java programmer.
For me, as a personal answer, then I think that a programmer is truly proficient in a language when they sit down to code, having done the design, and the idioms and features of the language flow naturally down into the
IDE from their fingers. Programming is simultaneously the creation of abstract structures and the rendering of them into an imperfect representation (as code written in a programming language). When we write code that is designed, almost instinctively, to take advantage of the good features of a language, then we are proficient in it. When we write code that instinctively evades the imperfections of our chosen language - even better!
Ben