Intro
Who am I?
Agenda
Agenda: What are continuations
Confusing definitions Confusing name - 1
Confusing definitions Confusing name - 2
Confusing definitions Confusing name - 3
Let's clarify that
... what do they do? - 1
... what do they do? - 2
... what's in it for you? - 1
... what's in it for you? - 2
better name:
Resumable Markers
Concretely
Marks a location in your code (pseudo code)
Marks a location in your code (pseudo code)
Captures the context (pseudo code)
Captures the context (pseudo code)
Captures the context (pseudo code)
Stores context and location (pseudo code)
Stores context and location (pseudo code)
Stores context and location (pseudo code)
Agenda
Web applications have different requirements
Continuations and the web
Continuations and the web
These are called
partial continuations
Let's look at a practical example
Example
Example
Example
Example
How does it compare?
How does it compare?
Summarized
Call/answer continuations
Call/answer continuations
Call/answer continuations
Let's look at another practical example
Data modification page
Example
Example
Example
Example
Confirmation dialog
Example
Example
Example
Example
Data modification page
Example
Example
Step-back continuations
Step-back continuations
Step-back continuations
Step-back continuations
What would you use this for?
What would you use this for?
So what are the downsides?
Downsides to web continuations
Agenda
Existing Java tools
Existing Java tools
Existing Java tools
Existing Java tools
Agenda
Other notable application domains
Other notable application domains
Agenda
Continuations Provider API JSR
State management has always been a complex and tricky part of web application development. Continuations simplify this and automatically allow you to create a one-to-one conversation between users and a web application. State preservation and flow control no longer need to be handled manually, bringing you back to the simplicity of single user console applications. Remember 'scanf()'? This presentation introduces continuations from general principles, followed by practical examples that demonstrate how they benefit web application development and their frequent usage patterns.
Geert Bevin is the CEO of Uwyn, a small custom application development company with a strong focus on Web applications, open-source, Java and rich internet technologies. He is the founder of the RIFE project which provides a full-stack Java Web application framework for quickly building maintainable applications with sustainable developer productivity. He also started or contributed to projects like Bla-bla List, OpenLaszlo, Drone, Bamboo, Elephant, RelativeLayers, and Gentoo Linux.