๐”– Scriptorium
โœฆ   LIBER   โœฆ

๐Ÿ“

Introduction to Programming Using Java, Version 9, JavaFX Edition

โœ Scribed by David J. Eck


Publisher
Hobart and William Smith Colleges
Year
2022
Tongue
English
Leaves
773
Category
Library

โฌ‡  Acquire This Volume

No coin nor oath required. For personal study only.

โœฆ Synopsis


Welcome to version 9.0 of Introduction to Programming Using Java, a textbook for introductory programming that 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.

Version 9 covers Java 17. It updates the previous version mostly by moving definitively to Java 17 and by adding a new Swing edition. This edition of Version 9 uses JavaFX for GUI programming; an alternative edition that uses Swing instead of JavaFX is also available.

There are no prerequisites beyond a general familiarity with the ideas of computers and programs. There is more than enough material for a full year of college-level programming. Chapters 1 through 7 can be used as a textbook in a one-semester college-level course or in a year-long high school course. The remaining chapters can be covered in a second course.

In style, this is a textbook rather than a tutorial. That is, it concentrates on explaining concepts rather than giving step-by-step how-to-do-it guides. I have tried to use a conversational writing style that might be closer to classroom lecture than to a typical textbook. This is certainly not a Java reference book, and it is not a comprehensive survey of all the features of Java. It is not written as a quick introduction to Java for people who already know another programming language. Instead, it is directed mainly towards people who are learning programming for the first time, and it is as much about general programming concepts as it is about Java in particular. I believe that Introduction to Programming using Java is fully competitive with the conventionally published, printed programming textbooks that are available on the market.

There are several approaches to teaching Java. One approach uses graphical user interface programming from the very beginning. And some people believe that object oriented programming should be emphasized from the very beginning. These are not the approach that I take. The approach that I favor starts with the more basic building blocks of programming and builds from there. After an introductory chapter, I cover procedural programming in Chapters 2, 3, and 4. Object-oriented programming is introduced in Chapter 5. Chapter 6 covers the closely related topic of event-oriented programming and graphical user interfaces. Arrays are introduced in Chapter 3 with a full treatment in Chapter 7. Chapter 8 is a short chapter that marks a turning point in the book, moving beyond the fundamental ideas of programming to cover more advanced topics. Chapter 8 is about writing robust, correct, and efficient programs. Chapters 9 and 10 cover recursion and data structures, including generic programming and the Java Collection Framework. Chapter 11 is about files and networking. Chapter 12 covers threads and parallel processing. Finally, Chapter 13 returns to the topic of graphical user interface programming to cover some more advanced features.

โœฆ Table of Contents


