The business case for Java: A primer for geeks, Part 1

Why a strategic move to Java makes good business sense

If you’re going to convince your managers to use Java, you need to learn to speak their language. Not all developers have the privilege of working for technologically knowledgeable managers. As a result, you must master some business-speak to communicate effectively. You must recognize that some managers are driven by factors beyond technical elegance, and will tend to focus on more mundane matters. Two words will drive the first part of your discussion with such managers: cost and strategy. Indeed, in one way or another, managers are by definition keen on cost reduction and control. Presenting Java from a cost/benefit perspective to your manager is therefore one reasonable approach. Fit such information into the context of the other strategic pressures your manager faces, and explain how Java relates, and you may be well on your way to its successful adoption.

Business (strategic) challenges for today’s managers

I had the privilege of hearing Mike Hammer speak at a Planet Tivoli conference in Nashville, Tenn., last year. Considered by many to be an expert on modern business thinking, he presented three simple observations that characterize the Internet-based business environment in which today’s managers work:

  • Customers rule: Never before in the history of business have customers had so much power. With companies now capable of marketing to individuals, mass customization is a practical reality. Any business that doesn’t understand and respect the driving force of personalized service to customers in the emerging competitive landscape will inevitably lose.

  • Competition intensifies: Competition, for all practical purposes, is now global. Those who can serve customers best, at the lowest cost, will win, regardless of national boundaries, corporate affiliations, or trade histories.

  • Change accelerates: Moore’s Law doesn’t just affect processor capabilities. You can also observe similar growth acceleration in global telecommunication bandwidth and in the amount of knowledge (or data) available in the world. Smaller, faster, and cheaper processors, coupled with wider, wireless data-exchange pipes and automated service-driven information networks, are constantly changing everything. It is said that the only constant is change. But in the 21st century, even change is not constant; it is accelerating.

To Dr. Hammer’s list of acute pressures, I would add the following:

  • We live on Internet time: You must not only provide products and services of extremely high quality that easily engage your customers and partners, but you must do so quickly and with the leanest organization possible. The race to get your product to market first is everything, especially when markets can be influenced as quickly as memes can spread, which, in the 21st century, is the speed of light. (A meme is a cognitive information structure that can replicate using human hosts and influence the behavior of those hosts to promote replication. See the Resources section below for more details).

  • Joy’s Law: Bill Joy, a founder of Sun Microsystems, is credited with this apt observation: “Most of the bright people don’t work for you — no matter who you are. You need a strategy for innovation occurring elsewhere.” This is especially true in the 21st century, because in the information economy, knowledge and intelligence are the coin of the realm.

These simple observations give rise to certain inescapable implications for the modern enterprise. Factors that may once have been viewed as differentiators — criteria that distinguish products from each other in the marketplace — must now be viewed as hygienic — that is, they must be present in order for your product to compete in today’s market. Again, summarizing Hammer, the new hygienic imperatives for the modern enterprise are:

  • Value time divided by elapsed time approaches one: There is no room in the modern enterprise for time (or resources) spent not adding value. Any firm spending time engaged in non-value-added activities will soon find itself at a competitive disadvantage in a global economy. The firm must eliminate these activities if it expects to survive.

  • 6 Sigma — Extremely high quality: Several years ago, Motorola instituted a radical overhaul of its quality-control program, with the goal of reducing its defects by six standard deviations. Known as 6 Sigma (the Greek letter sigma being the symbol for a standard deviation), the program has become a model for other companies in a variety of industries. Such a radical overhaul of quality control is now a necessity rather than a luxury; if a firm does not have virtually flawless quality systems, programs, and business processes, it will not survive in the global economy.

  • ETDBW — Easy to do business with: Customers will not tolerate a firm that makes it difficult to purchase, pay, or partner. With the growth of ecommerce, competition is just two clicks away. This abbreviation for the new century implies that a lot of thought should go into Internet portals — as well as the strategic business processes behind those portals.

Strategic management implications

Because of the competitive advantages that firms gain when they embrace Internet technology, the imperatives listed above articulate the competitive challenges all businesses today must face, regardless of industry. Any prudent manager will recognize these factors and plan accordingly.

What are the implications for your manager? First, any investment in information technology must be viewed as strategic; in other words, approaches to software development that merely attempt to mask outdated business processes do not represent a wise long-term strategy. Second, the interfaces we expose to the world must be standard. Today’s competitor may very well be tomorrow’s strategic acquisition. In order to remain nimble, standards-based IT interfaces are the only choice for the prudent manager. And third, costs must be kept to a minimum. This includes research and development costs as much as it does training and support costs.

All these factors point to Java when it comes to choosing a world-class development/deployment platform. There is no other competitive platform that has the breadth, the industry-wide investment, or the momentum of Java, which means it is a sound, strategic, future-proof investment. Standard on a wide range of processors, operating systems, and devices, Java’s smart-card-to-supercomputer breadth of coverage is unsurpassed in platform history. And since Java is a single development environment, all developer resources can take advantage of the same core set of tools and training material, thus keeping precious brainpower investments focused at maximum efficiency.

