Visual Studio-Language Futures Page

Futures Overview

This gateway site will evolve over time as a place where posts about the future of Micrsoft’s languages can be place. It is designed to give insight into the plans for teams such as Visual Basic and C++ that are part of Visual Studio. Each post will highlight one or more key subjects that will impact users of these core Visual Studio languages. If you wish to comment on one of the topics discussed here, click the discussions tab and find the thread on the topic you want to discuss. You will sometimes find subjects broken out on the Issue Tracker. You can use this latter tool to vote for the options that attract your attention.
What to expect…
It is important that everyone has the right expectations. The information on these pages are meant to be a helpful guideline for developers, and not a binding commitment. We are not attempting to give a complete list of features in the product, but only to share what we can in a way that will be easily accessible to all developers who are interested in the direction of developer tools. The Visual Studio schedule, unforeseen technical problems, intellectual property rights and competitive pressures may impact our schedules or our ability to share our plans. We will, however, do our best to keep you up to date on the latest news from the teams as they design and implement future versions of developer tools.

Microsoft Futures is not designed to present a detailed specification of future features. Instead, its purpose is to outline in broad strokes, and easy to understand terms, the directions that team will take in the future.

Does .NET With LINQ Beat Java?

Framework’s data query capabilities give it an edge, experts claim.

January 29, 2008 — There is a question some developers are asking: Has LINQ given Microsoft’s latest .NET Framework an edge over Java? Industry experts say “yes,” but with some caveats.

Microsoft shipped Language Integrated Query as part of the .NET Framework 3.5 in November. LINQ was originally one of many research projects that the company has under way. LINQ integrates query concepts directly into .NET programming languages using a syntax that is similar to SQL, to simplify the querying of data, objects and XML.

Patrick Hynds, president of security consultancy CriticalSites, said that LINQ is “an object-oriented revolution for data,” because it, like object-oriented programming, allows programmers to write code that is more like the way people think.

Before LINQ, he explained, developers had to adapt to a particular programming language’s precepts of the way data was organized and accessed. “One of the key things that I found about Java is that it has been very comfortable to make the developer conform to what ‘they’ [Sun and The Java Community Process executive committee] thought that the developer should use,” Hynds noted, adding that Microsoft’s LINQ implementation deals with data in a more “conversant” way.

Hynds is a regional director of the Developer Platform evangelism group, volunteers recognized by Microsoft for technical expertise.

Other Options
RedMonk analyst Stephen O’Grady noted that while there may not currently be equivalent functionality within the Java platform, there are options for Java persistence that offer “LINQ-like functionality,” naming db4objects as an example.

Db4objects is an open-source object database for Java and .NET developers, which uses a technology called Native Query that can optimize native language constructs into queries, without relying on a particular language’s syntactical extensions.

Jonathan Bruce, program manager for .NET technology group at DataDirect Technologies, and formerly JDBC specification lead and architect for the Java platform at Sun, said that developers are “clearly excited” about what Microsoft has come up with, but cautioned that it is not as original as they make it out to be.

LINQ, Bruce said, is “elegantly packaged and tightly coupled with C#” and Visual Basic, but called the notion of tightly coupling queries to languages nothing new, citing embedded SQL as an example.

“What’s different is that they are neutralized the coupling between the query and data model, using the same query constructs against multiple data models,” he added. “It is a graceful part of the day-to-day programming language and easy to use with day-to-day programming models.”

Another advantage, he said, is that LINQ “takes the pain” out of allowing query-based programming, and that instead of relying on databases, it is done programmatically. “It is a big change for a lot of people,” he conceded.

Enter the Caveats
DataDirect’s Bruce acknowledged that from a productivity point of view, LINQ combined with its tooling gives .NET shops a productivity advantage that the Java community cannot match. He credits Microsoft’s ability to “package [productivity patterns and tooling] all up into something useful.”

That said, he noted that LINQ is an unproven technology that is new to the market and said that he could not imagine anyone making corporate bets on LINQ just yet. “On the Java side, data access is rounded and stable. As a technology officer, it is an easier bet to make [on] what will reduce risks from a data perspective,” he explained.

Likewise, he noted that LINQ is highly static in nature, and that embedding queries within an application presents challenges to programming patterns. He explained that LINQ queries are tightly coupled to the source code and that LINQ makes it difficult to build dynamic queries.

“There is a ways to go before LINQ has broad acceptance across the data access market,” he said, adding that constructing more queries in a more dynamic manner is the “next horizon” for LINQ.

Bruce said that Java is making strides to answer LINQ’s progress by implementing scriptable languages such as Groovy and JRuby, making the platform more versatile by consuming functional languages that are written as scripts. He also cited the IBM JLINQ application framework as a worthwhile but “poorly marketed” attempt to answer the call of LINQ.

Another example is XQuery, a language designed to query XML data. XQuery, he said, does a better job with data from many venues because of XML’s flexibility. By contrast, he claimed, the current implementation of LINQ is very targeted to what the developer is querying and the ability to “mash up data sources” has not been delivered yet, Bruce explained.

He believes that a LINQ implementation combined with XQuery would enable Java to “reposition [itself] strongly against what Microsoft has done.” However, he added that the Java standards process could delay any Java-based alternative because Java platform technologies are only adopted if they become a formal part of it, or if the community reaches a tipping point, citing Hibernate as an example.

“If anyone ever comes up with a LINQ implementation even close to Microsoft’s,” he concluded, “it will never be integrated into the platform as well as Microsoft LINQ,” adding, “it will always be an uphill battle to make an apples-to-apples comparison.”