Since its introduction in 1995 Java technology has been known for its "cross-platform" compatibility. This ability to run applications on multiple platforms made Java big news and presented developers with a new and unique application development platform. In the beginning cross-platform meant that Java applications could run on several distinct workstation-system platforms such as Windows, Macintosh, and UNIX.
In 1999, we announced that the Java platform would extend itself upward into the enterprise server with the Enterprise Edition, and downward into the client-device space with the Micro Edition. With the release of J2EE in December 1999, cross-platform began to get a new, vertical meaning since compatibility extended now from the desktop to the server. This compatibility has formed the basis for J2EE's incredible success as the standard for networked-enterprise application development, especially in the application server space.
Today, we're starting to see yet another manifestation of cross-platform as J2ME-enabled consumer electronics devices come to market. Now Java spans vertically from the server to the desktop to the modern client. However, we also introduce a new meaning to cross-platform because J2ME spans horizontally across all the new client devices such as cell phones, pagers, PDAs, TV set-top boxes, automotive systems, home gateways, games, and even smartcards. You might call this "cross-client" compatibility.
When you think about it, this is an awesome shift and has real impact on the meaning of the term developer. For the industry, putting Java into cell phones, like those introduced in late January by NTT DoCoMo in Japan or the Motorola phones for the Nextel network that debuted in April, means the digital convergence we've been talking about for the last decade is really happening. For developers it means the addressable market for their work has increased dramatically since industry analysts predict that billions of devices will log on to the Internet and other networks like DoCoMo's and Nextel's.
When JDJ's editor-in-chief, Alan Williamson, visited me this spring, we had an interesting discussion about just what a developer is. Alan posited that the new devices that run Java would appeal to the veteran developers, you know, the guys who write close to the silicon and can keep track of memory allocation and the other complexities that come with writing programs for a constrained environment like a 640KB cell phone.
I countered that now there are, in effect, two categories of developers: the traditional that Alan described and a new kind who are more focused on content than logic. The latter, of course, is not as technical as the traditional developer. They worry less about memory size and more about page size. They're game, map-application, and e-commerce shopping page developers, or online newspaper editors, but I think they do what the traditional developer did at the highest level: provide people with information they need to get their job done or their life arranged.
Developers need to understand that the network has not only changed the paradigm for building and running applications, it's changing the developer paradigm too. In the world of Java there are many implications. Who is a developer today? Is it only someone who can craft an EJB, or does it include a servlet developer or even a JSP developer who's "developing" a Web page that's fundamentally content?
For years developers built on the platform they targeted. Today, as the IT industry crosses the great divide from addressing just traditional computers to addressing consumer electronics devices, it becomes impossible to develop to a single hardware platform. The consumer space makes the desktop look like the height of homogeneity. In the consumer electronics world there are dozens, if not hundreds, of different system types and many of them are completely proprietary. With Java supporting applications and services horizontally on all the different client-device types, as well as vertically from the client to the server, developers can build services that will reach millions of devices in the near term, and billions in the long term if the analysts are correct. That's a lot of sophisticated, increasingly intelligent applications and services that will be developed and targeted at a massive number of users.
Ultimately, consumers will have a wide variety of devices to access their services and will use the one most convenient at any given time. At work they might use a desktop computer; at home, a PC or television set-top box; while traveling, they can use an automotive system; and in between, their cell phone. This means developers will have to keep in mind the needs of all these devices when developing networked applications and services.
We, of course, feel that Java is the only development and deployment environment that can scale vertically and horizontally. This capability is crucial for the fast-emerging era of smart networked services, but it also provides a huge benefit for developers because once they know the Java programming language and have experience with how the Java platform deals with different system types, the reach and range of their skills becomes almost unlimited. I call this TOWA: train once, write anywhere. Java developers - regardless of whether they're hard-core application developers or the new breed of content developers - can take their skills almost anywhere in the digital domain they care to go.
Richard Green is vice president of Java Software Development for Sun Microsystems, Inc. He drives the strategy, product development, support, and compliance technologies for
all of Sun's Java/Jini/XML platforms. Richard holds a BA/MA from the State University of New York at Albany.