Java for Programmers

Instructor-Led, On-Site Training with Paul Deitel

Intended for programmers with a background in another high-level language, our Java for Programmers course provides a code-intensive introduction to Java Standard Edition, based on the world’s all-time, best-selling Java textbook—Java How to Program.

This course is presented by Paul Deitel—an Oracle Java Champion, who has been teaching Java since its inception in 1996. In the context of scores of real-world code examples and extensive hands-on labs, attendees quickly will become familiar with Java programming idioms and key standard Java libraries from the Java Development Kit (JDK).

d

Key Topics

  • Test Drives—Compiling and running Java applications from the command  line and from an IDE
  • Introduction to Java Programming—Input/output; formatted output; variables; arithmetic operators; ifstatement; equality and relational operators
  • Introduction to Classes and Objects—Custom classes; instance variables; set/getmethods; software engineering with private instance variables and public set and get methods; constructors; primitive vs. reference types 
  • Control Statements, Part 1—if; ifelse; nested ifelse; conditional operator (?:); while iteration statement; compound assignment operators; increment and decrement operators
  • Control Statements, part 2—for iteration statement; dowhile iteration statement; switch multiple-selection statement; strings in switch; break and continue statements; logical operators
  • Methods: A Deeper Look—static methods, static fields and class Math; argument promotion and casting; Java API packages; secure random-number generation enum types; scope of declarations; method overloading
  • Arrays and ArrayLists—Declaring and creating arrays; array initializers; intro to exception handling; card shuffling and dealing simulation; enhanced for statement; passing arrays to methods; pass-by-value vs. pass-by-reference; multidimensional arrays; variable-length argument lists; command-line arguments; class Arrays; introduction to collections and class ArrayList
  • Classes and Objects: A Deeper Look—Controlling access to class members; the this reference; overloaded constructors; default and no-argument; composition; enum types; garbage collection; static class members; static import; final instance variables; package access; BigDecimal for precise monetary calculations
  • Object-Oriented Programming: Inheritance—Superclasses and subclasses; protected private members; software-engineering with inheritance; constructors in subclasses; designing with composition vs. inheritance
  • Object-Oriented Programming: Polymorphism and Interfaces—Demonstrating polymorphic behavior; abstract classes and methods; direct and indirect subclasses; polymorphic processing; operator instanceof and downcasting; allowed assignments between superclass and subclass variables; final methods and classes; issues with calling methods from constructors; creating and using interfaces; polymorphism via interfaces; common interfaces of the Java API; default interface methods; static interface methods; functional interfaces; private interface methods; private constructors; programming to an interface, not an implementation
  • Exception Handling—Handling exceptions with try statements; when to use exception handling; Java exception hierarchy; checked vs. unchecked exceptions; finally block; stack unwinding; chained exceptions; declaring new exception types; try-with-resources and automatic resource deallocation
  • Intro to Java FX Graphical User Interfaces—Java FX Scene Builder; Java FX app window structure; Welcome app—displaying text and an image; creating an FXML file; Tip Calculator app—introduction to event handling; Application subclass; controller class
  • Generic Collections—Type-wrapper classes; autoboxing and auto-unboxing; interface Collection and class Collections; Lists; ArrayList; iterators; LinkedList; Collections methods: sort, shuffle, reverse, fill, copy, max, min, binarySearch, addAll, frequency and disjoint; class PriorityQueue and interface Queue; Sets; Maps; convenience factory methods for immutable collections
  • Lambdas and Streams—Streams and reduction; external iteration; internal iteration; summing with a stream and reduction; mapping streams; lambda expressions; lambda syntax; intermediate and terminal stream operations; filtering streams; how elements move through stream pipelines; method references; IntStream of random values; performing a task on each stream element with forEach and a method reference; mapping to different types; concatenating strings with collect; IntStream operations; creating an IntStream and displaying its values; terminal operations count, min, max, sum and average; terminal operation reduce; sorting IntStream values; functional interfaces; lambdas: a deeper look; Streammanipulations; creating a Stream; sorting a Stream; filtering a Stream; Employee stream processing case study: filtering Employees with salaries in a specified range; sorting Employees by multiple fields; mapping Employees to unique-last-name strings; grouping Employees by department; counting the number of Employees in each department; summing and averaging Employee salaries; creating a Stream from a file; streams of random values; infinite streams; lambda event handlers
  • Concurrency—Thread states and life cycle; indefinite postponement and deadlock; creating and executing threads with the Executor framework; thread synchronization; immutable data; monitors; unsynchronized mutable data sharing; synchronized mutable data sharing—making operations atomic; producer/consumer relationship without synchronization; producer/consumer relationship: ArrayBlockingQueue; producer/consumer relationship with synchronized, wait, notify and notifyAll; producer/consumer relationship: bounded buffers; producer/consumer relationship: the Lock and Condition interfaces; concurrent collections; multithreading in Java FX: performing computations in a worker thread and processing intermediate results; sort/parallelSort timings with the Date/Time API; sequential vs. parallel streams 

 

Intended Audience

  • Programmers who don’t know Java, but currently program in a C-based object-oriented language (such as, Python, C++, C#, Objective-C, Swift) and want a fast-paced introduction to Python for programmers.
  • People who took a college-level or professional Java course or programmed in Java a while back and want to quickly refresh their Java skills.
  • Programmers using a limited range of java features who would like to see what other features are available.
  • Managers considering moving their teams to java.

Instructor

Paul J. Deitel, CEO and Chief Technical Officer of Deitel & Associates, Inc., is an MIT graduate with 38 years of experience in computing. Paul is one of the world’s most experienced programming-languages trainers, having taught professional courses to software developers since 1992. 

Pin It on Pinterest

Share This Page