The Java community has always been dynamic and fast-moving, with constant innovation on the core platform as well as a vibrant community ecosystem. New JVM-based languages like Groovy, Scala, and Clojure are redefining what it means to be a Java developer. The core Standard and Enterprise APIs now co-exist with a large and growing body of open source technologies. Multicore processors, concurrency, and massive data stores require new patterns and approaches to development. And with Java 7 due to release in 2011, there's still more to absorb.
The Well-Grounded Java Developer is a unique guide written for developers with a solid grasp of Java fundamentals. It provides a fresh, practical look at new Java 7 features along with the array of ancillary technologies that a working developer will use in building the next generation of business software.
I expected so much more from this book. Unfortunately it covers too many topics and none in enough details. I can't really get my head exactly what this book should be used for, since the amount of details is not enough for any kind of serious reader. Want to read about concurrency? Read Java Concurrency in Practice. Want to read about Java Performance? Read Java Performance. Want to read about Java 7 IO? There are couple of good books on that topic. If the book was meant for booting-up a Java programmer, you can't do it in 500 pages. The list of web sites with frameworks/languages covered would suite a reader the same as reading this book. On top of these technical issues, I also did not like the style of writing because every single part of the book (not talking about the chapters only here) starts and ends with "ok we went through this and this and now we are going to see this and that", which was a huge waste of space because of redundancy... I believe 50 pages went only on repeating same text. I wouldn't give again the money for this book.
Original review (1st edition) - 3 stars. See the updated review (2nd edition) at the bottom.
Uneven, very uneven.
Part I & Part II are superbly detailed - most likely too much for someone who's just going to catch up with Java 7 (and that's the main purpose of the book, I assume). The rest is far too general - it pretty much mentions some important topics but strongly avoids digging deeper. I realize that it's not possible to (for instance) cover the full Scala and/or Closure course in polyglot JVM section, but there are some less specific topics that could get some love. Examples? Gradle. JRebel and Mockito are pretty much mentioned in 1 sentence each. Not enough.
So it's 3 stars as the book has played its role for me. I didn't do much with Java since Tiger (1.5) and now I needed some aid to catch-up: this book helped, but it was just of the first steps - it could have been better, but it could have been worse as well.
P.S. Authors were very, very brief when mentioning OpenJDK, especially vs Oracle's one. I wonder why.
---
Update for the 2nd edition:
Now we're talking! The new edition is significantly better: - under-the-hood details - a very good description of concurrency models - what's ahead (projects gradually introduce into Java) - quite a good description of build ecosystem
What is still to be improved? 1. testing - the existing chapter does not provide a sufficient overview of the whole landscape 2. idiomatic Java - no, no I don't want a full review of syntax or anything like that, but there are some mental models that are not necessarily part of the language but are commonly used in the JVM ecosystem 3. general purpose popular tools/libraries that have a high impact on the ecosystem and its development
Final review - 4.6 stars, rounded up to 5. Why so high? Well, I got what I wanted from the book, mission successful.
Want to be a good Java developer? What do you need to know? Java of course. That part is easy.
But unless you are a brand new Java developer, you probably aren't up to speed on the latest Java 7 features, the threading model and how bytecode works. Or maybe you haven't caught up with the new JVM languages (Clojure, Scala and Jython.) The book also covers dependency injection, TDD and the like.
With lots of code examples, and clear explanations/writing style, I really enjoyed reading the book - and learned a lot. And as technical proofer, I can tell you the quality of the book is good and the examples work! I'm looking forward to scribbling notes in a printed copy. And I know it isn't going to be a book that stays on my bookshelf in the office – too many people will want to borrow it. And I'm sure some of them will actually buy their own copy.
Disclosure: I will be receiving a copy of this book from the publisher in exchange for being the technical proofreader for the book.
Although Java 9 is now out and this book was written way back when Java 7 was new I'm still finding this to be a very useful and educational read. The book explains the fundamentals of the Java platform (e.g. bytecode, garbage collection) and programming principles in general (e.g. concurrency, dependency injection, functional programming) in a way that I've not seen in any other book. Some aspects of the book are now dated but probably still worthwhile skimming over for a historical context of how the platform has developed. Oh and if you're new to programming and Java development this probably isn't the right book to start with.
The title is very intriguing, but ... This book is overview which shows general trends and that's it. Some parts/chapters were redundant.
Part 1: Developing with Java 7. It was really interesting. Nothing to say.
Part 2: DI, Concurrency, class file, bytecode, perf - all these are just overview but very interesting. You won't be well grounded after reading this part ;-)
Part 3: There was a try to highlight basic features of Groovy, Scala, Clojure. But, it's impossible for such different langs using ~30 pages per lang. As for me the most important chap from this past is chapter 07 "Alternative JVM languages". There are nice advices how to pick language from JVM zoology, really useful "cheat-sheet"
Now the last part 4. If you are not familiar with TDD, CI, Rapid web dev, it's for you. Some tech details are not required and might be outdated right after the publishing. As for me such topics must be on conceptual level only.
More over prototyping in Composure is our of trend. And I don't think that "well" grounded dev should know this, IMHO.
Disclosure: I didn't read it cover-to-cover as I have most other technical books over the past... couple years? (Always?) Regardless: I read the GC bits in-depth and skimmed a lot of the rest of the text. There is a ton of useful information here -- some of it (like the sections on alternate JVM languages [1]) is mostly just for curiosity's sake, but there's also lot of really good stuff about the JVM itself (like the performance tuning bits). With the recent release of Java 8, this book (which was new when Java 7 was new) feels a little bit dated. But only a little bit.
Required reading for anyone doing anything more than just dabbling in the JVM.
---
[1] And on that note, you probably already read all that Scala and Clojure stuff in Tate's Seven Languages in Seven Weeks anyway.
Java is a powerful, platform-independent, object-oriented, multi-threaded programming language that offers solid foundations for Enterprise Software Development and Engineering. A programmer with solid foundations and well-grounded expertise & skills enjoys excellent careers with attractive salaries and incentives. The Well-Grounded Java Developer enables its readers to understand Java from the point of view of Java Virtual Machine (JVM) so that they get a solid foundation of this well-reputed programming language. A programmer can play with advanced techniques such as performance, concurrency, and containerization. The book offers a step-by-step guide to learning about the Java module system, JVM, turning the JVM performance, exploiting the built-in currency of Java, and gaining expertise in related technologies and tools including Clojure, Kotline, Maven, Gradle, and planning for the future releases of Java and its JVM.
With Well-Grounded Java Developer, I started my journey with Manning Publisher, in my opinion maybe the best publisher on the whole market. However, I read from other publishers as well. So for me a second edition is kind of anniversary more than 11 years passed.
So I was very curious how the book has changed after the years and I must admit that is completely new book. Chapters about Groovy and Scala have disappeared, instead there is a chapter related to Kotlin.
Generally I like and recommend the book. (of course) however, the book is a bit uneven. I think is that there are three authors. I enjoyed a first part about what is new to Java 8 to 11 and beyond, like chapter devoted to Java Modules very nice introduction to the subject. Then about byte code I have mixed feeling towards part devoted to concurrency and simple Java concurrency tools it was a bit boring. However, I enjoyed the paragraphs which depict how to avoid deadlocks. The best example I have seen it books so far. Then a decent chapter about performance. And journey along =. I haven't finished the book yet. However, this is a very decent source of information regardless of reader level.
Very much worth reading to get an in-depth look at modern java features and internals. Does not function as a crash course to getting familiar with Java 17+ features (for that I’d recommend reading the JEPs yourself). It definitely has me interested in checking out Clojure…
I did enjoy reading this book and found it covered various topics of being a software developer across all levels. The authors did a splendid job in combining the various concepts of java from basic to the latest ones. I would highly recommend this book to aspiring developers and experienced ones
This book’s authors tried to write an all-around guide for the new coming Java developers. But Java is too broad to cover all the different topics in just one book. That’s the main problem with this book: an attempt to include everything that they could in 400 pages. The book is great! There’s no other book that starts from low-level options of Java NIO and ends with a high-end view on current set of Java web frameworks. Was it necessary? I doubt.
From my perspective it’s impossible to do what authors intended to do. Java is a language that has been evolving for more than 15 years. It has an army of adopters, enormous amount of frameworks and a huge set of JVM-based languages. I bet that you should read this book only if you’re a fresh grad that’s eagerly searches to land on a first job. I agree with author’s choice of languages and frameworks that they tell about in their book. But is this set crucial for EVERY java developer. I doubt.
Goes through most things that an Java Developer with some experience need to understand about how Java and other languages used on the JVM is working. Also gives introduction to things such as Kubernetes which was valuable when searching jobs.
Product Choice
I was listening to a pod by Codecamp Romania where the author was talking about the book and Java.
The advanced Java topics were pretty good, if a little brief. I would have preferred less coverage of polyglot programming and more detailed coverage of topics and a few more topics as well.
Still, I found it a good introduction to some interesting new features, but it has left me feeling like I still need to follow it up with more research in most topics.
A great introduction to the plethora of technologies and practices available to the JVM developers. Probably won't offer much to experienced developers, however the topics covered are really wide: from the Java7 features to alternative languages to concurrency to the platform's further evolution.
That said, I wish I had this book on my first/second year of professional development on the JVM.
I read this book because I have started using Java 7 and thought that this would give me a good understanding of some of the new concepts in 7. I was disappointed. The examples where poorly written and in some cases contained errors. Some of the text was poorly worded and if interpreted wrong would actually lead to bad programming.Overall I cannot recommend this book.
I liked the first section best, the discussion of vital new techniques in Java 7. There's a lot to use for the future there.
The other two sections (on polyglot programming) seemed fairly rushed. But that's probably to be expected - how could we really get to know three new languages and two new web development frameworks in 2/3 of a book?
Needs an update, some parts are outdated. But still good reading and detailed information, for example about the garbage collectors and profiling. The authors should work on an update. Today i think nobody has to be introduced into Groovy, Scala or Clojure any more. But including JEE or Spring Boot would be nice.
To be short: below expectations. While it may serve as an overview of Java 7 and other JVM languages, that's pretty much it: an overview. The book is really lacking on details.