Achieving Functional Programming in Java
This video is also available in the GOTO Play video app! Download it to enjoy offline access to our conference videos while on the move.
For years, the conventional wisdom around attempting pure functional programming in Java has been "don't", and for plenty of good reasons: lambdas weren't supported until the eighth major release of the language specification, creating value types is a verbose, ceremony-riddled exercise devoid of any first-class syntax, and neither are the majority of the data structures shipped in the JDK immutable, nor are interfaces a proper substitute in general for type classes.
Still, it's a shame for developers to have to seemingly choose between the myriad benefits of functional programming and the maturity of the java compiler, the investments made into the ecosystem by major organizations, and the ease of hireability especially when some of these short-comings can be addressed externally.
In this talk I'll present Lambda, a Java library that offers:
- A first-class model for functors, applicative functors, monads, coproducts, and more algebraic and category theoretic structures
- Lazy evaluation
- Profunctor optics
- Semigroups and Monoids
- Type-safe heterogeneous structures like HLists and HMaps
- and more...
The goal of this talk is to present this library as a viable option for experienced Java development teams that wish they could use some of the functional programming capabilities available in languages like Haskell?, and to show how the trading infrastructure teams of an algorithmic-trading firm in Chicago use Lambda to write correct-by-construction software and accelerate their development process.
Who should attend this talk: Experienced Java developers who want to program using algebraic data types, compositional patterns like functors and monads, lazy evaluation strategies, and a strong emphasis on type-level transformations, but are daunted by Java's current limitations in these areas
Academic level: Advanced to Expert
What is the take away in this talk: While Java has a long way to go, libraries like Lambda enable developers who want to push their Java programming much further towards functional idioms that previously seemed unachievable
-
It Really is Easier to Ask for Forgiveness (than Permission)Naomi CederTuesday Apr 30 @ 10:20 AM
-
The Soul of Erlang and ElixirSaša JurićMonday Apr 29 @ 3:10 PM
-
Reactive SpringJosh LongMonday Apr 29 @ 10:20 AM
-
Go vs. Elixir for Distributed ComputingVerónica LopezMonday Apr 29 @ 10:20 AM
-
Embracing the Future in a Multi-Platform World: A Kotlin StorySean McQuillanTuesday Apr 30 @ 4:20 PM
-
Getting Started with Quantum ProgrammingGuen PrawiroatmodjoMonday Apr 29 @ 10:20 AM
-
Kotlin: Dissecting the stdlibHuyen Tue DaoTuesday Apr 30 @ 3:10 PM
-
The Language of ProgrammingAnjana VakilMonday Apr 29 @ 11:30 AM
-
Java Current and FutureMikael VidstedtGeorges SaabMonday Apr 29 @ 5:30 PM
-
Server-side Kotlin with CoroutinesRoman ElizarovTuesday Apr 30 @ 5:30 PM
-
Why You Need a Software Delivery MachineRod JohnsonTuesday Apr 30 @ 5:30 PM
-
Achieving Functional Programming in JavaJohn NapierTuesday Apr 30 @ 11:30 AM
-
Why Open Source Firmware is ImportantJessie FrazelleTuesday Apr 30 @ 5:30 PM
-
Fueling the Quantum Application Era with the CloudMurray ThomTuesday Apr 30 @ 11:30 AM