* The Business of Software

A former community discussing the business of software, from the smallest shareware operation to Microsoft. A part of Joel on Software.

We're closed, folks!

Links:

» Business of Software FAQ
» The Business of Software Conference (held every fall, usually in Boston)
» Forum guidelines (Please read before posting!)

Moderators:

Andy Brice
Successful Software

Doug Nebeker ("Doug")

Jonathan Matthews
Creator of DeepTrawl, CloudTrawl, and LeapDoc

Nicholas Hebb
BreezeTree Software

Bob Walsh
host, Startup Success Podcast author of The Web Startup Success Guide and Micro-ISV: From Vision To Reality

Patrick McKenzie
Bingo Card Creator

On using Java for a desktop product

I am wondering what others experiences have been when using Java for creating desktop applications to be distributed as shareware. I currently have one product, built using .NET 2.0 and installation hasn't been problematic for users. I really like the cross-platform aspect of Java and would love to capture some Mac users for my next product.

One popular desktop Java program, JAlbum, uses Excelsior JET to to integrate a JRE into the installation process and avoids having to install the SUN JRE. Pretty slick solution, but out of my microISV's budget for now.

Anyways, just wondering if people have found installing the JRE a big stumbling block for their shareware.
Pedro Estrada Send private email
Sunday, September 30, 2007
 
 
Check out Patrick McKenzie's blog over at http://microisvjournal.wordpress.com .  Start at the beginning!
Steve Moyer Send private email
Sunday, September 30, 2007
 
 
>>
Anyways, just wondering if people have found installing the JRE a big stumbling block for their shareware.
>>

Permit me to bang the drum on this one: its not, at all.  I deal with a niche that gets about a 3 out of 10 on the technical affinity scale and ~98% of my prospects have a JRE sufficient to run my program (1.4 or higher).  Even 9 out of 10 of the fraction of people who visit my "Check to see if you have a JRE installed" applet a month do.
Patrick McKenzie (Bingo Card Creator) Send private email
Sunday, September 30, 2007
 
 
P.S. You're going to want to wrap the Windows version in an executable.  I suggest Launch4j, which if the system doesn't have an appropriate JRE installed will walk the user through an online install at runtime.  It fits any budget (OSS). 

Macs are easier, all you have to do is create some text files and boom its a click-to-run application.  I don't know much about how to do the textfiles so I went over to RentACoder and said "Alright, $25 to the guy who can get this so that you double click it and it executes for me".  I gave him a $15 bonus because he had it done in a day (its a 10 minute job if you polish all the edges).  That paid for itself in a week, and its been pure profit from there.

I should note that I'm blessed that I have a program which is approximately 95% headache free in the porting arena.  And, boy, has that last 5% been vexing (particularly on Mac OS X 10.4)...
Patrick McKenzie (Bingo Card Creator) Send private email
Sunday, September 30, 2007
 
 
I'd be a bit careful about this.  I don't have Java installed (I checked on patricks page just to make sure) and I would move on to the next solution immediately upon discovering that the Java runtime is required.  But maybe I'm just a crotchety old bastard.
DanB Send private email
Sunday, September 30, 2007
 
 
You'll notice that he had a Mac version running almost immediately. That would have been trickier had he used C++.

That said, the JRE does give trouble sometimes. I wish sun would release a trim version that ran reliably and only loaded the libraries it needed.
my name is here
Monday, October 01, 2007
 
 
I'm a Windows dev at heart, so I'm biased, but I personally wouldn't touch a Java client with yours.

Two main reasons: 1, the install and upgrade experience from Sun Java client is terrible.  I mean, it's better than it was, but it's still bad.  I was recently on one machine that was giving errors when running Java apps, only to find it had *four* different versions of the Java client on it (god knows how) that were interfering with it.  The user had no clue what was going on or how to fix it.

Second: I can count on the fingers of one hand (maybe half a hand) the number of Java apps I've seen with a remotely decent UI and user experience.  Be sure to do a decent job of this!

But then, I'm not your typical end user and I'm a UI fascist.  Just one guy's opinion.
Carp
Monday, October 01, 2007
 
 
ps. Have you looked into Mono?
Carp
Monday, October 01, 2007
 
 
We started developing desktop applications in .NET and then after a year, switched to Java:

1. We can embed JRE with the installer. No need to worry if the version of JRE is installed ot not. With .net the .NET framework needs to be "installed", with Java, JRE needs to be "copied" to the location of your exe.

2. Java 6 can use native desktop look & feel.

3. Obfuscator is free and open source.

4. There are a lot of good quality community code available in Java.

Monday, October 01, 2007
 
 
You can get a good looking UI in java, it just takes a bit of effort.

For example, I can wholeheartedly recommend the Synthetica look and feel. It's excellent, especially the new White Vision L&F! The author gives very good support and seems to be working day and night :o) Check it out at http://javasoft.de/jsf/public/products/synthetica .

I've used it in Trace Modeler and it made my app so much prettier when compared to the native l&f's I was using before. Plus it's consistent across platforms, which is another benefit if you're into tweaking your l&f.

