T
Tim Smith
Could someone who was involved in any of these projects please let me know
the reasoning that a software development team gives for NOT using Java
even when they intend for their project to be cross-platform compatible?
It seems to me that if Java was so adaptable and capable all of these
programs would have been built in it!
The key is that while a developer may intend to provide their software on
multiple platforms, their users, as individuals, usually do not give a damn
about that. A user is going to buy the program for Windows, and *only* for
Windows, or is going to buy it for Mac, and *only* for Mac, and so on.
Combine this with the fact that the distribution of users on platforms is
highly skewed toward Windows, and you have most of the answer.
Suppose developer D1 makes his program in Java, not using native code
anywhere, so that his application runs out of the box on pretty much every
platform that has Java. Developer D2, on the other hand, whose application
competes with D1's application, develops it as a native Windows application.
Assume both D1 and D2 are good, comptetent, developers.
Here's what happens. D1 beats D2 on Mac, Linux, etc., because D2 doesn't
run there. But on Windows, D2 trounces D1, because D2's application takes
full advantage of Windows, fits in better with other Windows programs, etc.
The net result is that D2 sells a lot more.
Meanwhile, over on the Mac, guess what? You'll have D3, a Mac developer,
who is also doing an appliction in this space. D3 is a die-hard gung-ho Mac
developer, writing cool Cocoa applications, using every cool thing Apple
has, etc. Now D1 gets trounced on the Mac by D3 (trounced even worse than
it was on Windows by D2, because Mac users are less tolerant of applications
that deviate from the platform's GUI standards).
At some point in here, D2 might even port their application to Mac, and D3
might port to Windows, both making it even worse for D1 there.
You can see where this is going, I'm sure. On a given platform, a native
application beats a completely platform-independent application, and so what
a developer saves by not having to write more than once they lose in lost
sales on all the platforms. It ends up being better to write native
applications keeping in mind that you will want to port them later to the
other platforms.
The above is for GUI applications for end users. For other types of
applications, the dynamics are different.