Most of the questions asked by prospective students focus on the platform: Why should I learn Java? Would I be better off learning Visual Basic or C++ instead? This is an important question that should be considered by anyone who is contemplating a career in computer programming.
In this paper, we consider several important questions:
Here are some of the reasons why Java is so popular today.
When Java was released, C++ was the most popular programming language. Java is based on C++, so C++ programmers could easily learn Java. However, Java omits many C++ features that are considered unnecessary or risky, including: pointers, the preprocessor, multiple inheritance, global variables, global functions, operator overloading, and direct heap manipulation.
In order to be downloaded quickly, Java object programs must be far smaller than typical executables. Java accomplishes this by linking programs at runtime. A network client does not need to download the standard Java libraries. The various editions of Java provide libraries suitable for diverse runtime environments. For example, the Java 2 Micro Edition makes it easy to run programs in small, hand-held devices like cell phones and PDAs.
Java provides 8 primitive data types. The rest of the language is centered around objects. Object-oriented programming greatly simplifies the design and expansion of large software systems.
Networking can be done in almost any high-level programming language. Java's runtime libraries simplify networking by providing classes that handle the low-level details of network protocols. Accessing objects across a network is very much like accessing data in a local file system.
Java programs run with more runtime checks than comparable C++ programs. For example, array subscripts are checked to make sure they are within range. Similarly, the Java Virtual Machine checks type casts of object references to make sure they are valid. These checks catch many problems that often go undetected in other programming languages.
Java was designed to be used in distributed/networked environments. Java programs downloaded from other computers have no access to local resources (e.g., the local file system, uninitialized local memory).
Platform independence offers two major advantages:
Byte codes generated by the Java compiler are independent of any particular hardware or operating system software. Java programs run equally well on a wide variety of platforms.
JIT compiling means that Java byte codes are translated into native machine language when each class is loaded. This lets Java programs run almost as fast as comparable C++ programs. Java programs are not quite as fast because Java's runtime environment trades a small amount of execution time in exchange for better runtime error checking. Even so, JavaServer Pages often outrun comparable CGI programs by a wide margin.
Java provides support for multiple threads of execution running at the same time. This can be done in other languages, but almost always in a machine-dependent fashion.
Releases of the Java platform include new runtime libraries. Some JDK releases (e. g., 1.4 and 5) also enhance the language itself. Java 5, released last year, offers a wide variety of improvements to the core language and libraries.
Sun's Java Development Kit is available free for the download. So are many other Java tools, including IDEs (for example, Eclipse and JBuilder) and servers (e.g., Tomcat).
Java's networking and security features make it the safest, most secure platform available today. For example, browsers run applets in a "sandbox" designed to protect the security and privacy of its users.
The demand for Java has steadily increased, limited only by a shortage of qualified Java professionals. Sun Microsystems estimates that Java now runs in more than 1.5 billion devices. Many people who receive the benefits of Java technology don't even know that they are running Java programs.
Bloor Research conducts monthly surveys of some 40,000 job listings to see which skills are in greatest demand. That survey shows that Java took over the lead from C++ in February, 2000. At the time, about a third of all programming job openings required Java skills.
That demand continues today, even well after the "dot com boom." We conduct our own informal surveys by looking at various job sites including CareerBuilder.com and Dice.com. Here are typical results, as found on those sites on August 28, 2006:
| Search for | Career Builder | Dice.com | total jobs |
| Java | 9356 | 16318 | 25674 (69.2%) |
| C++ | 1357 | 5215 | 6572 (17.7%) |
| Visual Basic / VB.Net | 3203 | 563 | 3766 (10.1%) |
| C# | 1034 | 59 | 1093 (2.9%) |
There have been some notable changes since our January, 2005 survey:
Skeptical readers are invited to visit these sites and conduct their own surveys. While the job counts are changing almost continuously, the percentages by skill change slowly.
Java continues to be the most-requested programming skill. Yet, with such a demand for Java skills, industry estimates report that only about 10% of the world's software developers know Java. What does this mean for us? Consider how "supply and demand" rules our economy. There is a greater demand and a smaller supply of skilled Java professionals. That means that programmers with Java skills will have an easier time finding jobs and can often command higher salaries.
What has changed since the early days of Java is how we use the language and platform. Applets brought Java to prominence during the "dot com boom." Today, however, most Java programming involves Swing GUIs or enterprise programming: servlets, JSPs, and EJBs. In fact, the most likely assignments for new Java graduates are Swing, servlets, and JSPs. With this in mind, the Java Consultants' Boot Camp devotes a great deal of time and attention to those skills.
Java's lead today is clear. So what about tomorrow?
Will Java maintain its industry lead? How does Java's future compare to the future of other platforms like .Net?
To answer these questions, we need to take a look at the bigger picture and some other questions. In particular,
These questions may be unanswerable for the distant future. For the near future, however, there are worthwhile observations in several important areas.
Certainly inertia counts for a great deal: If a company has committed to a particular platform, it is not likely to make a change without good reason. On that basis alone, one would expect that Java will continue to lead the industry for the foreseeable future.
It's also worth noting that Java continues to evolve and mature. Every version of the language and platform make Java easier to use, Java programs more robust, and more efficient. In particular, many regard JDK 5.0 as a "programmer's release" because most of the changes make life easier for Java programmers. Those changes include generics, annotations, enumerations, autoboxing, and static imports.
Java programming tools are provided by a variety of vendors including IBM, Borland, and Sun. There was talk last year that these companies might join forces. They did not, for their own reasons, so now they are in competition to produce the best Java tools available. Competition is driving each of these companies (and others) to produce the best possible programming tools. These tools will continue to increase our productivity as programmers. Who wins this competition? We do!
And let's not forget that many of the best Java tools are still free and will very probably remain free.
This may be the most important factor in the future success of Java as compared to .Net.
The operating system competition has undergone drastic changes over the past year. Virus and worm attacks cost Windows users an estimated $55 billion in 2003 alone. As these attacks continued unabated through 2004, many have reconsidered the true TCO (Total Cost of Ownership) of their computers.
Netcraft conducts monthly surveys of more than 50,000,000 Web sites. These surveys show that Windows servers have gone from a high of about 35% of systems in summer of 2002 down to their current 21%. In the meantime, the Apache Web Server running under Linux has grown and now secures more than two thirds of the world's Web sites.
Windows is still the dominant desktop operating system. However, governments and corporations all over the world are starting to switch their desktops to Linux.
Here are just a few examples:
This is a snowball that is just starting to roll. Once these leaders remove the "fear factor" associated with such a move, many others can be expected to follow. Recent market analysis expects "that the combined worldwide market for desktops, servers, and packaged software running on Linux will grow at a 2003-2008 compound annual growth rate of 25.9 percent worldwide, reaching $35.7 billion by 2008."
The continuing growth of Linux will further increase the demand for software that can run under various operating systems without modification.
What does all of this mean to us as programmers and prospective programmers? As Linux continues to gain market share, the demand for platform-specific skills like Visual Basic and C# will continue to decrease as compared to languages/platforms whose code can be run under any major operating system.
Java's future is exceptionally bright. Java will be here and will continue to be available for a wider variety of platforms than any Microsoft alternative.
Let's not forget that this industry is in a constant state of change. Someday somebody will create a new technology that renders Java obsolete. On that same day, .Net and all of the other Java clones will also become obsolete.
For the foreseeable future, Java's leadership position is in no danger.