Which brings me to my somewhat on-topic questions…
It seems there are similarities between ‘standard extensions’ and J2ME ‘profiles’. Could someone clarify exactly where each fits? How they differ? How they are similar? How would JGP on a PC/Mac be implemented? Could it be implemented as a standard extension on J2SE? Or must there be a lightweight runtime for the desktop - a J2ME implementation of PC/Mac?
For the sake of discussion I will try to describe how this would most likely work (though only the Sun folks could say for sure). So you have this thing called the Connected Device Configuration (CDC). Basically it would say things like the device must have at a miminum a certain amount of ram and rom. Note true physical storage is never mentioned as the interface to persistence is a little bit more abstract in J2ME (which as it works out is a very good thing). The CDC is a bit different from the Connected Limited Device Configuration in that you can assume a less limited connection to the network. So in terms of a PC or Mac, the CDC would really just say that in order for your machine to cut the mustard, you must have a certain amount of RAM. No biggie, any PC out there will fit the bill.
Next we come over to the profile is what JGP is (Java Gaming Profile). The profile further specifies the capabilities the device hust have, including resolution and bit depth as well as the input devices. The Personal profile requires that a machine have 2.5MB ROM and 1MB RAM. I would guess that the JGP will have much larger requirements than this. So now your device will be checked to see if it has these requirements (note that this is machine specific implementation stuff just like a JVM). Okay so now your specialized JVM (and I will guess that the JGP would use a more upgraded version of the KVM and not subject us to the pain and unpredictability that is the standard JVM and all its hotspot madness ;D
Next will come a set of APIs. This of this part as redefining Java all over again because while there may be similar APIs in J2SE - or the same package structure anyways, you would use a different bootclasspath to signify a different set of core classes and behaviors. Thus while you may be using java.lang.String - what is being used and compiled under the covers is actually a different implementation of String specifically for this profile. Writing an entire profile (as these folks have done) is a non-trivial excerise.
So in a sense your standard extensions may or may not even be compatible with the JGP depending on how its implemented (probably not - to engineer out much of what we don’t want would require some core changes to some fundamental APIs).
JGP would be implemted as a JVM (maybe the standard one, maybe the KVM, maybe something new altogether) and a .jar file that would describe is API.
Could it be implemented as a standard extension to J2SE? NO! If it were a standard extension to J2SE is would most definitely not be anything near what you’d achieve with J2ME. What you’d have is just an API in a jar and all the bloat and nastiness of J2SE coming along for the ride. Thing of J2ME as a ‘second chance at doing the client side cleaner.’ You wouldn’t want this as a standard extension, it would defeat the whole point of doing it in the first place. In reality a standard extension version of the JGP is pretty much what Java3D provides.
Must there be a lightweight runtime for PC/MAC - yes. Unless the Sun folks cheat and repackage the standard JVM (which would be a mistake IMO… the kVM is more than capable for our tasks) - we should be looking at something that sits on top of the kVM. However it has been said that it also rides on top of the CDC so that almost lends itself to be a much larger JVM like that of J2SE - unfortunately. What’s really needed is a specialized JVM to handle gaming tasks. The other good thing would be that the kVM 's source is readily available allowing any random joe to port the core of JGP to another platform in relatively short time (the kVM is fairly standard C code).
So I’ve somewhat entered the realm of speculation to cover what I think they’ll do, but of course I’m looking at the ideal situation - and I don’t have to base my view on a timetable or budget (specifically with respect to modifying the KVM).