-
Onboard
For Tech Teams
- Reduce initial time to productivity.
- Increase employee tenure.
- Plug-and-play into HR onboarding and career pathing programs.
- Customize for ad-hoc and cohort-based hiring approaches.
-
Upskill
For Tech Teams
- Upgrade and round out developer skills.
- Tailor to tech stack and specific project.
- Help teams, business units, centers of excellence and corporate tech universities.
-
Reskill
For Tech Teams
- Offer bootcamps to give employees a running start.
- Create immersive and cadenced learning journeys with guaranteed results.
- Supplement limited in-house L&D resources with all-inclusive programs to meet specific business goals.
-
Design
For Tech Teams
- Uplevel your existing tech learning framework.
- Extend HR efforts to provide growth opportunities within the organization.
- Prepare your team for an upcoming tech transformation.
Get your team started on a custom learning journey today!
Our Boulder, CO-based learning experts are ready to help!
Course Summary
The Functional Programming for Java Developers training course is designed to provide the Java Developer with the knowledge and skills to incorporate functional programming into their daily coding lives.
The course begins by covering the fundamentals of functional programming in contrast to imperative programming and how functional style can reduce bugs, and increase the maintainability of code. Next, students will learn about immutability, pure functions, functions as first-class values, higher-order functions, and simple monads. The course also introduces functional concurrency, with Java’s Promise mechanism, provided by the CompletableFuture API. The course also teaches how to mix programming styles during migration, and how to handle exceptions in a functional system. The course concludes with investigating the overlap between object-oriented programming concepts such as the Liskov Substitution Principle and design patterns with functional concepts.
Hands-on exercises will be incorporated throughout to enhance learning.
- Productivity Objectives:
- Describe Functional Programming and how it differs from imperative programming
- Explain how side-effect-free functions reduce errors and are easier to test
- Employ immutable data, and understand how immutable data structures can be used in a memory-efficient way
- Formulate higher-order functions and use syntax that simplifies these constructs
- Utilize generics, along with co- and contra-variance to create more reusable functional code
- Examine Monads and Functors and common operations these provide
- Use common Monadic libraries for parallel and asynchronous data processing
Request Information
Get your team upskilled or reskilled today. Chat with one of our experts to create a custom training proposal. Fully customized at no additional cost.

If you are not completely satisfied with your training class, we'll give you your money back.




about our training
-
Real-World Content
Project-focused demos and labs using your tool stack and environment, not some canned "training room" lab.
-
Expert Practitioners
Industry experts with 15+ years of industry experience that bring their battle scars into the classroom.
-
Experiential Learning
More coding than lecture, coupled with architectural and design discussions.
-
Fully Customized
One-size-fits-all doesn't apply to training teams. That's where we come in!
What You'll Learn
In the Functional Programming for Java Developers training course, you'll learn:
- Introducing the Pure Function Concept
- What are “side effects”?
- What are “observable side effects”?
- Why we care: composability of program elements and maintenance
- Avoiding mocking: Testing a pure function
- Refactoring our thinking and designs for pure functions
- Immutability in the Real World
- Unresolved and resolved values
- Variable names and “meaning something else”
- Expressions versus variables
- Warning: Initialization is mutation
- Overview of recursion
- Overview of immutable data structures
- Solving a Simple Design Problem Using Imperative and Functional Styles
- Printing items from a list
- Passing behavior as function arguments
- Introduction to higher-order functions
- Java’s Lambda Syntax
- Lambdas
- The single abstract method and functional interfaces
- Method reference syntax
- Behavior Factories
- Methods returning behaviors
- Returning behaviors that depend on the factory arguments
- Closures in Java
- Function decorators
- Investigating some of Java’s standard function decorators
- The Importance of Generics in Functional Programming
- Generics as the polymorphism of functional style
- Using generics to describe higher-order functions
- Co- and contravariance in higher-order function arguments
- Introduction to the Monad Concept
- A smart container
- Selecting items
- Changing items, the Functor
- The flatMap method, the Monad
- Introduction to Producing a Final Result
- The reduce operation
- More Advanced and Parallel Production of a Result
- The Monoid
- Reductions to a different type
- Fold operations
- Overview of Monad-like Libraries and Frameworks
- Java Streams
- Java’s Promise API, the CompletableFuture
- Spark Streaming
- Handling Errors in Functional Programming
- Using reliable, purpose-specific, abstract data types can avoid problems
- Total vs partial functions
- The trouble with exceptions
- Using Optional and Either monad-like features
- Wrapping code that throws exceptions
Real-world content
Project-focused demos and labs using your tool stack and environment, not some canned "training room" lab.
Expert Practitioners
Industry experts that bring their battle scars into the classroom.
Experiential Learning
More coding than lecture, coupled with architectural and design discussions.
Fully Customized
One-size-fits-all doesn't apply to training teams. That's where we come in!

Elite Instructor Program
We recently launched our internal Elite Instructor Program. The community driven instructor program is designed to support instructors in transforming students’ lives by consistently showing a world-class level of engagement, ability, and teaching prowess. Reach out today to learn more about our instructors.
Customized Technical Learning Solutions to Help Attract and Retain Talented Developers
Let DI help you design solutions to onboard, upskill or reskill your software development organization. Fully customized. 100% guaranteed.
DevelopIntelligence leads technical and software development learning programs for Fortune 500 companies. We provide learning solutions for hundreds of thousands of engineers for over 250 global brands.



“I appreciated the instructor’s technique of writing live code examples rather than using fixed slide decks to present the material.”
VMwareAbout Us
LET’S DISCUSS
DevelopIntelligence has been in the technical/software development learning and training industry for nearly 20 years. We’ve provided learning solutions to more than 48,000 engineers, across 220 organizations worldwide.
Resources
Thank you for everyone who joined us this past year to hear about our proven methods of attracting and retaining tech talent.

- Boulder, Colorado Headquarters: 980 W. Dillon Road, Louisville, CO 80027
© 2013 - 2022 DevelopIntelligence LLC - Privacy Policy