This month's books include a great book about functional programming in Java 8 and a book about Groovy DSLs.
First, I just want to say that I think this book was very good and extremely well written. So the following criticisms are directed at the Java language and not the book itself which I thoroughly enjoyed.
The hardest part about reading this book for me was the fact that I had to stop myself from mentally rewriting the examples in Groovy. The fact that Venkat (the author) used the same example for tail recursion in his excellent Programming Groovy 2 book certainly didn't help me to not make those comparisons.
The functional programming additions in Java 8 are really exciting, but Groovy did it all first and in my opinion they still do it much better. If though you're interested in Java 8 lambdas and functional programming then this is an outstanding book and well worth reading.
While this book was fairly well written, I was overall disappointed by this one. First of all, it does deal with an older version of Groovy (1.6) so it doesn't touch on some of newer Groovy improvements related to DSLs.
The other major issue with this book is that there are quite a few errors in the code that make the examples very difficult to follow at times (ruining what would have been a really good example of implementing a rules engine in Chapter 8).
Despite my issues with the rest of the book, Chapters 6 and 7 were actually really solid and gave some useful insights by looking at existing Groovy DSLs and explaining how to implement your own builder. If you do decide to read this book to help you design your own DSL, I would stick to Chapters 6 and 7 and avoid the rest.