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
- Apache Jakarta Commons: Reusable Java Components
- Core Servlets and JavaServer Pages
- Data Structures and Algorithms with Object-Oriented Design Patterns in Java
- Java Structures: Data Structures in Java for the Principled Programmer
- Google Java Style
- Introduction to Computer Science using Java
- Introduction to Programming in Java
- Introduction to Programming Using Java
- Java: A Beginner’s Guide
- Java Application Development on Linux
- Java NIO Framework
- Java Programming for Kids, Parents and Grandparents
- Java for Python Programmers
- Java Workshop
- Learning Java
- OOP: Learn Object Oriented Thinking & Programming
- Open Data Structures (in Java)
- Processing XML with Java
- The Java Tutorials
- Think Java: How To Think Like A Computer Scientist
- Thinking in Java
- UML for Java Programmers
- What’s new in Java 8
Java 3D Programming (PDF)
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.
The goal of this book is to provide an overview of the most useful Commons package for the broadest array of Java developers.
Marty Hall, Larry Brown
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.
Duane A. Bailey
A special edition of Java Structures designed for use with two semesters of Williams’ course on data structures, Computer Science 136.
This document serves as the complete definition of Google’s coding standards for source code in the Java™ Programming Language.
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.
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.
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.
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.
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.
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)
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.
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.
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.
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.
The goal of this project is to free undergraduate computer science students from having to pay for an introductory data structures book.
Elliotte Rusty Harold
This book is written for experienced Java programmers who want to integrate XML into their systems.
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.
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.
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.
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.