O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Java 8 and 9 Fundamentals: Modern Java Development with Lambdas, Streams, and Introducing Java 9’s JShell and the Java Platform Module System (JPMS)

Video Description

54+ hours of video instruction.

Overview

The professional programmer’s Deitel® video guide to Java™ SE 8 and SE 9 development with the powerful Java™ platform

Description

Written for programmers with a background in high-level language programming, this LiveLesson applies the Deitel signature live-code approach to teaching programming and explores the Java™ language and Java™ APIs in depth. The LiveLesson presents concepts in the context of fully tested programs, not code fragments. The LiveLesson features hundreds of complete Java™ programs with thousands of lines of proven Java™ code, and hundreds of tips that will help you build robust applications.

The source code repository for this LiveLesson can be found at www.informit.com/title/9780133489347.

Paul J. Deitel, CEO and Chief Technical Officer of Deitel & Associates, Inc., is a graduate of MIT, where he studied Information Technology. He holds the Sun (now Oracle) Certified Java Programmer and Certified Java Developer certifications, and is an Oracle Java Champion. Through Deitel & Associates, Inc., he has delivered Java, C#, Visual Basic, C++, C and Internet programming courses to industry clients, including Cisco, IBM, Sun Micro systems, Dell, Siemens, Lucent Technologies, Fidelity, NASA at the Kennedy Space Center, the National Severe Storm Laboratory, White Sands Missile Range, Rogue Wave Software, Boeing, SunGard Higher Education, Stratus, Cambridge Technology Partners, One Wave, Hyperion Software, Adra Systems, Entergy, CableData Systems, Nortel Networks, Puma, iRobot, Invensys and many more. He and his co-author, Dr. Harvey M. Deitel, are the world’s best-selling programming-language textbook/professional book authors.

Skill Level

Beginner-to-Intermediate

What you Will Learn

Start with an introduction to Java™ using an early classes and objects approach, then rapidly move on to more advanced topics, including GUI, graphics, exception handling, lambdas, streams, functional interfaces, object serialization, concurrency, generics, generic collections, JDBC™ and more. You’ll enjoy Deitels’ classic treatment of object-oriented programming and the object-oriented design ATM case study, including a complete Java™ implementation. And new to this LiveLesson is detailed coverage of JShell, Java 9’s REPL (Read-Eval-Print-Loop) for interactive Java. When you’re finished, you’ll have everything you need to build industrial-strength object-oriented Java applications.

Practical, Example-Rich Coverage of:

  • Java™ SE 8 and SE 9
  • JShell, Java 9’s REPL (Read-Eval-Print-Loop) for interactive Java
  • Lambdas, Streams, Functional Interfaces with Default and Static Methods
  • Classes, Objects, Encapsulation, Inheritance, Polymorphism, Interfaces
  • Swing and JavaFX GUIs; Graphics
  • Integrated Exception Handling
  • Files, Streams, Object Serialization
  • Multithreading and Concurrency for Optimal Multi-Core Performance
  • Generics and Generic Collections
  • Database (JDBC™, SQL and JavaDB)
  • Using the Debugger and the API Docs
  • Industrial-Strength, Object-Oriented Design ATM Case Study and more.

Introducing the Java Platform Module System (JPMS)—Java 9’s most important new software-engineering technology. Modularity—the result of Project Jigsaw—helps developers at all levels be more productive as they build, maintain and evolve software systems, especially large systems. The key goals of JPMS include: reliable configuration, strong encapsulation, scalable Java Platform, greater platform integrity, and improved performance.

JShell is one of Java’s most significant new learning, discovery and developer-productivity-enhancement features since Java’s inception 20+ years ago. JShell—Java’s REPL (read-evaluate-print loop) provides a fast and friendly environment that enables you to interactively explore, discover and experiment with Java language features and its extensive libraries.

Who should take this course?

Programmers experienced in a high-level programming language and interested in building industrial-strength applications in Java

Course requirements

Familiarity with any high-level programming language, including C, C++, C#, JavaScript, etc.

