Defection To Mono

The WebStart issue seems to be mainly with Sun’s client.

I think using WebStart code/libraries to embed update capabilities in your game is the way to go. Have your self-contained game manage a private WebStart cache that only it uses. The embedded cache would come populated with the files for your game.

The thing I don’t like about WebStart is how applications are “lost” to the user after having been launched the first time. If they don’t make a shortcut on the FIRST launch then they have to go back to the web site to launch it again, because they have NO CLUE that the WebStart application exists and that it is a way to launch code they have already downloaded.

[quote]Um, except of course the mind-numbing: “We created chaos and confusion by releasing 1.3 so that the compiler produced stuff that crashe pre-1.3 JVMs. Because we’re so stupid, let’s do it all over again! We didn’t quite get enough bad press about how crap java was last time (heck, there was a lot, but it blew over after a while; we need some more free publicity!), so let’s really roll out the barrel this time”.
[/quote]
Huh? What are you talking about?
I for one found only one single issue with deploying my app on 1.5 after having developed it on 1.4.2. I found it extremely bizarre that it wasn’t noticed and didn’t cause a huge stink… that was the fact that toString() on XML Elements no longer produces the actual XML in Java 5! I had to convert my code to save my XML by doing an XML transformation.

That was the only issue, other than it Java 5 just worked.
Upgrading from 1.2 to 1.3 and 1.3 to 1.4 I don’t remember a single issue other than needing to use the -target switch on the compiler to keep the class version compatible when moving to 1.4.

I’ve heard that Java sound is somehow hosed in Java 5, but my code that uses it didn’t have any problems. Perhaps I was just lucky.

I’d just said that there are no issues with version incompatibility.

That’s not true, so I felt I had to mention the glaring exception: 1.3 and 1.5 both changed the class file format so that their classfiles crash on prior JVM’s (or am I missing something here? It’s bene a long while since I ran 1.5 classfiles, but IIRC they won’t run on 1.4. I’ll be rather embarassed if that’s not the case :)).

EDIT: IIRC it was a bug in Sun’s 1.3 that wasn’t intended, and got fixed (eventually) ?

Of course, personally I wouldn’t have minded if:

  • they used that opportunity to make generics good and cool
  • they made a big song and dance about getting people to upgrade so that the world (not just a handful of java developers) knew about it (*)

(*) - if MS owned Java, you can bet your ass there’d have been an entire marketing campaign getting world + dog to upgarde to java 5, AND they would have put 50 coders onto making a so-easy-to-use-every-tech-illiterate-CEO-can-manage-it upgrade of webstart, and making sure it:

  • worked (in 95% of cases)
  • was really, really user-focussed (even if it had some nasty user-unfriendliness that could have bene better - you can be sure there’d be none of this “if you don’t make a shortcut NOW then this app will disappear. HAHAHAHAAHAH!”)

Of course, they’d have spent their time on that instead of on adding other features. I’m just citing it as a shining example of what Sun could have done, had they decided to make lots of people upgrade to java 5 instead of just a few.

Pretty much Webstart needs to give full control to the user, not the JVM. When you download software with it, it needs to ask you where you want to download it, and you need to be able to back it up and export it in a format that lets you copy it to other machines and import it back again. It needs to lose all the crazy language like “desktop integration” and treat a downloaded application like it’s a first class install on the host; it has to ask about icons on install. It should inform users of upgrades but only download them when asked. It should have a nice user interface, with all the text antialiased and aligned correctly. It should have a considerably friendlier message when installing properly signed code. And so on.

But most importantly it should be bootstrappable! I would like to be able to link to a web service somewhere that allows me to download a JRE if necessary and then silently get on with downloading my application - without the user needing any JRE or Webstart installed already.

Furthermore the MIME type issue really screws up jnlp deployment. Most browsers manage to get it wrong in some way and require fiddling. Can we not simply have a Flash launcher?

Hey, didn’t I suggest once that the whole team responsible for Webstart should be hung by the toenails until sorry? Well, obviously the punishment wasn’t harsh enough. Foreskins next time.

Cas :slight_smile:

We did have a thread for listing all the things wrong with webstart, it’s lying around here somewhere…

All great stuff, as is erikd’s ideas. Plus all the stuff collated in the older thread.

