In this post we will discuss our list of recommended books that can get you started with Java and Java related topics. We will start this post with the most basic books, that will help you get up and running if you have a limited or no experience in programming. Later, we will move on to more specialized and more advanced books that will provide you skills for a successful career in Java programming such as building applications in Spring Boot, microservices and reactive programming.
If you are just getting started with programming
This section will be dedicated for those who have no experience what so ever in the world of programming and computer science.
Introduction to algorithms is one of the most popular text books out there at computer science universities. If you have no experience in programming, or if you are just starting out, then you need to start with this one.
This is because the book covers concepts that you will need to start your programming programming career such as initialization, loops, termination, analyzing program complexity, etc.
Another important aspect which makes this book very valuable is that it introduces data structures such as lists, stacks, queues, hash tables, etc. You will need to understand these concepts if you would like to become professional and successful in Java programming. This is because a lot of frameworks that Java developers use rely on these concepts.
The book is a bit of a heavy read and it will not get you started with Java programming, but it is extremely important to learn its concepts before diving into the sea of Java programming.
In this section, we will discuss resources that are valuable for learning Java and object oriented programming.
Core Java Volume I – Fundamentals (11th Edition)
Once you have learned the basics of computer programming and algorithm concepts, its time to move on to the practical world. For this I would really recommend “Core Java Volume I – Fundementals”. The book assumes no Java experience whatsoever, which is perfect for beginners.
It takes you through installing Java, what are the concepts behind Java that makes it unique, and how to get started with Java programming. You will go through the concepts of Object oriented programming, event handling, exceptions and debugging and as an added bonus streams and files (among other topics).
If you are just starting with Java, then this is the go to resource. You can of course search the internet for online resources, but this book is the best resource that provides more of well presented and easy to understand information.
Effective Java is a book that focuses more on concepts introduced in JDK 8 and JDK 9. These include functional programming, streams and generics along with programming patterns such as the builder pattern, the factory method pattern, etc.
The reason why we recommend this book is because most of introductory books and resources focus on the traditional object oriented programming paradigm. However, there were numerous changes in the Java world starting with Java 8.
It is very important to understand these newer concepts as they have now become a de facto standard in the industry. Commonly used frameworks such as Spring and Hibernate have already jumped on the functional programming, lambda expressions train.
Iron-Clad Java: Building Secure Web Applications (Oracle Press)
Another aspect that you will encounter during your programming career is security, specifically web security.
Most applications now have either partial or complete exposure to the internet. This makes the topic of security all the more important.
With Iron-Clad Java you will learn about web application security basics such as HTTPS, input validation, authentication and session management.
You will also learn about how to defend against various vulnerabilities that plague web applications such as cross-site scripting, request forgery, click-jacking and SQL injection.
The book does a good job of explaining topics along with providing Java examples for these topics. It is a very interesting read and the principles that you learn not only apply to Java applications, but to any future technologies that you might encounter.
Check the links below for more info about the authors and the price of the book.
Hibernate & JPA
Every enterprise application nowadays must have a database to store all the data that is generated by the application and it’s users. Therefore, it is unavoidable to work on any enterprise application, without having knowledge in Hibernate and JPA.
Hibernate and JPA are the de facto standards for Object Relational Mapping (ORM) in Java. Unfortunately, there aren’t many very good books for absolute beginners. For this, we recommend that you consult with the official documentation of Hibernate, as it is both better and for free 🙂
We will dedicate this section for resources related to JPA and Hibernate that are worth buying, as they go deeper into the topics and will teach you skills that could help improve your application design and performance.
Hibernate Tips: More than 70 solutions to common Hibernate problems
The reason I like the book “Hibernate Tips: More than 70 solutions to common Hibernate problems” is because it is not just a list of solutions to “70 problems”, but it is a collection of tips and best practices that will come in handy during your application development.
For example, the book demonstrates tips on mapping bidirectional associations, defining schema and table names, and advise on how to map Date and Calendar fields.
This makes this book great for both beginners and intermediate programmers. Check the links below for more information.
High-Performance Java Persistence
If you check our tutorials, you will see that I often recommend High-Performance Java Persistence and for a good reason.
First, it is written by one of the Hibernate core developers, so the book has a very high authority on the matter.
The book revolves around optimizing application performance and utilizing JPA and Hibernate features such as statement batching, bulk processing and pagination in order to have the best performance out of your application design.
What I really like about this book is that when it recommends a method over another, it backs it up with concrete performance benchmarks, a rare feat nowadays. If you would like not just be a amature, but an expert in Hibernate performance tuning, then this book is for you.
Check the links below for feedback from other users and for price info.
Spring and Spring Boot
Spring and Spring boot have dominated the Java development ecosystem for a long time. If you are looking for a career in Java development, then you have very good chances to find one which involves the Spring framework.
Therefore, knowledge of this framework is extremely important. So let us get started!
Pro Spring 5: An In-Depth Guide to the Spring Framework and Its Tools
Pro Spring 5 is one of those rare books that provide the “full package”. This is one of my favorite books for learning Spring, specially at the beginning.
The book starts with a nice introduction to the Spring framework, explaining Spring concepts such as dependency injection, the application context, bean lifecycle and Spring profiles.
The book then moves on to practical topics such as using Spring and Hibernate together, Data access in JPA2 and transaction management.
What really completes this book is that it covers advanced topics such as Task Scheduling, Testing in Spring, JMX and web technologies such as Spring MVC.
If you are looking for a place to start learning Spring, then this is the one. Please check the links below for more info about the price on Amazon.
Spring Microservices in Action
Spring Microservices in Action builds on existing experience of Spring and introduces you to development of cloud applications with a microservice architecture in mind.
Nowadays, more and more companies are moving away from gigantic server applications into a more split down group of microservices. This greatly helps with scalability and stability, as individual instances of certain application microservices can be started on demand to increase scalability and keep up with demand, while also making sure that there is no single point of failure.
So if we managed to motivate you enough, let us take a look at the book. It starts with introducing Spring boot and Spring Cloud and why it could be useful to build a cloud based microservice application.
Then it moves on to examples on how to build microservices using spring boot. The book also introduces technologies such as Netflix Hystrix which could be used to manage application failures and disaster scenarios.
Other technologies introduced in this book include service routing using Zuul and Spring cloud, building an event driven application with Spring Cloud Stream, and distributed tracing with Spring Cloud Sleuth and Zipkin.
Make no mistake, this book is not for beginners. It goes into details of very advanced topics. But this is what separates the programmers from the architects.
Check out price info and user reviews from the links below.
Hands-On Reactive Programming in Spring 5
This list would not be complete without a resource about Spring Webflux and reactive programming.
Reactive programming is the new kid on the block, with lots of new approaches and promises to improve scalability and resource usage. I believe that the future of Spring is in Webflux, as more and more companies discover and appreciate the reactive programming model and the benefits that come with it.
You no longer need to block a thread, forcing it to wait for a response over the network or a database query, while other customer requests are waiting to be acknowledged. With reactive programming, async requests are made. Once the request is sent, the thread is free to do other tasks until the response is ready. That is the very basic idea behind Reactive programming.
The book Hands-On Reactive Programming in Spring 5: Build cloud-ready, reactive systems with Spring 5 and Project Reactor discusses these concepts and provides plenty of examples on how to build your reactive application.
Luckily, you can find out more about the contents of each chapter on github here so you can make a more informed decision before you buy the book.
More info about the price can be found from the links below.
Conclusions and credits
In this post, we discussed some materials and resources which can be very valuable for preparing and improving your skills in a Java based career.
Do you have a favorite Java book which is not mentioned here? Let us know in the comments below 😉