World Congress 2026 Europe • Jul 10, 2026 • Session details

Java Sucks (So C# Didn't Have To)

Adele Carpenter

Java's strict backwards compatibility created massive technical debt, handing C# a clear second-mover advantage. Discover the architectural trade-offs defining both developer ecosystems today.

Pause
Mute Enter Fullscreen
#1 about 4 min

Exploring frustrating elements in Java language design

An initial comparison between Java and C# highlights frustrations like the absence of reified generics.

#2 about 3 min

Origins and early adoption of Java in the 1990s

Pivoting from consumer electronics to the emerging web transforms Java into an internet sensation.

#3 about 4 min

Evaluating the five original design goals of Java

Core principles like simplicity, portability, and native multithreading shaped the language for mass adoption.

#4 about 3 min

Understanding type erasure versus reified generics in Java

Erasing type information during compilation forces workarounds for robust data deserialization at runtime.

#5 about 5 min

Historical constraints justifying type erasure in Java

Strict backwards compatibility and the complexities of multiple virtual machine vendors required keeping the runtime unchanged.

#6 about 2 min

Implementing reified generics efficiently in modern C#

Having a single corporate owner enabled virtual machine updates to natively support runtime type introspection.

#7 about 4 min

Navigating the controversy around checked exceptions

Forcing explicit error handling causes major friction when using closures and functional streaming patterns.

#8 about 2 min

Workarounds for checked exceptions in functional interfaces

Wrapping checked exceptions inside unchecked runtime exceptions removes verbose boilerplate from lambda expressions.

#9 about 6 min

Addressing technical debt with Project Valhalla in Java

Revamped value types aim to eliminate heap allocations and remove indirect memory access for better performance.

#10 about 3 min

Appreciating the maturity and vast ecosystem of Java

Despite evolving design frustrations, backward compatibility ensures critical backend reliability across a vast global ecosystem.

Matching moments

13:57 min

History of C++ technical debt and language design

Stefan Baumgartner · LIVE

21:18 min

Audience Q&A on developer advocacy and Java trends

Josh Long · LIVE

2:09 min

Overview of the Java features presentation

Michael Inden · LIVE

4:55 min

Discussing modern Java language evolution and syntax innovations

Daniel Strmečki · LIVE

4:54 min

Learning Java features and design patterns interactively

Jakov Semenski · LIVE

2:27 min

Summarizing the path forward for Java evolution

Michael Inden · LIVE