The Artima Developer Community
Sponsored Link

News & Ideas Forum (Closed for new topic posts)
Java Creator Gosling says .Net Falls Short of Expectations

6 replies on 1 page. Most recent reply: Apr 8, 2002 5:42 AM by Jakob Eg Larsen

Welcome Guest
  Sign In

Go back to the topic listing  Back to Topic List Click to reply to this topic  Reply to this Topic Click to search messages in this forum  Search Forum Click for a threaded view of the topic  Threaded View   
Previous Topic   Next Topic
Flat View: This topic has 6 replies on 1 page
Bill Venners

Posts: 2284
Nickname: bv
Registered: Jan, 2002

Java Creator Gosling says .Net Falls Short of Expectations Posted: Apr 4, 2002 9:29 PM
Reply to this message Reply
Advertisement
"There had been all kinds of rumors and that about what their Common Language Runtime, and what this new C# language, was going to be. And we were sort of imagining all kinds of clever things that they could do. They didn't choose to do any of them. I found it sort of puzzling," says James Gosling in this interview:

http://www.computerworld.com/storyba/0,4125,NAV47_STO69691,00.html


Bill Venners

Posts: 2284
Nickname: bv
Registered: Jan, 2002

Re: Java Creator Gosling says .Net Falls Short of Expectations Posted: Apr 5, 2002 10:42 AM
Reply to this message Reply
When I interviewed Gosling a few weeks ago, he did mention this same thing he said in this Computerworld interview. He said that at first they at Sun were very concerned about .NET, but once they learned the details of it, they were less worried. He pointed out a few areas where he felt .NET was technically inferior to Java and J2EE, including security.

The thing that popped into my mind was that the short history of the software industry is filled with examples of Microsoft coming out later with a product that is inferior to the original, but good enough technically and marketed so well that it comes to dominate the marketplace. I suspect .NET will be good enough for a lot of things, and that it will be extremely well marketed. Friends of mine who have already used .NET seem to like it a lot, so I think Sun and the J2EE vendor community needs to remember Andy Grove's admonition: Only the Paranoid Survive.

Daniel Steinberg

Posts: 3
Nickname: daniel
Registered: Jan, 2002

Mac Centric thoughts Posted: Apr 5, 2002 12:14 PM
Reply to this message Reply
I've recently been researching IDEs for Java development on Mac OS X for an article I'm writing. I'm struck by the variety and quality of tools that are now available. This is a direct result of Java being supported on the Mac and a variety of vendors and open source projects writing solid tools in Java.

Forget for a minute that .Net isn't available on my platform. Even if it were, what choices would I have for development tools?

As for Gosling -- it would be nice to know what the clever things he was imagining were.

Daniel

Frank Sommers

Posts: 2642
Nickname: fsommers
Registered: Jan, 2002

Re: Java Creator Gosling says .Net Falls Short of Expectations Posted: Apr 5, 2002 11:35 PM
Reply to this message Reply
I wish Gosling elaborated a bit more on what he found lacking in .NET. Regardless, I don't understand why Sun would be afraid of .NET. As far as I can tell, Sun's revenues are marginally impacted from Java licensing at present, whereas Microsoft's entire revenue stream comes from Windows, and now .NET, licensing.

That said, I have my own pet theory of .NET, and what Microsoft's goals are with it. (Actually, most anyone looking at .NET would probably reach the similar conclusions...) At heart, .NET is about network-mobile code. The common language runtime in .NET is able to load code from different network locations. When you integrate the CLR tightly into an OS, what you get is a network-extensible OS. In fact, the design of Windows NT, 2000, and now XP all share the similarity of being based on the Mach microkernel architecture. That architecture favors a small, minimalist kernel which gains additional capabilities by dynamically loading modules (such those handling file systems, etc). Interestingly, the Mach kernel was pioneered by Rick Rashid at CMU; he currently heads up Microsoft Research. It is only a small additional step to imagine some of those modules coming from the network. And it requires no special sense of fancy to see that you can perhaps, in some way, charge for the modules that come into your system and enable it with additional capabilities you need. (I mean, not you, but Microsoft can...)

