This paper demonstrates the impact of integrating session types and object-oriented programming, through their implementation in Java. Seses provide high-level abstraction for structuring a series of interactions in a simple and concise syntax, and ensure type-safe communications between distributed peers. We present the first full implementation of a language and runtime for session-based distributed programming featuring asynchronous message passing, delegation and session subtyping, combined with class downloading and exceptions. The compilation and runtime framework of our language ely maps session abstraction onto underlying transports and guarantees communication safety through static and dynamic session type checking. We have implemented two alternative protocols for performing correct and efficient session delegation and prove their correctness. Benchmark results show the sestraction can be realised with minimal runtime overhead.