Re: Java is Object-Oriented COBOL
Posted: Apr 5, 2004 6:40 PM
> I'm no Java fanatic, but I'm not sure Java's API is more
> bloated than that of any other general purpose language.
> You might argue that C and C++, with their standard
> libraries, have relatively modest APIs, but this ignores
> the fact that the standard libraries are inadequate for
> most real-world applications -- the developer will have to
> write his own APIs, or go out and find a third-party API
> to fill in what's missing. You have to put all that
> functionality somewhere, either in libraries or (ugh) in
> the language proper. (Maybe APL junkies would favor the
> latter approach, but I suspect most programmers would
> What matters to me is not so much the size of Java's API,
> but how well it is implemented. I can't say much
> about that, except to note that many of Java's classes
> have a bad case of memberitis. Maybe that's what
> you were talking about in the first place, so now I'll
> shut up.
There are actually two completely separate issues here. One is the Java Language which is covered by the Java Language Specification. It determines the syntax and semanics of the language.
Then, there are several platforms that utilize the Java Language to provide a set of features for a particular use.
The J2EE platform is the most verbose, expensive and outright over programmed platform of all.
The J2SE platform is what most people mean when they say "Java is ...".
The J2ME platform is what runs on phones, PDAs, and many small platforms including micro processors such as the aJile aJ-100, the Dallas Semicondutor TINI hardware etc.
J2ME has something called profiles that allow the addition of features. J2ME+MIDP provides the Mobile Information Device Platform that you see on phones and other graphically interactive J2ME devices. There is J2ME CLDC (Connected, Limited Device Configuration) and the J2ME CDC (Connected Device Configuration) differentiation as well.
All of these things are separate and part of the overall Java platform definition. It's much more extensive than any other programming language based platform definition. This is the factor that I believe drivers the interest. You can in fact, find Java 'anywhere' that you need it. This means that you can develop and test code on a PC, a farm of PCs, servers etc., with easy to replace stubs. Then you can plug that code into the target environment and only have to worry about the implementation details on that platform.
The other side of this is that when you have a core algorithm, such as a network centric application, you can take that code and develop it and target it to a single Java platform, and then later plug it into another Java platform. Because Java is Object oriented, and it uses interfaces for defining responsibilities, you can create the new interface implementations for that platform and be done.
You really have to look at all the details and all the real engineering of the platform to appreciate the potential.
Granted, there are all kinds of ugly things that you can find and rant about. But, guess what, humans are imperfect and make mistakes! Funny how that keeps affecting our world...