Some background: previous versions of Windows have consisted of a bundled set of libraries, known as the application programmer interface – or API. To differentiate it, the first 32-bit libraries became known as the Win32 interface and the previous Windows 3.1 16-bit APIs were retrospectively titled Win16.
Yet, by the end of the last millennium Microsoft decided the burden of providing backwards compatibility hampered their freedom to innovate and deliver a modern programming milieu. Consequently, the .NET framework was birthed which essentially provides a runtime environment with a rich suite of functions and features. It sits atop the Windows framework itself and interprets .NET programs, fundamentally converting instructions at runtime.
The rise of a new framework necessitated the need for a new set of programming languages which would generate executable code in the right format; this then brought into being the Visual Studio.NET collection of languages – Visual Basic.NET, J# and C#, among others by other vendors. It’s now possible to find .NET versions of Delphi, Python and even COBOL.
These languages still share a similar syntax to their forebears but the primary difference is they make use of the provided .NET libraries to implement their functions and interfaces, and they emit code designed to run on the .NET runtime.
Fairly or unfairly, Microsoft’s strategy received some criticism at the time as being a copy of Java – which works in the exact same way; the Java compiler outputs code which is designed to run in a Java Virtual Machine. A compiled Java class should, in theory, run on any platform provided it has a Java interpreter available for it. Like .NET, Java came with a rich set of class libraries to provide graphical controls and many other useful objects like network communications classes, mathematics functions and many others.
However, whether Microsoft did or did not copy Java, there certainly were two notable implementation differences.
Firstly, Visual Studio has only ever been a Windows product. The .NET framework – at least, as supplied by Microsoft – is a Windows only product. By contrast, Sun Microsystems intended Java to be universal and spruiked a mantra, “write once, run anywhere” reflecting the goal that Java programs could be written on any machine and would run on any other machine, no matter its operating system or hardware architecture, provided a Java interpreter existed.
Secondly, the source code to the Java class libraries was made available right at the beginning, in a shy little file called “src.zip” whose importance could easily have escaped notice by many. Unpacking this archive brought forth a treasure trove to all Java programmers: the complete code to all the very class libraries they were working with daily to bring about frames and windows and sockets and vectors and the like.
Is Microsoft following in this stead? Read on!