Java 8: Lambdas and Streams

February 9-11 2016, JHU Dorsey Center, Elkridge MD
Co-Sponsored by Johns Hopkins Engineering for Professionals

This class is now over. Next public version is tentatively set for fall 2016 at the same Johns Hopkins location in Maryland. In the meantime, please contact for information on a customized onsite version at your location. Lower price, more convenient for your developers, and customizable content. Full-day courses can be held at any location worldwide, but for clients in the Baltimore/Washington area, late afternoon, evening, or weekend sessions can also be arranged.

“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 8 is by far the most significant upgrade to the Java programming language since at least 2004, when Java 5 introduced generics to the language. This course gives a practical, hands-on introduction to the most important features of Java 8: lambda expressions and streams. Along the way, we will look at some new features that support lambdas and streams: default (defender) methods, the Optional class, StringJoiner, and a few others. But, lambdas and streams are more than just new libraries: they are fundamental changes to the Java 8 programming model and to the entire style of Java development.

This page describes the public (open enrollment) training course on Java 8 to be held February 9-11 2016 at in Elkridge, MD (co-sponsored by the Johns Hopkins University Engineering for Professionals program). The entire course is personally developed and taught by leading Java developer, speaker, and author Marty Hall. No contract instructor regurgitating someone else's materials! Marty has taught Java technology courses onsite for dozens of organizations in the US, Canada, Mexico, Australia, Japan, Norway, Puerto Rico, India, Cambodia, and the Philippines, all to rave reviews. Although Java 8 is new, Marty has already presented on Java 8 lambdas and streams to Google HQ in Mountain View, the Google NY office, the Federal Reserve Bank of Richmond, the Northern Virginia Java User's Group, at the Great Indian Developer Summit in Bangalore India, to Informatica in Hyderabad India, to Jackson in Lansing, Michigan, at a public course co-sponsored by Johns Hopkins Engineering for Professionals, and for several DoD contracting companies in Maryland.

If you are looking for customized training courses on Java 7 or 8, JSF 2, PrimeFaces, Android, Ajax, jQuery, Hadoop (and Hadoop cerfication), GWT, Spring, Hibernate, Servlets, JSP, HTML5, or RESTful Web Services taught on-site at your company, please see this page.

Register Early! Five of Marty's previous public short courses were full, so reserve your spot today. Registrations are taken in the order they are received.

Course Overview

The final version of Java 8 was released in March 2014, and it is by far the most significant upgrade to the Java programming language since at least 2004, probably since Java's inception. In general, Java 8's high-level goals were to make more flexible code, to better use multiple cores, and to more easily deal with large data sets. In specific, there are four main reasons that it is important to know Java 8:

  1. 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.
  2. 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.
  3. 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.
  4. Adapt to the times. Others will be using lambdas and streams, since they are standard parts of Java SE as of 3/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.

Java 8 is a very popular topic now, and in the last year Marty has done Java 8 courses and talks for Google headquarters in Mountain View California, for the Google office in New York City, for the Federal Reserve Bank of Richmond, for Jackson Insurance in Michigan, for the State of Michigan Attorney General's Office, for Informatica in Hyderabad India, for the Great Indian Developer Summit in Bangalore India, for the Northern Virginia Java User's Group, for a course in Maryland sponsored by Johns Hopkins Engineering for Professionals, for JHU/EP Computer Science faculty, for G2 in Maryland, for IntelliGenesis in Maryland, and for ProObject in Maryland.

Now, lambdas don't exactly turn Java into Lisp, and streams don't exactly turn Java SE into Hadoop. Nevertheless, they provide significant new capabilities to Java, and taken together, lambdas and streams result in by far the biggest change in Java programming style since at least 2004, when generics and annotations were added to the language. This course will summarize the syntax and usage of Java 8 lambda expressions, introduce streams, and give examples of the types of applications to which they are well suited. Each section is followed by a series of hands-on exercises that use Java 8 to reinforce the concepts.

Marty 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, Marty will be running a public (open enrollment) Java training course at the Johns Hopkins Dorsey Center in Elkridge MD.

The course is developed and taught by Marty Hall, an experienced developer, award-winning instructor, popular conference speaker (5 times at JavaOne), and author of several bestselling Java books.

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.


This course assumes that you have moderate to strong previous Java experience. It covers only the new features of the language that were added in Java 8.

If you want a thorough introduction to Java programming that is taught using Java 8, don't take this course: take the five-day Java programming course instead.


JHU/EP Logo The course will be held at the Johns Hopkins Dorsey Center in Elkridge, Maryland. This is a modern, comfortable venue with separate computers for each student, fast internet connections, and with coffee, snacks, and meals included. Class meets from 8:30 am to 4:30 pm daily. For students who prefer to bring their own laptops, fast wifi is available, and you can email the instructor for information on installing the class software in advance.

For Maryland residents, the location is centrally located 5 minutes from BWI airport and has plenty of free parking. For out-of-town students, there are many hotels within 1 mile.


The three-day course costs $1895 per student and includes a commercial Java 8 textbook, an extensive bound course notebook, exercises, exercise solutions, and all necessary software. Free breakfast, snacks, and lunch. Compare this price to courses from Learning Tree, GlobalKnowledge, and Oracle University that cost $3500-$4200 for five-day courses and $2800-$3000 for four-day courses and that do not include textbooks or meals. Besides, those courses almost always use an unknown instructor who did not develop the course materials and often lacks significant real-world development experience.

To register, fill out and send in the course registration form. Space is limited: five previous offerings of courses were full. Bonus: Register at least two weeks in advance and get a $100 gift certificate from

Questions and More Info

  • Guinea pigs? No! Marty's courses are well-tested, having been taught in 8 countries and dozens of US venues. We don't use your developers as guinea pigs for new materials.
  • Regurgitation? No! Marty developed all his own materials. No contract instructor regurgitating memorized PowerPoint slides.
  • Green? No! Marty is an experienced developer, and is the author of 6 popular Java EE texts from Prentice Hall. The course gives best practices and real-world strategies. No newbie instructor dodging tough questions.


Reminder: This is not a thorough introduction to Java; it covers only the new features of Java 8 and is aimed at those with experience in earlier Java versions. If you want a complete introduction to Java programming that is taught using Java 8, don't take this course: take the five-day Java programming course instead.

  • Motivation for lambdas
  • Interpretation of lambdas
  • Most basic form of lambdas
  • Changes to interfaces in Java 8
  • Type inferencing
  • Expression for lambda body
  • Omitting parens
  • Effectively final variables
  • @FunctionalInterface
  • Method references
  • The java.util.function package
  • Higher-order functions: methods (or lambdas) that return lambdas
  • Stream basics
  • Creating streams and outputting streams into standard data structures
  • Key stream methods (filter, map, findFirst, forEach, etc.)
  • Number-specialized streams
  • Reduction operations
  • The new Optional class
  • Cool stream properties: lazy evaluation, parallel streams, and infinite streams
  • Understanding when parallel stream operations are safe