In response to MrJohns, using the same/similar outline points he did:
- Multi-platform
Are you honestly trying to say that C has equivalent capabilities to Java in terms of multi-platform development? Are you nuts?
It is fairly easy to create a C program that will run on multiple platforms, if you stick to a very limited subset of what can be done in C and have machines available to compile for each target platform. Beyond that, you're in trouble. Yes there are cross-platform GUI frameworks for C and C++, but none approaches the cross-platform capability of Java.
Our product is written entirely in Java and uses Swing (JFC) for the GUI stuff. It runs on Mac OS 8.1 through Mac OS X, Windows 95-XP, Solaris, Linux and IRIX without a code change or recompile. And those are just the operating systems we've tested it on.
- Time to market
Ok, now you're really convincing me you don't have any practical, hands on experience with Java. Many studies of proven that time improves time to market because most of the stupid memory issues you normally have to deal with in C/C++ are eliminated (though there are still things you should do as a good programmer to help the garbage collector and VM). Additionally, Java's class library is very rich so you don't have to spend digging for the right 3rd-party library to do what you need.
Early on, Java did have many cross-platform issues when it came to developing sophisticated applications. However, most of those have been eliminated and the good Java programmer knows how to address the other issues that remain (differences in things like fonts across platforms).
When you say Java development environment, I'm not sure if you're referring to the JDK or their Forte IDE. If you're referring to Forte, it runs on my Mac under OS X just fine. Ran in Linux too. If you're referring to the JDK, they also provide a Linux JDK.
Although Sun doesn't provide an Apple JDK directly, Sun does have employees on staff at Apple assisting with Apple's implementation of Java. That was a decison made early on, let the experts (people at Apple) develop the JDK for the Macintosh and assist them. Unfortunately, Microsoft doesn't know how to play well with others and Sun had to keep developing the compliant Windows JDK.
- Java is very safe
Although applets are safer, Java applications are still much safer than their native C counterparts. Many of the things that computer viruses take advantage of in C are not possible in Java because of the inability to access memory directly.
- 16 bit letters
Yes, Java's 2-byte unicode storage of letters is technically provided by class libraries. Libraries that are guaranteed as part of every compliant Java implementation. In C you have to add a third party library on. You might learn one C class library for unicode, then take a job somewhere we you need to learn a separate class library because they use something else. Java doesn't have that problem.
- Java is network oriented
There is not a single thing about the core of C that is network oriented. Everything must be provided through clas libraries. Java provides built in networking features. Through a class library? Yes. But a class library that is guaranteed to be part of any conforming Java implementation.