Registered: Jan, 2002
Re: Sun, Microsoft Officials Debate Java vs. .Net
Posted: Feb 3, 2003 11:44 PM
> There was talk of this ages ago (in the mid-90's), even
> going so far as to have articles like one below (used to
> be on java.oreilly.com, now all I could find is the google
> cache) about Java Application etiquette..
Yes, that's an interesting article. Aren't Google caches great? I also recall a discussion about that years ago, that's why I don't understand why Sun, or someone else, hasn't done that yet. Starting up a whole new VM just to run main() of a class is really ridiculous. The Jini starter kit, for instance, has had a way for several Jini service implementations (i.e., Java programs) to share a single VM. There was a huge savings on system resources as a result. It's a bit tricky to do that, especially because of the need to partition off those apps from a security view point. But it can, and has been, done. I even remember reading an article about that by Li Gong ages ago.
> linux (1.2?) had a kernel module for the JVM ages ago, but
> it got left in the dust..
Yeah, I recall that, too. Whatever happend to it?
> > As a next step, the OS could also have a "services
> > browser" that would allow a user to explore Java
> > - both in the local environment (local disk), the local
> > network, and also on the Internet (perhaps browsing Web
> > service registries). When a user clicks on any icon
> > representing such a Java program (e.g., runnable Java
> > object), that object would load into the running VM
> > (observing security policies, of course), and execute
> > (perhaps presenting a UI to the user, and contacting
> > Java objects on the network, as needed).
> that sounds something like webstart (or what it might
> evolve to..)
I have in mind more like a Jini services browser. In other words, I can imagine Java-based objects that provide services, and that run forever on various machines available via the Web (perhaps in a peer-to-peer fashion). For instance. the filesystem would be such a service, or a credit card charging service would be another example. Even data objects could be represented as running service objects (e.g., my bank account could be represented by such an object, or a reservation I made on a flight). Those objects could be discovered, and their methods could be invoked at any time (after some security checks and authentication). So, if a bank wanted transfer money to my account, they'd just discover the object that represents my account, and invoke the depost() method on it (I'd allow anyone to make deposits, of course :)). Some of those objects would also have user interfaces attached to them, which, when invoked, could be presented to the user. That's what I meant by having a browser for such objects built into the OS.
I think that's what Microsoft's ultimate aim with .NET is. This XML-based Web service/SOAP businesses is a side show. Eventually, they'd want all objects to be represented by a proxy (written in C#), and have the .NET runtime be executing continuously inside the OS, downloading proxies for those objects as needed. That's also a logical extension and next step for the OS - because that's how most micro kernels work already. Instead to loading objects into kernel (or user memory) from disk, you load them from the network.
At that level, though, you will need to use a programming language to represent those objects, because those are full-fledged objects, not just data that can be represented in XML. So, sooner or later, XML will be relegated to the background, and more focus will be directed to the language-based proxies. At that point, it *will* boil down to Java vs. C#. I'd say Sun has maybe 2-3 years to try to have that happen with Java. If they miss the opportunity, all those objects will be written in C#.
So, at this point, I think Sun should start building an infrastructure, and then work with developers to gain a critical mass of useful services. Once the critical mass is reached, developers will have increasing interest in accessing, and contributing to, that object Web. By that infrastucture, I mean something like Napster - but, instead of music files, you'd have objects.
What do you guys think?