24 Free Java Programming Books

Are you a beginner programmer looking to learn Java as your first language or maybe you’re a seasoned professional looking for more advanced information? I’ve compiled a great list of free java books that will help any programmer, new or old, further their Java programming knowledge.

Table of Contents

Click to jump to a book you are interested in.

Java 3D Programming (PDF)

Daniel Selman

Java 3D Programming is aimed at intermediate to experienced Java developers. Previous experience in graphics programming (OpenGL and Swing, for example) will be very useful, but it’s not a prerequisite.

Apache Jakarta Commons: Reusable Java Components (PDF)

Will Iverson

The goal of this book is to provide an overview of the most useful Commons package for the broadest array of Java developers.

Core Servlets and JavaServer Pages

Marty Hall, Larry Brown

Data Structures and Algorithms with Object-Oriented Design Patterns in Java

Bruno R. Preiss

The primary goal of this book is to promote object-oriented design using Java and to illustrate the use of the emerging object-oriented design patterns. Experienced object-oriented programmers find that certain ways of doing things work best and that these ways occur over and over again. The book shows how these patterns are used to create good software designs. In particular, the following design patterns are used throughout the text: singleton, container, enumeration, adapter and visitor.

Java Structures: Data Structures in Java for the Principled Programmer (PDF)

Duane A. Bailey

A special edition of Java Structures designed for use with two semesters of Williams’ course on data structures, Computer Science 136.

Google Java Style

This document serves as the complete definition of Google’s coding standards for source code in the Java™ Programming Language.

Introduction to Computer Science using Java

Bradley Kjell

This is a course in Java programming for beginners. It covers the fundamentals of programming, roughly the same material that is covered in a beginning programming course in a university or in a high school AP Computer Science course.

Introduction to Programming in Java

Robert Sedgewick, Kevin Wayne

The textbook Introduction to Programming in Java teaches all of the classic elements of programming, using an “objects-in-the-middle” approach that emphasizes data abstraction.

Introduction to Programming Using Java

David J. Eck

This book is directed mainly towards beginning programmers, although it might also be useful for experienced programmers who want to learn something about Java.

Java: A Beginner’s Guide (PDF)


Java: A Beginner’s Guide checks in at a short 30 pages, but it gives beginner programmers, or just beginners to the Java language, the basic history of the language as well as introduces them to the syntax.

Java Application Development on Linux (PDF)

Carl Albing, Michael Schwarz

If you are an experienced Java programmer, but quite new to Linux, and you have been looking for information on the tools available to develop and deploy Java applications on Linux systems, this book will provide a lot of useful information.

If you are an experienced Linux user or developer, and you are interested in using the Java language on that platform, this book will guide you through some advanced Java development topics and will present, we hope, some novel uses for familiar Linux and GNU tools.

Java NIO Framework: Introducing a high-performance I/O framework for Java (PDF)

Ronny Standtke, Ulrich Ultes-Nitsche

In this paper, we introduce the Java NIO Framework, an extensible programming library that hides most of the NIO library details and at the same time provides support for secure and high-performance network applications.

Java Programming for Kids, Parents and Grandparents

Yakov Fain

This book is available in English, French, Russian and Ukranian languages and will be useful for the following groups of people:

  • Kids from 11 to 18 years old
  • School computer teachers
  • Parents who want to teach their kids programming
  • Complete beginners in programming (your age does not matter)

Java for Python Programmers

Brad Miller

This short ebook is an ongoing project to help Computer Science students who have had one or two semesters of Python learn the Java programming language.

Java Workshop

Trevor Miller

This book is for anyone interested in Java. Whether that interest is purely in an academic sense or truly a passion for the language, I hope that everyone can gain something from this book.

The target audience is specifically students who are learning Java for the first time. I remember when I first learnt Java, many of the trivialities were far from trivial and even the simple task of setting an environment variable was no small feat. I hope that if anything, this book will help students to accomplish these and many more trivial tasks and that they will not seem like small miracles.

The goal of this book is to introduce students to the practicalities of the Java language and provide them with enough references to pursue the topic further. In this regard, each topic is presented in a simplistic manner and a topic does not cover all there is, especially those topics that are extremely broad like XML. Rather a brief introduction is given and then a list of suitable references for further information.

Learning Java

Patrick Niemeyer, Daniel Leuck

This book is for computer professionals, students, technical people, and Finnish hackers. It’s for everyone who has a need for hands-on experience with the Java language with an eye toward building real applications. This book could also be considered a crash course in object-oriented programming, networking, GUIs, and XML. As you learn about Java, you’ll also learn a powerful and practical approach to software development, beginning with a deep understanding of the fundamentals of Java and its APIs.

OOP: Learn Object Oriented Thinking & Programming

Rudolf Pecinovsky

You can find a whole range of programming textbooks intended for complete beginners. However, this one is exceptional to certain extent. The whole textbook is designed as a record of the dialogue of the author with his daughter who wants to learn programming. The author endeavors not to explain the Java programming language to the readers, but to teach them real programming. To teach them how to think and design the program as the experienced programmers do. Entire matter is explained in a very illustrative way which means even a current secondary school student can understand it quite simply.

Open Data Structures (in Java) (PDF)

Pat Morin

The goal of this project is to free undergraduate computer science students from having to pay for an introductory data structures book.

Processing XML with Java

Elliotte Rusty Harold

This book is written for experienced Java programmers who want to integrate XML into their systems.

The Java Tutorials

The Java Tutorials are practical guides for programmers who want to use the Java programming language to create applications. They include hundreds of complete, working examples, and dozens of lessons.

Think Java: How To Think Like A Computer Scientist

Allen B. Downey

Think Java is an introduction to computer science and programming intended for people with little or no experience. We start with the most basic concepts and are careful to define all terms when they are first used. The book presents each new idea in a logical progression. Larger topics, like recursion and object-oriented programming, are divided into smaller examples and introduced over the course of several chapters.

Thinking in Java

Bruce Eckel

This book assumes that you have some programming familiarity: you understand that a program is a collection of statements, the idea of a subroutine/function/macro, control statements such as “if” and looping constructs such as “while,” etc. However, you might have learned this in many places, such as programming with a macro language or working with a tool like Perl. As long as you’ve programmed to the point where you feel comfortable with the basic ideas of programming, you’ll be able to work through this book.

UML for Java Programmers (PDF)

Robert Cecil Martin

UML is a graphical notation for drawing diagrams of software concepts. This handbook takes a very pragmatic view of UML providing guidance with a realistic perspective that can be applied immediately.

What’s New in Java 8

Adam L. Davis

This book is a short introduction to Java 8. After reading it, you should have a basic understanding of the new features and be ready to start using it.

This book assumes that you have a good understanding of Java the language and the JVM. If you’re not familiar with the language, including features of Java 7, it might be hard to follow some of the examples.

Subscribe to Blog via Email

Enter your email address to subscribe to this blog and receive notifications of new posts by email.


Leave a Reply