Java
Java’s evolution has accelerated with its six-month release cadence, and Java 21 (LTS, released Sept 2023) was a milestone with 15 major JEPs. Crucially, Virtual Threads (Project Loom) graduated to a final feature in Java 21 (Java 21, the Next LTS Release, Delivers Virtual Threads, Record Patterns and Pattern Matching - InfoQ). These lightweight threads dramatically simplify writing high-concurrency applications – the JVM can schedule thousands of virtual threads efficiently, which improves scalability for IO-heavy workloads (Java 21, the Next LTS Release, Delivers Virtual Threads, Record Patterns and Pattern Matching - InfoQ). In the language, pattern matching capabilities were finalized: Java 21 made record patterns and pattern matching for switch fully standard (after previews) (Java 21, the Next LTS Release, Delivers Virtual Threads, Record Patterns and Pattern Matching - InfoQ) (Java 21, the Next LTS Release, Delivers Virtual Threads, Record Patterns and Pattern Matching - InfoQ). This allows more expressive and safer data queries, e.g. using a switch to destructure records and extract fields in one step. A host of other features arrived as previews in 21: String Templates (JEP 430) provide an f-string style interpolation syntax (preview) (Java 21, the Next LTS Release, Delivers Virtual Threads, Record Patterns and Pattern Matching - InfoQ), and Unnamed Classes and Instance main methods (JEP 445) let you write ad-hoc classes for scripts (preview). The Foreign Function & Memory API (Project Panama) is in its third preview, letting Java call native libraries and manipulate off-heap memory with safer constructs than JNI (Java 21, the Next LTS Release, Delivers Virtual Threads, Record Patterns and Pattern Matching - InfoQ). Java 21 also introduced a Generational Z Garbage Collector (JEP 439) that improves GC performance by adding generational memory regions to ZGC (Java 21, the Next LTS Release, Delivers Virtual Threads, Record Patterns and Pattern Matching - InfoQ). In terms of security and platform, Java 21 began deprecating or restricting legacy features – e.g. it deprecated the 32-bit Windows x86 port (for future removal) (Java 21, the Next LTS Release, Delivers Virtual Threads, Record Patterns and Pattern Matching - InfoQ) and prepared to disallow dynamic loading of agents for better integrity (Java 21, the Next LTS Release, Delivers Virtual Threads, Record Patterns and Pattern Matching - InfoQ). All these updates reflect a Java ecosystem that’s embracing modern programming concepts (data classes, concurrency paradigms) while retaining its renowned stability. (Sources: Oracle/OpenJDK release notes (Java 21, the Next LTS Release, Delivers Virtual Threads, Record Patterns and Pattern Matching - InfoQ) (Java 21, the Next LTS Release, Delivers Virtual Threads, Record Patterns and Pattern Matching - InfoQ); InfoQ summary (Java 21, the Next LTS Release, Delivers Virtual Threads, Record Patterns and Pattern Matching - InfoQ).)
C# and .NET
| Microsoft’s .NET 8 (Nov 2023) arrived with C# 12, bringing both new language features and substantial performance gains. C# 12 introduced primary constructors for classes and structs, extending the concise constructor syntax that was previously only for record types ([What’s new in C# 12 | Microsoft Learn](https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-12#:~:text=Primary%20constructors)) ([What’s new in C# 12 | Microsoft Learn](https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-12#:~:text=You%20can%20now%20create%20primary,bit%20pattern)). This allows class developers to declare constructor parameters inline with the class, simplifying initialization. C# 12 also added collection expressions – a literal syntax using brackets ([...]) to initialize arrays, List<T>s, and spans in a concise way ([What’s new in C# 12 |
Microsoft Learn](https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-12#:~:text=Collection%20expressions)) ([What’s new in C# 12 | Microsoft Learn](https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-12#:~:text=System.Collections.Generic.List)) (including support for spread elements with .. for merging collections). Other notable features are inline arrays (stack-only fixed-size buffers) for high-performance scenarios, the ability to declare optional parameters in lambda expressions, and improvements to pattern matching. A new [Experimental] attribute was introduced to mark APIs as experimental at compile-time ([What’s new in C# 12 |
Microsoft Learn](https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-12#:~:text=3)), and interceptors (a preview feature) are being explored to intercept method calls, indicating an AOP-like capability in the future ([What’s new in C# 12 | Microsoft Learn](https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-12#:~:text=%2A%20Experimental%20attribute%20,7%20Preview%203)). On the runtime side, .NET 8 continued the tradition of speed improvements: the JIT compiler and GC were tuned for better throughput and lower latency (e.g. refinements in tiered compilation and dynamic PGO) ([Performance Improvements in .NET 8 | by Rico Mariani - Medium](https://ricomariani.medium.com/performance-improvements-in-net-8-f673e805e09e#:~:text=Performance%20Improvements%20in%20,GC)). Benchmarks showed ~10-20% gains in ASP.NET Core request handling in .NET 8 vs .NET 7, thanks to optimized JSON serialization and networking code (Performance Improvements in .NET 8 - Microsoft Developer Blogs) ([Performance Improvements in .NET 8 | by Rico Mariani - Medium](https://ricomariani.medium.com/performance-improvements-in-net-8-f673e805e09e#:~:text=Performance%20Improvements%20in%20,GC)). Security-wise, .NET 8 and C# 12 maintain the trend of safer APIs (e.g. more span-based methods to avoid allocations and buffer overruns) and include support for sandboxed plugins via AssemblyLoadContext improvements. The .NET ecosystem is also seeing F# and VB updates, but C# remains at the forefront with new features arriving yearly. (Sources: Microsoft .NET Blog ([What’s new in C# 12 | Microsoft Learn](https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-12#:~:text=%2A%20Primary%20constructors%20,6%20Preview%202)) ([What’s new in C# 12 | Microsoft Learn](https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-12#:~:text=Primary%20constructors)); .NET 8 performance post ([Performance Improvements in .NET 8 | by Rico Mariani - Medium](https://ricomariani.medium.com/performance-improvements-in-net-8-f673e805e09e#:~:text=Performance%20Improvements%20in%20,GC)).) |
(Other major languages like **TypeScript**, **Swift**, **Kotlin**, **PHP**, etc., have also seen updates. TypeScript’s evolution was covered above alongside JavaScript. Swift 5.9 (2023) introduced a new macro system for compile-time code generation and improved C++ interop, while Kotlin 1.9 (2023) brought performance improvements to Kotlin/Native (a new memory allocator) and further progressed the experimental **K2** compiler frontend (What’s new in Kotlin 1.9.0) (Kotlin 1.9.20 Released - The JetBrains Blog). Each language’s community is pushing both performance and developer experience forward.)