When we hear the term "managed code" we typically think of Microsoft Corp.'s .Net Framework, but the idea has been around for a very long time. Smalltalk, HyperCard, and Visual Basic 1.0 were all examples of programming systems based on virtual machines, or "run times," that provided memory management and productive high-level frameworks. As a result, programmers were able to spend less time worrying about plumbing, and more time delivering features that users could see and touch.
Today, there are surprisingly many VMs available to the enterprise developer. The two that spring first to mind are, of course, the Java VM, which is the core of the J2EE environment, and the CLR (Common Language Runtime), around which Microsoft has built its competing .Net environment. In 2003, both these VMs continued to make headway in the realm of server-side development. Less noted, but of equal import, both also advanced on the desktop. The elegant Java-based Eclipse toolkit, for example, is increasingly favored by Java tool vendors trying to level a playing field that has been dominated by Visual Studio .Net. Meanwhile in .Net-land, C# is showing up not only in development tools but also in end-user applications. For example, two of the three Microsoft Outlook plug-ins I installed in 2003 are written in C#: DateLens, an innovative calendar viewer/editor, and NewsGator, an RSS newsreader.
The third Outlook plug-in, SpamBayes, is based on another kind of VM. The SpamBayes plug-in -- my hands-down winner for the most productivity-enhancing softwareI acquired all year -- is written in Python. Although we have historically called languages like Python scripting languages, the term that gained currency in 2003 was "dynamic language" -- a category that also includes Visual Basic, Perl, and PHP.
Of these three VM-based programming languages, PHP deserves special note. Last year, Netcraft reported that PHP had surpassed Active Server Pages as the dominant server-side scripting language in use on the public Web sites it surveyed. This year, Netcraft reported that PHP is not merely a pillar of the LAMP (Linux/Apache/ MySQL/Perl-Python-PHP) suite of technologies, but nearly 7 percent of PHP sites are running on Windows rather than Linux. Netcraft projected that PHP would overtake ColdFusion in 2004.
The Flash run time also gained momentum in 2003. With its Flash MX 2004 offering, Macromedia Inc. continued its push to position Flash as a substrate appropriate for multimedia presentation and for general-purpose, rich Internet applications. Macromedia also announced Flex, a server-side presentation layer that will dynamically assemble Flash-based user interfaces. Although Macromedia didn't ship Flex in 2003, Laszlo Systems Inc. did ship its Laszlo Presentation Server, a Java- and XML-based technology that dynamically assembles interfaces that render in Flash.
We hoped 2003 would bring a rapprochement between the dominant enterprise VMs, Java and .Net, and the dynamic-language VMs that are still in many ways well-kept secrets. That mostly didn't happen. At the JavaOne 2003 technical keynote in June there was a nod in the direction of JSR (Java Specification Request) 223, which would enable languages such as PHP to be used in the Java Web tier. But the stewards of the enterprise VMs still aren't pushing to integrate them with the popular and productive dynamic-language VMs.
Jython, the Java/Python hybrid, has a growing cult following, but isn't on Sun Microsystems Inc.'s radar screen. Microsoft has yet to deliver on its early promises to make dynamic languages first-class citizens of the CLR. Here's hoping that the many VMs that flourished in 2003 will work better together in 2004.
It's also worth noting that another kind of VM made headlines in 2003: hardware emulators. Again there's nothing new here -- IBM Corp. mainframes went virtual more than three decades ago. But for developers and system administrators in the x86 world, the ability to virtualize multiple instances of Windows or Linux has become increasingly strategic. Microsoft's acquisition of Connectix Corp.'s Virtual PC products, and EMC Corp.'s acquisition of VMware Inc., underscored the trend.