The Road to Valhalla
While Java&#x27;s slow and cautious evolution frustrates developers, it still arguably demonstrates longer-term thinking than the constant accrual of features in its contemporaries such as JavaScript and C#.<p>That isn&#x27;t to say the designers of JavaScript and C# don&#x27;t think carefully about the addition of new features; indeed, was it Anders Heljsberg who made the point about all new proposed features starting with negative points?<p>But Java&#x27;s recent and upcoming additions show _taste_: adopting a single lambda notation that fitted smoothly with the surrounding class-based OOP paradigm via SAM types (rather than magically-generated-type-style lambdas succeeding two overlapping &quot;delegate&quot;&#x2F;&quot;event&quot;-like features); implementing (sadly somewhat-incompatible) modules that can curtail unbounded reflection, opening the door to greater reasonability and performance in the future; proposing Project Loom to avoid the async&#x2F;sync API split that hit Python, C#, and even Kotlin Coroutines; and now Valhalla, which was quietly mulled on for years before arriving at this very reasonable solution that considers myriad angles.<p>I like this approach to language design and think it bodes well for the language&#x27;s future. It&#x27;s a sweet spot between being necessarily conservative, dealing with developers&#x27; real-world problems, and giving time to mull over new language feature designs and not just implementing as soon (and haphazardly) as possible to please vocal developers.