I’ve written Java professionally for a few years now and continue to recommend Effective Java as a starting point. I originally read the second edition when I started writing Java professionally, and recommend the third edition to others in your shoes that I work with. It will bootstrap a lot of fundamental concepts into your knowledge that you would learn over your first six months or a year of writing Java.
The third edition covers Java 9, and Java 10 + 11 haven’t introduced too much new stuff that really changes the ball-game of writing Java, especially for someone new to the language. I don’t think there’s anything I would consider critical knowledge in Java 10 + 11 (even var), and anything that is I think you’d quickly learn via code review etc.
I’d second this. Java 8 introduced streams, which are probably the biggest change since Generics. Java 9 introduced modules, which have major implications for packaging, library compatibility and some other concerns like that. By comparison, Java 11 is pretty small stuff.
I only read the second edition of Effective Java, but I’ve only heard good things about the third edition.
Thanks both, I put in an order for the third edition :)
Java 8 was really major imo: besides streams, 8 also introduced lambdas and the whole java.util.function hierarchy, which changes some codebases quite a bit. Suddenly it became easy to do things like sort by a custom sort order! I agree that 10/11 are pretty minor.
The author of the original article totally misses out on Immutables which is a nice in-between of the two presented solutions which generates readable generated code yet allows for customization via a number of mechanisms as needed without so much of the jank of Lombok.