|
Motivation:
To say the words Java programming just four short years ago 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, the prototype
of a simple development language. And in the ensuing years the number of
Java
key words 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
sprawl
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;
J2SE-Java
2 Standard Edition which is what most developers work with in doing applets
and apps;
J2EE
-Java
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 back on to do CASE-Computer Aided Software
Engineering in its new clothing, MDA-Model Driven Architecture. Read this
as partial, if not complete, program generation. Based on UML models and diagrams,
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, IBM, Oracle and others associated with Web Service, asynchronous processing
and distributed
database processing are also ballooning in size.
The trade-off appears
to be this:
speed
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.
So despite Bill Gates' fondest wishes and sometimes odious machinations,
Java prospers. Not only is it well entrenched on both the desktop as
well as the server side of software development; but it also 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
and
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 Orineted 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.
Summary
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
be a source of weakness as other scripting languages such as JavaScript,
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 inhertance, interface-like friend functions, limited
operator overloading, a virtual machine environment used to enforce security
and
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
compliment. |