freeprogrammingbooks.com

Introduction to Programming Using Java

By David J. Eck

Introduction to Programming Using Java (Version 9, JavaFX Edition) by David J. Eck is a free introductory programming textbook that uses Java 17 as the language of instruction.

Introductory programming education plays a central role in computer science curricula and in self-directed technical learning. Java remains one of the most widely used languages for teaching fundamental programming concepts, including procedural programming, object-oriented design, data structures, graphical user interfaces, networking, and concurrency.

A structured, concept-focused textbook can help learners build a solid foundation that extends beyond syntax and into broader computational thinking.

About the book

Introduction to Programming Using Java (Version 9, JavaFX Edition) by David J. Eck is a free introductory programming textbook that uses Java 17 as the language of instruction. It is designed for use in an introductory programming course as well as for independent learners who are new to programming.

The book assumes no prerequisites beyond general familiarity with the basic ideas of computers and programs. It is suitable for a full year of college-level study. Chapters 1 through 7 can support a one-semester college course or a year-long high school course, while later chapters extend into more advanced material appropriate for a second course.

The author explicitly states that the book is a textbook rather than a tutorial. Its emphasis is on explaining programming concepts rather than providing step-by-step instructions. The focus is not on Java as a reference language, nor on serving as a quick transition guide for experienced programmers. Instead, it is intended primarily for learners encountering programming for the first time, with equal attention to general programming principles and to Java-specific constructs.

This edition uses JavaFX for graphical user interface programming.

What you will learn

The book guides readers from fundamental programming constructs to advanced topics in software development using Java.

Early chapters introduce the mental model of computation, machine language, the Java Virtual Machine, and core building blocks of programs. Procedural programming concepts are developed through variables, types, expressions, control structures, loops, conditionals, subroutines, and arrays.

Object-oriented programming is introduced in depth, including classes, objects, constructors, inheritance, polymorphism, interfaces, and nested classes. GUI programming with JavaFX is presented as a practical context for object-oriented and event-driven programming.

As the book progresses, readers encounter:

  • Algorithm development, debugging, and program design
  • Robustness, correctness, and efficiency
  • Recursion and linked data structures
  • Stacks, queues, trees, and abstract data types
  • Generic programming and the Java Collection Framework
  • Stream API fundamentals
  • File I/O and serialization
  • Networking with sockets and client/server models
  • Threads, multiprocessing, synchronization, and parallel processing
  • Advanced GUI programming concepts and the MVC pattern

The text includes quizzes and exercises at the end of each chapter, and example programs are provided through the associated website.

