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