hough there were no big surprises and no major announcements, VSLive! San Francisco was notable this year for several reasons. First, despite the dismal economy, the conference was full, showing that even if organizations aren’t hiring, they’re at least still training their existing developers. A large number of the attendees have either already migrated to .NET or are planning to do so in the near future.
Another trend was that the main track speakers used VB.NET for their presentations rather than C#. This is noteworthy because a large portion of .NET presenters?particularly the Microsoft speakers?have tended to favor C# in past .NET-focused conferences. This trend, along with VB.NET’s growing popularity and new language enhancements should finally lay to rest the persistent rumors that Microsoft really wants developers to use C#, and that VB.NET was included only as an afterthought or as a way station on the main line to C#.
Finally, despite the recent pushback of Whidbey’s release until 2005, (based on the number of crashes during demos, that’s a good thing), it’s apparent that Visual Studio, the .NET framework, Microsoft’s major languages (C# and VB.NET), and a host of ancillary tools are making rapid strides that will result in more productive development and more stable applications. The overarching theme of both Bill Gates’ keynote and the subsequent presenters is that one of Whidbey’s main goals is to reduce the amount of code that developers are required to write. If the sample apps shown in the presentations are an accurate guide, they’ve succeeded.
In the modern development arena, it’s no longer possible to compete solely on language features?the mainstream, general-purpose programming languages are now more similar than they are different; and any true advances made by one are quickly incorporated into the others. It’s also not possible to compete solely on speed, at least, not for typical business applications?or, really, for Internet applications, because all the platforms and languages are “fast enough.” The current battles are for productivity, security, manageability, and easy deployment. Microsoft is focused on addressing these issues, concentrating on delivering these improvements in Visual Studio, its flagship development tool. The lesson for both Microsoft and Java devotees still arguing over the performance tests of the various Pet Shop Web application implementations is that the world has moved on. The pertinent question is no longer which language is the best; it’s which IDE is the smartest.
Under legal attack in Europe and the U.S., and threatened by Linux everywhere, Microsoft isn’t taking any chances with its leadership position in the developer tools space. Gates mentioned that Microsoft’s R&D budget, at $6 billion, is not only the largest in history, it’s even larger than IBM’s, which has traditionally been the technology R&D leader.
This investment in R&D is apparent not only in the number of features and enhancements in Whidbey (and eventually Yukon and Longhorn), but also in the inclusion of two ancillary conferences?SpeechTEK and Microsoft Mobile DevCon?held simultaneously with VSLive this year. Microsoft announced the release of Microsoft Speech Server 2004, which it claimed will bring speech applications into the mainstream. Speech Server provides speech recognition and text-to-speech capabilities to voice-enable applications. However as the cost is relatively high (starting at $7,999 for a single-CPU Standard version), it seems doubtful that you’ll see speech applications commonly used at the corporate office or small business level anytime soon. The Enterprise version, which must run on a standalone Windows Server 2003 box, starts at $17,999.
Money Walks, Too
At Mobile DevCon, the most exciting developments were new form factors for Windows CE and PocketPC devices, from mini-notebooks, to toughened heat-, water-, and shock-resistant devices, to a Motorola Smartphone that both flips open like a cell phone and opens in clamshell mode like a small notebook. In phone mode, the screen is in portrait orientation, but it’s in landscape orientation when in notebook mode. The device automatically senses which way you’re using it, and switches the display accordingly.
GPS-enabled mobile capabilities abounded, driven partially by Microsoft’s announcement of MapPoint 2004, providing enhanced maps, demographic data, and better GPS support, among others. Melding GPS capability with handheld devices not only lets businesses track employees efficiently, but also gives users easy access to driving directions, and lets businesses map customers to demographic trends or tie sales data to map-based visual representations. Although GPS today is still an add-on for most devices, it’s apparent that all portable computing device capabilities are merging. Telephones, cameras, PDAs, and GPS-enabled mapping displays will eventually be commonplace in multi-function devices.
When you throw speech-enabled applications into this mobile device mixture, and then enable Visual Studio developers to create Windows, Web, mobile, and speech applications all within the same IDE, using the same languages, it becomes quite clear just how Microsoft intends to trump the competition.
Code snippets: Visual Studio Whidbey provides numerous productivity enhancements, starting with the built-in “code snippets” available from the right-click context menu in the code editor, which now displays an “Insert Snippets” menu item. According to Jay Roxe, VB Product Manager for Microsoft, Whidbey will ship with around 500 pre-built snippets arranged in categories that match common programming needs, such as string, file, and registry manipulation. You’re not limited to using Microsoft-supplied snippets?you can easily add custom categories and snippets that meet your needs. The presenters used the snipped feature extensively. There have been numerous ways to package and reuse code over the years, and certainly, integrating the capability directly into the IDE is a big step forward. However, I suspect that the usefulness of the feature is in inverse proportion to the number of snippets available?and I fully expect the feature to be abused. It’s one thing to select a snippet you already know is appropriate from a list of hundreds, and quite another to try to select an unfamiliar snippet to perform a known task. In other words, the power of having snippets wanes when developers end up spending more time hunting for the right snippet than it would take to simply write the code.
Edit and Continue: Yes, edit and continue is back. That’s not a new announcement, but Microsoft speakers proudly highlighted it in their presentations?and it finally seems to have moved past the promise stage into working code. E&C was the most-requested feature for the next version of VB.NET. Although the capability for E&C is baked into the framework, each language group has to choose whether to surface it for that language. Edit and continue was one of my favorite VB classic language features and even though I’ve had to forego E&C for the last few years in .NET, I still feel strongly that it’s one of the best productivity features ever invented.
The “My” abstraction: Visual Basic developers have long used the keyword “Me” to refer to the currently executing form or class (the equivalent in C# is “this”), but they’ll soon become just as familiar with the new “My” designation for the root of a namespace. Characterized by Microsoft speakers as a “speed dial into the framework,” the My namespace contains classes that give you fast access to commonly used features of the system, the user, and the framework, making them both easier to find and far easier to use. In addition, former VB developers will be happy to note that the My feature brings back the concept of a global forms collection. For example, in VB.NET 2003, if you have a form in your project called “frmMain,” you must first create an instance of it and assign that to a variable before you can use the form. In contrast, VB6?and now VB.NET Whidbey?automatically create a global list of forms that you can use without first creating an instance variable.
frmMain.Text1 = “Hello World”
Dim fMain As New frmMainfMain.Text1.Text = “Hello World”
My. Forms.frmMain.Text1.Text = “Hello World”
Similarly, you can get a list of printers using “My.Computer.Printers”, or trap global application events such Startup and Shutdown exposed by the My.Application class. And for the first time, it’s easy to add a global exception handler by handling errors at the application level via an Error event. The My.User class gives you fast access to the logged-on user. The sidebar “Exploring the My Namespace” contains a more complete list of the available functionality.
Better Exception Information: Rather obviously, developers spend a good deal of time fixing errors in their code, so any assistance an IDE can offer there will pay high dividends. Rather than simply showing you the exception, VS now also analyzes the surrounding code, and in many cases can not only offer possible solutions, but also includes clickable links in the exception display that fix the code for you. While more error information is often good, it remains to be seen how much time developers will actually save with this feature.
Smart Code Generation: Visual Studio provides extensive code-generation features, such as creating fully functioning “smart” forms. In one demonstration, selecting an object type caused VS to analyze the object’s schema and produce a fully working, type-aware data-entry form suitable for editing the object.
In the 2003 version of the framework, some of the base functionality was “baked in,” making it very difficult to change without extensive work. For example, the ASP.NET out-of-process Session manager worked very nicely with SQL Server, but if you wanted to use Oracle, you couldn’t simply switch out the database?you had to write your own Session manager. Because Enterprise customers often need to swap out such functionality, the Whidbey version lets you do so at very high levels quite easily. In ASP.NET, for example, you can use the My.User class to determine whether a user is authenticated. The default implementation uses Windows authentication, but you can easily write a different authentication provider. You might think that writing a custom authentication provider would interfere with other built-in functionality, such as My.User, but it works seamlessly; the My.User class will reflect the results of the custom authentication rather than the Windows authentication.
Such extensibility makes the framework far more flexible than previous versions, and extends its reach into the enterprise levels where applications must play more nicely with others.
A new security calculator analyzes your code for security requirements. To use it, you set the permission level at which your application needs to run, and then the tool warns you about code needed to run the application successfully that would not run without additional permissions. In addition, you can set a permission level and then run your application in different “modes” to determine how it will act when running in different target security permission levels.
Bill Gates mentioned a PREFast tool that Microsoft has been using internally to find potential security problems with code. PREFast looks for known code patterns that can lead to problems or that are vulnerable to malicious attacks. Gates said the tool has proved to be so successful that Microsoft will include it in Visual Studio.
New Web services security standards, such as WS-Security will appear with Indigo, which should ship somewhere between this Whidbey release and the Longhorn release.
Whidbey contains a huge number of new controls and templates for both Web and Windows development?far too many to mention here. You can see more in-depth information on some of the new controls and other Whidbey features in:
Exploring New WinForm Controls in VS .NET Whidbey
Simplifies Browser Client Script Callbacks
Touring Whidbey’s Base Class Library Enhancements
Whidbey’s New Wizard Control Adds Navigational Power
ASP.NET gets “visual inheritance for the Web” in the form of Master Pages. A Master Page may contain the overall layout, design, and base behavior for a set of pages, while individual page using that Master page provide the logic and content. At design-time, the Master Page displays as a transparent background layer over which you can drag and drop the controls appropriate for the current page. You can read more about Web site development in Whidbey in Creating Web Sites with ASP.NET Whidbey.
New application and form templates, such as a login page fully connected to Windows authentication, can significantly speed up common types of developer tasks.
In another popular move, Microsoft has finally created a managed-code WebBrowser control, which fixes the problems that dogged the ActiveX version when running in COM Interop mode in .NET, such as the BeforeNavigate2 Event Not Firing.
New Project Properties
The Project properties settings have been greatly extended, giving you access to a set of tabbed pages that let you control every aspect of your application, including adding, and editing settings that appear in the application configuration file. ASP.NET gets a new Web Application Administration tool that lets you configure security, personalization, and configuration settings, among other features.
One welcome new project property for Windows Forms applications is a “Run as Single-Instance” option. When you select that option, if a user tries to launch more than one instance of your application, they instead get switched to the instance that’s already running. Of course, if you don’t like that behavior, you can override it?the already-running version of the application raises an event, which you can use to provide a custom message or take special actions.
Promised Language Enhancements Are Real, But Delayed
Finally, despite the new focus on productivity, Microsoft has not neglected language evolution, nor has it lost track of performance. The list of language enhancements that Microsoft announced last year, such as generics, iterators, partial types, and anonymous methods, have all found their way into the Whidbey language versions. Microsoft remains committed to performance, and maintains that they won’t let efforts toward productivity at design time interfere with performance at run time.
Despite the still-long wait until Whidbey’s release, developers seemed both optimistic and pleased with the new features. Most of the developers I talked to were still either experimenting with .NET or deep in the throes of implementing it. That’s particularly true for Windows Forms developers, because it seems that rollout of ASP.NET is already well under way, and in many cases, complete. That’s only natural, because installing the framework and running ASP.NET on a Web server is far simpler, strategically, than rolling out the .NET framework to every potential user. I seriously doubt that the additional few months’ delay will cause many developers to jump ship. If the delay results in a better product, the wait will have been well worthwhile.