Fog Creek Software
Discussion Board

Anyone used java for shrinkwrap application?


I'm pondering the choice of languages for rewriting a bunch of successful commercial 16 bit vb3 apps.  (See that sordid discussion at:

Someone just suggested Java, claiming that you can siliently install the VM without the user even knowing you did it.  (So he claims).

Anyone done it?
How did it go?
Any problems?

Wednesday, June 4, 2003

use c++ and wxWindows (

oh...sorry, that wasn't the question was it..

Wednesday, June 4, 2003

I have not written, but been exposed to supposedly shrinkwrap Java apps. I wouldnt call it shrinkwrap, installing JVM and certificates to enable cut & paste and what have you is consultingware at best in my book.

What Im saying is that the normal users can run in to problems they dont know how to solve.

Wednesday, June 4, 2003

I haven't done it, but installers of this sort have been working for years now.  At least one of them even let's you use a native startup splash screen.  From what I have heard, programs installed this way on windows and mac startup and run pretty much like native apps.'

The problems you will encounter are that Java programs always use more memory than native apps and the GUI will be somewhat (but in my opinion not inordinately) slower than native.  Also you will have to do some work to handle Joel's fetish about keyboard navigation working exactly the way he expects it to.

In exchange you will get an efficient dev process and the ability to deploy to Windows and Mac OS X.

Erik Lickerman
Wednesday, June 4, 2003

The only big Java desktop package I know of (are there others?) is OpenOffice/StarOffice.

It's terribly slow. Tolerable, but it still can't hold a candle to, say, Word on the same platform (i.e. Linux).

I'd be interested to see if someone has really used Java for an app, and I just haven't noticed (because it was that good), but I don't think it happened.

I like java, but not for end-user stuff, for just that reason.

Mike Swieton
Wednesday, June 4, 2003

You shouldn't install the VM silently at the user's computer, but rather bundle the JRE with your app., i.e. your app. will always use the runtime that is located in a subdirectory of the program. No other 'installation' than copying the files to the harddisk is required. The launcher program in the JDK is an example on how to do this.

Roland Kaufmann
Wednesday, June 4, 2003

Shameless plug:

I've worked on a java application called MarkVision Professional that installs its own JRE.  MVP does printer management.  It runs on Windows, Linux, OS X, AIX, etc.  If you follow any of the links from the following web page, make sure you're downloading "MarkVision Professional" and not "MarkVision".

I hope this post isn't too self-promotional.  I wanted to mention this product because 1) it installs its own JRE (apropros this topic) and 2) it's pretty snappy (apropros a comment in this topic).  As a developer who worked on it, I am fairly confident that almost any sluggishness you experience in the application will be due to network lag.

Joel Jirak
Wednesday, June 4, 2003

Roland, out of curiosity, was JRE bundling tested on a clean machine without a previous .java directory in the user's homedir?  Mine seems to hold security info, as well proxy information. 

I was on a contract with a team that bundled the JRE, but I remember thinking their testing was incomplete.

former java coder
Wednesday, June 4, 2003

IDEs like IntelliJ IDEA do this [1], and the last time I installed Oracle they included their own JVM to run the installer program and other stuff. IIRC the 1.1x version of the JDK required more configuration than Java 2 JDKs do. All you need to do now is point to the right 'java' binary and Java can figure out where its libraries, etc. are.

It's so easy to do that if I shipped anything with Java I'd definitely include a JDK (or JRE if I could get away with it) that I'd tested back and forth. Diskspace is cheap.


Chris Winters
Wednesday, June 4, 2003

The only big Java desktop package I know of [..] is OpenOffice/StarOffice.

It's terribly slow. Tolerable, but it still can't hold a candle to, say, Word on the same platform.

Actually, OpenOffice is written in C++. There goes your argument ;)

Jan Derk
Wednesday, June 4, 2003

It's no co-incidence that the first (and only?) program to get the full 5 stars from Tucows on all listed platforms is a Java app.

For mind blowing apps which provide more than a little inspiration, drop by "swing sightings"...

Arron Bates
Wednesday, June 4, 2003

Clay, Clay, Clay /sigh

Half the civilized world now knows that you want to rewrite your application and that you are looking for the best possible solution.  Good for you.  Asking on this message board is ok.  You recieve an opinion from everyone.  There-in lies the problem.

You think I'm joking.  I'm not.

Wednesday, June 4, 2003

Me, me, me! I write and maintain, day in and day out, a document management system for professionals, in Java.

My users are non-technical and don't have any idea the application is written in Java. I use the Nullsoft installer to install my application and a JRE all at once, into the same directory. I use a launcher I wrote in C++ to provide an exe. My installer creates desktop icons, start menu icons, everything.

Users receive updates in a similar installer that just replaces jars and data files.

Most of my users were using an older, native VB application and they love the new Java version. It's faster on the same hardware, mostly due to optimizations in the core logic of the software.

With proper threading and feedback during processing, there are no Swing UI speed issues.

All in all, it works great, and we can easily move it to OSX or Unix in the future. As an added bonus, we are able to provide a web-based version using the same core, because it's all Java.

Wednesday, June 4, 2003

The only big Java desktop package I know of [..] is OpenOffice/StarOffice.

It's terribly slow. Tolerable, but it still can't hold a candle to, say, Word on the same platform.