To be honest, if I happen to make a few million dollars at some point and not have left java behind long ago, I’d probably setup a company solely to fix up the crap that Sun peddles. This is exactly what happened 8 years ago when IBM shoved it in Sun’s face: “you guys are being crap, and your execs are morons; LOOK: This is what you need to be doing with java; you’re sitting on a goldmine and ignoring it”, and which eventually put a fire under the collective corporate backsides @ sun, and lead to great work in the following years (Hotspot, for instance, is excellent. So is NIO, albeit undocumented >:(). I reckon Sun needs another good kicking up the jacksie, needs to sack a few senior execs who are fiddling whilst their bank balances swell, and replace them with guys from the dev teams who are probably even more frustrated than those of us using java, because they’re denied the opportunity to fix the stuff (no budget, no marketing support, whatever)…

Correct me if I’m wrong but this works almost universally now? It’s been a very long time since I’ve had problems with it.

Perhaps it would be fairer to say: “whoever was responsible for castrating Webstart at birth and preventing it from being finished being developed…”

Valve’s Steam on-line delivery system is kind of like Webstart. It does autoupdating too. It has a nice interface and whatnot but plenty of people still hate it. So what chance do Sun have with Webstart?!

[quote]Valve’s Steam on-line delivery system is kind of like Webstart. It does autoupdating too. It has a nice interface and whatnot but plenty of people still hate it. So what chance do Sun have with Webstart?!
[/quote]
Apples…oranges.

People hate Steam for all sorts of reasons, none of which have any relevance to Webstart, including:

  • You don’t own a Steam game, you (this is illegal, BTW, but no-one’s sued them yet) rent it
  • Steam is 20 times as complex as webstart and all that extra functionality is / has been riddled with bugs in the live releases
  • Steam is NOT aimed at improving life for players, it’s aimed at making more money for Valve; most people recognise this; a large minority of people are pissed off by the fact that they’re being forced into this nasty, buggy, hard-to-use system only because it increases Valve’s profits

Of course, let’s put this into perspective: most people don’t care and happily use Steam. I don’t think your “plenty of people” is wrong, but it is a little misleading.

I just bought Steam / HL2 last weekend (it’s brilliant by the way). Steam managed to f*ck up in various imaginative ways - for example, it simply hangs doing nothing at all after a hibernate / resume.

However it does have most of the features that webstart is crucially missing:

[] Nicer, customized GUI for gaming - check.
[
] Asks you if you want to update - check.
[] Fully resumable downloads - check.
[
] Fully and sensibly integrated with desktop - check.
[*] Export downloaded data - check.

However the fact remains that people don’t like it. So there. What more can you say? “Oh yes they do?” Don’t pull my leg!

So we’re back to wanting to embed a properly mangled Sun VM but they won’t let us. Strange that I can do exactly this with Jet. Or Mono.

Cas :slight_smile:

Oh, I have to respond to that! Yes, Half-Life 2 is excellent, but Steam still sucks. Whilst I applaud the concept of Steam, the implementation still has a long way to go.

Customised GUI? You mean the nasty olive-coloured boxes? IMHO they’re ugly and out of place - they don’t fit in with either the OS or the games. But oh, you can change them to ugly grey boxes through the preferences!

Query on update - since when? I’d love that feature, but have never seen it. I frequently decide I’ve got ten minutes to spare so boot up Steam, and then discover there’s a half-hour update ahead of me, which I can’t stop, can’t defer, and I can’t run any affected games until its done. So I go do something else instead.

I can’t run Steam on system boot, because it requires access to the Internet immediately. In fact on my box it tries to log in before Windows boots the Wi-Fi - so it fails every time.

Integrated with desktop? Well, it places a shortcut on the desktop (just like WebStart) and applications you own have their own shortcuts (just like WebStart). Not sure how this differs.

The Steam/WebStart concept is a bold new way of distributing software, but they’re both pretty far off being a dependable channel, in my opinion.

Steam is not as bad as people usualy make it. Like any new software concept its necessary to waste some time to learn how to work with it.

Once you have created your Valve dir you don’t have to install the game again or even need internet access to play. You van even realocate your Valve dir somewhere else, rebuild all your icons or disable steam startup for windows that causes some problems. The ocasional problem of Steam loose your personal account info and requesting a connection can be solved by backing up the file that contains that info and copy it when necessary.

Most of the problems you mention are in the FAQ or answered in the steam forums. I certainly would like to see something similar to Steam for selling any java game i may create in the future as long as the service wasn’t too much overcharged.

Its a new software concept. Valve describes it has a distributed file-system. So its natural that people gets a little confused and scared with it. But i think the idea is very good and from this news here it didn’t made that bad:

If Steam helps to take down all Vivendis, Interplays and Electronic Arts in the world then it will certainly be a good thing.
.

quote - if MS owned Java, you can bet your ass there’d have been an entire marketing campaign getting world + dog to upgarde to java 5, AND they would have put 50 coders onto making a so-easy-to-use-every-tech-illiterate-CEO-can-manage-it upgrade of webstart, and making sure it:

  • worked (in 95% of cases)
  • was really, really user-focussed (even if it had some nasty user-unfriendliness that could have bene better - you can be sure there’d be none of this “if you don’t make a shortcut NOW then this app will disappear. HAHAHAHAAHAH!”)
    [/quote]
    Microsoft wouldn’t need to do any of that… just like they didn’t do any of that to educate consumers about the CLR and .Net
    They have a huge monopoly. They just have to include it in Windows or “Windows Update” and 90% of the world gets it.

As for user-focused… MS is extremely bad at that too. Take a look at MS Word - packed full of useless features to most people, and simple things are difficult, like getting a table to look like you want, or anchoring a graphic and having the text around it do what you want. Or there is Windows Explorer - the core file browser of their OS that has been totally broken for so many years… with it’s tree views that never refresh properly, showing deleted folders long after they are gone, and not showing new folders. Where deleting a single empty directory might take tens of seconds.

MS deserves no respect in that regard. They have what they have because of unfortunate consequences of IBMs marketing in the early 80’s and maybe a couple good business decisions (and several illegal ones) after that… the quality of their product is certainly not the reason they enjoy the monopoly they have now.

[quote] export it in a format that lets you copy it to other machines and import it back again.
[/quote]
Couldn’t you add this capability from within a WebStart application? To do it you need to be able to open the JNLP file and each of the resource jars (you can parse the JNLP file to find the names). Then copy the whole lot to where ever the user wants it. Provide a simple script to import it back into the webstart cache (not necessarily on the same machine).

Obviously this depends on the new import facility in J2SE5.

[quote]It should inform users of upgrades but only download them when asked.
[/quote]
Divide your upgrades into two categories; minor ones (or security fixes) which everyone should have ASAP and the rest. For the non minor updates, use a new URL for the jnlp file. This allows people to continue using the old version. Include in the old versions a resource containing information on the new versions (and update this). In the extreme case you could limit updating of the old versions to just the new version information.

So you can manage your own policy of what is forced on the user and what is merely notified. No need to wait for a new version of WebStart to fix this defect.