Java Programming for Experienced Programmers Training

We offer private customized training for groups of 3 or more attendees.

Course Description

 
This Java training course is intended for students with experience in a procedural or object-oriented language. It covers most Java syntax elements, including recent additions such as Generics and AutoBoxing. In addition to the fundamental library classes that would be needed in any Java program, it also covers several other important APIs, including Collections and Streams. The class introduces the concept of objects as one of the first topics, in order that the later concepts are covered with an OO perspective. The material is based on Java 5 and 6, but most concepts would apply in 1.4 as well.
Course Length: 5 Days
Course Tuition: $2090 (US)

Prerequisites

If you are new to object-oriented programming, you should take our Introduction to Java for New Programmers class instead.

Course Outline

 

Class Goals

    Learn how Java works.
    Understand the "write once, run anywhere" concept.
    Understand and learn how to create basic Java objects.
    Learn how to implement flow-control concepts in Java.
    Understand Java's package concept and create packages of Java classes.
    Understand Java arrays and write code to create and use arrays.
    Learn how to write Java classes using inheritance.
    Learn how to create and use interfaces.
    Understand and use the concept of polymorphism in an application
    Understand how Java's exception-handling mechanism works and learn how to apply exception-handling to Java applications.
    Understand and use the Java Logging API.
    Understand and use inner classes.
    Understand Generics and use them with the Collections API.
    Learn about Java's Streams concept, and how to appy that to files using text and binary data.
    Create and run JUnit tests for Java classes.

Class Outline

    Java Introduction
        Conventions in These Notes
        The Java Environment - Overview
        Writing a Java Program
        Obtaining The Java Environment
        Setting up your Java Environment
        Creating a Class That Can Run as a Program
            The main() Method
        Useful Stuff Necessary to go Further
            System.out.println()
        Using the Java Documentation
    Java Basics
        Basic Java Syntax
            General Syntax Rules
            Java Statements
            Blocks of Code
            Comments
            Variables
        Data
            Primitive Data Types
            Object Data Types
            Literal Values
            Constants and the final keyword
        Mathematics in Java
            Expressions
            Operator Precedence
            Multiple Assignments
            Order of Evaluation
            Bitwise Operators
            Compound Operators
            Expressions that Mix Data Types: Typecasting
        Creating and Using Methods
            Creating Methods
            Variable Scope
    Java Objects
        Objects
            Object-Oriented Languages
            Object-Oriented Programs
            Encapsulation
            Creating and Using an Instance of an Object
            References
            Defining a Class
            Java Beans
            Constructors
            Method Overloading
            The this Keyword
            static Elements
            Garbage Collection
            Java Packages
            Dealing with Keyboard Input
        String, StringBuffer, and StringBuilder
        Creating Documentation Comments and Using javadoc
            Javadoc Comments
    Comparisons And Flow Control Structures
        Controlling Program Flow
            Boolean-Valued Expressions
            Complex boolean Expressions
            Simple Branching
            Two Mutually Exclusive Branches
            Nestedif... elseStatements - Comparing a Number of MutuallyExclusive Options
            Comparing a Number of Mutually ExclusiveOptions - The switchStatement
            Comparing Objects
            Conditional Expression
            while and do. . .while Loops
            for Loops
        Additional Loop Control: break and continue
            Breaking Out of a Loop
            Continuing a Loop
        Classpath, Code Libraries, and Jar files
            Using CLASSPATH
            Creating a jar File (a Library)
    Arrays
        Arrays
            Defining and Declaring Arrays
            Instantiating Arrays
            Initializing Arrays
            Working With Arrays
            Array Variables
            Copying Arrays
            Arrays of Objects
        Enhanced for Loops - the For-Each Loop
        Multi-Dimensional Arrays
            Multidimensional Arrays in Memory
            Example - Printing a Picture
        Typecasting with Arrays of Primitives
    Inheritance
        Inheritance
            Payroll with Inheritance
            Derived Class Objects
        Polymorphism
            Inheritance and References
            Dynamic Method Invocation
        Creating a Derived Class
            Inheritance and Access
            Inheritance and Constructors - the super Keyword
            Derived Class Methods That Override Base Class Methods
            Inheritance and Default Base Class Constructors
            The Instantiation Process at Runtime
        Example - Factoring Person Out of Employee and Dependent
        Typecasting with Object References
            Typecasting, Polymorphism, and Dynamic Method Invocation
            More on Overriding
            Object Typecasting Example
            Checking an Object's Type: Using instanceof
            Typecasting with Arrays of Objects
        Other Inheritance-Related Keywords
            abstract
            final
        Methods Inherited from Object
    Interfaces
        Interfaces
        Creating an Interface Definition
        Implementing Interfaces
            Implementing Interfaces - Example
        Reference Variables and Interfaces
            Calling an Interface Method
        Interfaces and Inheritance
        Some Uses for Interfaces
            Interfaces and Event-Handling
            Interfaces and "Pluggable Components"
    Exceptions
        Exceptions
            Handling Exceptions
            Exception Objects
        Attempting Risky Code - try and catch
        Guaranteeing Execution of Code - the finally Block
        Letting an Exception be Thrown to the Method Caller
        Throwing an Exception
        Exceptions and Inheritance
            Exception Class Constructors and Methods
        Creating and Using Your Own Exception Classes
        Rethrowing Exceptions
        Initializer Blocks
            Static Initializer Blocks
            Assertions
    Generics and Collections
        Fundamental Collections: Sets, Lists, and Maps
        Iterators
        Creating Collectible Classes
            hashCode and equals
            Comparable and Comparators
        Generics
            Basic Generics Syntax
            Bounded Types and Wildcards
        Advanced Topics
            Type Erasure
            instanceof Tests
            Multiple-Bounded Types
    Inner Classes
        Inner Classes, aka Nested Classes
            Inner Class Syntax
            Instantiating an Inner Class Instance from Within the Enclosing Class
            Inner Classes Referenced from Outside the Enclosing Class
            Working with Inner Classes
    Streams
        Introducing Streams
            Input Stream Clases
            Output Stream Classes
            Using System.in
        Files and Directories
            Filename Filters
            Creating a Directory Listing
        Files and Streams
            Writing to a File
            Creating a File Copying Program
        Working with Binary Data
            Primitives
            Object Serialization
        Properties and Properties Files
    Unit Testing
        Software Testing Concepts
        Unit Testing
        Using JUnit
            Creating a Test Case