So you've seen only one Java desktop app? Thanks for your informed opinion.

Joe Grossberg
Wednesday, June 4, 2003


Not sure if I was unclear, but I was responding to the post above by Mike Swieton where he mentioned that Openoffice was created in Java. I only wanted to point out that it isn't. It's written in C++.

Jan Derk
Wednesday, June 4, 2003
(bought by Borland, anybody remembers Borland ?)
they had a CASE tool written in Java.
(i have never seen a desktop app that eats up more memory then this one, so much for garbage collection, where the program always keeps a reference to at least one of all objects ... )
has xml editors written in java.

Both programs install a JVM as part of setup.

Michael Moser
Wednesday, June 4, 2003

"Tolerable, but it still can't hold a candle to, say, Word on the same platform (i.e. Linux)."

So, how does Word perform on Linux? :)

Jim Rankin
Wednesday, June 4, 2003

Jan, I stand corrected. I was under the impression that it was java. Was I mistaken in that StarOffice was also Java? I was fairly certain that it was, but I could be wrong there too...

ANd as a note, OO is at least not 100% C++: it has over a megabyte of Java code (Jar's... true, it may not all be code, i.e. images, but still...).

Jim: Word performs quite well under linux 8-} Starts up a hell of a lot faster than OO. On my system it seems a bit less stable, but I place the blame there first on my system (For various reasons my system is messed up), and second on the fact that Word is native to Windows, not Linux 8-}. Crossover Office is damned good 8-}.

Joe: The fact that I know of only one is valid and useful: it says both that Java is not as prevalant as C++ for Desktop dev., and that any other products were probably done well enough that I didn't notice the difference. I think it's significant that an average user isn't aware of the multitude of applications you imply is there: it means that Java is feasible, if that's the case (if I don't notice, it's been done well).


Mike Swieton
Wednesday, June 4, 2003

* Using Java (over C++, say) will increase the minimum system requirements for your application. Java apps generally will use more RAM and they will be slower to start up.

* UI responsiveness will be  _slightly_ slower on a modern PC. On older machines  the difference between a Java Swing app and a native one may well be too much to tolerate.

* As has already been suggested, download IDEA from if you need proof that a large Java/Swing application can be done. If you decide to code in Java, then buy a copy of IDEA :)

* Bundling a JVM with your install is not that difficult. If you're distributing your app online the extra size might be significant (5-10MB IIRC). There are commercial cross-platform Java installers available.

* Porting to Linux/Mac will be a whole lot easier than any other method you might try.

Andrew Reid
Wednesday, June 4, 2003

The guys who wrote the Java CASE tool for TogetherSoft went on to form IntelliJ and write IDEA.

IDEA, Eclipse, JDeveloper, NetBeans/Forte and a whole lotta other "shrinkwrap" IDEs are written in Java. Almost all the J2EE servers are written in Java (all the ones I know of are, but I'm sure you could write one in another language if you really wanted to). A lot of the OS X system applications are written in Java (apparently Swing on OS X is really snappy).

Walter Rumsby
Wednesday, June 4, 2003


I have been using Eclipse for a while now and I am pleasantly surprised by the responsiveness of its GUI. They have not used Swing though, using SWT instead. I did try a few trials with SWT a while back and it seems to be a decent UI toolkit. However switching from Swing to SWT would take quite a learning curve. The biggest problem in my opinion is that SWT expects you to explicitly deallocate objects in memory. Java developers are used to automatic GC and this may cause some pain.

Ranjit Nair
Thursday, June 5, 2003

limewire and another gnutella client (i cant remember which) are also "shrinkwrapped" java apps.  i'm planning to do one as well (spare time though); as far as I can see, if you get the installation process right there's no need for anyone to ever know that you are using java (and swing with 1.41 on a modern* computer is fine)

* i'm using a 2yr old PIII-900 with 512Mb (win2K) and the only UI issue is an occasional pause when apps have been minimised. 

Rahoul Baruah
Thursday, June 5, 2003

All these people must have so much RAM :)

Eclipse is proof that SWT is a viable windowing framework for Java applications. IDEA is proof that Swing is a viable windowing framework for Java applications too.

IDEA disproves the idea (no pun intended) that Swing apps are slow an unresponsive. Still, most Swing apps ARE slow and unresponsive (e.g. ArgoUML, NetBeans, JDeveloper).

I've been using WebSphere Studio recently and it is pretty snappy. I was able to run WSAD on my home machine with 250MB of RAM. Of course IDEA still seems significantly leaner (and I couldn't run WSAD in debug/server mode with only 250MB).

JavaLobby ( is full of posts complaining about Swing and how Sun needs to do something about the state of Swing, but somehow IntelliJ have turned out a very nice Swing app despite these "problems". Or perhaps the IntelliJ guys know something the average Swing developer doesn't (and/or perhaps the average Swing developer is using some horrible RAD tool that creates messy code). Maybe the IDEA developers need to write a book on Swing programming.

Walter Rumsby
Thursday, June 5, 2003

Try out the demo apps of this Swing api:

They're selling a framework for fast Swing apps.  I would demo the libs if I were creating a new Swing app.  If you do, please tell us how it went. ;)

Thursday, June 5, 2003

*  Recent Topics

*  Fog Creek Home