To say the words Java programming at its creation meant a fairly
simple language. At the outset Java had just over 50 keywords compared to
nearly double that number in C++ and over 200 in Visual Basic. Java is the prototype
of a simple development language. And in the ensuing years the number of
keywords has not changed but the critical supporting Java libraries have
grown by more than an order of magnitude in size. To contain all this Java
so there are now three editions of Java :
J2ME-Java 2 Micro Edition which in turn has 2 subdivisions for mobile,
PDA and embedded devices;
2 Standard Edition which is what most developers work with in doing applets
2 Enterprise Edition comprises JSP-JavaServer Pages and EJB-Enterprise
JavaBeans and their many distributed processing messaging, persistence
and service classes.
These editions have hundreds of classes and methods in each. The learning
task is enormous and the rush is to assist programmers in two ways. First, there is a growing number of Java IDEs that help at provide help for each java edition and often overlap several. For example, Eclipse, Netbeans, Oracle JDeveloper (to name just 3 free Java IDEs) provide the best examples of Java in action - each is written in java, works on all the major OS platforms which support Java and provides all the features of an IDE - Smart editing, visual screen layout, and interactive debugging. Each has its own specific features - profiler, J2Me emulation, database explorer, and scores of added plugins. The result is that Java now has development riches equal to and often better than Microsoft Visual Studio.
The NetBeans 6.5 IDE with its rich set of plugins and OS support
The second approach is a step back to do CASE-Computer Aided Software
Engineering in new clothing, program generation technology and/or templating systems. But now tools such as Nitrox, Jasper, and Idea do partial Java program generation. Some tools are based on UML models and diagrams. These MDA systems are able to generate large swaths of the code necessary to deliver
new distributed systems. These MDA generators take advantage of XML-based
Web Services, sophisticated messaging, and J2EE/EJB services to output the core
of sophisticated Java applications. However, polish and finishing tasks still
require fundamental Java coding skills.
But the burden of doing distributed processing expeditiously has forced
all vendors to ever larger base and specialized libraries. Look no further
than the .NET Framework from Microsoft which more than matches the size
of the Java libraries.
Likewise the new distributed processing frameworks from vendors like
BEA(now a part of Oracle), IBM, Sun, Tibco and others associated with Web Service, asynchronous processing
database processing are also ballooning in size.
The trade-off appears
to be this:
up development by having large base libraries with standardized and
tested code versus using proprietary code bases with special features and/or
optimized performance. So far the market seems to have chosen the speed
up in development
and interoperability afforded by Java. The TIOBE reports see Java as the
most popular of languages.
Java prospers but asymmetrically. On the mobiles and servers Java is an invaluable tool. On the Web JSP and JSF have replaced applets for big chunks of Web development. On backend servers, Java is critical to so many technologies. But on the PC desktop, Bill Gates' Java Snuff-out Maneuver by loading only an obsolete JVM on Windows(which he paid $2Billion in a court settlement for) - has succeeded in suppressing droplets, weblets, and Java applets. The Linux community helped Redmond by rejecting Java on most of the popular distributions(if you go to the largest 3 LAMP based Web hosting services and ask for Java Open Source software - good luck...). Finally Sun has been slow in delivering a Java IDE to match Visual Studio for ease of desktop app creation. The net result is that on the PC client side Java is present but not nearly as successful as it might have been.
Based on Java's strengths on the server side of software development and its code once run anywhere effective practicality, Java is gaining "momentum" in
embedded, PDA, and mobile applications. Quite simply, Java delivers interoperability
in so many ways and on so many devices and OS
platforms precisely because it delivers the closest approximation to
write once run anywhere more effectively than all the currently popular programming
languages. Hence Java has become invaluable to all IT stakeholders but Redmond.
And interoperability in the days of the 7A's marching orders(Authorized
Access to Any information by Anyone, Anytime, Anyplace on Any device) is
the name of the current IT game.
What and How Much ?
So the question remains - what and how much Java does one become familiar.
The "how much" question is relevant, because only parts of Java are needed
for example in using JSP-Java Server Pages; or SQLJ- the database procedural language
subset; or in J2ME code that is a distinctly smaller subset of the J2SE-Java
Standard Edition. Also with the emergence of scripting languages like Jython
Ruby which interface well directly with Java (Jython even produces JVM byte
code), one may not need to learn all of the standard edition libraries.
So in our tutorials
we will recommend 3 levels of Java understanding: Java Objects which emphasizes
the core OO-Object Oriented concepts of Java; Java GUI which explores each
of the 3 GUI interface APIs to Java (AWT, Swing, and SWT) and Java utilities
which will looks at some of the key Java utility classes. But before all else
in our tutorials we we shall emphasize getting around in the syntax and basic
semantics of Java.
In contrast to C++ or Pascal, the critical strength of Java is that you
cannot create a Java program without using Java's classes and observing
Java's OO-Object Oriented coding structure. This strength may also
Perl, Python and Ruby provide interesting OO alternatives to Java - relaxing
some of its constraints and deeply hierarchical inherited structure. But
it is also interesting to note that in designing from scratch their new
language C#, Microsoft chose to adopt many of the design decisions inherent
in Java: no multiple inheritance, interface-like friend functions, limited
operator overloading, a virtual machine environment used to enforce security
memory access restrictions as well handle namespace and packaging problems.
In short, C# is a Java clone. In the software world, plagiarism ... uhhh
copying or borrowing other good software design strategies ... is the ultimate