Course Directory [training on all levels]

Upcoming Classes
Gain insight and ideas from students with different perspectives and experiences.

Java Programming Uses & Stats

Java Programming is Used For:
Android & IOS Development Software Products Video Games Desktop GUI's
Difficulty
Popularity
Year Created
1995
Pros

Most Commonly Used: 
According to Oracle, three billion devices run on Java.  And, because of its real-world applications, it consistently ranks at the top of the TIOBE Programming Community Index. 

Great Career Choice: 
Some of the fastest-growing salaries in the U.S. in 2018 are for Java developers.  (Glassdoor)  

Android Apps Development:
Developers predominatly use their Java skills in building apps for Google's Android. The Android platform is the number one mobile paltform in the world

It Can Run On Any Platform:
Java can compile on Windows and run the same compiled file on Linux, Windows and Mac.

Great Supporting IDE's:
Over the years, coding in Java has become simpler with the introduction of open source development tools, i.e. Eclipse and NetBeans that use Java capabilities for debugging.  
 

Cons

Uses a Lot of Memory:
Performance can be significantly slower with Java and more memory-consuming than natively compiled languages such as C or C++.

Difficulty in Learning: 
Learning Java can be a bit challenging if you are a beginner.  However, once you get the hang of Object Oriented Programming and a decent grasp of the syntax, you will be well on your way.

Slow Start Up Times:
There is quite a bit of one-time initialization done by JDK classes before compiling as well as loading classes and verification (making sure code doesn't do evil things, all of which takes longer that some other languages such as C. 

Verbose and Complex Code:
Long, over-complicated sentences make code less readable and scannable. Compare to let's say Python, we can see how clear Python code appears: It doesn’t require semicolons; uses “and,” “or,” and “not” as operators instead of Java’s “&&,” “||,” and “!”; and generally has fewer bells and whistles such as parentheses or curly braces.

Commercial License Cost:
Companies have to prepare for the changes that Oracle will institute in 2019 . Today, the current version of Java is free and available for redistribution for general purpose computing. However, If you are a DEVELOPER, Oracle recommends you review the roadmap information for Java SE 8 and beyond and take appropriate action depending on the type of application you develop and your distribution mode.

Java Programming Job Market
Average Salary
$102,000
Job Count
26,856
Top Job Locations

New York City 
San Jose
Washington D.C, 

Complimentary Skills to have along with Java Programming

- If you are an experienced Java developer, learning a complimentary language to Java should come much more naturally.  As an example JetBrains recently created the Kotlin programming language which is officially supported by Google for mobile development.  Kotlin compiles to Java bytecode and runs on the JVM; it's purported to address many of Java's shortcomings...

Interesting Reads Take a class with us and receive a book of your choosing for 50% off MSRP.