The Design of Software (CLOSED)

A public forum for discussing the design of software, from the user interface to the code architecture. Now closed.

The "Design of Software" discussion group has been merged with the main Joel on Software discussion group.

The archives will remain online indefinitely.

Choice of Platform: How widespread are Java and .NET?

I've come up with (what I belive) is a quite nice idea for an application that I'm going to start developing within the coming month. Before development can start there are a few decisions I have to make and this is were I hope you guys could give me some advice. I need to chose a platform (.NET, Java, ATL/WTL/MFC/etc.) for my application. It is going to be a quite small client side networking application for Windows (at least initially).

My choice of platform is currently based on the following factors:
* Ease and speed of development
* User base (i.e. how many people have the .NET or Java VM)
* Expected lifetime of platform
* Performance of the application to some extent

Java and .NET are good (in my case) for criterion number one as they fit my development style. I think most platforms can fulfill my requirements on number four if done right, Java's memory footprint does look too good though considering that the application might be running constantly in the background. This leaves us with number two and three. I think any major platform such as Java and .NET will be around for a while so I shouldn't worry. Unsupported "platforms" (not really a platform, C++ with libraries is more of a platform) such as WTL makes me more uncertain. And finally the most important part and my real question:

How many people have Java or .NET installed?

Does anyone have any hard data on this? Can anyone give me an estimation?
Johan Tibell Send private email
Tuesday, January 18, 2005
"How many people have Java or .NET installed?"

I'd say very few average people have either of these installed. All the .NET applications I have use a download installer that downloads and installs the framework if not already installed.  It works alright.  All the Java applications tend to require you to downloaded Java separately.  If I wasn't a developer I wouldn't have either of these installed before hand.

If you're targetting Windows I would suggest going with .NET over Java just to get the native look, feel, and performance.  If your choice is between .NET and MFC/ATL/etc or even classic VB then you have to judge it by development time vs. having people download a 20MB framework.
Almost Anonymous Send private email
Tuesday, January 18, 2005
You could use's .net Linker.

A helloworld app, with all necessary files, needing no installation, is about 5 MB.

Much better than 25 MB.  Cost is $500.
Mr. Analogy {ISV owner} Send private email
Tuesday, January 18, 2005
Also on the .NET for cross platform, there are open source projects like MONO that are making it posible to run C#.NET application on other platforms.  Mono is for linux if my memory serves and I seem to remember one starting around for mac os-x.  They may not be perfect yet but should get there in the future.
Douglas Send private email
Tuesday, January 18, 2005
that linker is nice.

It's too bad Microsoft can't just make it run this way - I'd say one of the biggest problems with current .net winforms is  the need to install the .net framework.

Eventually it will be just part of the OS - until then it's a bit painful.
Tuesday, January 18, 2005
With Java you can always embed your own JRE with the application. This way you don't have to worry about the system's JVM.
michael sica Send private email
Tuesday, January 18, 2005
Speaking as a user, it would take a lot for me to run Java application, especially one designed to run in the background. A .NET application would be better, but I'd still be worried about the memory footprint. I'm already running out of physical memory as it is with 512MB, the average user would probably have machine that is more rotten than mine. Or, the average user might care less about the swapping. I don't know. On the other hand, the average user doesn't have the .NET framework, whereas I as a developer do.

My preference, again as a user, would be to use an application written in C++, or Delphi, or some other compiled language without a huge footprint. If the application was more of the kind that you open, use for a little bit, then close, .NET would be just fine. It would still take a lot for me to want to deal with a Java application.
Tuesday, January 18, 2005
Is your program a GUI application?  If so, I'd advise againt java.  As far as java's come, its just not good enough for front end development IMO.  .NET looks pretty good on the frontend, but I think java is more widespread.  So, if your not writing a GUI, program go with java.  The footprint isn't that bad, 20mb extra isn't going to be noticed.  I'd say most have java installed because of applets.  Good Luck
Vince Send private email
Tuesday, January 18, 2005
wxWidgets.  That is your interface.

And language?  I like C++, but many prefer Python, and some even Perl.

wxPython, wxPerl, etc etc
i like i
Wednesday, January 19, 2005
I would prefere to download the 10 mega's of the latest JVM instead of the 30 Megas of the .NET idiot frame work, which may not work on my pirated Windows XP :D

I am ajava developer, so ofcourse I have java. But i think that normal home users must used digi-chat or silly javagames...

about the GUI, what the ...?!! who is saying that java have a bad interface? which java are you talking about?!!!!!! I think java has the best interface, which is just like XP-theme if not better!

about the JVM, I this is too annoying to let people install it before going, you can export java code to a "native" excutable..

here is some info about native exctuables exporting:
Yousf Send private email
Wednesday, January 19, 2005
To clarify a bit:

* The application will run in the background to download things, receive messages, etc. It is still a GUI application.
* Doesn't .NET framework come with one of the Service Pack? If that's the case more people would have it.

