For some reason Java WebStart has a bad rep, so I am thinking of knocking together a bare minimum installer using Launch4J to make an EXE and a library like jshortcut to make the start menu shortcut. The EXE just extracts files to the desired location and sets up the shortcut. How hard can it be?
I figure once I get it working I can use it for any app.
Java Web Start has a bad reputation but some people who criticize it use… a single fat JAR that might be opened by any archiver (WinRAR, Arch, …) which is a worse solution. If you really want to give it up, look at GetDown or IzPack. I plan to use RedLine RPM to create RPMs quite easily. If your project is under a license compatible with the GPL, you can reuse my source code to create desktop shortcuts.
In my humble opinion, Java Web Start is not that bad, it’s not perfect but it’s the easiest solution especially when you need automatic updates. In the worst case, use it until your application becomes really big and stable, not when you will have to update it a lot.
Are you planning on distributing an entire JRE with your app? That’s a tad excessive.
Assuming you have a Windows machine to use it (and test), you could look at using WiX. I can easily find one blog article* about checking that Java is installed; at least this way you can do a version without the JRE and give people the option which they download.
distributing a JRE makes sense for LARGE games, targeted at “casual” customers.
This way the app avoids to request downloading and installing some
“Download Java (a xxx Viagra, Virus Trojan) to your Home Machine, (HeHe)” thing
(this is how a casual user might observe the request to install some unfamiliar Java JRE stuff)
For samller apps, A detector and reminder that Java has to be installed is the better solution.
Just distribute the entire JRE embedded, and be done with it. All problems solved. Bandwidth irrelevant nowadays. For any games under about 2-3 mb in content or targeted at the world at large you’re probably not being serious anyway so rely on the system JVM or use one of the installers that goes and finds a JRE to download on-the-fly.
Quite possibly, but those of us who aren’t making thousands of euros by selling our games aren’t necessarily bothered by losing players too stupid or too ignorant to follow simple instructions about downloading the right installer for their computer.
Ah now it’s not fair to say it’s people who are stupid or ignorant… it’s people who’ve got better things to do with their time than jump through hoops just to try some nicknack out. Like me, for instance. If you want lots of people to try stuff out, make it trivial. If you’re not bothered whether lots of people see the results of your efforts… well, who cares.
When I did my frist installer with game and jre bundled, it was 20MB as exe installer
so compression helps, if an extra 18MB or so for the jre in the download is big for you…
It is a strong urge, as an engineer, not to “waste” resources if possible. Bundling 18mb of JRE with 2mb of application appears, at first glance, to be a “waste”. It is not. It is actually just short-sighted thinking. By bundling the JRE with your application you both: a) guarantee that it works insofar as JRE compatibility goes b) relieve the end user of the burden of installing a system wide JRE and all its attendant risks (security holes, admin rights, breaking existing apps, etc) and therefore c) make it much more likely your stuff is actually used.
This costs you 18mb of storage on your hard disk and 18mb of download bandwidth; it costs the user 18mb of storage and 18mb of bandwidth. How much does 18mb of storage cost? How much does 18mb of bandwidth cost? Almost virtually nothing, and yet you have provided an engineering solution that provides a), b) and c) above!
well we are usually about the “best” case meaning “big” deployment - planing for the future
game is big > 200mb, many people download it > 5000 and so on
I’ve had that urge too (until you corrected it by repeating the above plenty of times in different forms). What happens is that I put myself in the mind of the people who I’d target and then make wild assumptions about them being the most difficult audience to please in the world of software dev. Which is partly true, but not to the extent that I want to believe is the truth.
I’m basically biased by enduring years and years of people who start hyperventilating when an app (Java based or otherwise) uses 100mb+ of their 3gb+ memory. I’m confused by people praising a tool like uTorrent and CCleaner because they’re so darned small and had almost no memory footprint (well, when they were first created anyway) and not because they’re just good tools.
And to a lesser extent - its true that I harken back to the days of the Commodore Amiga where devs would put bits of magic on a single floppy disc and did the same as I achieve with a 100mb+ Java installation eating up dozens of megabytes of memory. More of this century, I’m basically “competing” with myself in the days I did C++ and I produced neat and tiny executables that plopped something on the screen in mere milliseconds. There is this built in drive to somehow prove that with Java you can do the same cool stuff and not have to suffer all the overhead… Professional pride combined with a great love for the platform blurred my reasoning you could say.
But my eyes are open, I’ve learned to think “who cares!?” next to “you ain’t gonna need it!”.
LoL that’s the worst case, when you go for Volume based connection which fast but expensive (in contradiction to pjt33’s time to download prob). Ofc I use the slowly unlimited one
There are plenty of installers that will detect a JRE and download it if it’s not present. NSIS can do it with a simple script. All the time blathering about whether it’s good and right and proper can be spent just using a decent installer.