If you have a negative view of java UI's, be sure to fire up the Synthetica White Vision Office mockup to see how good a modern java UI can look.

Or have a look at the latest Trace Modeler release, feedback is always welcome ;o)
Yanic Inghelbrecht Send private email
Monday, October 01, 2007
 
 
"I really like the cross-platform aspect of Java and would love to capture some Mac users for my next product."

Please first think how many Windows users you will turn down by choosing Java.

P.S. Isn't JAlbum free?
Antony
Monday, October 01, 2007
 
 
Carp, do you know if there is any published commercial application for Mac that uses Mono?
moronica
Monday, October 01, 2007
 
 
If your product targets windows developers, java isn't for you. They will complain installation is problematic, that the app is sluggish and that it doesn't looks as good as a native application. If your product targets non developers, just make sure the user doesn't have to care if it's java or not. Make the installation process simple.
Anon Anon
Monday, October 01, 2007
 
 
>>
If your product targets windows developers, java isn't for you.
>>

Somebody forgot to send the memo to the Eclipse and Netbeans teams.  :)

But, in general, +1 to the "Most people do not care".  Most people in my market do not KNOW the program is Java -- for the overwhelming majority its an icon, they click it, it runs, and they get on with their lives.  Similarly, I rather don't think end-users of a webapp care whether you implement in PHP or Rails, for similar feature sets...
Patrick McKenzie (Bingo Card Creator) Send private email
Monday, October 01, 2007
 
 
If it doesn't look like a native Cocoa app on MacOSX that will almost certainly lose you a lot of sales to any competitor that does.
Andy Brice Send private email
Monday, October 01, 2007
 
 
I'm the guy that always brings up REALbasic (http://www.realsoftware.com).  You don't say what your product does or its niche, but REALbasic makes apps that don't just "look native", they are native.  And they're no run-time to install or embed in the installer.  It creates stand-alone executables.

It's not perfect for everything, but if you're thinking cross-platform you should definitely take a look at it.  The language is pretty similar to Java, too.
Paul Lefebvre Send private email
Monday, October 01, 2007
 
 
Like Andy says, Mac users are very particular about the user interface.

On the other hand — with proper attention to detail — you can write native-looking applications in Java. Flying Logic is an example of a beautiful (!) cross-platform Java application.
Nate Silva Send private email
Monday, October 01, 2007
 
 
Paul Lefebvre, I think it's perfectly fine for someone to talk about what they know so you shouldn't deprecate yourself. By the way, what else have you use a lot of in the past?
Li-fan Chen Send private email
Monday, October 01, 2007
 
 
"And they're no run-time to install or embed in the installer.  It creates stand-alone executables."

... but the run-time is embedded in the resulting executable.  This makes a cleaner installation, but the download still has the bloat of the run-time (maybe not as big as Java or .net).

Only you can decide whether this is a good trade off for your application.
Steve Moyer Send private email
Monday, October 01, 2007
 
 
Thanks, Li-fan
I also work a lot with Visual Studio 2003/2005 (VB & C#, although I prefer VB as you might imagine.)

I worked a lot with PowerBuilder in the day.  I really liked it.

But I don't want to hi-jack the thread...

Steve,

Yes, REALbasic embeds its run-time into the executable.  Which does cause people to complain a lot about the executable size.  But they're not all that big and they compress well, so it's usually not an issue for downloads.
Paul Lefebvre Send private email
Monday, October 01, 2007
 
 
I have been deploying Java on the desktop for quite a while. Things definitely do not always work the same between Java on Windows and Java on Mac...but overall it's been a good experience.

I use install4j for the installer, which allows the installer to check for pre-installed java and download a jre of your choice, if necessary. Can't get much easier than that.

The problems I have run into have mainly been related to small differences between swing event firing (or not firing) differences on Mac vs Windows, and font/widget size differences between the mac look and feel vs the windows look and feel.
home_gym_guy Send private email
Monday, October 01, 2007
 
 
Looks like I will go with Java. Even if you do alienate some Mac users, the additional market share from being cross-platform seems like a win for a microISV. Java installation seems to have several approaches, and my experience with installing .NET has shown me that it isn't as big a hurdle as some people think.

I just got my copy of Filthy Rich Clients, a book on how to turbo charge swing GUI's which should address the unappealing  Swing GUI problem.
Pedro Estrada Send private email
Tuesday, October 02, 2007
 
 
Java apps are sluggish and have a different look&feel than the "standard" apps on the desktop. Customers don't know it is Java, but they can smell something isn't right.
no_java_for_me
Wednesday, October 03, 2007
 
 
Upgrade to Java 6.0, IMO.
Nate Send private email
Wednesday, October 03, 2007
 
 
It didn't take more than around 15´25 lines of code to make my small java app look native on the mac.
Martin Schultz Send private email
Thursday, October 04, 2007
 
 
Well I'm a bit late on this one Pedro, but I use Excelsior JET for compiling our product.  I'm very impressed.
Derek Pollard Send private email
Sunday, October 07, 2007
 
 

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics
 
Powered by FogBugz