Customized Java 7 & Java 8 Training Courses

“Wonderful. In 20 years, this is the best organized, most pragmatic and enjoyable course I've taken.”

“The best instructor-led course I have attended, by far.”

“Best short course ever!”

“Compared to the other short courses I have taken, this one completely redefined my scale from 1-10.”

“In my 35+ years of taking technical courses, Marty's classes consistently come out ranking #1 on my list. Highly relevant material is delivered with enthusiasm, humor, and a high degree of class interaction that is unmatched anywhere.”

more student reviews

Java Logo Looking for practical, hands-on training on Java programming taught onsite at your organization? Look no further! These courses are personally developed and taught by leading Java EE and Ajax developer, speaker, and author Marty Hall. No contract instructor regurgitating someone else's materials! Marty has taught courses on Java 7, Java 8, JSF, PrimeFaces, Android, Ajax/jQuery, servlets, JSP, and other Java EE topics to dozens of organizations in the US, Canada, Mexico, Australia, Japan, Puerto Rico, India, Norway, Cambodia, and the Philippines, all to rave reviews.

If you have a group of at least eight interested developers (10 for courses outside North America), contact Marty to arrange a course at your location. Onsite courses are easier administratively, are better for clients since the topics and pace can be customized, are more cost effective for students since no travel is required, and are more convenient (for companies in the Baltimore/Washington area) because the schedule is flexible (e.g. afternoons or evenings instead of n consecutive days). However, if you have too few developers for an onsite course, check out the upcoming public Java 7 and Java 8 training courses in Maryland.

Expand some of the following sections for more details and various course options. Then email to discuss which options would work best for your developers.

Overview and Course Options

Java is the world's most popular and widely-applied programming language, but it is large, complex, and sometimes difficult to get started with. Our courses give a practical, hands-on introduction to programming with Java 7 and Java 8, the latest versions of the language. The exact topics covered depend on what you are trying to learn (see options below), but every course section gives details on the most important topics, surveys more advanced or lesser-used topics, stresses best practices, and gives plenty of working examples. All our courses are in lecture/lab format, where each course section is followed by a series of hands-on exercises that use Java and Eclipse to reinforce the concepts. There is a choice of exercises of varying complexity so as to accommodate developers with various levels of expertise and previous experience, and at the end of the course, the students can keep all of the source code from the lectures and all the exercise solutions, available free for unrestricted use.

