Last week, an ISO subcommittee cleared the way for final ratification by the full ISO of C# and the required underpinnings called the Common Language Infrastructure (CLI), said John Montgomery, group product manager for the .Net Developer Platform at Microsoft. The move from ECMA to ISO is made possible by a "fast track" agreement between the two groups; Hewlett-Packard and Intel also are supporting the effort, Montgomery said.
"There are government organizations that recognize ISO standards, but not ECMA standards, so having C# and the CLI be ISO standards will help those governments adopt these technologies," Montgomery said.
"The meeting concluded with agreement that the standard is now complete," he said. Final ISO ratification is expected in January.
Standardization lends some heft, credibility and permanence to a technology that still is very new. It also could allay fears that adopting C# and its related technology might mean becoming beholden to Microsoft. And while standardizing C# isn't the most important step in guaranteeing the language's success, it's a domain than Microsoft can influence more easily than, for example, the programming habits of millions of developers.
"This is one issue amongst many, but one that Microsoft actually has fairly direct control of," said Illuminata analyst James Governor.
"If Microsoft really wants to successfully drive C#," he added, "the biggest problem may prove to be developer learning curves." Software developers are on the front lines, but C# also needs the confidence of system administrators, chief information officers and the software industry in general.
C#, like Java, is a language that lets a program run on a software foundation that shields it from the particulars of the underlying computer. That makes it easier to write a program that will run on a wide variety of computers. With Java, that insulation comes through software called a virtual machine and through libraries of prewritten software; C# comes with its own libraries and other components that make up the CLI.
In the 1990s, Sun Microsystems launched Java as a way to undermine Microsoft's Windows dominance. Sun hoped, but largely failed, to get programmers to write software that worked on a Java infrastructure rather than on a Windows infrastructure. For example, a Java program could run unchanged on computers that used Windows, Mac or Unix operating systems.
Microsoft is fighting back against Java with C#, itself part of the foundation of its .Net vision to power next-generation Internet services. The .Net plan involves letting PCs, servers and other digital devices find one other on networks and invoke services such as booking reservations or debiting credit cards. C#, like Java, is designed so that a program can call upon other program modules elsewhere on the Internet.
In theory, developers could use C# to write applications that work on any operating system that has the standards-based code in place. In practice, however, the standardization of C# doesn't mean that the entire collection of Windows programs such as Microsoft Word will be portable to other operating systems anytime in the near future. Regardless, Windows-based programs play a central role in the plan.
Analysts said the C# and CLI submissions from Microsoft to ECMA and now ISO define only a subset of the .Net Framework that makes it possible to share data with applications on other operating systems. Not included, for example, is software needed to define a Windows or Web graphical user interface. Consequently, the portable programs people could write using C# and CLI are in practice limited to being non-graphical--for example, a credit card authentication service that another computer uses, not a human who would need a user interface. Also missing from the submission is the .Net code needed to access databases.Advantage Microsoft
Java has hordes of fluent programmers, years of field testing and thousands of software packages built atop it. But Microsoft has its own advantages.
First, by virtue of its monopoly in desktop computer operating systems, Microsoft has a superior mechanism to distribute the infrastructure needed to run C# programs, CLI or its big brother called the .Net Framework. Microsoft is adopting that very strategy,the .Net Framework, with Service Pack 1 for the Windows XP operating system.
Second, Microsoft has persistence. The company is famed for producing software that is inferior at first but that years later becomes dominant--for example Windows, which lagged behind Apple Computer's operating system, and Internet Explorer, which was a pale imitation of Netscape Navigator.
Rival Sun enjoys pointing to the number of registered Java programmers--2.6 million at present--as evidence of its success. But the company clearly recognizes the threat of C# and its associated software.
C# and the .Net Framework are included as evidence in Sun'ssuit against Microsoft. Sun asserts that C# is a hook planted in desktop Windows, where Microsoft is dominant, that tows Microsoft into areas where it's not as powerful--namely, software for higher-end networked server computers where Sun is powerful.
Microsoft is using the standardization effort to indicate that C# isn't a Trojan horse for Microsoft software but rather a neutral technology open to all. To the same end, it has also released a version of the CLI--the software apparatus to run C# programs--under its "shared source" license. That licensepeople to see how Microsoft programmers wrote the software and to tinker with it, but not to sell products using it.
Microsoft has attracted some unusual allies to C# and the CLI, including advocates of open-source software who often are opposed to Microsoft's proprietary approach to software. Among the allies is desktop Linux specialist Ximian, which with help from Hewlett-Packard and Intel is working to Mono.much of the C# environment in a project called
Sun argues that standardizing the CLI is misleading, though, because it's only a subset of the .Net Framework.
"It's like saying we're going to give a brand new car to the information technology industry, but we're going to keep the keys. That's not what standardization is all about," said Sun spokesman David Harrah.Where Sun stands
Java, which had a comparatively ungainly interface and has suffered sluggish performance, didn't dent Microsoft's power on desktop computers, but it has caught on in cell phones and servers.
Sun had pledged to make Java a standard, first through an ISO subcommittee and then through ECMA, butcourse in 1999, saying it wasn't willing to hand off control of the technology. Instead, it formed the Java Community Process, which lets other companies help control Java but still gives Sun a position of power.
Sun's reluctance to let go of Java, which peeved allies as powerful as IBM, was not an act of mere egotism. Microsoft had licensed Java for its own use but had modified it in a way that undermined its promise of working identically on different computer types. The issue was at the heart of a four-yearbetween Sun and Microsoft.
Microsoft's coaxing of its technology into the world of standards can be seen as a victory in its long-running struggle. The ISO subcommittee's approval is "pretty major," Montgomery said. "It represents the agreement of the international technical committee members that C# and the CLI are ready to be ratified by the ISO managing body."
But it's not yet the victory that counts.
"ISO is a stamp of approval, which certainly helps," and ISO is better recognized than ECMA, said Illuminata's Governor. "But I believe it would be a mistake to assume that having the ISO check box ticked will make all the difference."