Java 8: Lambdas and Streams

Evening Sessions, January 2014 in Hanover MD
Co-Sponsored by ProObject


This class is now over. Next public version is set for August 25-26 2014 at the Johns Hopkins Dorsey Center in Maryland. Details and registration coming in June, but in the meantime, please contact hall@coreservlets.com for information on a customized onsite version at your location. Lower price, more convenient for your developers, and customizable content. For clients in the Baltimore/Washington area, late afternoon, evening, or weekend sessions can be arranged.

This class is now over. Next public version is tentatively set for fall 2014 at the Johns Hopkins Dorsey Center in Maryland. In the meantime, please contact hall@coreservlets.com for information on a customized onsite version at your location. Lower price, more convenient for your developers, and customizable content. For clients in the Baltimore/Washington area, late afternoon, evening, or weekend sessions can 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 Tuesday/Thursday evening January 7 and 9 or Tuesday/Thursday evening January 14 and 16 at ProObject in Hanover, Maryland. Both sessions are identical and run from 4:00 pm to 8:00 pm to accommodate students that want to learn about Java 8 but do not want the course to interfere with their normal work schedules. 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 brand new, Marty has already presented on Java 8 lambdas and streams to Google HQ in Mountain View, the Google NY office, the Northern Virginia Java User's Group, to a group of DoD contractors in Maryland, at the Great Indian Developer Summit in Bangalore India, to Informatica in Hyderabad India, to Jackson in Lansing, Michigan, and at a one-day public course co-sponsored by Johns Hopkins Engineering for Professionals.

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. Note: a full-day version of this course will also be held August 25-26 2014 at the JHU Dorsey Center in Elkridge Maryland. After the January evening courses, this page and the associated registration form will be updated to reflect that course.


Course Overview

Lambda expressions in Java are a way of representing "functions", and Java 8 introduces a number of prebuilt function building blocks as well as a set of function composition methods. Although lambda expressions are not quite real functions, they are close enough for most purposes, and have very succinct syntax that looks like Scala anonymous functions (minus the type declarations) and are even moderately similar to JavaScript anonymous functions.

Streams are wrappers around collections that use lambdas pervasively. They support many convenient and high-performance operations that use lambdas, including "map", "reduce", "filter", and "forEach". They also 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 concurrently, without any explicit multithreading code.

Now, lambdas don't exactly turn Java into Lisp, and streams don't exactly turn Java SE into Hadoop or the Google File System. 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 8 training course hosted by ProObject in Hanover, Maryland. You can choose from two identical sessions: Jan 7/9 and Jan 14/16. Both run from 4:00 pm to 6:00 pm. Important: We will supply bound student notebooks, exercises, exercise solutions, internet access, the conference room, food, and all necessary software. But, you must bring your own laptop (Windows, Mac, or Linux) for doing the exercises.

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 coreservlets.com, a training and consulting company focusing on server-side Java technology, Android development, and Rich Internet Apps with Ajax. In addition to long Java development and consulting experience, Marty has an extensive background in teaching and training, having given training courses on Java 7, Java 8, JSF 2, PrimeFaces, Android, Ajax/jQuery, 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, 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 five times at JavaOne. 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, including Core Servlets and JSP, and is the co-author of the upcoming JSF 2.2 edition of Core JSF.

  • 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, Macedonian, 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.

Prerequisites

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

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

Venue

The course is hosted by ProObject in Hanover, Maryland. We will supply bound student notebooks, exercises, exercise solutions, internet access, the conference room, food, and all necessary software. But, you must bring your own laptop (Windows, Mac, or Linux) for doing the exercises.

Registration

The course costs $695 per student and includes an extensive course notebook, exercises, exercise solutions, and a light dinner. Compare this price to courses from Sun, Learning Tree, GlobalKnowledge, and Oracle University that cost much more 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 reserve your spot, email registrar@coreservlets.com with the student name(s) and tell us which session(s) you will attend (January 7/9 or January 14/16). If you prefer to pay in advance, you can fill out the course registration form. Space is limited: five previous offerings of coreservlets.com courses were full.

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.

Syllabus

Reminder: This is not a thorough introduction to Java; it covers only the new features of Java 8. If you want a thorough introduction to Java programming that also includes an introduction to 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, reduce, forEach, etc.)
  • The new Optional class
  • Cool stream properties: lazy evaluation, parallel streams, and infinite streams