Preface
1 The Mental Landscape
1.1 Machine Language
1.2 Asynchronous Events
1.3 The Java Virtual Machine
1.4 Building Blocks of Programs
1.5 Object-oriented Programming
1.6 The Modern User Interface
1.7 The Internet and Beyond
Quiz on Chapter 1
2 Names and Things
2.1 The Basic Java Application
2.2 Variables and Types
2.2.1 Variables
2.2.2 Types
2.2.3 Literals
2.2.4 Strings and String Literals
2.2.5 Variables in Programs
2.3 Objects and Subroutines
2.3.1 Built-in Subroutines and Functions
2.3.2 Classes and Objects
2.3.3 Operations on Strings
2.3.4 Text Blocks: Multiline Strings
2.3.5 Introduction to Enums
2.4 Text Input and Output
2.4.1 Basic Output and Formatted Output
2.4.2 A First Text Input Example
2.4.3 Basic TextIO Input Functions
2.4.4 Introduction to File I/O
2.4.5 Other TextIO Features
2.4.6 Using Scanner for Input
2.5 Details of Expressions
2.5.1 Arithmetic Operators
2.5.2 Increment and Decrement
2.5.3 Relational Operators
2.5.4 Boolean Operators
2.5.5 Conditional Operator
2.5.6 Assignment Operators and Type Conversion
2.5.7 Precedence Rules
2.6 Programming Environments
2.6.1 Getting a JDK
2.6.2 Command Line Environment
2.6.3 Eclipse IDE
2.6.4 BlueJ
2.6.5 The Problem of Packages
2.6.6 About jshell
2.6.7 JavaFX on the Command Line
2.6.8 Using JavaFX in Eclipse
Exercises for Chapter 2
Quiz on Chapter 2
3 Control
3.1 Blocks, Loops, and Branches
3.1.1 Blocks
3.1.2 The Basic While Loop
3.1.3 The Basic If Statement
3.1.4 Control Abstractiont
3.1.5 Definite Assignment
3.2 Algorithm Development
3.2.1 Pseudocode and Stepwise Refinement
3.2.2 The 3N+1 Problem
3.2.3 Coding, Testing, Debugging
3.3 while and do..while
3.3.1 The while Statement
3.3.2 The do..while Statement
3.3.3 break and continue
3.4 The for Statement
3.4.1 For Loops
3.4.2 Example: Counting Divisors
3.4.3 Nested for Loops
3.5 The if Statement
3.5.1 The Dangling else Problem
3.5.2 Multiway Branching
3.5.3 If Statement Examples
3.5.4 The Empty Statement
3.6 The switch Statement
3.6.1 The Basic switch Statement
3.6.2 Menus and switch Statements
3.6.3 Enums in switch Statements
3.6.4 Definite Assignment and switch Statements
3.6.5 Switch Expressions
3.6.6 The Traditional switch Statement
3.7 Exceptions and try..catch
3.7.1 Exceptions
3.7.2 try..catch
3.7.3 Exceptions in TextIO
3.8 Introduction to Arrays
3.8.1 Creating and Using Arrays
3.8.2 Arrays and For Loops
3.8.3 Random Access
3.8.4 Partially Full Arrays
3.8.5 Two-dimensional Arrays
3.9 GUI Programming
3.9.1 Drawing Shapes
3.9.2 Drawing in a Program
3.9.3 Animation
Exercises for Chapter 3
Quiz on Chapter 3
4 Subroutines
4.1 Black Boxes
4.2 Static Subroutines and Variables
4.2.1 Subroutine Definitions
4.2.2 Calling Subroutines
4.2.3 Subroutines in Programs
4.2.4 Member Variables
4.3 Parameters
4.3.1 Using Parameters
4.3.2 Formal and Actual Parameters
4.3.3 Overloading
4.3.4 Subroutine Examples
4.3.5 Array Parameters
4.3.6 Command-line Arguments
4.3.7 Throwing Exceptions
4.3.8 Global and Local Variables
4.4 Return Values
4.4.1 The return statement
4.4.2 Function Examples
4.4.3 3N+1 Revisited
4.5 Lambda Expressions
4.5.1 First-class Functions
4.5.2 Functional Interfaces
4.5.3 Lambda Expressions
4.5.4 Method References
4.6 APIs, Packages, Modules, and Javadoc
4.6.1 Toolboxes
4.6.2 Java's Standard Packages
4.6.3 Using Classes from Packages
4.6.4 About Modules
4.6.5 Javadoc
4.6.6 Static Import
4.7 More on Program Design
4.7.1 Preconditions and Postconditions
4.7.2 A Design Example
4.7.3 The Program
4.8 The Truth About Declarations
4.8.1 Initialization in Declarations
4.8.2 Declaring Variables with var
4.8.3 Named Constants
4.8.4 Naming and Scope Rules
Exercises for Chapter 4
Quiz on Chapter 4
5 Objects and Classes
5.1 Objects and Instance Methods
5.1.1 Objects, Classes, and Instances
5.1.2 Fundamentals of Objects
5.1.3 Getters and Setters
5.1.4 Arrays and Objects
5.2 Constructors and Object Initialization
5.2.1 Initializing Instance Variables
5.2.2 Constructors
5.2.3 Garbage Collection
5.3 Programming with Objects
5.3.1 Some Built-in Classes
5.3.2 The class Object" 5.3.3 Writing and Using a Class 5.3.4 Object-oriented Analysis and Design 5.4 Programming Example: Card, Hand, Deck 5.4.1 Designing the classes 5.4.2 The Card Class 5.4.3 Example: A Simple Card Game 5.5 Inheritance and Polymorphism 5.5.1 Extending Existing Classes 5.5.2 Inheritance and Class Hierarchy 5.5.3 Example: Vehicles 5.5.4 Polymorphism 5.5.5 Abstract Classes 5.5.6 Final Methods and Classes 5.6 this and super 5.6.1 The Special Variable this 5.6.2 The Special Variable super 5.6.3 super and this As Constructors 5.7 Interfaces 5.7.1 Defining and Implementing Interfaces 5.7.2 Default Methods 5.7.3 Interfaces as Types 5.8 Nested Classes 5.8.1 Static Nested Classes 5.8.2 Inner Classes 5.8.3 Anonymous Inner Classes 5.8.4 Local Classes and Lambda Expressions Exercises for Chapter 5 Quiz on Chapter 5 6 Introduction to GUI Programming 6.1 A Basic JavaFX Application 6.1.1 JavaFX Applications 6.1.2 Stage, Scene, and SceneGraph 6.1.3 Nodes and Layout 6.1.4 Events and Event Handlers 6.2 Some Basic Classes 6.2.1 Color and Paint 6.2.2 Fonts 6.2.3 Image 6.2.4 Canvas and GraphicsContext 6.2.5 A Bit of CSS 6.3 Basic Events 6.3.1 Event Handling 6.3.2 Mouse Events 6.3.3 Dragging 6.3.4 Key Events 6.3.5 AnimationTimer 6.3.6 State Machines 6.3.7 Observable Values 6.4 Basic Controls 6.4.1 ImageView 6.4.2 Label and Button 6.4.3 CheckBox and RadioButton 6.4.4 TextField and TextArea 6.4.5 Slider 6.5 Basic Layout 6.5.1 Do Your Own Layout 6.5.2 BorderPane 6.5.3 HBox and VBox 6.5.4 GridPane and TilePane 6.6 Complete Programs 6.6.1 A Little Card Game 6.6.2 Menus and Menubars 6.6.3 Scene and Stage 6.6.4 Creating Jar Files 6.6.5 jpackage Exercises for Chapter 6 Quiz on Chapter 6 7 Arrays, ArrayLists, and Records 7.1 Array Details 7.1.1 For-each Loops 7.1.2 Variable Arity Methods 7.1.3 Array Literals 7.2 Array Processing 7.2.1 Some Processing Examples 7.2.2 Some Standard Array Methods 7.2.3 RandomStrings Revisited 7.2.4 Dynamic Arrays 7.3 ArrayList 7.3.1 ArrayList and Parameterized Types 7.3.2 Wrapper Classes 7.3.3 Programming With ArrayList 7.4 Records 7.4.1 Basic Java Records 7.4.2 More Record Syntax 7.4.3 A Complex Example 7.5 Searching and Sorting 7.5.1 Searching 7.5.2 Association Lists 7.5.3 Insertion Sort 7.5.4 Selection Sort 7.5.5 Unsorting 7.6 Two-dimensional Arrays 7.6.1 The Truth About 2D Arrays 7.6.2 Conway's Game Of Life 7.6.3 Checkers Exercises for Chapter 7 Quiz on Chapter 7 8 Correctness, Robustness, Efficiency 8.1 Introduction to Correctness and Robustness 8.1.1 Horror Stories 8.1.2 Java to the Rescue 8.1.3 Problems Remain in Java 8.2 Writing Correct Programs 8.2.1 Provably Correct Programs 8.2.2 Preconditions and Postconditions 8.2.3 Invariants 8.2.4 Robust Handling of Input 8.3 Exceptions and try..catch 8.3.1 Exceptions and Exception Classes 8.3.2 The try Statement 8.3.3 Throwing Exceptions 8.3.4 Mandatory Exception Handling 8.3.5 Programming with Exceptions 8.4 Assertions and Annotations 8.4.1 Assertions 8.4.2 Annotations 8.5 Analysis of Algorithms Exercises for Chapter 8 Quiz on Chapter 8 9 Linked Data Structures and Recursion 9.1 Recursion 9.1.1 Recursive Binary Search 9.1.2 Towers of Hanoi 9.1.3 A Recursive Sorting Algorithm 9.1.4 Blob Counting 9.2 Linked Data Structures 9.2.1 Recursive Linking 9.2.2 Linked Lists 9.2.3 Basic Linked List Processing 9.2.4 Inserting into a Linked List 9.2.5 Deleting from a Linked List 9.3 Stacks, Queues, and ADTs 9.3.1 Stacks 9.3.2 Queues 9.3.3 Postfix Expressions 9.4 Binary Trees 9.4.1 Tree Traversal 9.4.2 Binary Sort Trees 9.4.3 Expression Trees 9.5 A Simple Recursive Descent Parser 9.5.1 Backus-Naur Form 9.5.2 Recursive Descent Parsing 9.5.3 Building an Expression Tree Exercises for Chapter 9 Quiz on Chapter 9 10 Generic Programming and Collection Classes 10.1 Generic Programming 10.1.1 Generic Programming in Smalltalk 10.1.2 Generic Programming in C++ 10.1.3 Generic Programming in Java 10.1.4 The Java Collection Framework 10.1.5 Iterators and for-each Loops 10.1.6 Equality and Comparison 10.1.7 Generics and Wrapper Classes 10.2 Lists and Sets 10.2.1 ArrayList and LinkedList 10.2.2 Sorting 10.2.3 TreeSet and HashSet 10.2.4 Priority Queues 10.3 Maps 10.3.1 The Map Interface 10.3.2 Views, SubSets, and SubMaps 10.3.3 Hash Tables and Hash Codes 10.4 Programming with the JCF 10.4.1 Symbol Tables 10.4.2 Sets Inside a Map 10.4.3 Using a Comparator 10.4.4 Word Counting 10.5 Writing Generic Classes and Methods 10.5.1 Simple Generic Classes 10.5.2 Simple Generic Methods 10.5.3 Wildcard Types 10.5.4 Bounded Types 10.6 Introduction the Stream API 10.6.1 Generic Functional Interfaces 10.6.2 Making Streams 10.6.3 Operations on Streams 10.6.4 An Experiment Exercises for Chapter 10 Quiz on Chapter 10 11 I/O Streams, Files, and Networking 11.1 I/O Streams, Readers, and Writers 11.1.1 Character and Byte Streams 11.1.2 PrintWriter 11.1.3 Data Streams 11.1.4 Reading Text 11.1.5 The Scanner Class 11.1.6 Serialized Object I/O 11.2 Files 11.2.1 Reading and Writing Files 11.2.2 Files and Directories 11.2.3 File Dialog Boxes 11.3 Programming With Files 11.3.1 Copying a File 11.3.2 Persistent Data 11.3.3 Storing Objects in Files 11.4 Networking 11.4.1 URLs and URLConnections 11.4.2 TCP/IP and Client/Server 11.4.3 Sockets in Java 11.4.4 A Trivial Client/Server 11.4.5 A Simple Network Chat 11.5 A Brief Introduction to XML 11.5.1 Basic XML Syntax 11.5.2 Working With the DOM Exercises for Chapter 11 Quiz on Chapter 11 12 Threads and Multiprocessing 12.1 Introduction to Threads 12.1.1 Creating and Running Threads 12.1.2 Operations on Threads 12.1.3 Mutual Exclusion withsynchronized"
12.1.4 Volatile Variables
12.1.5 Atomic Variables
12.2 Programming with Threads
12.2.1 Threads versus Timers
12.2.2 Recursion in a Thread
12.2.3 Threads for Background Computation
12.2.4 Threads for Multiprocessing
12.3 Threads and Parallel Processing
12.3.1 Problem Decomposition
12.3.2 Thread Pools and Task Queues
12.3.3 Producer/Consumer and Blocking Queues
12.3.4 The ExecutorService Approach
12.3.5 Wait and Notify
12.4 Threads and Networking
12.4.1 The Blocking I/O Problem
12.4.2 An Asynchronous Network Chat Program
12.4.3 A Threaded Network Server
12.4.4 Using a Thread Pool
12.4.5 Distributed Computing
12.5 Network Programming Example
12.5.1 The Netgame Framework
12.5.2 A Simple Chat Room
12.5.3 A Networked TicTacToe Game
12.5.4 A Networked Poker Game
Exercises for Chapter 12
Quiz on Chapter 12
13 GUI Programming Continued
13.1 Properties and Bindings
13.1.1 Observable Values
13.1.2 Bindable Properties
13.1.3 Bidirectional Bindings
13.2 Fancier Graphics
13.2.1 Fancier Strokes
13.2.2 Fancier Paints
13.2.3 Transforms
13.2.4 Stacked Canvasses
13.2.5 Pixel Manipulation
13.2.6 Image I/O
13.3 Complex Components and MVC
13.3.1 A Simple Custom Component
13.3.2 The MVC Pattern
13.3.3 ListView and ComboBox
13.3.4 TableView
13.4 Mostly Windows and Dialogs
13.4.1 Dialog Boxes
13.4.2 WebView and WebEngine
13.4.3 Managing Multiple Windows
13.5 Finishing Touches
13.5.1 The Mandelbrot Set
13.5.2 Design of the Program
13.5.3 Events, Listeners, and Bindings
13.5.4 A Few More GUI Details
13.5.5 Internationalization
13.5.6 Preferences
Exercises for Chapter 13
Quiz on Chapter 13
Appendix: Source Files
Glossary


