Apple, Webstart, and JVM versioning

For all the OS-X users out there: what are the caveats about choosing a JVM version for webstart based on windows/linux platform experience, and then having mac users end up with the same JVM?

Situation: windows and linux have almost exactly the same bugs in most versions because Sun releases both (+solaris) on a fairly common code base. Apple appears to be a different kettle of fish - as is the case with IBM and all the other vendors.

Problem: webstart lets you demand a particular version of JVM. It doesn’t let you choose the OS! More to the point, it won’t let you “switch” on the OS.

EDIT: this is not true. I mis-read the spec. You most certainly can choose a different version for each OS…in fact, you can of course serve a completely different program to each OS :).

So. What to do about mac users? How much trouble will we be in if we just let authors choose a version e.g. 1.4.2_06 (is there even an apple _06 yet?) ?

This is pretty much why LWJGL exists. It removes nearly all the randomness from the equation. If you stick to a few other principles as well, such as the amount of garbage you generate being minimal etc. then you’ll get stuff to work cross-platformly, reliably, and with perfect performance.

Cas :slight_smile:

That’s a fair point - from the developer perspective, the best fix is to standardize on something which is uniform across platforms.

But the reason I’m asking here is because I need a solution from the distributor perspective, and unfortunately “all games must use LWJGL” isn’t feasible :).

FYI the use-case/thingy is that of having games rotated around and appearing on the front page of the site (ahem. Games section has three placeholders of AF - these will be (once there are games in the DB) automatically altered on a frequent basis) - and we cannot afford to have them “broken”. That would be a major problem. The following aspects / features / contentious decisions on JGF all come out of that, to a varying extent:

  • all game binaries must be on JGF server (too many times the hosting for one or more games has disappeared temporarily or sometimes for weeks)
  • JGF server handles the JNLP’s automatically
  • when you create a game (upload initial version) and each time you change your game (upload a new version), it will not appear until it’s been tested and OK’d by at least one JGF tester on each of the 3 main platforms (far, far too many JGF games were “doesn’t work on OS X” - I have a very long list of critical bugs courtesy of SWP. Worse, plenty were submitted as “windows only” with hardcoded “C:” directory names etc)
  • …some others I can’t remember right now…

I am thinking of just offering developers the choice of version. However, you can choose right down to 1.4.2_04 for instance (requires extra stuff in the JNLP that you don’t need if you just asked for “1.4+”, but it’s stuff we can handle automatically)

In theory, I could use OS detection checks to allow developers to specify a version for each platform.

In theory, I could offer developers the choice of preferred vendor (only matters in the case that the user doesn’t have a new enough version: we’ve got enough data to auto-download a different vendor’s JVM depending upon what the author recommended!)

But now that I’ve realised I can’t switch on OS I just feel like giving up on all the precision. Sooner or later some game will be buggered because it needs different versions on different OS’s but if that requires the hassle of browser-detect I just don’t think it’s justifiable given the time cost.

…yet I thought I’d ask, in case I was about to unilaterally screw up OS X users!

The basic rule is … don’t specify anything more specific than A.B
e.g. 1.4+ never 1.4.2+ or 1.4.2*

Only ONE version of 1.3 , ONE version of 1.4, and ONe version of 1.5 will be available.

So far 1.3* and 1.4* are available, there is no guarantee that 1.3 will remain when 1.5 is added, but I think it is likely.

Auto-download via webstart is NOT available. You must direct your users to use the built-in “Software update” feature, or direct them to the download page for the version you need on Apple’s web site.

OS X 10.3 comes with 1.3 and 1.4.
OS X 10.2 comes with 1.3, 1.4 is available free from Apple via software update or the Apple web site.

OS X 10.4, due the first half of this year (2005), may ship with Java 5. If not I expect it to be available via software update very soon after the release of OS X 10.4 (Tiger)

Java 5 will like REQUIRE OS X 10.4.

Use 128x128 icons in your Web Start app for the best look on OS X.

Make a native application bundle for OS X if possible. They are just what Mac users expect. They also work better in terms of copying the application to different machines. Read the papers on Sun’s site and java.net about packaging your app for OS X.

[quote]So. What to do about mac users? How much trouble will we be in if we just let authors choose a version e.g. 1.4.2_06 (is there even an apple _06 yet?) ?
[/quote]
Don’t do that. I think it is a bad idea anyway (even Sun doesn’t make EVERY version available for auto-download).

There is no _06 available for OS X. I’m not sure if the security issue that lead to _06 effects the OS X version or not, but _06 is not available via software update.

http://developer.apple.com/releasenotes/Java/java141/multiplevms/chapter_3_section_3.html

http://developer.apple.com/releasenotes/Java/java141/multiplevms/chapter_3_section_2.html#//apple_ref/doc/uid/TP30000284/BAJDHIAG

(note 1.4.2_05 is the latest version of 1.4 available, that table was made for the 1.4.1 release notes.)

Ha. Since webstart spec doesn’t allow for that, presumably you have to declare a 128x128 as the default and hope that OS X is intelligent enough to use it instead of the (webstart spec mandated/recommended) 64x64? Or am I still misunderstanding this spec?

PS stuff like mac bundles we won’t be worrying about for some time yet just because there are bigger problesm :frowning:

No, actually, they do. I mentioned this above - they’re too incompetent to update their own pages listing the versions they make available (what is the point of having those pages on your website if you never update them ???) - if you type in guessed URL’s they all work, up to and including _06.

The issue, though, is that e.g. if there is a 1.5.1 then we really rreally really don’t want anyone who’s only got 1.5.0 to get away without upgrading, at least with Sun JREs because the difference between .0 and .1 and .2 in Sun terms is massive (heck, the difference between _01 and _02 and _03 is more than enough to prevent apps working on anything except the latest! Has happened to me several times over just on the 1.4.2 family!)