Ive got an idea that Im going to develop into an application.
this will be a GUI type application which will be given away freely to
users to install on their PCs. The application interacts with other
users on the internet via SSL.
The problem with java is still the 16MB ish download time. I only know
java myself but intend to get somebody else to develop it in C++ rather
than have a big download.
Should I use C++ or java ?
You should use Java.
With C++ you'll probably need to get a third-party SSL library (OpenSSL
will likely be it), while Java already includes this stuff with the
regular download. In the end, it is far more likely that users have Java
on their systems than third-party libraries such as OpenSSL.
With C++ you'll be dealing directly with the API for the target OS, and
then you may need to update it for newer versions of that OS, not to
mention writing different code to support each alternative OS. The end
result will be a lot more code maintenance, which will increase time
requirements, and probably lead to more debugging activity as well. Java,
on the other hand, is OS independent which means you compile it once and
it will run consistently across all platforms.
With C++ your GUI is typically tied to the OS, yet with Java the JFC
(Java Foundation Classes), which are better known as Swing, provides an
extensive feature-set that is always improving. For example, to create a
System Tray icon in Java is extremely easy, and natively supported as of
Java v1.6 (a.k.a., Java 6).
With C++ there is a need to understand pointers, and pointers to
pointers, and possibly even pointers to pointers to pointers, ad
infinitum. Java, on the other hand, addresses (pun not intended) this and
other complicating aspects in its core design so that the developers don't
have to be concerned about these things (and then there's Reflection for
those who need to accomplish certain things that they might use pointers
for in C/C++/Perl).