Java 8: Lambdas and Streams

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 hall@coreservlets.com 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.”

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 atthe Johns Hopkins Dorsey Centerin 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.

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:

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

Marty Hall is president of coreservlets.com, 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.)

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.

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 coreservlets.com courses were full.
Bonus: Register at least two weeks in advance and get a $100 gift certificate from amazon.com.

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.