Re: Hidden features of java
Arved Sandstrom wrote:
I wouldn't use the word "fundamental", not in the dictionary sense of
"essential", "necessary", "pertaining to the foundation or basis", or
"of great significance". A lot of the APIs are useful but not
fundamental, IMO.
You are mistaken, judging by the examples you provided. Sure, some APIs
might've snuck in that are not fundamental, but for the most part the java.**
and javax.** are fundamental.
I note that <http://en.wiktionary.org/wiki/fundamental> gives a usage example
of, "essential part, as, the fundamentals of linear algebra." The fact that
linear algebra's fundamentals don't directly apply to planar geometry doesn't
make them not fundamentals of maths.
You are confusing "universal" with "fundamental".
I guess it depends on where you draw the line in the sand. As an
example, I don't consider Swing to be fundamental in any of the above
senses, because clearly a lot of Java developers - and not just
dilettantes - don't need Swing at all. That Swing happens to be very
useful to a minority of Java developers doesn't make it "fundamental".
Swing is fundamental, if you happen to be doing GUI programming.
You are confusing "universal" with "fundamental".
To me Java collections are fundamental, and JAX-WS is not. java.util.*
JAX-WS is fundamental, if you're programming web services.
(or the lion's share of it) is fundamental; javax.lang.instrument.*
isn't. And so forth.
javax.lang.instrument is fundamental, if you're instrumenting code.
You used the term "widely popular". Using the definition of "popular" as
"suited to or intended for the general masses", I'd advance the argument
that a fundamental API _is_ popular. Maybe not directly, but in the
Nope.
Anyway, you are too focused on the extremely literal definition of
"fundamental". I'm willing to change my point to accommodate. Let's say that
the APIs are there to provide useful classes for commonly-conceived uses of
the language. Again, it is not a question of wide use - when you need a
particular functionality like a GUI textbox or a web-service locator, it is
extremely useful to have such a (fundamental for that purpose) class already
written, tested and optimized in API. Just because you personally aren't
writing GUIs doesn't mean you should deprive those who are.
sense that I would find it difficult or impractical to consider writing
most any non-trivial Java application without having "fundamental" Java
APIs at my disposal (including therefore APIs that support the ones I
use directly). And when I say "I", I mean your general purpose Java
programmer, not me specifically.
There may be some differences of opinion around this one. :-)
I disagree that the API should be the home only for APIs that apply to "most
any non-trivial Java application". The "most any" part is a mistake. The
APIs are there to help the general population of Java programmers, who have
diverse and often divergent needs. You are not required to use the whole API
in your whole life, much less "most any" app, and they are not required to
restrict the API to only that functionality you want.
The idea is that generally, for "most any Java application" you write, there
should be some class or classes in the API that will help you, not that all
classes there will help you. By that standard, the standard Java API is
(mostly) a winner.
--
Lew