Now, the JVM works in a similar fashion, when a small piece of running code can extend itself with new behaviour from the network. So, why is having code go into your OS is better than having code go into your Java application? Well, it's not better, it's just that it enables different kinds of things. The experience of the past couple of years has shown there are advantages in tightly integrating things with an OS. For example, the Explorer browser, by being in effect married to the OS, takes advantage of that close relationship in enhancing a user's experience. For one, it starts up really fast, it can find many things the OS knowns about (such as helper applications), etc. That enhanced user experience is what makes Explorer so successful, and that is a direct result of tight OS integration. And this trend is already manifest in less obvious areas. For instance, transactional file systems are become increasingly common, which essentially introduce database storage system-elements into the OS. Users like that because it prevents them from losing or corrupting their files if a machine or an application crashes or malfunctions. I can easily imagine that at some point users familiar with SQL-like data access will welcome an SQL sort of access to information on a computer to supplant the file-system browser and the registry or directory component viewer. At that point, you'll have a database operating system (DOS -- no pun intended). There are many advantages to having some of those components coming down from the network into your machine at runtime. Spell-checkers or file viewers are the obvious examples. And the OS will have to have cognizance of those components to ensure proper integration and system integrity. As far as I can tell, that's what Microsoft's plan is with .NET, to have that network-enabling extension to the OS. What we're seeing today is just a very first, preliminary step. But I'm folks at MS understand that these evolutions take many years, if not decades, to become mainstream.

Then, why do they focus on XML and Web services? Well, for one, because everyone knows (or think he knows) what the Web is, and it's the buzzword-du-jour. But there is also a deeper issue, and that is that we just don't quite understand the nature of mobile objects yet to the degree that that could form the focus of a developer program like .NET. (Well, I certainly don't claim to understand mobile code; I can't speak for others...) I mean, what does it mean when I send you a chunk of code or an object for you to execute it in your environment? And what do we mean by "environment" where the thing that you're executing my code in is itself extensible on the fly with someone else's code from the network? We're used to building and architecting systems, not orchestrating some amalgam of functionality that flies across wires and serendipidously assembles itself into a computer program. Our very notion of a computer program centers around the idea of algorithms that execute and then terminate in a finite strech of time. What we're talking about in a mobile-objects world are programs that run forever, cruching and biting on small morsels of code consumed from the network. How can we predict the outcome of such systems? And, how do we define those systems, in the first place? What does that system look like? Who owns it? Who is responsible? Whom to call if it misbehaves?

Java is all about network-mobile objects, but very few Java programmers actually take advantage of that concept. When was the last time you specified a network-bound URL as your codebase, instead of the local file system?

People understand XML, because they understand messages. Everyone who ever received a piece of mail via the Postal Service understands messages. Everyone ever operating a voice or email box understands messages. XML is messages, dressed neatly, all tidied up. But XML is not mobile behaviour. When was the last time you received a piece of *behaviour* via the Postal Service?

So, with .NET Microsoft currently focuses on XML-based Web services, but they have the pavement all laid out for non XML-based Web-services as well. I think their hope is that developers will sooner or later find the need to code mobile behavious into their applications, and that they'll be ready by then. And I think what will drive that developer need will be user and customer experience. And you'll get that by having .NET intergrate with the OS.

What I fail to understand is why Sun is complaining about Microsoft, and why they are not doing the same with their own OS, Solaris. As I'm typing away on my Ultra workstation, I'd certainly love to have the capability to discovery network-mobile Java services, and load them into my OS. Just today, I ended up having to install some OS patches -- why can't I do that via a Java patch classloader? And I was looking for a better addressbook than what I am currently using -- why can't Solaris just load one for me from the network? Since Solaris is used by more high-end enterprise servers than Windows is, having enterprise applications load into the OS would certainly benefit many folks.

