[VDIASI23] - Venkat Subramaniam - Keynote: Where Promises Fall Short

Where Promises Fall Short: Understanding Java Concurrency, Exceptions, and Asynchronous Programming through Imperative and Functional Approaches.

Key takeaways
  • Promises in Java don’t always work as expected.
  • Imperative style code can lead to complex and messy code when dealing with exceptions.
  • Functional style code can be simpler and easier to understand, but doesn’t handle exceptions well.
  • Asynchronous programming can be achieved through Java’s CompletableFuture class, but it’s not easy to write and debug.
  • The concept of non-blocking I/O is important in programming, but it’s not always clear how to implement it.
  • The Java Streams API is a powerful tool for writing concise and efficient code, but it can be confusing for beginners.
  • Writing concurrent code in Java can be challenging, and mistakes can lead to bugs and errors.
  • The thenApply function in Java is often misunderstood and can be confusing to use.
  • Promises in Java are similar to the concept of futures in other programming languages, but have some key differences.
  • Java 8 introduced the concept of lambda expressions and method references, which made functional programming more accessible in Java.
  • The map function in Java is often used to transform data in a functional pipeline, but it can be confusing for beginners.
  • Writing code that is easy to read and understand is important, but can be challenging when dealing with complex topics like concurrency and exceptions.
  • Java 19 introduced a new get method for CompletableFuture, which makes it easier to write concurrent code that is easy to read and understand.