The more Windows changes, the more it stays the same
Nevron started back in 1998 as an ActiveX component developer, and its developer community is acquainted with the evolution of tools and product development for Microsoft products on Windows platforms. Despite the tectonic shift in development practices and tooling innovations over the past two decades, Milanov said the one thing that hasn’t changed is the underlying foundation of Windows.
“The Win32 API has remained the same for the past 16 or 18 years,” he said. “But the development tools on top of that framework have changed a great deal. We experienced the move from the ActiveX development environment toward the more productive .NET Framework. Even the .NET Framework, though, had one major throwback from very beginning: binding to Win32 APIs.”
Because the core of Windows and .NET remained static for so long, competing .NET Framework implementations such as Xamarin’s Mono emerged to fill the void. Now, as Visual Studio and the .NET Framework finally embrace cross-platform, Milanov believes Mono in combination with offerings such as the Xamarin Test Cloud and Mono JIT compiler implementation provide better code performance and data collection than even Java.
“The future of .NET is the movement of these frameworks to portable application development, something similar to Java,” Milanov said. “The problem with that, of course, was that Microsoft didn’t expose any development tools or support .NET on any other frameworks, so the development community had to turn to Mono. Because of Mono, we’ve seen the ascent of Xamarin on mobile devices, which proved to be a great move.”
Visual Studio tools are going mobile
In terms of potential cross-platform mobile growth, the comparisons between application development in .NET/Visual Studio and Java/HTML5 become even more pronounced. As open-source .NET on Linux and Mac works toward the same performance and stability as .NET on Windows, the gap between the Mono space and the Windows-only .NET space will narrow.
Nevron envisions .NET integration into browsers as well. According to Milanov, the native client profile of Google Chrome can actually run .NET code as native applications inside the Chrome browser.
He believes Visual Studio and .NET should take a cue from HTML5 and Java. Like Java, .NET is also a virtual machine and like Java, he explained the first objective of .NET was to allow the execution of code on any machine without recompilation from a JIT compiler.
“Most of the projects we currently develop with .NET for Windows are actually for servers, not for client applications, just because .NET doesn’t run on other machines and doesn’t run on mobile,” Milanov said. “Developers want to be mobile. They want to be on any device. In order for Visual Studio tools and for the whole ecosystem to go forward and to be a viable competitor with what HTML5 is offering in cross-platform mobility, .NET has to run on all devices from a single codebase. I don’t mean just the core framework, which is already running through Xamarin for mobile and through MonoMac, but also through the UI layer, which is actually HTML5-compiliant, to be able to run on all these devices.”
Ultimately, Milanov sees the future of .NET and Visual Studio as a clear path to going cross-platform as a development environment, with Visual Studio tools competing with HTML5 on the enterprise level.