And Sun has something Microsoft doesn't (yet) have: Jini. Jini is the natural extension of Java, and is the infrastructure that can make mobile objects a reality on the scale of the Web. If I were Sun's CEO, I would certainly mandate to Jini-enable every single Solaris network-management component, every storage array, every piece of hardware and software I or my partners sell. And I'd do that on an emergency basis. For instance, I'd try to convince Oracle to Jini-enable their key database components so that other objects can interact with those databases over the network. Then, I'd construct a world-wide network of Jini lookup services, (possibly teaming up with telcos), and make it so that injecting a piece of object into one lookup service propagates out that object to the entire network, making it available anywhere in the world, to any device or software component. Finally, I'd mentor a developer program to make it easy and profitable to build network-injectable Java components. I think that certainly would cause some worry to MS. But, more important, it would produce huge customer benefits, as it would make the vision of invisible computing just a bit more of a reality.

So, why is Sun not doing that? Or are they? O, maybe it's just that we're having a hard time understand the true nature of mobile objects....

Matt Gerrans

Posts: 1153
Nickname: matt
Registered: Feb, 2002

Re: Java Creator Gosling says .Net Falls Short of Expectations Posted: Apr 6, 2002 12:44 AM
Reply to this message Reply
Yes, I wish Gosling had been a bit more specific, too. Maybe if Bill (Venners, not Gates) interviews him again next year, he can follow up on that. And on the off chance that Gosling ever reads the Cool Stuff Forum, he'll have a knock-em-dead answer ready.

I can't agree that IE enhances the user experience by having the OS tied to it. I think the whole claim of IE being part of the OS was a falsehood that Microsoft used to force all OEMs into shipping IE, in order to crush Netscape (and it was successful). The success of IE is due mostly to Microsoft's heavy-handed tactics and manipulation of OEMs and Netscape's resulting destruction. Subsequently and naturally, Netscape has failed to keep up technically and we can now look at them both and say that IE is a superior product. I don't think IE owes its success to OS integration, but to Microsoft's clout.

By the way, anyone can (and many do) write shell extensions and/or applications in Windows that appear to be very tightly integrated into the OS. It is also pretty easy to write a big hog of an application that starts itself at boot time and hangs around invisibly until it is activated by a little stub sending it a message, giving the appearance of incredibly speedy startup (I don't think IE does this trick exactly, but I wouldn't be surprised if they preload a lot of "system" DLLs that really only IE needs).

A funny thing about network mobile code/patches, is that IE currently has a feature where it will tell you of the latest security hole and allow you to update from the web (all the virus-scan and tax preparation software tools have this behavior, too). I know this, because my machine is currently stuck in a loop where it tells me I need to update with a new security patch and asks me if I want to do it; when I click "yes", it downloads some stuff, runs it, and crashes. Then when I boot up again, it tells me I still don't have the patch and asks if I want to install it.

Your vision of an internet of mobile objects is interesting. I suppose it will eventually come to that, but now it seems like science fiction. It also seems a little scary. We already have a lot of mobile code, probably most of it is JavaScript and VBScript viruses (like lovebug), but most of it is not code talking to code, so we are still somewhat in control.

It seems that the whole process of computing now is a very tedious one of programmers typing code on keyboards, but maybe it is moving toward a time when all computers are connected and we can somehow simultaneously know and use all the available code on the net, rather than writing code that a thousand other people have already written.

I wonder, if you look at computing in general, from an agnostic and high-level point of view, where it is going. Is it just driven by market forces, or is there some more fundamental evolution going on?

Bill Venners

Posts: 2284
Nickname: bv
Registered: Jan, 2002