What you want covered in a Java course depends in large measure on how you intend to apply it. Here are some popular options:

  • Java: A Crash Course for Server-Side Developers. This is a five-day course that covers both Java 7 and Java 8, but omits most of the topics on desktop graphics in Java. This is perhaps the most popular course choice, aimed at developers that intend to apply Java to a wide range of enterprise and Web applications, but not to desktop applications. The course provides thorough coverage of the the foundational Java topics: basic syntax, object-oriented programming, handling exceptions (including multicatch and try-with-resources), using core data structures like Lists and Maps that support generics, and handling asynchronous events with inner classes. It also also gives a fast-moving survey of some of the most important libraries: multithreaded applications, network programming for clients, and network programming for servers. It also covers several advanced topics: making your own methods and classes that support generic types, serialization, lambda expressions, and bulk operations with Java 8 streams.
  • Java 7: A Crash Course for Server-Side Developers. This is a four-day variation of the above course that drops the topics on lambdas and streams in Java 8. It is intended for server-side developers using commercial app servers that are tied to Java 7 or earlier, and who cannot easily upgrade to Java 8. Java 8 is particularly well-suited to server-side apps, so only rule out Java 8 if you are sure your app server cannot be upgraded anytime soon.
  • Java: A Crash Course. This is a 5-7 day course that is like #1 (with Java 8) or #2 (without Java 8) above, but that also adds in topics on desktop graphics in Java.
  • Lambdas and Streams in Java 8. This is a two day course that covers the two most important new features in Java 8: lambda expressions and streams. Unlike the other courses listed above, this one is for developers that already know Java, and who just want to learn the powerful new Java 8 features. There are four main reasons that it is important to know Java 8:
    • More flexible and reusable code (thanks to lambdas). Lambda expressions in Java 8 are a way of representing "functions", and their judicious use can make your code significantly more adapatable and reusable.
    • Convenience (thanks to high-level Stream methods). Streams are wrappers around collections (or other data sources) that use lambda expressions pervasively. They support many convenient and high-performance operations that use lambdas, including "map", "reduce", "filter", and "forEach". These methods make many types of code much simpler to write, as compared to the comparatively clunky and low-level Collection methods.
    • Faster and more memory efficient code (thanks to lazy evaluation and automatic parallelization). Streams support lazy evaluation, so if you map firstName over Employees, filter ones that start with "P", then choose the first, it really only maps and filters until the first match. Streams can also be parallel, so that the operations are automatically done in parallel, without any explicit multithreading code.
    • Adapt to the times. Others will be using lambdas and streams, since they are standard part of Java SE as of March 2014. So, you have to learn the Java 8 features simply to be able to use and modify others’ code. Besides, once you get a taste of their power, you will want to use the new features frequently.
  • Web Apps in Java. Courses on JSF 2 and PrimeFaces require that you already know core Java, so are listed separately on the JSF and PrimeFaces training page.
  • Android Programming: Mobile Development in Java. Native Android apps are written in Java, and also require that you already know core Java, so they too, are listed on a separate page.
  • Java EE topics. Java EE topics such as Hadoop, Spring, Hibernate/JPA, GWT, RESTful Web Services, and Ajax/jQuery are usually taught in separate 3-5 day courses that assume the students already have moderate to strong Java knowledge. For details, see the Java EE training page. However, very brief introductions to Spring, Web Services, and JSF can be integrated into the various Java training courses listed above.
Email to discuss which options would work best for your developers.

Intended Audience

