Book Review: “Java Basics: A Practical Introduction to Full Stack Java”September 16, 2023
Shai Almog's "Java Basics: A Practical Introduction to Full Stack Java" more than lives up to its title. And how could it be otherwise, with its highly Java driven and opinionated author having a track record going back to leading Java mobile efforts all the way back to Sun Microsystems.
Thoroughness and Ambition
The thoroughness and ambition of the book is clear from its table of contents, each chapter well laid out, in short very readable chapters, each ending with a summary and a quiz.
- Chapter 1: "Hello World"
- Chapter 2: "Variables, Fields, and Methods"
- Chapter 3: "Arguments, Conditional Statements, and Arrays"
- Chapter 4: "Loops"
- Chapter 5: "Create a Wordle Game"
- Chapter 6: "Input, Output, and Exceptions"
- Chapter 7: "Persisting Application State in Java"
- Chapter 8: "Maven, Objects, Encapsulation, and Records"
- Chapter 9: "Parsing and Saving JSON with Moshi"
- Chapter 10: "Hello Spring Boot"
- Chapter 11: "Spring Boot Wordle REST Service"
- Chapter 12: "Spring MVC, Web UI with Thymeleaf"
- Chapter 13: "Refactoring and the Importance of Layered Architecture"
- Chapter 14: "Wordle Web App with Thymeleaf and Spring MVC"
- Chapter 15: "Understanding Spring Session Scope"
- Chapter 17: "Single Page Applications (SPA)"
- Chapter 18: "Databases and Testing"
- Chapter 19: "User Identity"
- Chapter 20: "Object Oriented Programming" (OOP)
- Chapter 21: "Java Persistence API (JPA) and Spring Data"
- Chapter 22: "Security Vulnerability and Exploits"
- Chapter 23: "Threading and Concurrency"
Pragmatic and Helpful
The book is very clearly, and more than anything else, a very pragmatic workbook. It marries theory and practical application extremely well, and has barcodes throughout pointing to supporting video content on YouTube.
In between the numerous tutorial-like step-by-step instructions, you'll learn about a lot of context particular to Java and typical points of confusion to newbies, i.e., Shai understands what the newbie is likely to be confused about and helpfully explains all of these aspects common to the Java language:
- What is a Loop
- Naming Conventions in Java
- Equality in Java
- Escape Sequences in Java
- IOExceptions in Java
- Understanding Packages
- Understanding 'this' in Java
- Understanding the 'final' Keyword in Java
- Framework vs. Library
- Status Codes and Mime Types
- Exceptions and the Stack
- DRY and Layered Architecture
- Inversion of Control and Dependency Injection
- Character Encoding
- What is State?
- Progressive Web Apps
- Databases and the ACID principle
- What is polymorphism
- Object Oriented Programming
- JPA and Spring Data
Throughout, a focused subset of the many available modern Java libraries and technologies are used and it's wonderful how they're all interwoven and their relevance is shown in combination with each other:
- Jackson, Gson, and Moshi
- Spring Boot (and many other related Spring solutions)
A True Treasure Chest of Wisdom
This is a true treasure chest of wisdom and, though one could quibble over why the frontend isn't JavaFX on mobile, the approach taken is a common one and prepares the reader well for the real world.
It is also interesting and pragmatic how OOP is introduced near the end of the book, when the reader/user of the book has already built up a lot of generic context and understanding of the related libraries and ecosystem. Again, a pragmatic approach wherein the author goes into a lot of OOP details, but at an opinionated stage in the book's journey. Slightly less pragmatic is not having the quiz answers at the back of the book (instead of right after the quiz questions), as well as the absence of an index to refer to.
Coming in at 400 pages (not much for the breadth of its scope, the book is compact and concise throughout), this is an amazingly rich guide and a very thorough and pragmatic hands-on tour of the wealth of insights and technologies that make up the wonderful world of Java.
I doubt there are many books out there with this level of ambition and completeness, while also being thoroughly modern and up to date with the latest developments in Java.
Get it here, quick: Java Basics: A Practical Introduction to Full Stack Java