Does anyone have ANY hard facts about usage?
Johan Tibell Send private email
Wednesday, January 19, 2005
"A helloworld app, with all necessary files, needing no installation, is about 5 MB. Much better than 25 MB.  Cost is $500."

What have we come to.... *anguish*

Remember the time when "Hello, world" was LESS than 5 freaking megabytes and not even required $500?
Wednesday, January 19, 2005
I don't think you could get me to run anything Java in the background.
Just me (Sir to you) Send private email
Wednesday, January 19, 2005
wxWidgets, and program it with wxPython (or C++, or Perl, or whatever).

And compile the output.  You can compile wxPython too, in case you wondered.

Free, and hardly 5Mb!

I statically link my wxWidgets lib which I compiled with function sections - and the result is tiny (you only bundle the part of the wxWidgets framework that you used).

wxWidgets is interface, network lib, ....
i like i
Wednesday, January 19, 2005
This is another product to avoid depoying the whole .NET framework. They're coy about prices though.
Wednesday, January 19, 2005

You asked about the .NET Framework and distribution with a service pack. Windows XP SP2 doesn't include the .NET Framework but it was contained on the Windows XP SP2 CD. So you can't assume that if Windows XP SP2 is installed then the .NET Framework is also installed. Instead it is possible to optionally install the .NET Framework from the CD if required. This means that there are probably two classes of Windows XP SP2 users out there:

a) Those with fast internet connections who applied SP2 from the web (manually or via Windows Update). They might not have the .NET Framework installed but presumably they could easily download and install it if necessary.

b) Those with slow internet connections who obtained the SP2 CD. They also might not have the .NET Framework installed but presumably they could easily install it from the CD if necessary.

I can't give you any comprehensive evidence on the percentage of .NET Framework installations. However, in our web logs, where the browser reports the version(s) of the .NET Framework installed, I'd say that about 90% show that the .NET Framework 1.1 is installed. Visitors to our site are probably skewed towards the business and/or technical user though. I hope this helps.
Mike Green Send private email
Wednesday, January 19, 2005
I think it's also available via windows update.

The problem I already see here is what I call a 'developer's bias'. 

Personally, no matter what language you use, if your software is good and has important use for the end user, it will be obtained.

These threads are like political debates when it comes to developers talking about what language to use.  Java programmers will say Java, .NET programmers will say .NET.    VB programmers will say VB, etc...

Java and .NET (even VB) = larger because of the environment, but offer RAD.

C++ of course smaller, less RAD, more time.

I can't comment on widgets  :)

What is your target audience, what language are you most comfortable with?
ie. if I am writing a windows service - I'd use .NET.
ie. if I am writing a messaging enterprise app - I'd look at Java

Just my 2 cents  -  good luck
Wednesday, January 19, 2005
if it's a small network client app...

why not C++? Or Delphi? Or VB6? Etc.

Anything which doesn't require a huge runtime.