As discussed in the section above, what we cover depends on how you expect to apply Java. However, all of our Java programming courses are aimed at developers that have at least moderate experience with other programming languages. The exact topics and pace of the course can be customized based on the experience of your developers (e.g., since C# is very similar to Java, a course for experienced C# programmers could move faster than a course for Python or VB or C programmers). However, all of the courses move too fast for first-time programmers.

Syllabus Choices

Here is a potpourri of possible topics. As discussed above, the topics covered in any course are customizable, but the most common options are: with or without Java 8, with or without most desktop grapics topics, and Java 8 only. When you book a course, we will first decide on the exact topics based on your needs and level of experience. Email to inquire about a custom course at your location.

Introduction to and Overview of Java

  • Truths / Myths About Java
    • Java is Web-Enabled?
    • Java is Safe?
    • Java is Cross-Platform?
    • Java is Simple?
    • Java is Powerful?
    • Java is Popular?
  • Java Versions and Application Areas
    • Standard edition
    • Enterprise edition
    • Micro edition

Java with Eclipse: Setup and Getting Started

  • Installing Java
  • Installing Eclipse
  • Importing sample projects
  • Executing simple desktop programs
  • Executing applets
  • Eclipse shortcuts

Basic Java Syntax

  • Creating, compiling, and executing simple Java programs
  • Accessing arrays
  • Looping
  • Indenting code
  • Using if statements
  • Comparing strings
  • Building arrays
  • Performing basic mathematical operations
  • Reading command-line input

Basic Object-Oriented Programming in Java

  • Similarities and differences between Java and C++
  • Object-oriented nomenclature and conventions
  • Instance variables (data members, fields)
  • Methods (member functions)
  • Constructors
  • Example with four variations

Object-Oriented Programming in Java: More Capabilities

  • Overloading
  • Best practices for "real" classes
    • Encapsulation and accessor methods
    • JavaDoc
  • Inheritance
  • Quick intro to advanced topics
    • Abstract classes
    • Interfaces
    • @Override
    • The classpath
    • Packages
    • Visibility modifiers (public, private, protected, [default])
    • JavaDoc options

Applets and Basic Graphics

  • Applet restrictions
  • Basic applet and HTML template
  • The value of @Override
  • The applet life-cycle and the idea of life-cycle methods in general
  • Customizing applets through HTML parameters
  • Methods available for drawing operations
  • Loading and drawing images
  • Using try/catch blocks
  • Controlling image loading

Basic File IO with the NIO Package

  • More on try/catch blocks
    • finally blocks
    • multicatch
    • try with resources
  • Path
  • Simple file reading: all lines at once into List
  • Simple file writing: all at once from a List
  • Some simple file reading and writing utilities
  • Faster and more flexible file reading
  • Faster and more flexible file writing

More Java Syntax and Utilities

  • Data structures
    • ArrayList
    • LinkedList
    • HashMap
  • Using classes and methods that support generic types
  • Defining your own classes and methods that support generic types
  • printf
  • varargs
  • String vs. StringBuilder

Asynchronous Event Handling

  • General event-handling strategy
  • Event-handling options (same four options will be used later with GUI controls and threads)
    • Handling events with separate listeners
    • Handling events by implementing interfaces
    • Handling events with named inner classes
    • Handling events with anonymous inner classes
    • Preview: handling events with Java 8 lambdas
  • The standard AWT listener types
  • Subtleties with mouse events

AWT Components

  • GUI libraries in Java: AWT, Swing, SWT, Java FX
  • Basic AWT windows
    • Canvas, Panel, Frame
  • Closing frames
  • Processing events in GUI controls
  • Basic AWT user interface controls
    • Button, checkbox, radio button, list box

Organizing Windows with Layout Managers

  • How layout managers simplify interface design
  • Standard layout managers
    • FlowLayout, BorderLayout, CardLayout, GridLayout, GridBagLayout
  • Positioning components manually
  • Strategies for using layout managers effectively
  • Drag-and-drop GUI builders for Java

Drawing with Java 2D

  • Overview
  • Drawing Shapes
  • Paint Styles
  • Transparency
  • Using Local Fonts
  • Stroke Styles
  • Coordinate Transformations
  • Requesting Drawing Accuracy

GUIs: Basic Swing

  • New features vs. AWT
  • Basic approach
  • Starting points: JApplet, JFrame
  • Swing equivalent of AWT components (and the new features the Swing components introduce)
  • Swing components that have no AWT equivalent
  • Other simple Swing components

GUIs: Advanced Swing and MVC

  • Building a simple static JList
  • Adding and removing entries from a JList at runtime
  • Making a custom data model: telling JList how to extract data from existing objects and using toString to display a String but return a complex object upon selection
  • Making a custom cell renderer: telling JList what GUI component to use for each of the data cells

Multithreaded Programming

  • Why threads?
  • Basic approach
    • Make a task list with Executors.newFixedThreadPool
    • Add tasks to the list with tasks.execute(someRunnable)
  • Three variations on the theme
    • Separate classes that implement Runnable
    • Main app implements Runnable
    • Inner classes that implement Runnable
  • Related topics
    • Race conditions and synchronization
    • Helpful Thread-related methods
    • Brief summary of advanced issues in concurrency

Network Programming: Clients

  • Creating sockets
  • Implementing a generic network client
  • Parsing data: StringTokenizer (simple but weak) and String.split with regular expressions (more complex but much more powerful)
  • Getting user info from a mail server
  • Retrieving files from an HTTP server
  • Retrieving Web documents by using the URL class

Network Programming: Servers

  • Steps for creating a server
    1. Create a ServerSocket object
    2. Create a Socket object from ServerSocket
    3. Create an input stream
    4. Create an output stream
    5. Do I/O with input and output streams
    6. Close the socket
  • A generic network server
    • Single threaded
    • Multithreaded
  • Accepting connections from browsers
  • A Simple HTTP server

Network Programming: Using Serialization to Send High-Level Data Structures

  • Idea
  • Requirements
  • Steps for sending data
  • Steps for receiving data
  • Example: saving GUI in file
  • Example: sending GUI across network

Java 8: Installation, Setup, and Review of Foundational Topics

  • Installing Java 8
  • Installing an IDE that supports Java 8
  • References
  • Review of basic handlers and anonymous classes: separate classes, main class that implements the interface, named inner classes, anonymous inner classes
  • Review of making generic classes and methods

Java 8 Lambda Expressions Part 1

  • Lambdas: intro, motivation, and big idea
  • Lambda expression interpretation
  • Most basic form of lambdas
  • Type inferencing
  • Expression for body
  • Comparing Java and JavaScript sorting
  • Omitting parens
  • Using effectively final variables
  • @FunctionalInterface
  • Method references
  • java.util.function package

Java 8 Lambda Expressions Part 2

  • Lambda building blocks in java.util.function: overview
  • Predicate
  • Function and BiFunction
  • Consumer
  • Supplier
  • BinaryOperator

Java 8 Lambda Expressions Part 3

  • Variable scoping: Local variables, instance variables, "this"
  • Method references: details -- Class::staticMethod, variable::instanceMethod Class::instanceMethod, Class::new
  • New features in Java 8 interfaces: Default methods (also called "virtual extension methods" or "defender methods") and static methods
  • Methods that return lambdas: From Predicate: and, or, negate, isEqual; From Function: andThen, compose, identity; From Consumer: chain; Custom methods

Java 8 Streams Part 1

  • Overview of Streams
  • Building Streams
  • Outputting Streams into arrays or Lists
  • Core Stream methods: overview, forEach, map, filter, findFirst
  • Lazy evaluation and short-circuit operations

Java 8 Streams Part 2

  • The remaining Stream methods (especially reduce) not covered earlier
  • Parallel Streams
  • Infinite Streams (really unbounded streams with values that are calculated on the fly)

XML Parsing and DOM

  • Options for input files
  • XML overview
    • Comparing XML with HTML
  • Parsing an XML document
    • Creating a DocumentFactory and Document
  • Extracting data from parsed Document
    • Known structure, attribute values only
    • Known structure, attribute values and body content
    • Unknown structure

Accessing Databases with JDBC

  • Overview of JDBC technology
  • JDBC design strategies
  • Using Apache Derby (Java DB)
  • Seven basic steps in using JDBC
  • Using JDBC from desktop Java apps
  • Using JDBC from Web apps
  • Prepared statements (parameterized commands)
  • Meta data
  • Transaction control

About the Instructor

Marty Hall Marty Hall is president of, a training and consulting company focusing on server-side Java technology, Android development, and front-end development with JavaScript and jQuery. In addition to long Java development and consulting experience, Marty has an extensive background in teaching and training, having given training courses on Java (now using Java 8), JSF 2, PrimeFaces, Android, Ajax/jQuery, GWT, and other Java EE topics in Japan, Canada, Australia, the Philippines, Mexico, Puerto Rico, India, Cambodia, Norway, and dozens of US venues. He has taught onsite at Google (both the Mountain View and NY offices), the NSA, the CIA, General Dynamics, Northrup Grumman, General Motors, VeriSign, Symantec, the Federal Reserve Bank, Comcast, Hewlett Packard, Fannie Mae, Motorola, Learjet, the US Navy, the Australian Treasury Department, Telenor Norway, and dozens of other organizations around the world. (A more extensive list can be found on Marty's bio page.)

JavaU @ JavaOne

A popular and entertaining speaker, Marty has also spoken at conferences and user groups around the world, including Comdex, the Web 2.0 Expo, and six times at JavaOne, most recently in 2015. Marty is also adjunct faculty in the Johns Hopkins University part-time graduate program in Computer Science, where he directs the Java and Web-related concentration areas.

Marty Hall is also the lead author of six popular Java EE books from Pearson, including Core Servlets and JSP, and is the co-author of the upcoming JSF 2.3 edition of Core JSF. He has also produced training videos for Pearson on JSF, PrimeFaces, Java 8 lambdas and streams (for those that know Java 7), general Java programming using Java 8 (for those new to Java), JavaScript, and jQuery.

  • Core Servlets and JSP is the all-time worldwide bestselling servlet/JSP book, published in Bulgarian, Chinese Simplified Script (Mainland China), Chinese Traditional Script (Taiwan), Czech, Greek, English, French, German, Hebrew, Japanese, Korean, Polish, Portuguese, Russian, and Spanish.
  • Core JSF is widely recognized as the leading text on Web App development with JavaServer Faces.
  • In addition be being best sellers in industry, Marty's books have been widely used in academia (including Stanford, MIT, Princeton, U.C. Berkeley, UCLA, Johns Hopkins, and dozens of others).

For more details, please see the Marty Hall bio.

Course Reviews

Here are a few of the reactions of previous students; we are confident that you will have the same reaction. So confident, in fact, that we offer an unconditional guarantee: if you are not satisfied with the course, we will refund the full cost.

“In my 35+ years of taking technical courses, Marty's classes consistently come out ranking #1 on my list. Highly relevant material is delivered with enthusiasm, humor, and a high degree of class interaction that is unmatched anywhere. ”

“Masterful, quick-paced presentation. Witty, but never trite. Discussed but never belabored. A Java ed-venture. A gaggle of Goslings could not have done better!”

“Wonderful. In 20 years, this is the best organized, most pragmatic, and enjoyable course I've taken.”

“Excellent course. The best instructor-led course I have attended, by far. The course was exactly what I was hoping for.”

“Best short course ever!”

“Compared to the other short courses I have taken, this one completely redefined my scale from 1-10.”

“This course was AWESOME. I came with very little knowledge of JSF and now I look forward to using it on my next project.”

“GREAT class [JSF]. Do you make house calls?”

Promos for Marty Hall at GIDS conference in Bangalore

Ads for Marty at GIDS conference in India

“I'm not easily pleased by industry courses. Luckily, not all presenters are as good as Marty, otherwise University lecturers like myself would be out of work.”

“This was, by far, the best Java training course I have attended... After 4 days, I feel prepared to dive into JSF development with a solid understanding of the basics. I know this is going to make my life easier over the next year. Thank you!”

“Marty is a fantastic teacher and communicator. I thoroughly enjoyed the course and it was timely for my current work.”

For more reviews, please see the course review page.

Other Onsite Java EE Training Courses offers customized onsite courses on general Java programming using Java 8 (for those new to Java), Java 8 lambdas and streams (for those experienced with earlier Java versions), JSF 2, PrimeFaces, Hadoop (including certification prep), the Java EE 8 MVC framework, Android programming, JavaScript and jQuery, the Spring Framework, GWT, servlets/JSP, and custom combinations of topics. Available at any location worldwide.

  • Guinea pigs? No! Our courses are well-tested, having been taught in 9 countries and dozens of US venues. We don't use your developers as guinea pigs for new materials.
  • Regurgitation? No! Our instructors developed all their own materials. No contract instructor regurgitating memorized PowerPoint slides.
  • Green? No! Our instructors are experienced developers, and most have authored popular Java EE texts, spoken at JavaOne, and done extensive onsite training. The course gives best practices and real-world strategies. No newbie instructor dodging tough questions.

For more details, please see the training course home page, or email

Public Training Courses

Coreservlets normally runs on-site training courses at customer locations. This is easier administratively, is better for clients since the topics and schedule can be customized, and is more cost effective for students since no travel is required. However, due to demand from those who do not have enough students for an on-site course, we periodically run public training course at the Johns Hopkins Dorsey Center in Elkridge MD. These courses feature the same experienced instructors as our onsite courses, and are co-sponsored by Johns Hopkins Engineering for Professionals.


For more details, please see the public course schedule.