Reflecting on Java's 20-year anniversary last week, the easiest
future prediction to make is that someone will be suing someone else
about Java in 2035. I assert this not just for the
schadenfreude
(are we still using that word in 2015?) but because it is true: Java
has been a frequent presence in the courts since its launch in 1995.
The swirl of litigation around Java bring up of a couple of key
facts: First, that different parts of the Java community see Java
technology in different ways, sometimes to the point of almost complete
disconnection. Depending on whom you ask, Java is a programming
language, a platform, a library, an architecture, a virtual machine, or a
family of different bundles of each of these. On the business side,
it's also a brand, an academic tool, and a patent collection. Whenever
you hear someone -- especially me! -- talking about Java in the
abstract, make sure that you clearly understand which of these
ideas about Java is being discussed.
Second, Java's prominence in the US legal system is one indicator of
its importance. Whatever your own relationship to Java technology, it
matters enough to the larger world of human affairs to be worth fighting
about. Even if Java's stature wanes as much over the next two decades
as, say,
Fortran's
has over the previous two decades, I predict that Java will remain a
widely-used, indispensable programming platform and language.
What Java's past tells us about its future
Two classical parables help clarify Java. As I noted above, Java is very much the
elephant in the
blind man's parable: In 2015, Java feels very different to an
Android developer of children's games than to an enterprise programmer maintaining
mission-critical ERP (enterprise resource planning) applications. When it was first released in 1995,
Java's most important features included the following:
- A relatively liberal license: Remember that it was almost three years later that open source became a term of art.
- Portability: Moving software between Windows, early Macintosh operating systems, and a dozen different Unix variants was hard in the '90s; Java changed that.
- Rigorous object-oriented syntax: Unlike other languages of that time, Java was designed for object orientation.
- Security: Java eliminated the memory violations that were epidemic in C applications.
- Performance: Java applications quickly surpassed the
average attained by Perl and other languages with claims to portability
and safety.
- Built-in graphical user interface (GUI) toolkit: It's hard to
express how radical it was in 1995 to conceive of portable GUI
development, let alone portable GUI development without a licensing fee.
This list of Java's most laudable features in 1995 might
look mundane today, but the technology was well ahead of its time; so
much so that several of these features remained controversial for years.
Well past the
dot-com collapse,
software engineers seriously argued about whether a language with
automatic memory management or a virtual-machine architecture -- let
alone both! -- could ever perform adequately when applied to
enterprise-class problems.
One of Java's greatest accomplishments over the last two
decades is to have successfully overcome many of the debates it spawned.
Java itself is one of the proofs that mainstream programmers are better
off leaving memory management to the compiler; that a
portably-implemented language can also be swift; that serious
organizations will rely at least in part on software for which they do not pay; and that even GUI elements can be programmed portably.
Java's subtler strengths have also been slower to be recognized. As an example, the first releases baked in
Unicode,
and they did so better than essentially all competing languages before
or after. Unicode received less attention than it deserved in the
mid-'90s, and many observers are only now catching on to the advantages
of this universal standard for programming that's relevant across the
globe.
Java platform innovation didn't end in 1995. Since its early
days Java has made several order-of-magnitude leaps, from research
project to desktop competitor to backend workhorse to, more lately,
mobility language. Just as hundreds of millions new consumers began to
use Java on their mobile handsets, soon billions of networked devices will rely on Java-coded software.
How Java enables the present
This brings us to the second parable crucial to understanding Java:
Heraclitus's river, or if you prefer
Theseus's ship.
In both parables the underlying theme is the paradox of essence: that
even as its constituent water droplets flow past at each instant, the
river itself persists through time. Similarly, almost all of Java's
basic components have turned over in the past 20 years: Developers today
use different JVMs, supporting libraries have mushroomed, and of course
Java's target operating systems are light years away from what we were
using in 1995.
Recall that Java was designed for television set-top boxes,
which were proprietary embedded devices. Its first wide use was in
Internet applets as a way to introduce dynamic elements to early HTML.
Then it moved to the enterprise as a preferred medium for development of
important "client-server" applications, and to college to teach the
next generation of developers. In 2015, Java is evolving to become a
serious real-time platform,
making its way into medical devices, transportation equipment, and
other safety-critical roles. Java is also well positioned to become the
language of IoT.
One indicator and cause of Java's ongoing success is its
place in schools.
Java is widely used in classrooms both to introduce programming and to
convey computer science, and it is also the vehicle for academic
research that has improved garbage collection, compilation, encryption,
networking, and many other practical computations.
At his most
ambitious, Java inventor
James Gosling couldn't have planned a more circuitous excursion for the language he created.
Future focus: Java in 2035
In 2035, I foresee developers putting in plenty of overtime to solve the looming
2038 datetime crisis. Java specialists will continue to fuss about new variations for
the tools we use most -- new expectations for
logging, for instance, haven't slacked at any time over the past 20 years, and I don't
expect these eternal disputes to evaporate in the coming decades.
Nigeria and
Indonesia will be notable centers for Java talent. We'll also
have plenty of surprises in the years ahead. But even if
what we call programming
looks unrecognizably different in 2035, a healthy portion of it will still be built on
Java.
Comments
Post a Comment