Re: Java Creator Gosling says .Net Falls Short of Expectations Posted: Apr 6, 2002 9:31 PM
Reply to this message Reply
> I wish Gosling elaborated a bit more on what he found
> lacking in .NET. Regardless, I don't understand why
> Sun would be afraid of .NET. As far as I can tell,
> Sun's revenues are marginally impacted from Java
> licensing at present, whereas Microsoft's entire
> revenue stream comes from Windows, and now .NET,
> licensing.
>
My thinking has been that perhaps the next big "platform" for software development after the desktop computer (which ended up dominated by the MS Windows OS) would be a virtual platform that could be ported to many kinds of devices. People buy Windows primarily because the software they want to use runs on Windows. Software vendors support Windows because that's what everybody has. Once a certain market share threshold is crossed, the dominance just snowballs and there's no way to break it. I once heard Bill Gates say, "You get the volume [in OS sales], you get the applications [written by ISVs]. You get the applications, you get the volume."

Given the current trends in hardware, the proliferation of embedded devices and network connections, perhaps the same kind of dominance could conceivably be achieved by a virtual platform (VM + standard library) in the future.

I imagine that companies with vested interests in Java like Sun, Oracle, IBM and so on, would rather see the Java Platform emerge as the dominant virtual platform, not the .NET CLR. Sun may not get a lot of revenues from Java compared to their hardware sales, but I expect they'd want to achieve the dominant position in that space because being in control gives you a lot of leverage to make money in other ways.

Jakob Eg Larsen

Posts: 18
Nickname: jlarsen
Registered: Jan, 2002

Re: Java Creator Gosling says .Net Falls Short of Expectations Posted: Apr 8, 2002 5:42 AM
Reply to this message Reply
I see both J2EE and .NET primarily as marketing brands for collections of technologies. The two collections of technologies are fairly similar and generally can do more or less the same thing. Maybe there are some important differences for instance in terms of security, but that's not my point. The current buzzwords are definitely XML, webservices, and SOAP messages and in that sense both J2EE and .NET are buzzword compliant.

One question is whether "great" is better than "good". In many cases .NET will get the job done even if it is an inferior technology. microsoft are providing good development tools, so that people can sit down and with "not too much effort" walk through some kind of wizard and create a working whatever-program that utilize the technologies. The quality, scalability, extensibility, security and so on of the stuff that is created this way is another issue. But, do people really care what's "inside", whether it is written in Java or C#, it runs on JVM or CLR as long as it gets the job done? I would say that the single most important difference between J2EE and .NET is from a business decision point of view. Choosing .NET means that you also choose windows and thus tie yourself to the platform and more or less the whole technology stack from microsoft. Business decision-makers should probably think twice about that.

I agree with Franks pet theory about moving towards network-mobile code. We totally agree on the obvious advantages of sending behaviour over the network instead of just data. So the question is not really about J2EE vs .NET as they try to do more or less the same thing. IMHO the interesting question is what Sun and microsoft are doing to fulfil this vision of network-mobile code.

I agree that Sun has Jini, and microsoft doesn't have anything like it. microsoft "seems to" be taking much smaller incremental steps towards the vision, whereas Sun has taken a much larger step with Jini. What I mean is, that not many people really understand how to build -- or just the amount of complexity involved in building -- reliable distributed systems. Jini and other technologies will facilitate this process, but there is still a huge gap between building systems based on simple message passing between two participants, and then truly distributed systems with network-mobile code flying over the network and being injected into the various participating components that make up this future-self-adapting-reliable-distributed-virtual-platform-whatever.

Currently this gap exists in terms of required development effort, our understand of it, the available tools to do so, the complexity involved, et cetera. That's why this is an evolution that might require time like any other evolution, and maybe webservices is just a phase the world has to get over in order to get there? The web and XML/SOAP-based message passing is definitely something that people can understand today. But will it do their job tomorrow?

Sun should definitely do an announcement today that they will Jini-enable ALL Sun products and push for their partners to do the same thing. That way the future of network-mobile code might arrive sooner... ;-)

Flat View: This topic has 6 replies on 1 page
Topic: Web Services 101 Previous Topic   Next Topic Topic: Expert Calls for More Secure Wireless Java

Sponsored Links



Google
  Web Artima.com   

Copyright © 1996-2019 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use