Java Overview
Home
Feature highlight: Java Overview

Motivation:
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 Java 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 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 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 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 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 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 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.

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 inheritance, 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