๐Ÿ“œ SIMILAR VOLUMES


Introduction to Programming Using Java,
โœ David J. Eck ๐Ÿ“‚ Library ๐Ÿ“… 2022 ๐Ÿ› Hobart and William Smith Colleges ๐ŸŒ English

Welcome to Version 9.0 of Introduction to Programming Using Java, a free, on-line textbook for introductory programming that 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

Introduction to Java Programming, Brief
โœ Y. Daniel Liang ๐Ÿ“‚ Library ๐Ÿ“… 2012 ๐Ÿ› Prentice Hall ๐ŸŒ English

Introduction to Java Programming, Brief, 9e, features comprehensive coverage ideal for a one-, two-, or three-semester CS1 course sequence.<br>Daniel Liang teaches concepts of problem-solving and object-oriented programming using a fundamentals-first approach. Beginning programmers learn critical pr

Introduction to Java Programming, Compre
โœ Y. Daniel Liang ๐Ÿ“‚ Library ๐Ÿ“… 2012 ๐Ÿ› Prentice Hall ๐ŸŒ English

Introduction to Java Programming, Comprehensive, 9e, features comprehensive coverage ideal for a one-, two-, or three-semester CS1 course sequence.<br>Daniel Liang teaches concepts of problem-solving and object-oriented programming using a fundamentals-first approach. Beginning programmers learn cri

Introduction to Java Programming, Compre
โœ Y. Daniel Liang ๐Ÿ“‚ Library ๐Ÿ“… 2014 ๐Ÿ› Prentice Hall ๐ŸŒ English

This text is intended for a 1-, 2-, or 3-semester CS1 course sequence. Comprehensive coverage of Java and programming make this a useful reference for beginning programmers and IT professionals.<br>Daniel Liang teaches concepts of problem-solving and object-oriented programming using a fundamentals-

Introduction to Java Programming, AP Ver
โœ Y. Daniel Liang ๐Ÿ“‚ Library ๐Ÿ“… 2015 ๐Ÿ› Pearson ๐ŸŒ English

For courses in Java Programming.<br> <br>Java Programming Concepts for AP Computer Science A<br>Written for AP students, Introduction to Java Programming: AP Edition covers all Java programming material and concepts required as part of the AP Computer Science A curriculum. Daniel Liang teaches conce