Saturday, December 06, 2003

Re: the next JVM (Java Virtual Machine)

yet another day having to study instrumentation topics drove me to the highest levels to boredom. so the one way to refresh myself. some net.

While we're on the subject of levels of boredom... I got to read parts of "genesis" and other religious crap for my english exam. I can't contain myself.

this is the first time i ventured to some .NET territory


so this very amazing idea popped into my head. will the next jvm, make calls to a .net api??? the jvm running inside the .net vm

This is a very interesting question. I never thought of this.

If you look at Java and .NET, they are both platforms. But they are also quite different in their scope I think. .NET tries to cover the ENTIRE Win32 API's. .NET is basically an almost complete layer on top of Win32. Java, on the other hand, doesn't have that big a scope. It provides a lot of functionality, but does not have as much coverage. If you look at the number of classes/namespaces provided and compare between the two, you'll notice that .NET has a LOT more. This reaches ridiculous proportions in Longhorn with WinFX (check out Reference -> Class Library Reference -> Namespaces).

Another thing to notice is that .NET is VERY reliant on Win32. Most classes are just wrappers for the underlying Win32 implementation. I dunno how much Java depends on the underlying platform. I always thought that they were pretty independant... even the GUI stuff like swing is total Java and NOT just calls to whatever the underlying platform is - Is this right?

With WinFX, Microsoft is trying to faze out Win32 and move to managed code. So anything new that is added is not just a layer on top of the real thing. WinFX IS the real thing. This provides for a lot of cool possibilities. For example, the shell in Longhorn is managed and is exposed with a set of APIs. So you can program against that quite easily. Also, when using the command line, you deal with actual objects. So you can write C# code instead of scripting.

This a transition just like there was a transition from Win16 to Win32, C to C++ etc... When we think of C++ right now, we think of how efficient it is. There was a time, when C was king, they thought C++ sucked performance wise. Similar situation is going on now with Java/.NET. Eventually everything will be managed and that will be the measure of performance. Obviously, the unmanaged world will still be alive, just like C is still alive today. But the "mainstream" will most probably be managed because of Microsoft's influence.

Personally, I don't think anything will happen to Java. It will still be very much alive and kicking. I just dunno how it will work in Longhorn - we will have a managed managed world ;-)

What do you think?

No comments: