Intermediate Java 7 and OO Development Training

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

Course Description

Intermediate Java and OO Development is a fast paced, 5 - day course suitable for programmers with some previous experience in working with Java and Object - Oriented (OO) programming. It includes a short review of basic Java concepts, and then moves on to a comprehensive coverage of more advanced topics in Java and OO programming to provide participants with a strong grounding in using Java in a sophisticated and productive manner. This course goes well beyond the basics of Java and OO programming and cov ers important topics such as composition, inheritance, polymorphism, interfaces and exceptions, which are all key to creating well - structured OO systems using Java. After coverage of these important areas, it moves on to more advanced topics such as JDBC ( for database access), the Java Collections Framework - including the generics capabilities introduced in Java 5, Java I/O, assertions, inner classes, and the reflection API. Finally it covers useful tools for day - to - day programming such as ant, JUnit and v arious logging frameworks. This course covers far more than an introductory course, and provides participants with a comprehensive understanding of how to use Java's advanced capabilities in a more sophisticated manner. It teaches a number of useful techn iques that enhance productivity and good system design - which Java programmers may otherwise take years to absorb on their own.
Course Length: 5 Days
Course Tuition: $2090 (US)


Programmers with some previous experience in working with Java a nd Object - Oriented (OO) programming.

Course Outline


1. Getting Started
A Simple Applications Class
Compiling HelloWorld
Java Source and Java Bytecode
Life Cycle of a Java Program
Java Programs Insulated From
Java is Dynamic-The Runtime Process

2. Class and Object
Defining Classes
The Class in Java
Storing Data in Objects
Behavior and Methods
Data Access and Return Values in
Pretty Pictures
About Java Primitive Data Types
Working with Methods and Data
Local Variables
Overloading Methods
The toString() Method
Encapsulation: Black Boxes
Private Access
Other Capabilities
Static Members
Accessing Static Members
final Variables
Null objects
Wrapper Classes

3. Review-Flow of Control,String and Array
Flow of Control
The Comparison Operators
The Logical Operators
Using Strings

Resolving Naming Conflicts
Creating a Package
Access Control for Class Members
Finding Classes
Organizing Files and Packages
Class Path
What is JAR?

5. Composition and Inheritance
Benefits/Issues with
Inheritance and Dealing with Complexity
Inheritance Hierarchy
Inheriting from the Superclass
Constructors and Inheritance
Overriding and Polymorphism
Changing Behavior
OO Concepts-Polymorphism
Access Control-protected Access
Class Object
Abstract Classes

6. Interfaces
Interface Types
Interface Definitions
Implementing Extended Interfaces
Interfaces are Abstract
Data Members in Interfaces
Multiple Interfaces

7. Exceptions
Exception Hierarchy
Handling Exceptions
Program Flow with Exceptions
Variable Scope
Throwing Exceptions with throw
User-Defined Exceptions
Multiple catch Blocks
Multicatch (Java 7)

8. Collections and Generics
Java Collections Framework
java.util Collection Interfaces
Collection Interfaces
List and ArrayList
Summarizing Collection Features
Collections of Object
Other Collection Types
Using Sets
Map Interface
More about Generics
The Collection Class

9. Database Access with JDBC & JPA
What is JDBC?
JDBC Architecture
The Fundamental JDBC API
Common JDBC Types
Naming Databases with URLs
The Item Database Table
JPA Overview
JPA Architecture
Working with JPA
Entity Classes
MusicItem Entity Class
The Persistence Unit
The Entity Manager
Working with Transaction
Using JPA

10. Additional Language Features
Type-Safe Enums
Advanced enum Features
The Issue
Other Java Features

11. I/O Streams
Character Streams
Class Readers and Writers
Filter Streams
Converting between Streams and Readers/Writers
Byte Stream Classes
Formatted Output
Format Specifier Modifiers
New I/O (NIO) APIs
NIO Features

12. Nested / Inner Classes
Why Use Inner Classes?
Types of Inner Classes
Anonymous Inner Classes
Static Inner Classes
Using Inner Classes

13. Reflection
The Class Class
Getting Class Instances
Inspecting with Reflection
Working with Constructor Objects
Invoking with Reflection

14. Introduction to ant
What is an ant?
Installing and Running ant
ant Basics
ant Buildfiles and Projects
ant Tasks
A Complete Buildfile
How is ant Useful?

15. Working with Paths and Resource Collections
Specifying the Classpath
Resource Collections

16. ant Tasks
Creating Archives with
Creating Web Archives with
File Related Tasks
Other Useful Tasks

17. maven Overview
About Maven
Acquiring / Installing Maven
Maven Concepts
The POM (Project Object Model)
Using Maven
Common maven Commands
Creating Project Structure
Setting Java Version

18. JUnit
JUnit Overview
Writing JUnit Tests
Testing for Exceptions
Running the Tests
The Result and Failure Classes

19. Organizing Tests with JUnit
Fixtures and Suites
ant task
Setting up Ant for Using

20. Introduction to Logging & log4j
Loggers, Levels, Appenders
Using Loggers
Log4j Appenders
Configuring Appenders & Loggers
Logger Hierarchy
Level Inheritance
Configuring Appenders
Layouts-Pattern & HTML
Other Details
Disabling Debugging and Performance
Apache Commons Logging
Tools Resources


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
Year Created

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.  


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
Job Count
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.