Microsoft`s .Net vision is starting to take shape. With the release of Windows XP to complement its Hailstorm service offerings, the final pieces of the puzzle are coming together.
As important as XP for Microsoft`s holistic product offering, the release candidate for Visual Studio .Net has just been released. This will allow MS developers to develop and deploy applications and services within the .Net framework.
This is a big step for Microsoft, which used to play the development game with its suite of languages. By launching a full development and deployment platform, it ups the stakes for the likes of Sun, whose Java/Enterprise Java Beans/Java 2 Enterprise Edition platform has earned the position as the de facto choice for enterprise customers looking for a platform high-end development solution in recent years.
J2EE runs beautifully in a Microsoft world. .Net won`t run anywhere else.
Peter Castle, senior systems engineer, Sun Microsystems
The Java platform already has a large amount of industry support from the bigger software vendors, including BEA, IBM and Oracle. Microsoft is the only notable exception, having dropped the Java Virtual Machine (JVM) from its Windows XP product. A JVM from Sun Microsystems is available for Windows, although Java pundits are quick to point out that Java applications tend to favour server-side deployment, nullifying the effects of the JVM-less XP on Java`s market share.
"What might be a threat for Java is C#. It looks like Java, feels like Java, but it`s not Java," says Peter Castle, senior systems engineer, Sun Microsystems. "J2EE runs beautifully in a Microsoft world. .Net won`t run anywhere else."
"Visual Studio is a lovely environment to program in, but you`re stuck on Windows," agrees Nigel Bakker, director, GuruHut.
Copy/Paste
Those familiar with the Java platform will find themselves in a very familiar environment with Visual Studio .Net as the development environments follow a very similar architecture.
Java is compiled on the fly. It starts its life as pure Java code; is then compiled to Java byte code by the JVM; and is finally executed independent of the environment it is running in. The .Net structure takes similar code; compiles it to Microsoft`s Intermediate Language (IL, similar to the way Java converts to byte code), and finally executes that code on its Common Language Runtime (CLR) platform.
<B>Languages available for .Net</B>
APL, C++, C#, COBOL, Component Pascal, Curriculum, Eiffel, Fortran, Haskell, J#, Microsoft Jscript, Mercury Mondrian, Oberon, Oz, Pascal, Perl, Python, RPG, Scheme, SmallTalk, Standard ML and Microsoft Visual Basic.
"The runtime layer is similar in concept to the JVM, but it is more tightly integrated to platform, and the code runs in compiled format. Therefore it runs a lot faster [than Java] and the performance is a lot higher," says Grant Dickinson, senior application engineer, Microsoft.
The level of abstraction between the environment and the code enables the code to be platform-independent - one of Java`s key strengths. Theoretically, the similar abstraction in Microsoft`s .Net architecture could allow the platform to be ported to other operating systems. Microsoft has not made any move so far to do so, but an open source project, dubbed the Mono Project, is trying to port the system onto Linux. The theory is that Linux users will be able to run .Net code on their boxes, making Microsoft`s key .Net language - C# - platform-independent.
The runtime layer is similar in concept to the JVM, but it is more tightly integrated to platform, and the code runs in compiled format. Therefore it runs a lot faster [than Java] and the performance is a lot higher.
Grant Dickinson, senior application engineer, Microsoft
Doubt exists as to the project`s potential success. Some believe Mono is missing the bigger ".Net" picture, which is about more than building desktop or server applications. Connecting to Microsoft`s Hailstorm services - including the controversial Microsoft Passport - is a major portion of the .Net product offering, and since the Hailstorm APIs remain a closely guarded secret, it is unlikely that Mono will be able to muster the muscle that Microsoft has at its disposal.
"Third-party companies can take what we`ve done with the CLR and do ports onto different platforms," comments Darren Crowder, .Net evangelist, Microsoft. Crowder says this type of development is taking place already, with US-based Ready to Run porting the Passport service to non-Windows platforms.
Another familiarity between Java and .Net is the C# language, which looks almost identical to Java. It seems that Microsoft`s inclusion of J# - a Java implementation running on top of the IL - drives the point home: Redmond is flying towards the Sun.
Rounding them up, fencing them in
<B>What developers are saying - ITWeb snap survey</B>
Matthew French, local developer:
"The beauty of Java is its simple elegance with a lot of forethought going into the language. The write-once, run anywhere ideal is almost a side effect of the simplicity of the language.
"The [Microsoft] CLR, on the other hand, is an ugly solution to a difficult problem. Do we really need to have several different programming languages that work together? Giving developers the opportunity to develop in the language of their choice seems to me to be a really bad idea.
"Put another way: the CLR is attempting to clone what Java does, but does not want to impose the restrictions that Java has - such as type safe code.
"C# is a perfect example. The language is a blatant rip-off of Java, but it has a whole lot of extra features that are dangerous.
"Ask any developer who works on a large software project about the amount of time they have to spend finding spurious bugs caused by dodgy implementations, and you will begin to get an idea of what I mean.
"Java is not perfect, but I use it in projects because it is simple, consistent and powerful. You can still have bad Java code, but it is much harder for it to be damaging.
"Of course .Net will take some of the market from Java. A lot of Java projects involve J2EE and .Net finally gives Microsoft equivalent functionality."
John Anderson, freelance data professional:
".Net is the next step up from IIS + ASP. Anyone who`s already developing for ASP will probably go straight to .Net. Anyone who wants to use a non-MS OS will not.
"MS dropping the JVM will have more of an impact on applets than on server-side development."
Local development:
French:
"Based on the amount of hype, I expect a lot of corporations have informal projects using .Net. I do not know of any full-scale implementations that do, though."
Anderson:
"I don`t know [of any local .Net developments], but there is much unhappiness about XP licensing, as far as I know. This might have an effect on .Net`s uptake."
Platform development:
French:
"Platform is still very important. In the Java world it is not such an issue, but then it usually comes down to the choice of database and available skills.
"Off topic: From experience, I hate using Windows as a server platform. Not from a reliability perspective (I feel this is over-hyped - my Linux crashes often enough too) but from a management perspective."
Anderson:
"I think that these days a language is pretty much useless without a good set of modules. C++ comes with the Standard Libraries, which are paltry in comparison to things like CPAN for Perl. Java has a huge class library. There are new modules appearing for Python every day.
"It seems to me that a platform is a essentially a set of modules which provide business-specific services and implementations of common server-side issues (connection pooling, multithreading, relational database access, load balancing etc). The drawback is that with a large set of modules/class library (read platform), you have a steeper learning curve."
Microsoft`s all-in-one solution vs Java`s third-party support:
French:
"My feeling is that vendor lock in, especially at this point in time, is a very dangerous route. Microsoft has good tools, but makes it almost impossible for someone to produce better ones.
"Java is designed. It grows by consensus with the features people want. On the other hand, .Net will grow by spurious bloat with the features that Microsoft wants."
Anderson:
"Speaking personally, I prefer the third-party approach. With a decent specification `a la the Java Servlet API, and the JSP API, it doesn`t matter who provides the implementation of the API as long as it`s compliant. Which means you can choose anything from open source offerings to commercial implementations. MS is, as usual, doing its own proprietary thing. It`s the old more choice vs less choice debate.
"Making a huge generalisation - people who write code may prefer the open source approach. Project managers and finance managers may prefer the MS approach.
"Java already has a firm foothold in enterprise development though."
J# and C# are not the only programming languages on offer from Microsoft`s Visual Studio .Net. Fortran, C++, Perl, Python, Cobol, SmallTalk, Pascal, and other languages could give old developers a new life on the Microsoft platform. Although competitive language vendors seem positive that they are not going to lose developers to Microsoft, it seems likely that many "legacy" developers will be tempted from their traditional environments, which in turn could force corporates to examine .Net as the skills pool balance shifts.
"We currently support 21 languages," says Dickinson. "We have published the interface for the CLR as a standard, so in theory you can write support for other operating systems. The key goal for developers, however, is that once they learn to program on the common set of classes they can transfer their skills across languages."
.Net will most likely try to keep developments on the platform by encouraging hooks into the underlying OS - read Windows - to improve performance; an option possible but strongly discouraged in the Java environment. Platform-specific performance enhancements may increase speed and response times, but lock an application onto that specific platform. This trade-off will probably be the biggest differentiator for businesses trying to decide on a platform. Java`s devotion to cross-platform just-in-time compiling does slow it down. Microsoft can tweak and pre-compile to its heart`s content.
In essence, the two differ in the direction of their abstraction. While they share a common architectural design, Microsoft has chosen to abstract towards the developer, while Java abstracts towards the platform. A heterogeneous enterprise will probably still favour Java, while those wanting to consolidate platforms may go the way of Microsoft.
"In Java`s case, Java abstracts the machine and operating system so that we don`t care what operating system end-users are running. Microsoft is different - they`re trying to deploy on any language," says GuruHut`s Bakker. "In essence, I don`t believe .Net is a platform in the same sense as Java - it`s not a cross-platform platform."
.Net in the wild
For all the talk about Visual Studio .Net, not too many have bought into the concept just yet. .Net developers are still few and far between, although Microsoft`s MSDN distribution program has ensured there is some developer base to start implementing .Net applications once the development environment hits the street.
"Quite a few large local corporates are looking at it [.Net] right now very seriously," says Crowder.
In essence I don`t believe .Net is a platform in the same sense as Java - it`s not a cross-platform platform.
Nigel Bakker, director, GuruHut
Those committed to .Net include Accenture and LastMinute.com. SAP has committed to bringing its ERP system to market on a .Net and Java platform, although it does seem to prefer Java as the replacement to its current internally developed BAPI system. Accenture and LastMinute seem more intrigued by Microsoft`s services in the .Net architecture than the development environment, and will be among the first to offer applications built on Microsoft`s .Net My Services offering.
Java, on the other hand, has achieved notable acceptance from the enterprise market. Its Java 2 Enterprise Edition has gained a reputation for stability and, with version 1.4 expected soon, the tradition of increasing stability is expected to continue.
Bakker believes .Net could prove popular in the lower and middle tier of the market and in the departmental environment, but believes Java will be the only serious consideration for organisations looking to upgrade their Cobol environments. "I think .Net has a lot to offer in certain organisations, but if you`re looking for longevity I don`t think it is the right technology."
Microsoft still has to prove itself on the ground. Senior analyst Lance Travis was recently quoted by Reuters (in reference to SAP`s decision to back both) as saying: "Today, if you`re going to run your multibillion-dollar enterprise, most people are going to run them on Java, not .Net."
"Being an application vendor, you have no choice - you have to hit as many platforms out there as possible," says Castle. "The trouble is of course that the .Net architecture doesn`t quite run on Sun [operating system], while J2EE runs on Microsoft [Windows]. But I`m pretty sure we`ll see a lot of .Net APIs that we can plug in to - they`re going to have to coexist."
The alternatives
.Net and Java do not constitute the only two platforms out there, although currently they are the main protagonists. The only other platform solution that looks like it could be a contender is the open source solution, which is not so much a platform as a loosely-cobbled set of applications that, if integrated, can offer similar functionality.
Quite a few large local corporates are looking at .Net right now very seriously.
Darren Crowder, .Net evangelist, Microsoft
JBoss nailed together with Apache Tomcat can give a sense of a platform, and tacking on an open source SQL database, a LDAP directory, a messaging system and an open source mail server can give the same functionality as offered by Java or .Net. This type of solution is a poor substitute for the all-in-one option from Sun and Microsoft, with developers loaded with the extra headache of integration.
Applications development software suites from the likes of Borland/Inprise or previous versions of Visual Studio will still no doubt remain popular for ad hoc application development, but it is clear that the fight for the enterprise will be a fight for the platform.
One new competitor seems to be rising from a coalition between IBM, Red Hat, SuSE, Rational, and over 150 other software companies. Called Eclipse, the project hopes to "eclipse" the competition by offering free, open source software development tools.
Share