views:

351

answers:

9

Hi,

I am trying to get a very small desktop app built - something that can be downloaded by people very quickly. I am trying to decide whether i shd build it in .net or java. I know Java will be cross platform, but I want to know if a lot of Windows users do not have JRE installed on their computers, in which case I am told they will need to download some 15MB of JRE software to make this app run whereas .NET will automatically be pre-installed in most windows machines. Does anyone know what percentage of Windows users do not have JRE on their machines? And what %age of Windows users have .NET pre-installed?

Thanks.

PS. The decision for us is: if a large no. of Windows users have JRE, then go for Java, if not, then go for .NET.

+1  A: 

I'm slightly confused by your question. What's unclear is whether or not cross platform is important to you. If it is then Java is the winner unless you want to use Mono as well. The rest of my answer assumes that cross platform is not important.

This is highly dependent on what OS you think your customer base is using. AFAIK, the JRE does not come pre-installed on any Windows OS so all JRE installs were done manually by user or by another program installing itself. The .Net framework comes pre-installed on several versions of Windows.

  • .Net Framework 1.1 W2K3
  • .Net Fraemwork 2.0 Vista and above

As for raw numbers though, I have no idea what they are or if there are even good statistics available for this kind of information. My opinion is that given a Windows OS, you are much more likely to have .Net installed as opposed to the JRE. Only because there are a set of OS versions which come with it pre-installed.

JaredPar
I agree, but if they are worried about users not be able to have .NET installed via Windows updates; I'm not sure Mono on Mac is very realistic. Just sayin'.
BobbyShaftoe
As far as the installation numbers. It's really unclear because most regular users will buy their computers from the likes of Dell, HP, and so forth and usually a Java JRE is installed, whereas .NET versions depend on the vendor.
BobbyShaftoe
@BobbyShaftoe true on various OEM's installing the JRE and increasing install base. But it's an OEM decision so it's not a guarantee. The .Net framework is guaranteed to be installed on those OS (OEM's don't have a choice).
JaredPar
@JaredPar, yeah I agree with that. You could also have a pretty reasonable expectation of the .NET framework if you just target 1.1
BobbyShaftoe
+1  A: 

Well, first, how important is cross platform support to you? If this is very important then Java is the way to go as .NET is really a non-starter in your situation. However, if you are considering .NET then I'm assuming cross-platform is not critical in which case .NET will provide you a simpler path to have your application look and behave like a typical Windows application.

As far as the issue of downloading the framework being a barrier; well many users will not have JRE. But also, many users will not have the latest version of the .NET framework either. It really depends on how serious these barriers are to you, how important cross platform support is, and who your target audience is.

Edit: I should have mentioned this but there is a possibility to use "static linking" sort of tools like Xenocode's PostBuild.NET

BobbyShaftoe
+1  A: 

Because of some legal history, the Java stack is not natively included in Windows, while the .Net Framework is pushed out as part of the OS updates.

This is one of the best arguments for one platform over the other in the desktop app space. (One of the others is the ease of making UI that is 'nice' on the Windows side of the house with the MS stack).

The installation penetration of Java on Windows (and concurrent question of whether the JRE is an appropriate one) tends to mimic the target audience's savvy, or desire to play games which have decided on a Java dependency.

Bottom line: You can best judge your target audience; and their demographic will suggest their likelihood of having a specific either runtime installed.

Tetsujin no Oni
Except that many computers people buy actually do have a JRE instaleld but not the latest .NET framework.
BobbyShaftoe
+7  A: 

I would base my decision on whichever language your team is more adept at creating a solid piece of software in.

To go with one or the other whether or not a user needs to install a Java runtime, seems a almost non-issue anymore.

What can you deliver the better software in?

curtisk
+1  A: 

There's one factor to consider too... People are more or less used to install the JRE, almost everyone has had to install it to use a particular applet, and the process is fairly easy and straightforward, but when it comes to install a .NET runtime (at least in an ol'Windows, I don't remember if I've ever done it in an XP or Vista), with all their backwards incompatibilities... that's something nasty!

(From the times when I had to do assignments for the university in .NET and Java)

fortran
A lot of PCs sold today have Java installed also....
l_39217_l
A: 

I have never had an issue installing .Net framework .. in fact most deployments will automatically go away and grab it for the user if it is not installed.

Java on the other hand has both the applet and the stand alone version - there are also browser compatability issues with the dl and setup of Java.

I think the real point is what are you most able to develop in ... at the end of the day a 30-40 mb dl really isn't much anymore ... but of course that depends on what kind of application you are developing.

As for mono, my experiements have found it to be good, but not exactly cut out for full on applications with many many users - the .Net framework has a lot of candy that makes this a lot easier - although i imagine that will be contested by someone with more experience with mono.

John Nicholas
Your statement about "applet" and "stand alone" versions confuse me. There is only one JVM providing both.
Thorbjørn Ravn Andersen
I have run into browser compatability issues with java installations that resulted in applets not working yet stand alone programs being able to run.I am not sure what the conditions were now as it was over a year ago.
John Nicholas
A: 

If you are considering .NET - look at Silverlight; it looks like this would be a good fit, and is a tiny download that supports multiple operating systems (especially with "moonlight" for mono/linux).

Marc Gravell
A: 

Just remember that .NET is really cross-platform only up to version 2.x at the moment. This is the version of .NET supported by the Mono Project, afaik.

Anything above that will still target a great deal of PCs (up to 80-90% of all mainstream OSes), but will not be real cross-platform. Unless Microsoft changes its policy of releasing concurrently to all platforms the .NET framework, don't expect to employ the latest functionality and still get portability in various OSes.

The JVM looks better under this aspect. And you can always implement in parallel all the new fancy languages (Scala, etc) if you ever choose so.

Kensai
A: 

I have been told by Flex folks that typically more than 90% of computers have Java installed (they were bragging that >95% have Flash). I don't know what the .NET figure is for Windows, but it's not everybody. Since nowadays it seems that at least 10% of all users are not using Windows (a growing number), it seems that you can't please all the people all the time.

I'm wondering: Why not a web app? If you are manipulating local files, why not a signed applet/Webstart application?

Curtisk's point about developing the best application that you can is pertinent, It's easier to hit a technology sweet spot than it is to hit a user base sweet spot. If you can build something on any platform that people actually like, then you'll know you've made the right decisions.

Glenn