Java has been touted as one of the most significant breakthroughs in computing in the past decade. Lately, much attention has been devoted to the consumer applications enabled by Java, however there is little focus on the benefits Java brings and, more importantly, will bring, to enterprise-level computing.

Since Java has been on the radar of information technology professionals, great strides have been made toward making Java a part of the enterprise. However, the surface has barely been scratched in mining Java’s potential to make computing at this scale more simple, convenient and effective by several orders of magnitude.

Envisioning what place Java will hold in the enterprise in the next five years requires projecting the enterprise computing environment five years ahead, as well. It is impossible to predict all the changes likely to occur, but simple enough to consider Java’s increased enterprise penetration. Undoubtedly, there will be major differences in the way the enterprise environment is run and administrated, and changes in the systems themselves. Big iron will still be in place in the enterprise, though diminishing in number. Today’s mainframes, UNIX and NT servers will still be around, and more data will be in place on these machines than ever before.

Currently, this data is accessed through the corporate LAN, or remotely, using a dial-up or TCP/IP connection. Obviously, this doesn’t provide the flexibility corporations generally seek. Information access must become more fluid and flexible, enabling access to vital information from anywhere at any time. Small, powerful wireless devices and services will enable robust data access. The phrase, "Hold on, I’m not in front of my computer," will become obsolete. Software will allow what would currently be unimagined data access. Collaborative software will allow smoother work flow, seamlessly passing to everyone involved, allowing them to update documents, spreadsheets and other work that might require team input.

Applications will follow much the same path. Currently, office applications are held captive on the client machine. Limitations in network technology and processing power have necessitated this traditional setup. In contrast, application service providers (ASP) provide a cost-effective solution to services, such as e-commerce backbones, financial processing and other enterprisewide applications. Within the next five years, companies will use ASPs on a smaller scale within their own networks. Running applications, such as office suites, call-center management and transactional management, from a central server creates a thin-client environment that needs less IT resources to manage.

Another change brewing is added flexibility from workflow applications. Currently, most companies use monstrous, monolithic applications to carry processes from the cradle to the grave. For example, if you call your cable company for repairs, the request is routed through a very specific path. It flows from the customer service representative who takes the call, through the repair center where a worker is dispatched, and to wherever the service records are kept so the company knows the repair status. What happens if this flow is disrupted? How does this application handle a situation where the repair is outsourced to a third party?

In this situation, the work order would be entered into another system, then routed through an entirely different path. With the new breed of workflow applications, processes are inputted into one application, and the program dynamically decides, based on pre-programmed criteria, which process would be the correct one to follow, reducing the time wasted fighting with separate applications, and more importantly, aiding companies in mapping workflow. This would allow the companies to easily evaluate their processes. Given that many companies don’t have a clue as to what their processes are, let alone how efficient they are, this can be quite beneficial.

Given these predictions, the question remains: How does Java fit into this vision of the future? One of the most revolutionary of these new technologies involves Java applications for wireless data and Internet access. Sun’s Java 2 Micro Edition (J2ME) standards were developed specifically for these application types. In conjunction with standards set by the Wireless Application Protocol (WAP) Forum, Java will become one of the most ubiquitous programming languages in the enterprise, on a par with NT in terms of its install base, due to the prevalence of these handheld devices.

Because of its small size and write once/run anywhere nature, Java is the ideal platform for these applications. These wireless clients would use a WAP implementation running on an embedded Java Virtual Machine to access the network, and even troubleshoot as needed, no matter where the person is located, given local wireless availability. More importantly, Java was built with security concerns foremost in mind, making it the most secure way to develop wireless applications – essential for sensitive enterprise-level systems.

Java will drive the move away from software tied to desktop systems as well. The seductive ease of delivering applications across the network and collaborative network computing will change the way people work. Imagine an environment where an entire workgroup edits a document in realtime, unlike the current system where another user cannot access a file once in use. This is much more efficient than the cumbersome method of passing a file from one person to the next, making changes along the way.

Although true network computing will most likely just be beginning to penetrate the market five years from now, Java’s built-in networking capabilities, ability to deliver applications over the network, and security standards like Java Secure Socket Extension (JSSE) and Java Authentication and Authorization Service (JAAS), make Java a great platform for developing collaborative, networked desktop applications.

Workflow applications can be built from many different programming languages, but Java’s flexibility and compatibility is ideal for this sort of application. In our outsourcing example, Java would be an ideal platform on which to base a workflow application. Instead of hoping the third-party’s equipment is compatible, Java can stream straight through, regardless of hardware. This would increase efficiency by several orders of magnitude, since the work order wouldn’t leave the computer system. There would be no phone calls or paperwork to finish, since the contractor could have an Internet-enabled wireless device on site to input any details to close out the work order. The data then flows back into the company’s system, so customer-service representatives can know the job was completed. With any other programming language, getting this seamless "flow" would be difficult at best. Java alone is compatible on any system.

Of course, many in the industry will point to other programming languages and claim that they can perform the same functions, however, they aren’t nearly as well suited to accomplishing these goals in the enterprise environment.

There are several reasons for this:

Compatibility. Server-side Java programs can be run on any type of hardware, from NT to OS/390 mainframes, with no modifications. This is simply not possible with C++ programs, and unlikely (and extremely difficult, in any case) with COBOL programs. This allows enterprises a great deal of flexibility when it comes to hardware choices.

Security. Java security is built into its architecture. Wireless applications will require the ability to download code updates, necessitating extreme security. Of all the potential programming languages, Java is the most secure.

Infrastructure. Java has a strong enough infrastructure to build out large, distributed systems. Built-in multi-threading, networking, and file input/output make Java the best choice for quickly building network-enabled applications. These advantages, when combined with Enterprise Java Beans (EJB), allow the enterprise to create large distributed systems with far less effort than with comparable technologies, such as COM or DCOM. EJB components can also be reused or even bought from developers for faster deployment.

These advantages point overwhelmingly toward Java as the choice of the future for most enterprises.

Of course, there are roadblocks to Java’s integration. The perception that Java is slow and hard to use is a hurdle to overcome. Java virtual machines must be available for future wireless devices. Wireless will require a reliable network infrastructure with significant bandwidth. The speed and availability problems already have solutions. Microprocessors that run Java and that implement their instruction sets in software (such as Transmeta’s Crusoe) will overcome speed and availability hurdles.

Also, by partitioning Java into three editions (Java 2 Enterprise Edition, Java 2 Standard Edition, and Java 2 Micro Edition), Sun recognizes that the Java platform cannot be "one size fits all." Web Application Servers and workflow engines are currently available to develop useful Java applications with a minimum of Java development expertise. The IT workforce of the future will have been trained in Java, as many schools are now teaching Java, rather than C++, for object-oriented programming. These two factors remove the hard-to-use objection. Reliable wireless bandwidth is just around the corner with the Bluetooth wireless networking standard now being developed.

Java will soon make major inroads into the enterprise marketspace. Businesses need ways to improve efficiency and streamline all of their processes, and Java is one of the only technologies on the horizon that has major potential for solving these problems. Simply stated, Java is what will drive the next generation of enterprise computing.

About the Author: Gil Anderson is President and CEO of Caribou Lake Software (Minneapolis; He can be reached via e-mail at