Table of Contents

  1. Part I
    1. Java Fundamentals: Introduction to Part I 00:11:05
  2. Before You Begin: Setting Up Your Development Environment
    1. Overview 00:01:15
    2. Software Used 00:01:40
    3. Installing the JDK (Required) 00:05:26
    4. Installing Eclipse (Optional) 00:02:27
    5. Installing IntelliJ IDEA 00:00:58
    6. Downloading the Code Examples and Contacting Me for Help 00:02:20
  3. Dive Into NetBeans: Using NetBeans to Compile Exiting Programs and Create New Ones (Optional)
    1. Overview 00:01:01
    2. Getting NetBeans, opening the IDE and configuring tabs and line numbers 00:06:00
    3. Creating a project and adding existing code to the project 00:07:22
    4. Creating a new program 00:04:01
  4. Dive Into Eclipse: Using Eclipse to Compile Exiting Programs and Create New Ones (Optional)
    1. Overview 00:01:01
    2. Getting Eclipse, opening the IDE and configuring tabs and line numbers 00:06:26
    3. Creating a project and adding existing code to the project 00:06:44
    4. Creating a new program 00:05:46
  5. Dive Into IntelliJ IDEA: Using NetBeans to Compile Exiting Programs and Create New Ones (Optional)
    1. Overview 00:01:08
    2. Getting IntelliJ, opening the IDE and configuring tabs and line numbers 00:05:00
    3. Creating a project and adding existing code to the project 00:05:48
    4. Creating a new program 00:05:30
  6. Lesson 1: Test Driving a Java Program at the Command Line
    1. Introduction 00:00:53
    2. Test-Driving the command line 00:10:23
  7. Lesson 2: Introduction to Java Applications
    1. Introduction 00:01:49
    2. Text-printing program 00:20:59
    3. Printing a line of text with multiple statements 00:01:59
    4. Printing multiple lines of text with a single statement 00:02:32
    5. Displaying multiple lines with method System.out.printf 00:04:03
    6. Addition program and an Introduction to using the online Java documentation 00:25:06
    7. Compare integers using if statements, relational operators and equality operators 00:09:17
  8. Lesson 3: Introduction to Classes, Objects, Methods and Strings
    1. Introduction 00:02:59
    2. Account class that contains a name instance variable and methods to set and get its value 00:16:25
    3. Creating and manipulating an Account object 00:16:03
    4. Conceptual view of an Account object 00:03:36
    5. Primitive Types vs. Reference Types 00:04:53
    6. Account class with a constructor that initializes the name instance variable 00:03:30
    7. Using the Account constructor to initialize the name instance variable when each Account object is created 00:07:16
    8. Account class with a double instance variable balance and a constructor and deposit method that perform validation 00:05:55
    9. Inputting and outputting floating-point numbers with Account objects 00:10:39
  9. Lesson 4: Control Statements, Part 1
    1. Introduction 00:00:48
    2. Student Class: Nested if...else Statements 00:15:39
    3. Calculating a class average using the while statement and counter-controller repetition 00:06:23
    4. Calculating a class average using the while statement and sentinel-controller repetition 00:06:35
    5. Arithmetic assignment operators 00:01:36
    6. Prefix increment and postfix increment operators 00:03:30
  10. Lesson 5: Control Statements, Part 2
    1. Introduction 00:01:31
    2. Compound-interest calculations with for 00:05:04
    3. do...while repetition statement 00:02:29
    4. LetterGrades class that uses the switch statement to count letter grades 00:09:49
    5. Demonstrating Strings in switch—Class that represents an auto insurance policy 00:10:49
    6. break statement exiting a for statement 00:03:41
    7. continue statement terminating an iteration of a for statement 00:02:36
    8. Logical operators 00:09:33
  11. Lesson 6: Methods—A Deeper Look
    1. Introduction 00:03:38
    2. static Methods, static Fields and Class Math 00:09:23
    3. Programmer-declared method maximum with three double parameters 00:09:52
    4. Argument Promotion and Casting 00:06:06
    5. Java API Packages 00:08:29
    6. Shifted and scaled random integers 00:10:51
    7. Roll a six-sided die 6,000,000 times 00:02:08
    8. Craps class simulates the dice game craps 00:11:54
    9. Scope class demonstrates field and local-variable scopes 00:11:25
    10. Overloaded method declarations 00:10:34
  12. Lesson 7:Arrays
    1. Introduction 00:04:16
    2. Initializing the elements of an array to default values of zero 00:05:13
    3. Initializing the elements of an array with an array initializer 00:02:20
    4. Calculating the values to be placed into the elements of an array 00:02:34
    5. Computing the sum of the elements of an array 00:03:19
    6. Bar chart printing program 00:02:40
    7. Die-rolling program using arrays instead of switch 00:03:59
    8. Poll analysis program 00:09:42
    9. Card shuffling and dealing 00:18:30
    10. Using the enhanced for statement to total integers in an array 00:03:35
    11. Passing arrays and individual array elements to methods 00:07:43
    12. GradeBook class using an array to store test grades 00:08:43
    13. Initializing two-dimensional arrays 00:08:08
    14. GradeBook class using a two-dimensional array to store grades 00:11:18
    15. Using variable-length argument lists 00:05:07
    16. Initializing an array using command-line arguments 00:09:04
    17. Arrays class methods and System.arraycopy 00:07:53
    18. Generic ArrayList<T> collection demonstration 00:12:51
  13. Part II
    1. Java Fundamentals I, II, III, and IV LiveLessons: Introduction to Part II 00:16:26
  14. Lesson 8: Classes and Objects—A Deeper Look
    1. Introduction 00:02:57
    2. Time1 class declaration maintains the time in 24-hour format 00:23:03
    3. Private members of class Time1 are not accessible 00:02:01
    4. “this” used implicitly and explicitly to refer to members of an object 00:05:54
    5. Time2 class with overloaded constructors 00:19:34
    6. Composition demonstration with classes Date and Employee 00:12:12
    7. Declaring an enum type with a constructor and explicit instance fields and accessors for these fields 00:10:22
    8. Garbage Collection 00:04:18
    9. Declaring and using static variables and methods to maintain a count of the number of Employee objects in memory 00:07:38
    10. static import of Math class methods 00:02:20
    11. Package access members of a class are accessible by other classes in the same package 00:05:27
    12. Compound-interest calculations with BigDecimal 00:13:32
  15. Lesson 9: Object-Oriented Programming—Inheritance
    1. Introduction 00:03:12
    2. Inheritance hierarchy UML class diagrams 00:06:40
    3. Creating and using a CommissionEmployee class 00:13:12
    4. Creating and Using a BasePlusCommissionEmployee Class 00:05:29
    5. Creating a CommissionEmployee—BasePlusCommissionEmployee Inheritance Hierarchy 00:08:52
    6. CommissionEmployee—BasePlusCommissionEmployee Inheritance Hierarchy Using protected Instance Variables 00:04:50
    7. CommissionEmployee—BasePlusCommissionEmployee Inheritance Hierarchy Using private Instance Variables 00:12:31
    8. Class Object 00:08:56
  16. Lesson 10: Object-Oriented Programming—Polymorphism
    1. Introduction 00:06:21
    2. Demonstrating Polymorphic Behavior—Assigning superclass and subclass references to superclass and subclass variables 00:10:57
    3. Abstract Classes and Methods 00:05:30
    4. Case Study: Payroll System Using Polymorphism 00:09:00
    5. Abstract Superclass Employee 00:08:31
    6. Concrete Subclass SalariedEmployee 00:07:54
    7. Concrete Subclass HourlyEmployee 00:05:37
    8. Concrete Subclass CommissionEmployee 00:02:25
    9. Indirect Concrete Subclass BasePlusCommissionEmployee 00:05:15
    10. Polymorphic Processing, Operator instanceof and Downcasting 00:22:03
    11. final Methods and Classes 00:06:34
    12. Creating and Using Interfaces (Java SE 7 and earlier) 00:06:32
    13. Developing a Payable Hierarchy 00:05:02
    14. Class Invoice 00:04:36
    15. Modifying Class Employee to Implement Interface Payable 00:03:30
    16. Modifying Class SalariedEmployee for Use in the Payable Hierarchy 00:02:14
    17. Using Interface Payable to Process Invoices and Employees Polymorphically 00:12:27
    18. Java SE 8 Interface Enhancements overview 00:08:15
  17. Lesson 11: Exception Handling—A Deeper Look
    1. Introduction 00:03:57
    2. Integer division without exception handling 00:09:34
    3. Handling ArithmeticExceptions and InputMismatchExceptions 00:15:27
    4. Throwable hierarchy; Introduction to checked and unchecked exceptions 00:06:35
    5. try...catch...finally exception-handling mechanism 00:10:06
    6. Stack unwinding and obtaining data from an exception object 00:08:28
    7. Chained exceptions 00:06:01
    8. Declaring new exception types 00:04:42
    9. Checking with assert that a value is within range 00:05:25
    10. try-with-Resources: Automatic Resource Deallocation 00:03:44
  18. Lesson 12: GUI Components: Part 1
    1. Introduction 00:03:01
    2. Using Java’s Nimbus Look-and-Feel 00:03:44
    3. Simple GUI-Based Input/Output with JOptionPane 00:10:25
    4. Common superclasses of the lightweight Swing components 00:04:39
    5. Displaying Text and Images in a Window 00:25:25
    6. Text Fields and an Introduction to Event Handling with the ActionListener interface Nested Classes 00:27:58
    7. Common GUI Event Types and Listener Interfaces 00:11:17
    8. How Event Handling Works 00:04:50
    9. JButton 00:16:53
    10. Buttons That Maintain State: JCheckBox and the ItemListener interface 00:06:53
    11. Buttons That Maintain State: JRadioButton and the ItemListener interface 00:09:08
    12. JComboBox and the ItemListener interface; Using an Anonymous Inner Class for Event Handling 00:14:20
    13. JList and the ListSelectionListener interface 00:12:40
    14. Multiple-Selection Lists 00:06:58
    15. Mouse Event Handling with the MousListener and MouseMotionListener interfaces 00:20:56
    16. Adapter Classes in Event Handling: Mouse Event Handling with the MouseAdapter class 00:09:36
    17. Custom JPanels 00:10:27
    18. Key Event Handling 00:09:39
    19. FlowLayout 00:03:45
    20. BorderLayout 00:05:57
    21. GridLayout 00:04:52
    22. Using Panels to Manage More Complex Layouts 00:03:09
    23. JTextArea and JScrollPane 00:06:37
  19. Lesson 13: Graphics and Java 2D
    1. Introduction 00:01:50
    2. Color control: Drawing rectangles and strings in various colors 00:14:21
    3. Choosing colors with JColorChooser 00:06:45
    4. Displaying strings in different fonts and colors 00:04:50
    5. FontMetrics and Graphics methods useful for obtaining font metrics 00:03:50
    6. Drawing lines, rectangles and ovals 00:07:19
    7. Drawing arcs with Graphics methods drawArc and fillArc 00:04:54
    8. Drawing polygons with Graphics methods drawPolygon and fillPolygon 00:03:20
    9. Demonstrating Java 2D shapes 00:21:24
    10. Java 2D general paths and rotating/translating Java 2D shapes 00:06:41
  20. Lesson 14: Strings, Characters and Regular Expressions
    1. Introduction 00:01:27
    2. String class constructors 00:03:08
    3. String methods length, charAt and getChars 00:03:55
    4. Comparing Strings: String methods equals, equalsIgnoreCase, compareTo and regionMatches 00:08:53
    5. Comparing Strings: String methods startsWith and endsWith 00:02:12
    6. String-searching methods indexOf and lastIndexOf 00:03:50
    7. Extracting substrings from Strings: String class substring methods 00:01:40
    8. String method concat 00:01:48
    9. String methods replace, toLowerCase, toUpperCase, trim and toCharArray 00:03:40
    10. String valueOf methods 00:02:20
    11. StringBuilder constructors 00:02:37
    12. StringBuilder length, setLength, capacity and ensureCapacity methods 00:03:06
    13. StringBuilder methods charAt, setCharAt, getChars and reverse 00:02:50
    14. StringBuilder append methods 00:03:21
    15. StringBuilder methods insert, delete and deleteCharAt 00:02:18
    16. Character static methods for testing characters and converting case 00:04:04
    17. Character class static conversion methods 00:02:09
    18. Character class instance methods 00:02:44
    19. StringTokenizer object used to tokenize strings 00:01:39
    20. Validating user input with regular expressions 00:10:46
    21. String methods replaceFirst, replaceAll and split 00:06:12
    22. Classes Pattern and Matcher 00:03:42
  21. Lesson 15: Files, Streams and Object Serialization
    1. Introduction 00:02:07
    2. Obtaining file and directory information 00:11:53
    3. Writing data to a sequential text file with class Formatter 00:12:55
    4. Reading from a sequential text file using a Scanner 00:05:50
    5. Credit-inquiry program 00:07:07
    6. Creating a Sequential-Access File Using Object Serialization 00:15:04
    7. Reading and Deserializing Data from a Sequential-Access File 00:05:34
    8. Opening Files with JFileChooser 00:06:49
  22. Part III
    1. Java Fundamentals I, II, III, and IV LiveLessons: Introduction to Part III 00:13:28
  23. Lesson 16: Generic Collections
    1. Introduction 00:01:29
    2. Manipulating lists with List, ArrayList, Collection and Iterator 00:17:32
    3. Manipulating lists with List, LinkedList and ListIterator 00:12:58
    4. Viewing arrays as Lists and converting Lists to arrays 00:05:31
    5. Collections method sort 00:06:54
    6. Collections method sort with a Comparator object 00:02:37
    7. Collections method sort with a custom Comparator object 00:08:08
    8. Card shuffling and dealing with Collections method shuffle 00:05:35
    9. Collections methods reverse, fill, copy, max and min 00:05:32
    10. Collections method binarySearch 00:04:15
    11. Collections methods addAll, frequency and disjoint 00:04:04
    12. HashSet used to remove duplicate values from an array of strings 00:04:35
    13. Using SortedSets and TreeSets 00:04:34
    14. Using a Map to count the number of occurrences of each word in a String 00:09:00
  24. Lesson 17: Java SE 8 Lambdas and Streams
    1. Introduction 00:05:41
    2. Functional Programming 00:05:51
    3. Functional Interfaces 00:02:47
    4. Lambda Expressions 00:04:16
    5. Streams 00:03:20
    6. IntStream Operations: Creating an IntStream and Displaying Its Values with the forEach Terminal Operation 00:13:02
    7. IntStream Operations: Terminal Operations count, min, max, sum and average 00:09:42
    8. IntStream Operations: Terminal Operation reduce 00:06:49
    9. IntStream Intermediate Operations: Filtering and Sorting IntStream Values 00:09:41
    10. IntStream Intermediate Operation: Mapping 00:02:53
    11. IntStream Operations: Creating Streams of ints with IntStream Methods range and rangeClosed 00:01:34
    12. Stream<Integer> Manipulations 00:11:30
    13. Stream<String> Manipulations 00:10:38
    14. Stream<Employee> Manipulations: Creating and Displaying a List<Employee> 00:04:12
    15. Stream<Employee> Manipulations: Filtering Employees with Salaries in a Specified Range 00:09:15
    16. Stream<Employee> Manipulations: Sorting Employees By Multiple Fields 00:06:09
    17. Stream<Employee> Manipulations: Mapping Employees to Unique Last Name Strings 00:04:38
    18. Stream<Employee> Manipulations: Grouping Employees By Department 00:08:35
    19. Stream<Employee> Manipulations: Counting the Number of Employees in Each Department 00:05:08
    20. Stream<Employee> Manipulations: Summing and Averaging Employee Salaries 00:05:24
    21. Creating a Stream<String> from a File 00:13:12
    22. Generating Streams of Random Values: Rolling a die 6,000,000 times 00:09:25
    23. Lambda Event Handlers 00:05:25
    24. Additional Notes on Java SE 8 Interfaces 00:04:02
  25. Lesson 18: Generic Classes and Methods
    1. Introduction 00:02:46
    2. Overloaded method that perform the exact same task for different types 00:04:43
    3. Generic Methods: Implementation and Compile-Time Translation 00:06:13
    4. Additional Compile-Time Translation Issues: Methods That Use a Type Parameter as the Return Type 00:17:13
    5. Generic Classes: Implementing a Generic Stack Class 00:14:53
    6. Creating Generic Methods to Test Class Stack<T> 00:06:41
    7. Wildcards in Methods That Accept Type Parameters: Totaling the the numbers in an ArrayList<Number> 00:05:37
    8. Wildcards in Methods That Accept Type Parameters: Implementing Method sum with a Wildcard Type Argument in Its Parameter 00:04:24
  26. Lesson 19: GUI Components, Part 2
    1. Introduction 00:01:23
    2. JSlider 00:07:51
    3. Using menus with JFrames 00:18:08
    4. JPopupMenu 00:06:10
    5. Pluggable look-and-feel 00:08:29
    6. Multiple-document interfaces with JDesktopPane and JinternalFrame 00:09:37
    7. JTabbedPane 00:04:41
    8. BoxLayout layout manager 00:08:31
    9. GridBagLayout Layout Manager 00:13:11
    10. GridBagLayout Layout Manager: Using GridBagConstraints RELATIVE and REMAINDER 00:05:46
  27. Lesson 20: Concurrency and Multi-core Progamming
    1. Introduction 00:04:12
    2. Concurrent programming overview 00:12:22
    3. Thread States and Life Cycle 00:07:40
    4. Creating and Executing Threads with the Executor Framework 00:18:09
    5. Thread Synchronization Overview 00:07:16
    6. Unsynchronized Mutable Data Sharing (Not thread safe) 00:14:32
    7. Synchronized Mutable Data Sharing—Making Operations Atomic 00:06:11
    8. Producer/Consumer Relationship without Synchronization (Not thread safe) 00:15:41
    9. Producer/Consumer Relationship: ArrayBlockingQueue 00:12:53
    10. (Advanced) Producer/Consumer Relationship with synchronized, wait, notify and notifyAll 00:21:54
    11. (Advanced) Producer/Consumer Relationship: Bounded Buffers 00:13:38
    12. (Advanced) Producer/Consumer Relationship: The Lock and Condition Interfaces 00:15:26
    13. Performing Computations in a Worker Thread: Fibonacci Numbers 00:19:52
    14. Processing Intermediate Results: Sieve of Eratosthenes 00:16:35
    15. sort/parallelSort Timings with the Java SE 8 Date/Time API 00:08:37
    16. Java SE 8: Sequential vs. Parallel Streams 00:08:13
    17. Executing Aysnchronous Tasks with CompletableFuture—Fibonacci calculations performed synchronously and asynchronously 00:11:30
  28. Lesson 21: Accessing Databases with JDBC
    1. Introduction 00:01:20
    2. Overview of relational database concepts 00:01:06
    3. Overview of the books database 00:07:39
    4. Basic SELECT Query 00:01:24
    5. WHERE Clause 00:03:51
    6. ORDER BY Clause 00:04:09
    7. Merging Data from Multiple Tables: INNER JOIN 00:03:34
    8. INSERT Statement 00:01:29
    9. UPDATE Statement 00:02:09
    10. DELETE Statement 00:02:16
    11. Java DB Overview 00:05:03
    12. Connecting to and Querying a Database 00:15:14
    13. Querying the books Database: Test-Driving the Example 00:04:32
    14. Querying the books Database: Implementing the TableModel interface to populate a JTable from a ResultSet 00:12:28
    15. Querying the books Database: DisplayQueryResults class 00:08:24
    16. RowSet Interface and JdbcRowSet class 00:05:50
    17. PreparedStatements: Address book example 00:17:37
  29. Lesson 22: Java FX, Part 1
    1. Introduction 00:03:52
    2. Tools Used in This Lesson: FXML, JavaFX Scene Builder and the NetBeans IDE 00:06:00
    3. JavaFX App Window Structure 00:03:37
    4. Welcome App—Displaying Text and an Image 00:03:46
    5. Creating the App’s Project 00:04:21
    6. NetBeans Projects Window—Viewing the Project Contents and Adding an Image to the Project 00:02:11
    7. Opening JavaFX Scene Builder from NetBeans and Preparing to Build the Welcome App 00:05:24
    8. Changing to a VBox Layout Container and Configuring the Layout 00:03:04
    9. Adding and Configuring a Label 00:02:28
    10. Adding and Configuring an ImageView and Running the App 00:05:07
    11. Welcome.java—Creating the GUI from the FXML file 00:03:41
    12. Tip Calculator App Test Drive—Introduction to Event Handling 00:01:55
    13. Tip Calculator Technologies Overview 00:06:01
    14. Building the Tip Calculator App’s GUI: fx:id values for the app’s controls 00:03:28
    15. Building the Tip Calculator App’s GUI: Creating the project 00:01:31
    16. Building the Tip Calculator App’s GUI, Step 1: Changing the Root Layout from an AnchorPane to a GridPane 00:02:21
    17. Building the Tip Calculator App’s GUI, Step 3: Adding the Controls to the GridPane 00:05:02
    18. Building the Tip Calculator App’s GUI, Step 4: Right-Aligning GridPane Column 0’s Contents 00:00:49
    19. Building the Tip Calculator App’s GUI, Step 5: Sizing the GridPane Columns to Fit Their Contents 00:00:57
    20. Building the Tip Calculator App’s GUI, Step 7: Sizing the Button and Previewing the GUI 00:01:48
    21. Building the Tip Calculator App’s GUI, Step 8: Configuring the GridPane’s Padding and Horizontal Gap Between Its Columns 00:03:15
    22. Building the Tip Calculator App’s GUI, Step 9: Making the tipTextField and totalTextField Uneditable and Not Focusable 00:02:14
    23. Building the Tip Calculator App’s GUI, Step 10: Setting the Slider’s Properties and Previewing the Final Layout 00:01:58
    24. TipCalculator Subclass of Application 00:07:31
    25. TipCalculatorController Class: import Statements 00:02:58
    26. TipCalculatorController Class: static Variables and Instance Variables 00:04:27
    27. TipCalculatorController Class: calculateButtonPressed Event Handler 00:04:02
    28. TipCalculatorController Class: initalize Method 00:08:01
  30. Part IV
    1. Java Fundamentals: Introduction to Part IV 00:05:06
  31. Lesson 23: Java FX GUI: Part 2
    1. Lesson Introduction 00:02:16
    2. NetBeans and JavaFX Scene Builder Downloads 00:00:49
    3. Laying Out Nodes in a Scene Graph 00:05:09
    4. Painter App: Technologies Overview 00:05:03
    5. Painter App: Creating the Project and Building the GUI 00:17:21
    6. Painter App: Painter Subclass of Application 00:01:45
    7. Painter App: PainterController Class 00:11:37
    8. Color Chooser App: Technologies Overview 00:05:02
    9. Color Chooser App: GUI Overview 00:04:12
    10. Color Chooser App: ColorChooser and ColorChooserController classes 00:07:46
    11. Cover Viewer App: Technologies Overview 00:03:13
    12. Cover Viewer App: Adding the Images and the Book class; GUI Overview 00:04:16
    13. Cover Viewer App: CoverViewer and CoverViewerController classes 00:06:06
    14. Cover Viewer App: Customizing ListView Cells Technologies Overview 00:02:38
    15. Cover Viewer App: Copying the Project 00:01:40
    16. Cover Viewer App: ImageTextCell Custom Cell Factory Class 00:08:22
    17. Cover Viewer App: CoverViewerController Class 00:02:21
  32. Lesson 24: Java FX Graphics and Multimedia
    1. Lesson Introduction 00:02:41
    2. FontCSS App: Using External Stylesheets to Style Labels and a VBox 00:17:40
    3. Programmatically Loading CSS 00:02:18
    4. BasicShapes App: Defining Two-Dimensional Shapes with FXML 00:08:58
    5. BasicShapes App: CSS That Styles the Two-Dimensional Shapes 00:16:00
    6. PolyShapes App: GUI and CSS for a Polyline, Polygon and Path 00:06:21
    7. PolyShapes App: PolyshapesController Class 00:09:55
    8. DrawStars App: Applying Transforms to Nodes 00:09:27
    9. VideoPlayer App: Playing Video with Classes Media, MediaPlayer and MediaViewer 00:17:22
    10. TransitionAnimations App: Predefined Animations for Modifying Specific Properties 00:15:58
    11. TimelineAnimation App: Custom Transitions Specified with KeyFrames 00:09:12
  33. Lesson 25: Java Persistence API (JPA)
    1. Lesson Introduction 00:02:09
    2. JPA Overview—Generated Entity Classes 00:03:15
    3. JPA Overview—Relationships Between Tables in the Entity Classes 00:02:16
    4. JPA Overview—javax.persistence Package 00:03:40
    5. Querying a Database with JPA—Creating the Java DB Database 00:02:43
    6. Querying a Database with JPA—Populate the books Database with Sample Data 00:01:52
    7. Querying a Database with JPA—Creating the Java Project 00:01:30
    8. Querying a Database with JPA—Adding the JPA and Java DB Libraries 00:02:02
    9. Querying a Database with JPA—Creating the Persistence Unit for the books Database 00:03:12
    10. Querying a Database with JPA—Querying the Authors Table 00:07:41
    11. Querying a Database with JPA—JPA Features of Autogenerated Class Authors 00:04:41
    12. Named Queries; Accessing Data from Multiple Tables—Using a Named Query to Get the List of Authors, then Display the Authors with Their ISBNs 00:10:08
    13. Named Queries; Accessing Data from Multiple Tables—Using a Named Query to Get the List of Titles, then Display Each with Its Authors 00:03:23
    14. Address Book: Using JPA and Transactions to Modify a Database—Transaction Processing 00:03:48
    15. Address Book: Using JPA and Transactions to Modify a Database—Creating the AddressBook Database and Its Persistence Unit 00:01:27
    16. Address Book: Using JPA and Transactions to Modify a Database—Addresses Entity Class 00:01:31
    17. Address Book: Using JPA and Transactions to Modify a Database—AddressBook Class 00:09:41
    18. Address Book: Using JPA and Transactions to Modify a Database—Other JPA Operations 00:01:11
  34. Lesson 26: JavaServer Faces (JSF) Web Apps: Part 1
    1. Lesson Introduction 00:01:28
    2. JavaServer Faces Setup/Software 00:03:00
    3. Web Basics 00:17:11
    4. Multitier Application Architecture 00:02:42
    5. Your First JSF Web App 00:02:10
    6. The Default index.xhtml Document: Introducing Facelets and JSF Expression Language 00:08:24
    7. JavaBeans, Properties and the WebTimeBeanClass 00:08:34
    8. Additional Notes on the WebTime Example 00:04:06
    9. Model-View-Controller (MVC) Architecture in JSF Apps 00:01:16
    10. Common JSF View Components 00:08:55
    11. Validation Using JSF Standard Validators 00:19:29
    12. Session Tracking with 00:15:06
  35. Lesson 27: JavaServer Faces (JSF) Web Apps: Part 2
    1. Lesson Introduction 00:01:28
    2. AddressBook: Accessing Databases in Web Apps 00:03:51
    3. AddressBook: Setting Up the Database 00:04:31
    4. AddressBook: Class AddressBean 00:10:55
    5. AddressBook: index.xhtml Facelets Page 00:06:19
    6. AddressBook: addEntry.xhtml Facelets Page 00:02:59
    7. Ajax Introduction 00:05:08
    8. Validation App: Adding Ajax Functionality 00:06:48
  36. Lesson 28: Web Services
    1. Lesson Introduction 00:02:31
    2. Web Service Basics 00:03:07
    3. Simple Object Access Protocol (SOAP) Introduction 00:02:16
    4. Representational State Transfer (REST) Introduction 00:02:20
    5. JavaScript Object Notation (JSON) Introduction 00:03:21
    6. Publishing and Consuming SOAP-Based Web Services 00:01:31
    7. Publishing and Consuming SOAP-Based Web Services: Creating a Web Application and Adding a Web Service 00:03:57
    8. Publishing and Consuming SOAP-Based Web Services: Defining the WelcomeSOAP Web Service in NetBeans 00:06:03
    9. Publishing and Consuming SOAP-Based Web Services: Publishing the WelcomeSOAP Web Service from NetBeans 00:01:59
    10. Publishing and Consuming SOAP-Based Web Services: Testing the WelcomeSOAP Web Service with GlassFish’s Tester Web Page 00:03:23
    11. Publishing and Consuming SOAP-Based Web Services: Describing the WelcomeSOAP Web Service with Web Service Description Language (WSDL) 00:01:43
    12. Publishing and Consuming SOAP-Based Web Services: Creating a Client to Consume the WelcomeSOAP Web Service 00:03:43
    13. Publishing and Consuming SOAP-Based Web Services: Consuming the WelcomeSOAP Web Service 00:06:48
    14. Publishing and Consuming REST-Based XML Web Services 00:01:40
    15. Publishing and Consuming REST-Based XML Web Services: Creating a REST-Based XML Web Service 00:14:28
    16. Publishing and Consuming REST-Based XML Web Services: Consuming a REST-Based XML Web Service 00:03:51
    17. Publishing and Consuming REST-Based JSON Web Services: Creating a REST-Based JSON Web Service 00:08:45
    18. Publishing and Consuming REST-Based JSON Web Services: Consuming a REST-Based JSON Web Service 00:04:09
    19. SOAP-Based Web Service with Session Tracking Support 00:09:45
    20. SOAP-Based Web Service That Accesses a Database 00:10:17
    21. REST-Based XML Equation Generator Web Service 00:10:21
    22. REST-Based JSON Equation Generator Web Service 00:05:16
  37. Lesson: Introduction to JShell
    1. Lesson intro 00:03:47
    2. How to use this lesson 00:04:19
    3. Before You Begin: Installing and Configuring JDK 9 on Windows 00:09:56
    4. Before You Begin: Installing and Configuring JDK 9 on macOS 00:08:18
    5. Before You Begin: Installing and Configuring JDK 9 on Linux 00:07:50
    6. JShell Overview 00:09:39
  38. SECTION 1: Videos in this section can be viewed after Lesson 2
    1. Starting a JShell session 00:03:07
    2. Executing statements 00:05:15
    3. Declaring variables explicitly; compilation errors; recalling and reexecuting snippets 00:04:35
    4. Listing and executing prior snippets 00:04:39
    5. Evaluating expressions and declaring variables implicitly 00:01:28
    6. Using implicitly declared variables 00:01:00
    7. Viewing a variable’s value 00:01:03
    8. Resetting a JShell session 00:01:02
    9. Writing multiline statements 00:04:14
    10. Editing code snippets 00:05:16
    11. Exiting JShell 00:01:16
  39. SECTION 2: Videos in this section can be viewed after Lesson 3
    1. Creating a class in JShell and viewing the declared types 00:02:45
    2. Explicitly declaring reference-type variables 00:00:46
    3. Creating objects and implicitly declaring reference-type variables 00:02:46
    4. Manipulating objects 00:02:38
    5. Creating a meaningful variable name for an expression 00:03:54
    6. Saving and opening code-snippet files 00:04:46
  40. SECTION 3: Videos in this section can be viewed after Lesson 3
    1. Auto-completing identifiers 00:05:14
    2. Auto-completing JShell commands 00:01:40
  41. SECTION 4: Videos in this section can be viewed after Lesson 6
    1. Exploring a class’s members and viewing documentation 00:01:20
    2. Listing class Math’s static members 00:03:14
    3. Viewing a method’s parameters 00:01:04
    4. Viewing a method’s documentation 00:01:38
    5. Viewing a public field’s documentation 00:00:42
    6. Viewing a class’s documentation 00:00:49
    7. Viewing method overloads 00:01:44
    8. Exploring members of a specific object 00:05:07
  42. SECTION 5: Videos in this section can be viewed after Lesson 6
    1. Declaring and using a method 00:02:27
    2. Forward referencing an undeclared method—Declaring method displayCubes 00:02:13
    3. Declaring a previously undeclared method 00:00:58
    4. Testing method cube and replacing its declaration 00:02:00
    5. Testing updated method cube and method displayCubes 00:00:26
  43. SECTION 6: Videos in this section can be viewed after Lesson 7
    1. Exception handling in JShell 00:02:34
  44. SECTION 7: The videos in this lesson may be covered in sequence any time after Lesson 8
    1. Importing classes and adding packages to the CLASSPATH 00:06:56
    2. Using an external editor 00:04:50
    3. Summary of JShell Commands 00:04:04
    4. Getting help in JShell 00:01:36
    5. /reload command 00:02:55
    6. Feedback modes 00:04:54
    7. How JShell reinterprets Java for interactive use 00:03:21
  45. SECTION 8: Exercises for Section 2
    1. Exercses 1 and 2: Printing a string does not display quotes 00:02:02
    2. Exercses 3 and 4: Comments are not executable 00:01:16
    3. Exercise 5: Multiline comments continue until a closing */ is reached 00:01:48
    4. Exercise 6: Code indentation does not affect how the code executes 00:01:05
    5. Exercise 7: Declaring valid and invalid identifiers 00:01:20
    6. Exercise 8: Unmatched braces in string literals are allowed 00:00:50
    7. Exercise 9: Viewing compilation errors for common programming errors 00:02:14
    8. Exercise 10: Using multiple print statements to display text on one line; Saving/opening snippet files 00:02:17
    9. Exercise 11: Using multiple println statements to display text on separate lines 00:01:23
    10. Exercise 12: Resetting a JShell session 00:00:30
    11. Exercises 13-15: \n, \t and illegal escape sequences 00:02:14
    12. Exercises 16-18: \\, \“ and \r escape sequences 00:02:24
    13. Exercise 19: Demonstrating various compilation errors and exceptions with System.out.printf 00:05:58
    14. Exercises 20-21: The /imports command and declaring an import statement inside a class 00:01:46
    15. Exercise 22: Proving that Java is case sensitive 00:01:12
    16. Exercise 23: Proving variables were initialized properly 00:00:52
    17. Exercise 24: Adding 1 to the largest int value and subtracting 1 from the smallest int value 00:02:03
    18. Exercise 25: Using _ in numeric literals 00:01:19
    19. Exercise 26: Spaces are not required around binary operators 00:00:43
    20. Exercise 27: Demonstrating that parentheses are not required around an argument to printf statement 00:01:16
    21. Exercises 28-29: Assigning to a variable is destructive and printing a variable is non-destructive 00:01:35
    22. Exercise 30: Multiplication requires an operator in Java 00:00:51
    23. Exercises 31-32: Integer division and division by zero 00:01:10
    24. Exercises 33-34: Operator precedence and associativity 00:01:53
    25. Exercises 35-37: Testing the relation and equality operators 00:02:17
    26. Exercise 38: Accidentally following an if statement’s condition with a semicolon 00:01:31
    27. Exercise 39: Demonstrating concatenated assignments 00:01:39
    28. Exercise 40: Forcing order of evaluation with parentheses 00:01:12
  46. Lesson: Introduction to Modularity—Java 9’s Platform Module System (JPMS)
    1. Lesson Introduction 00:08:14
    2. Before You Begin 00:08:31
  47. SECTION 1: Introduction
    1. Introduction 00:01:18
    2. Introduction—What is a Module? 00:04:22
    3. Introduction—History 00:02:50
    4. Introduction—JPMS Goals 00:08:37
    5. Introduction—Lab 01: Listing the JDK’s Modules 00:08:47
    6. Introduction—JEPs and JSRs of Java Modularity 00:02:44
  48. SECTION 2: Module Declarations
    1. Module Declarations—Section Overview 00:00:33
    2. Module Declarations 00:02:51
    3. Module Declarations—requires 00:02:44
    4. Module Declarations—requires transitive and Implied Readability 00:03:06
    5. Module Declarations—exports and exports...to 00:01:10
    6. Module Declarations—uses 00:00:58
    7. Module Declarations—provides...with 00:00:42
    8. Module Declarations—open, opens, opens...to 00:06:08
    9. Module Declarations—Restricted Keywords 00:00:28
  49. SECTION 3: Modularized Welcome App
    1. Modularized Welcome App—Section Overview 00:01:22
    2. Modularized Welcome App—App Structure 00:07:43
    3. Modularized Welcome App—Lab 02: Listing the java.base Module’s Contents 00:07:49
    4. Modularized Welcome App—Class Welcome 00:00:59
    5. Modularized Welcome App—Lab 03: module-info.java 00:04:29
    6. Modularized Welcome App—Lab 04: Module-Dependency Graph 00:10:38
    7. Modularized Welcome App—Lab 05: Compiling a Module 00:05:59
    8. Modularized Welcome App—Lab 06/07: Listing the com.deitel.welcome Module’s Description 00:03:40
    9. Modularized Welcome App—Lab 08: Running an app from a Module’s Exploded Folders 00:01:32
    10. Modularized Welcome App—Lab 09: Packaging a Module in a Modular JAR File 00:03:40
    11. Modularized Welcome App—Lab 10: Running the App from a Modular JAR File 00:02:13
    12. Modularized Welcome App—Aside: Classpath vs. Module Path 00:06:00
  50. SECTION 4: Creating and Using a Custom Module
    1. Creating and Using a Custom Module—Section Overview 00:04:06
    2. Creating and Using a Custom Module—Lab 11: Exporting a Package for Use in Other Modules 00:03:51
    3. Creating and Using a Custom Module—Lab 11: Using a Class from a Package in Another Module 00:03:06
    4. Creating and Using a Custom Module—Lab 12: Module Dependency Graphs 00:06:33
    5. Creating and Using a Custom Module—Lab 13/14/15: Compiling and Running the Example 00:04:40
    6. Creating and Using a Custom Module—Lab 16/17: Packaging the App Into Modular JAR Files 00:03:22
    7. Creating and Using a Custom Module—Lab 18: Strong Encapsulation and the Accessibility of Types 00:07:23
  51. SECTION 5: Module-Dependency Graphs: A Deeper Look
    1. Module-Dependency Graphs: A Deeper Look—Section Overview 00:01:54
    2. Module-Dependency Graphs: A Deeper Look—Lab 19: java.sql 00:03:22
    3. Module-Dependency Graphs: A Deeper Look—Lab 20: java.se 00:07:13
    4. Module-Dependency Graphs: A Deeper Look—Browsing the JDK Module Graph 00:02:44
    5. Module-Dependency Graphs: A Deeper Look—Lab21/22: Error from a Module Graph with a Cycle 00:07:11
  52. SECTION 6: Using Pre-Java-9 Non-Modularized Code in Java 9
    1. Using Pre-Java-9 Non-Modularized Code in Java 9—Section Overview 00:07:45
    2. Using Pre-Java-9 Non-Modularized Code in Java 9—Unnamed Module 00:03:23
    3. Using Pre-Java-9 Non-Modularized Code in Java 9—Automatic Modules 00:06:10
    4. Using Pre-Java-9 Non-Modularized Code in Java 9—Labs 23/24/25/26: jdeps Java Dependency Analysis Tool 00:18:53
  53. SECTION 7: Resources in Modules; Using an Automatic Module
    1. Resources in Modules; Using an Automatic Module—Section Overview 00:01:45
    2. Resources in Modules; Using an Automatic Module 00:06:52
    3. Resources in Modules; Using an Automatic Module—Automatic Module controlsfx 00:08:17
    4. Resources in Modules; Using an Automatic Module—Requiring Multiple Modules 00:05:06
    5. Resources in Modules; Using an Automatic Module—Module-Dependency Graph 00:03:30
    6. Resources in Modules; Using an Automatic Module—Compiling the Module 00:04:18
    7. Resources in Modules; Using an Automatic Module—Running the Modularized App 00:02:38
    8. Resources in Modules; Using an Automatic Module—Showing the Exceptions that Occur if package com.deitel.videoplayer is Not Opened to the Correct JavaFX Modules 00:10:39
  54. SECTION 8: Creating Custom Runtimes with jlink
    1. Creating Custom Runtimes with jlink—Section Overview 00:02:26
    2. Creating Custom Runtimes with jlink—Listing the JRE’s Modules 00:01:37
    3. Creating Custom Runtimes with jlink—Custom Runtime Containing Only java.base 00:09:37
    4. Creating Custom Runtimes with jlink—Creating a Custom Runtim for the Welcome App, Listing Its Modules and Running the App from the Custom Runtime 00:03:34
    5. Creating Custom Runtimes with jlink—Using the Module Resolver on a Custom Runtime 00:08:49
  55. SECTION 9: Services and ServiceLoader
    1. Services and ServiceLoader—Section Overview 00:02:16
    2. Services and ServiceLoader 00:09:10
    3. Services and ServiceLoader—Service-Provider Interface 00:03:34
    4. Services and ServiceLoader—Loading and Consuming Service Providers 00:08:05
    5. Services and ServiceLoader—uses Module Directive and Service Consumers 00:02:51
    6. Services and ServiceLoader—Running the App with No Service Providers 00:03:08
    7. Services and ServiceLoader—Implementing a Service Provider 00:02:59
    8. Services and ServiceLoader—provides...with Module Directive and Declaring a Service Provider 00:01:38
    9. Services and ServiceLoader—Running the App with One Service Provider 00:04:09
    10. Services and ServiceLoader—Implementing a Second Service Provider 00:03:01
    11. Services and ServiceLoader—Running the App with Both Service Providers 00:03:49
    12. Myths of JPMS 00:08:55
    13. Additional Resources 00:02:48