Table of contents

  • Preface
  • 1 TheMentalLandscape
    • 1.1 MachineLanguage
    • 1.2 AsynchronousEvents
    • 1.3 TheJavaVirtualMachine
    • 1.4 BuildingBlocksofPrograms
    • 1.5 Object-orientedProgramming
    • 1.6 TheModernUserInterface
    • 1.7 TheInternetandBeyond
    • QuizonChapter1
  • 2 NamesandThings
    • 2.1 TheBasicJavaApplication
    • 2.2 VariablesandTypes
    • 2.3 ObjectsandSubroutines
    • 2.4 TextInputandOutput
    • 2.5 DetailsofExpressions
    • 2.6 ProgrammingEnvironments
    • ExercisesforChapter2
    • QuizonChapter2
  • 3 Control
    • 3.1 Blocks,Loops,andBranches
    • 3.2 AlgorithmDevelopment
    • 3.3 whileanddo..while
    • 3.4 TheforStatement
    • 3.5 TheifStatement
    • 3.6 TheswitchStatement
    • 3.7 Exceptionsandtry..catch
    • 3.8 IntroductiontoArrays
    • 3.9 GUIProgramming
    • ExercisesforChapter3
    • QuizonChapter3
  • 4 Subroutines
    • 4.1 BlackBoxes
    • 4.2 StaticSubroutinesandVariables
    • 4.3 Parameters
    • 4.4 ReturnValues
    • 4.5 LambdaExpressions
    • 4.6 APIs,Packages,Modules,andJavadoc
    • 4.7 MoreonProgramDesign
    • 4.8 TheTruthAboutDeclarations
    • ExercisesforChapter4
    • QuizonChapter4
  • 5 ObjectsandClasses
    • 5.1 ObjectsandInstanceMethods
    • 5.2 ConstructorsandObjectInitialization
    • 5.3 ProgrammingwithObjects
    • 5.4 ProgrammingExample:Card,Hand,Deck
    • 5.5 InheritanceandPolymorphism
    • 5.6 thisandsuper
    • 5.7 Interfaces
    • 5.8 NestedClasses
    • ExercisesforChapter5
    • QuizonChapter5
  • 6 IntroductiontoGUIProgramming
    • 6.1 ABasicJavaFXApplication
    • 6.2 SomeBasicClasses
    • 6.3 BasicEvents
    • 6.4 BasicControls
    • 6.5 BasicLayout
    • 6.6 CompletePrograms
    • ExercisesforChapter6
    • QuizonChapter6
  • 7 Arrays,ArrayLists,andRecords
    • 7.1 ArrayDetails
    • 7.2 ArrayProcessing
    • 7.3 ArrayList
    • 7.4 Records
    • 7.5 SearchingandSorting
    • 7.6 Two-dimensionalArrays
    • ExercisesforChapter7
    • QuizonChapter7
  • 8 Correctness,Robustness,Efficiency
    • 8.1 IntroductiontoCorrectnessandRobustness
    • 8.2 WritingCorrectPrograms
    • 8.3 Exceptionsandtry..catch
    • 8.4 AssertionsandAnnotations
    • 8.5 AnalysisofAlgorithms
    • ExercisesforChapter8
    • QuizonChapter8
  • 9 LinkedDataStructuresandRecursion
    • 9.1 Recursion
    • 9.2 LinkedDataStructures
    • 9.3 Stacks,Queues,andADTs
    • 9.4 BinaryTrees
    • 9.5 ASimpleRecursiveDescentParser
    • ExercisesforChapter9
    • QuizonChapter9
  • 10 GenericProgrammingandCollectionClasses
    • 10.1 GenericProgramming
    • 10.2 ListsandSets
    • 10.3 Maps
    • 10.4 ProgrammingwiththeJCF
    • 10.5 WritingGenericClassesandMethods
    • 10.6 IntroductiontheStreamAPI
    • ExercisesforChapter10
    • QuizonChapter10
  • 11 I/OStreams,Files,andNetworking
    • 11.1 I/OStreams,Readers,andWriters
    • 11.2 Files
    • 11.3 ProgrammingWithFiles
    • 11.4 Networking
    • 11.5 ABriefIntroductiontoXML
    • ExercisesforChapter11
    • QuizonChapter11
  • 12 ThreadsandMultiprocessing
    • 12.1 IntroductiontoThreads
    • 12.2 ProgrammingwithThreads
    • 12.3 ThreadsandParallelProcessing
    • 12.4 ThreadsandNetworking
    • 12.5 NetworkProgrammingExample
    • ExercisesforChapter12
    • QuizonChapter12
  • 13 GUIProgrammingContinued
    • 13.1 PropertiesandBindings
    • 13.2 FancierGraphics
    • 13.3 ComplexComponentsandMVC
    • 13.4 MostlyWindowsandDialogs
    • 13.5 FinishingTouches
    • ExercisesforChapter13
    • QuizonChapter13
  • Appendix: SourceFiles
  • Glossary

Book details

  • Title: Introduction to Programming Using Java (Version 9, JavaFX Edition)
  • Author(s): David J. Eck
  • Main category: Programming
  • Subcategory: Java
  • License: Creative Commons Attribution-NonCommercial-ShareAlike 4.0 License

More books in: Java


Legal notice: This book is shared for educational purposes only. The content is distributed under Creative Commons licenses or with explicit permission from the author. FreeProgrammingBooks may host files that comply with their respective licenses.

Want more free books?

Join our channels and receive free books, courses and tech news.