Figure 1. On target with Java

Let’s consider lowered costs a bit more. Since there is an inverse relationship between cost and productivity, it stands to reason that lower costs will give rise to greater productivity. Now, don’t confuse production with productivity. Naturally, some production activities must take place; something must be produced, after all. Mathematically speaking, though, it can be said there is an inverse relationship between production (i.e., research and development) costs and productivity. Zero cost and infinite productivity are the asymptotes that we’ll approach simultaneously. Increasing productivity has been the earmark of virtually all successful firms in recent years. In order to survive, then, all firms must compete by either brutally lowering costs or finding startling new ways to engage customer focus, or both.

Today’s programming environment

Let’s consider briefly some aspects of today’s programming environment, and how they will affect the techniques you’ll use in persuading your managers to adopt Java.

Legacy considerations

Any new software development effort must at some point pay homage to the current hegemony. It is wise to first accommodate legacy systems rather than dismiss them completely; harmony within the community is assured when the legacy is honored, at least on the surface. Thus, the prudent developer needs a superior platform, but also one that is legacy-friendly.

Visual Basic and C++

Part of the legacy that must be considered is the programming environment itself. Visual Basic and C++ are two legacy languages/environments that are worth comparing to Java. According to a recent study by Zona Research, 35 percent of all programmers worldwide use Visual Basic as their preferred language for writing business software, while 20 percent chose C and C++. Java ranked third with 9 percent in the third quarter of 1999, up from 5 percent six months earlier (an explosive rate of growth). How does Java compare to these more prominent legacy development platforms from a cost/productivity perspective? Let me explain.

Figure 2. Classes of programming languages

For a language to be object oriented, it should have several primary features:

  • Encapsulation: The process of encapsulating data and operations within a manageable interface
  • Inheritance: The process of deriving new objects from existing objects
  • Polymorphism: The process of deriving individuation within a class

Visual Basic versus Java

Calling a language object-based doesn’t necessarily imply that it is object-oriented. For example, in Visual Basic (VB), you construct an object by building a form with a text field and a button on it. While this object can be referenced by other objects and reused across multiple applications, it cannot individuate or migrate. In VB, once an object of this type is created within the program, the programmer is severely limited in being able to inherit from it. This is why VB is said to be object-based and not procedural or object-oriented.

On the surface, these limitations might not seem that severe to some managers; these managers might as a result decide that any additional investment in IT infrastructure (such as the adoption of Java) is unwarranted in light of competitive pressures. However, consider three powerful program features that are also missing from VB, but which can be found in Java:

  • Threads: A single, self-contained set of states of execution in a program.

  • Networking: A full complement of networking capabilities, using both HTTP (the World Wide Web’s protocol) and sockets.

  • Exception handling: The ability to handle any type of condition that prevents a program from continuing in its current state. Without exception handling, a program will either crash or exit when encountering such a condition. Java allows this exception to be caught and handled appropriately.

Without these missing ingredients, VB by itself cannot provide the necessary capabilities to write modern Internet-based applications; it must therefore interface with another programming environment in order to be useful. And with that single step, some of the costs of research and development effectively double. Each time we require that a new programming interface be introduced into our universe, we require increased expenditures on required skills, programming tools, and debugging resources. This is an inherent weakness in the VB approach which, when applied to the problems faced in the modern enterprise, invariably gives rise to increased costs when compared to Java.

We have yet to even discuss the underlying issue of commercial supplier health. To ensure the health of my enterprise, I must be equally concerned about the health of those upon whom I am dependent. A single company, Microsoft, must be engaged by my firm if I am to be a provider of VB solutions. As is the norm with Redmond, there is a lock-in strategy when it comes to deployment of VB applications: you must run them on a Microsoft operating system. So if I choose VB, I must be assured that my sole supplier (in this case, Microsoft) will not only be solvent down the road, but will be a reasonable business entity as well, which may involve factors I cannot predict.

Clearly, Microsoft is a financially viable entity that will very likely exist for many years to come; supplier financial health is not an immediate issue. But the fact remains that the health of my firm is tied directly to the health of one other firm, without which I could not exist. And the fact that recent legal issues may be problematic for that company down the road is something the prudent manager cannot dismiss. Such a dependence does not exist with Java, as a number of companies are producing competing Java implementations that conform to a standard. Even if all else were equal between VB and Java, Java would still free me from dependence on a single company. Thus, strategically speaking, my commercial viability with Java is greater than if I were tied to Visual Basic. With I am not joined at the hip to that one firm. But I am also not excluded from doing business on Microsoft systems.

The primarily problem with VB when compared to Java is its cost, which is intrinsically higher for serious business application development. In addition, from a strategic perspective, with VB I have an unhealthy dependence on a single supplier.

C/C++ versus Java

Lumping C with C++ muddies the comparison. Naturally, C is not an object-oriented language; it is procedural. But for the sake of argument, we’ll consider the two languages together as a single platform, having the attributes of C++. If we were to compare Java and C, an object-oriented language with a popular procedural language, the benefits of Java would clearly be legion. So comparison of Java with C++, for the purpose of stating the business case for Java, makes the most sense.