But if you must, then .NET, it's nice to program in, and I've never sucesssfully run a Java app. (Though I don't try too often.)

It's on the Windows SP1 CD too, I think. But it's buried a bit. There must be some animosity between whoever decides what gets featured on the CD and the .NET framework team or something.
mb Send private email
Thursday, January 20, 2005
I think that's right.

The .NET Framework 1.0 is distributed with the Windows XP SP1 CD and the .NET Framework 1.1 is distributed with the Windows XP SP2 CD.

As far as I know, the .NET Framework isn't distributed on any Windows 2000 service pack CDs.

To complete the picture, the .NET Framework 1.1 is included in Windows Server 2003.
Mike Green Send private email
Thursday, January 20, 2005
As requested, some hard stats on .NET Framework installation
Mark Pearce Send private email
Thursday, January 20, 2005
Less than 5% of desktops have .net installed.  About 20% of desktops have some version of Java installed (though less than 5% have the latest version).

These numbers were pulled from the air, but I'd be willing to bet money that they're about right.
Thursday, January 20, 2005
The most interesting info on that page was in the comments:

"A company I worked for released a consumer oriented application that was .NET based, after a lot of concern about what adding the framework overhead to the setup would do.

Now that the app has been out for 6 months or so, and with tens of thousands of downloads, there have been almost no complaints about the overhead of the framework. I'm guessing most users either had it already, or didn't mind the download too much.

Just one data point.."
Just me (Sir to you) Send private email
Thursday, January 20, 2005
Put it in perspective for the user; the .NET framework smaller than 4 average MP3 files.  Hardly anyone is going to balk at that.
Almost Anonymous Send private email
Thursday, January 20, 2005
"Eventually it will be just part of the OS - until then it's a bit painful."

They've been saying that literally for YEARS.

The previous 4mb MP3 size comment - this is true for geeks but for normal people especially who work in Fortune 500 companies with lots of restrictions on screwing around with the PC, the framework is a show-stopper for a lot of applications.
NetFreak Send private email
Friday, January 21, 2005
In my experience the framework is even more likely to be installed in large companies since a lott of inhouse development already uses .NET.
Just me (Sir to you) Send private email
Friday, January 21, 2005
I'm a Java programmer but I'd use Delphi for this task. Compile straight to an EXE, although you can create DLLs too if you want them.
John Topley Send private email
Friday, January 21, 2005
"The .NET Framework 1.0 is distributed with the Windows XP SP1 CD and the .NET Framework 1.1 is distributed with the Windows XP SP2 CD."

Yes, I think it is ON those CDs, but doesn't install by default. And I'm guessing your typical user isn't going to delve into the options to install it.
Mr. Analogy {ISV owner} Send private email
Friday, January 21, 2005
Yes that's probably true. The typical user isn't going to choose to install the .NET Framework until she has a need for it.

The point is that one of the frequently quoted 'barriers to deployment' is the time it takes to download the .NET Framework if you have a slow connection. Having it available to install from a CD removes that barrier.
Mike Green Send private email
Friday, January 21, 2005
"Having it available to install from a CD removes that barrier."

How do you expect that to work?
Remember, I'm talking about the 95% of customers who don't know what a "bit" is.

Perhaps a dialog box that says:

"Wait. You are going to need the .net Framework 2.01a. Please look for it. You may have it on the x:\winxp\english\bin\ directory of a disk labelled "Win XP sp2. Stop and look for that CD. Then install the framework and please try to remmber to install this trial".

Imagine having to explain that to a thousand customers.
Oh, and if you do NOT explain it then they get a NEGATIVE experience with your software, which is worse than if they hadn't tried it out to begin with.

*remember, the most critical time of the sales process is the first trial by a potential customer.
Mr. Analogy {ISV owner} Send private email
Tuesday, January 25, 2005
I think Microsoft could have packaged the .NET Framework on the SP2 CD in a friendlier fashion. I seem to recall that SP1 had a menu that kicked in as soon as the CD was loaded. That made it easy to choose to install the .NET Framework as it was presented as a menu option. That friendliness doesn't seem to be there with the SP2 CD.

All I'm really saying is that developers anticipate that it will be a problem to educate their customers to install the .NET Framework. They also assume that the customers won't already have it installed. Often these views are expressed because it intuitively feels correct rather than being based on hard evidence.

In my personal experience, and from all of the feedback I've read from other developers who have successfully deployed .NET dependent applications, the indication is that the problem is vastly overstated. Customers generally don't have a problem in obtaining and installing the .NET Framework if they need it. In addition, the .NET Framework seems to already be installed in vast numbers on both business and consumer PCs.
Mike Green Send private email
Wednesday, January 26, 2005
Douglas, if mod_mono is Microsoft (or Ximian)'s idea that Dotnet is cross platform and production ready. I'll give them on the cross-platform but they fail on production ready. There is no doubt that if tomorrow you were slashdotted on your Java site, and you didn't want to send $65,000 to Microsoft for a 200 server web caching grid--you could use Java servelets on Linux by midnight tomorrow, but if you were doing C#, good luck trying to set up that "production-quality" webserver. This may change, since mono is in flux, but that's what it looks like if you were to try an install today.
Li-fan Chen Send private email
Thursday, January 27, 2005
Really depends on your business model.  Are you going to have a small number of customers who won't mind downloading 50mb for the first install?  In that case, if you go with Java you can bundle up the JVM of your choice with the installer that you're using, it can be beneficial as the backwards compatability of java is getting to be a bit of a pain.  The 1.4.x jvm we're bundling in is running around 35mb.  The model that we're using also allows for incremental builds, split out your jar files and in your progam create an update mechanism so it'll only download the modified jars.  Good for quick releases of critical bugs.  The Java GUI frontend is fine, it just takes a bit more work.  With the advent of SWT and or the implemention of the WinXP theme style in 1.4.x and 1.5 it's close to being on par with a tradiation MFC app or a .NET.  If your targeting business/enterprise class users, they generally don't care about the look of the application, they just want it to work, work well, and quickly, which is more about usability than L/F, if you can do both great.  The actual design of your interface (placement of components, tables, etc.) is more affected than the look or feel of the app.  If it's consumer oriented you'll want to concentrate on the look and feel but not at the expense of usability (think of some dvd players with skins we've all seen, as we sit scratching our heads as to what does this little button here do, looks cool, can't use it though). 

I would be concerned about the memory usage of java if your app is going to be running as a constant background process, especially if it also contains a frontend.  Java apps tend to bloat easily, the 1.4 and later garbage cleanups mods they made we're great but our app for instance will often spike up to 100 mb of usage and stay there until it's killed (we need to optimize this). 

Ease of development is really more about your background than anything else.  I've been programming java apps for 6 years now so I can rip one out quickly.  Have me do something in .NET and it'll take 3-4 times as long as I've never really worked with it before.
Tim Y.
Thursday, February 10, 2005

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

Other recent topics Other recent topics
Powered by FogBugz