Java interop – and Blazor
There are also some features new to most .NET developers that are coming in .NET 5. One is Java interop.
"Java interop is a technology that is critical on Android devices. When you are writing a Xamarin application and you are using C# you need to be able to call into Java objects. The plan for .NET 5 is we're bringing it to desktop and server. It's a core capability within the CLR to be able to do the object mapping. It should work with any plain old Java object," said Montgomery.
That said, the main use case for Java interop currently remains Android. What about other scenarios, like using Java libraries with ASP.NET? "I suspect customers will find lots of use cases which will open lots of issues that we didn't think about," Montgomery said. "Whenever you have interop between two environments you wind up with memory allocation questions, performance questions, and security questions. While people might want to do it for convenience, they'll find they'll want to rewrite in one or another."
Perhaps not as useful as we might have hoped.
John Montgomery, corporate VP and director of Program Management Developer Tools
Another new piece is called Blazor. This includes a C# compiler that generates WebAssembly (Wasm), a binary format that can be executed in a web browser or elsewhere. Blazor also provides a single-page application framework suitable for online or offline Progressive Web Applications (PWAs).
Blazor was originally an experimental project. "We were sceptical, it was early in the life of WebAssembly. We already had a bunch of ways of doing web UI with .NET. Even though we characterised it as experimental and it was built on the Mono technology for a while, customers loved it. They began to use it. We moved from experiment to preview and committed that it will be a capability in .NET 5.0," said Montgomery.
When do we get .NET 5.0? "The goal is that we would have a beta or preview sometime in early 2020 and we're hoping to GA [General Availability] by the end of 2020, based on customer feedback and input. It's a significant effort to create a one .NET experience. We'll give it as long as it needs," said the veep.
Microsoft is also distinguishing between normal and LTS (Long Term Support) releases for .NET. Note that .NET 5.0 is not defined as LTS; this is reserved for .NET 6.0 in 2021. LTS is for even-numbered releases, according to Lander's announcement (with a special case for .NET Core 3.1).
Microsoft's .NET release schedule
Microsoft's .NET journey has been tortuous. On occasion much energy has been expended by Microsoft and its developer community in things that turned out badly. Silverlight, a framework for browser-hosted and Windows Phone applications, was one and UWP looks like it might be another, given that its main rationale – the ability to run on desktop and mobile – has been replaced by Xamarin.
Developers like C#, though, and frameworks like Windows Forms and ASP.NET have seen massive adoption. .NET Core is well-suited for containerised microservice applications, where its support for Linux is critical.
The signs are that .NET 5 will begin to make the .NET platform more coherent, though we can also expect a proliferation of .NET Core runtimes on our Windows boxes. Just one .NET going forward, though? Not quite. ®