Learn Java Programming with 9 Excellent Free Open-Source Books
Java Books
This compilation focuses on the Java language with 9 strong recommendations. There are books here for beginner, intermediate, and advanced programmers alike. All of the texts are released under an open source license. Before exploring my recommendations, I offer a brief introduction to the world of Java.
Java is a general-purpose, concurrent, class-based, object-oriented, high-level programming language and computing platform first released by Sun Microsystems in 1995. It is related in some ways to C and C++, in particular with regard to its syntax, and borrows a few ideas from other languages. Java applications are compiled to bytecode that can run on any Java virtual machine (JVM) regardless of computer architecture.
Java is designed to be simple enough that many programmers can quickly become proficient in the language. It’s one of the most popular programming languages especially for client-server web applications. Some popularity indexes show that Java holds the top spot with C. The respected TIOBE Index (March 2017) shows Java remains the most popular programming language.
We have published a series covering the best open source programming books for other popular languages. Read them here.
Introduction to Programming Using Java, Seventh EditionBy David J. Eck (755 pages) Introduction to Programming Using Java is a textbook on introductory programming, which uses Java as the language of instruction. This book is directed mainly towards beginning programmers, although it might also be useful for experienced programmers who want to learn something about Java. It is not designed to provide complete coverage of the Java language.
This work is licensed under a Creative Commons Attribution-Noncommercial-ShareAlike 3.0 License. |
|
Think Java – How to Think Like a Computer ScientistBy Allen B. Downey, Chris Mayfield (252 pages) Think Java is an excellent introduction to Java programming for beginners. Chapters cover:
Permission is granted to copy, distribute, transmit and adapt this work under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License. |
|
Java Application Development on LinuxBy Carl Albing, Michael Schwarz (599 pages) Java Application Development on Linux is a hands-on guide to the full Java application development life-cycle on Linux. This book leads readers through business-logic object analysis, database design, Java servlet UIs, Java Server Pages (JSP) UIs, Swing GUIs, and Standard Widget Toolkit (SWT) GUIs. Scaling up to the enterprise level provides the opportunity to use both the JBoss Application Server and the Apache Geronimo Application Servers, and Enterprise JavaBeans (EJB). Java Application Development on Linux is targeted at experienced Java programmers who are looking to develop and deploy Java applications on Linux systems. Learn how to:
This book is part of Bruce Perens’ Open Source Series. All books in this series are released under the Open Publication License, v1.0 or later. |
|
Building Back-End Web Apps with Java, JPA and JSFBy Mircea Diaconescu, Gerd Wagner (181 pages) This book teaches you how to build Java back-end web applications with Java Server Faces (JSF) as the user interface technology, the Java Persistence API (JPA) for object-to-storage mapping, and a MySQL database. It follows a “learning by doing” approach, focusing only on the essential parts of Java and the minimum needed for starting to code your first application. The book shows the reader how to build a minimal Java web app in just 7 steps: set up the folder structure, write the model code, configure the app, implement the Create Use Case, implement the Retrieve/List All Use Case, implement the update Use Case, and implement the Delete Use Case. There are practice projects included. The book, along with any associated source code, is licensed under The Code Project Open License (CPOL). |
|
Open Data StructuresBy Pat Morin (334 pages) Open Data Structures covers the implementation and analysis of data structures for sequences (lists), queues, priority queues, unordered dictionaries, ordered dictionaries, and graphs. Chapters cover:
The book and is released under a Creative Commons Attribution License. Read the book for free – released in HTML, PDF, and the book’s LaTeX, Java/C++/Python sources can be downloaded from GitHub. There is also a paperback version to buy. The book has been translated into Slovenian and Turkish. |
|
Thinking in Java, 3rd EditionBy Bruce Eckel (HTML) Thinking in Java, 3rd Edition covers many of the nooks and crannies of the Java language, which is of great value in the programming world. The most prominent feature of the book is its extremely thorough treatment of the Java language, with special attention to object design. Some of the best thinking about objects is in this book, including when to use composition over inheritance. The esoteric details of Java in regard to defining classes are thoroughly laid out. Topics covered:
While a specific open source license is not cited, the book is free to download and distribute. The revised 4th edition is not released under an open source license. |
|
Java Programming for KidsBy Yakov Fain (182 pages) Java Programming for Kids is written for kids aged 12+ and adults wanting a gentle introductory Java book. The book begins with an introduction to Java and then explains how to write GUI programs illustrating with Tic-Tac-Toe and Ping-Pong games. The book gives good treatment to the basics – classes, Java building blocks, interfaces, lambdas, abstract and anonymous classes are covered. The author then proceeds to examine access levels, collections, generics, multi-threading before offering an introduction to GUI with JavaFX, a library that’s included with JDK, and you can write your GUI programs using familiar Java language. The reader also learns how to handle run-time errors (known as exceptions), and how to work with files and serialization. The online version of this book is offered for free under an Creative Commons license. |
|
Apache Jakarta Commons: Reusable Java ComponentsBy Will Iverson (360 pages) This book is a Java developer’s guide to the Apache Jakarta Commons project. It covers, in detail, the twelve most important Jakarta Commons packages, covering topics ranging from HTTP FileUpload to database connectivity, with sample program code provided for each. It also offers instruction on how to combine the Commons project libraries with Eclipse. This book is part of Bruce Perens’ Open Source Series. All books in this series are released under the Open Publication License, v1.0 or later. |
|
What’s New in Java 8By Adam L. Davis (53 pages) What’s New in Java 8 is a short introduction to Java 8, the only publicly supported version. The book aims to offer a basic understanding of the new features and be ready to start using it. You’ll need a good understanding of Java the language and the JVM to reap the full benefits of the book. The author helps you understand Java 8, including Project Lambda, the new Date-Time API, Streams, Nashorn, and more. Java 8 includes the following:
This book is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported (CC BY-NC-SA 3.0). |
There are some excellent free-to-download Java programming books which are not released under an open source license. Books written by Oracle are listed first:
Java: A Beginner’s Guide – introduces you to Java, including its history, its design philosophy, and several of its most important features
The Java Language Specification – available for Java SE 6, 7 and 8
The Java Tutorials – practical guides for programmers who want to use the Java programming language to create applications
The Java EE Tutorial, Release 7
Introduction to Programming in Java – teaches the classic elements of programming, using an “objects-in-the-middle” approach that emphasizes data abstraction
Docker for Java Developers – explains Docker’s basic concepts and the commonly used orchestration frameworks around them
OOP – Learn Object Oriented Thinking & Programming – a record of the dialogue of the author with his daughter who wants to learn programming
Learning Java – gives you a thorough grounding in Java fundamentals and APIs
Core Servlets and JavaServer Pages – looks at the advanced features and latest developments regarding servlets and JSP
Data Structures and Algorithms with Object-Oriented Design Patterns in Java
Processing XML with Java – a complete tutorial about writing Java programs that read and write XML documents
PROGRAMMING LANGUAGE PROFILES |