Java Overview
 

Feature highlight: Java Overview
Credit: Imagenation


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.

 
Top of Page  Tutorials Home 
©Imagenation 2000-2004