Comparison of the two languages from a programmer’s perspective is useful for understanding the business implications. There are a lot of features in C++ that are not available in Java. Let’s examine some of these absent features with direct business implications:

  • Java has no pointers: The referencing and dereferencing of objects is handled for you automatically by Java. Java does not allow you to manipulate pointers or memory addresses of any kind. There are two reasons for these restrictions. First, pointers are a source for errors; eliminating them simplifies the language and eliminates many potential bugs. Second, pointers and pointer arithmetic could be used to sidestep Java’s runtime checks and security mechanisms. Removing pointers allows Java to guarantee security.

  • Java does not support multiple inheritance: C++ supports multiple inheritance of method implementations from more than one superclass at a time. This may seem like a very useful feature; in practice, however adding it to the language introduces many complexities (syntactical perversion, for example). The designers of the Java language chose to avoid this added complexity by using interfaces instead. Thus, a class in Java can only inherit method implementations from a single superclass, but it can inherit method declarations from any number of interfaces. In practice, this is not a particular hardship and it avoids the syntactical complexities inherent to the C++ approach.

  • Java does not allow operator overloading: C++ lets you define operators that perform arbitrary operations on your class’s instances. In effect, it lets you extend the syntax of the language. This may seem like a nifty feature; in practice, however, it tends to make code difficult to understand. After many debates, the Java designers decided to omit such operator overloading from the language. Note, however, that the use of the + operator for string concatenation in Java is reminiscent of operator overloading.

So it can be said that the features that make the two languages different are the very things that make Java a better business choice. Since Java is syntactically simpler, coding is faster. Training is also optimized, yielding quicker return from training investments than competing languages. Since there are no pointers or memory-management issues, bugs in Java are inherently fewer. Thus, coding in Java can be almost twice as fast as coding in C++. And if you consider the quality assurance phase that most projects must endure, Java projects achieve fruition about 3.5 times faster than similar projects in C++, according to Sun.

The problems with C++ when compared with Java are its intrinsically higher costs, lower quality of code, and speed of development.

Figure 3. Visual Basic and C++ compared to Java

Clearly, Java has the edge over both Visual Basic and C/C++ when it comes to cost reduction. And, given the business imperatives summarized from Hammer’s speech, making the strategic choice to go with Java is something a wise manager will find appealing.

A word on performance

“What about Java’s performance?” is always the first question asked by programmers, especially younger ones, about Java. I usually respond to such a question with another question: “Is performance the most important thing to consider with software?” And when the inevitable affirmative response comes back, I then ask, “So why aren’t you programming in assembler?”

If performance were the only issue, most of us would still be programming in assembler — it will always outperform any other programming language, after all. In fact, the brave might go one step further and program directly in machine language, assuming there is some slight performance sacrifice inherent in assembler itself, as there is between all other levels of code representation. But performance at that level isn’t the most important consideration for most software development efforts.

Certainly, the earlier versions of Java performed poorly when compared to C++. The fact that Java is an interpreted language was apparent with applets running in browsers using early AWT classes. But a lot has changed since those early days. Never before in the history of computer science has so much investment been made in improving the performance of interpreted code. As such, Java now performs quite well when compared with C++ (see the link to Rich Levin’s article, “Sun’s Java Hotspot Performance Engine Hits the Spot,” in Resources). This performance is due to improved, plug-in Java Virtual Machines, just-in-time compilers, and technologies like HotSpot, which finds the sections of code in your program that get executed the most, and compiles, optimizes, and in-lines them. This sometimes even yields greater performance than native C++. Java did get a bad rap when it came to performance early on, but much has changed since those days. Java performance, for the most part, is not a technical issue; it’s one of perception. The discerning manager will see this as an opportunity.

Conclusion

Due to the extremely competitive outlook in the global economy, there is no room in the modern enterprise for non-value-added resources and low-quality products and services. With competition just two clicks away, regardless of industry, the prudent manager must ensure lightning-fast processes at bare-bone costs. Compared to the competition, the only truly reasonable programming platform to that end is Java. This means that managers have no choice — Java must at least be closely scrutinized from a strategic business perspective, and compared to the otherwise lost expenditures of legacy programming-environment investments.

Part 2

The second half of this series will include a discussion of Java and the legacy from a business perspective, the momentum behind Java, and how training can be a strategic edge for a business. A StarOffice-based presentation, complete with speaker notes, will also be made available for developers to download and use as needed with their managers.

Max Goff is a staff engineer and technology
evangelist for Sun Microsystems and a professional member of the
World Future Society. He has an MBA from the University of San
Francisco and 16 years of experience in software development,
specializing in such Java-related areas of interest as Jini, the
Java language, and Java management. In his copious spare time, Max
is also a professional actor (SAG, AFTRA, and AEA). He lives in
Manhattan. You can visit his homepage at

Source: www.infoworld.com