What products for Java developers do you wish you could buy?
None. I want FOSS stuff. I certainly don't want something that would
force me to restrict the distribution and use of applications I
developed, and/or force me to charge for them, because they insist on
a per-user fee or similarly from anything that uses their library!
Moreover, I want the control over and confidence in the end product
that cannot occur if any of its parts is a black box I'm not allowed
to examine or tinker with. Closed-source libraries are for the .NET
and Visual C++ microserf crowd.
This is one thing I like about Java -- the language specs and VM specs
are open (even C's language spec isn't; the C standardization
organization treats it as proprietary and demands money in exchange
for copies ... of the SPEC!) and large chunks of the standard library
have been open sourced, and the source for well-nigh all of it is
readily available to at least peruse. (Of course, there's a lot of
open source CRT implementations, like glibc, and C compilers, like
gcc, but the spec being unfree is still bothersome, and C is really
showing its age these days. Ditto C++.)
Also, with Java, if the worst comes to the worst, it's often fairly
easy to decompile and reverse engineer stuff. The emphasis on
adherence to specs and interfaces when implementing things also makes
replacing a faulty "black box" (e.g. a broken JVM) more feasible. It's
much less likely you'll run into a problem and efforts to fix it will
dead-end at some box labeled "no user-serviceable parts inside" that
you can't make work and you can't avoid needing either.
And of course, development is much less *expensive* when you avoid
proprietary libraries, which also means your eventual users can be
charged less (or nothing).
The irony being that Java itself is technically more proprietary than
C. But the abundant open spec information lets anyone make compatible
clones easily (if not necessarily use the Java trademark in
association with it), and better developed standard library and
language design itself reduce work, wheel-reinventing, need for third-
party libraries for common stuff like threading and UI, and bugs,
particularly memory management/crash-inducing bugs. Development costs
are lower. Tools are mature. The proliferation of complexity found in
e.g. C++ is largely absent in Java. You won't run into a paywall
trying to look at the language spec when you DO need to consult it.
You need to resort to third-party libraries much less often. You don't
have to worry about platform differences as much or CPU/hardware
architecture at all...