platform
for the development of Web-aware applications.
However, as with any wave of technology,
we must ask ourselves whether it really does provide
an answer to our questions.
And, in the line of
, we may well ask ourselves
what the original question was in the first place.
- Internet applications -- the dial-tone of the Internet
- Software engineering -- long-term maintenance
- Language design -- semantic compromises
- System development -- lightweight clients, heavyweight servers
- Computer science -- towards declarative, verifiable technology
- IT (in) business -- standards for business objects and processes
- Global village -- virtual world technology
slide: Perspectives
Whether Java does answer answer our needs for technological innovation
is a matter of perspective.
The question whether Java will provide an economically viable
solution to corporate IT needs can not be answered at this stage.
Yet, Java frameworks are being developed.
See section [San-Francisco].
In this section, we will look at the Java platform from the
perspectives listed in slide [Perspectives].
The rhetoric in these reflections must not be misunderstood
as dismissing Java, but as a way to get hold
of the issues that play a role in adopting the Java technology,
or any of the competing technologies, for business-critical
applications.
Internet applications
Java was introduced in 1995 at the WWW3 Conference
in Darmstadt as `the dial-tone of the Internet',
with applets as its killer application.
The dial-tone, because Java is platform-neutral
and network-aware.
In practice, applets form only a small part of Java applications.
Together with the Beans component technology and RMI,
Java seems to be an ideal platform for companies that
wish to employ the Internet and the Web for commercial applications.
However, most developers have no idea how to adopt the
Java platform without sacrificing their investment
in legacy applications, such as a corporate database.
The question is whether there is a migration strategy.
In comparison, OMG CORBA seems to have better answers
in this respect, although combinations
of RMI and JNI (the Java Native Interface)
have also been suggested as a technical solution.
Software engineering
[Lewis97] argues that within two decades we will
have Java legacy problems similar to the legacy
maintenance problems we have now.
Software development with Java is not an issue.
There are excellent tools, there is a large amount of
good documentation, and there are loads of APIs.
In general, software development with Java seems to
be easier than, for example, with C++.
However, long-term maintenance is a different question altogether.
The answer to this question depends on standardization,
and issues such as language and platform independence.
We must consider that Java is a programming technology,
and a good one in this respect, and not an integration
technology such as CORBA, for which the specification of
domain-independent and domain-specific standards,
including services and facilities, is the primary issue.
Language design
Java may be regarded as a second-generation
third-generation programming language.
Complex as this may sound, it is meant to
express that Java is an object-oriented imperative language
that shows the influence of many of its predecessors,
the minimality of Pascal, threads,
the flavor of C++.
Personally, I am somewhat bothered by the semantic compromises
in Java.
For example, the equality operator for strings
does, against all expectations, not test
for string equality but for reference equality.
Threads is another issue.
Why only a keyword synchronized
and not an Ada-like select?
See, for example, [Petitpierre98].
Java has been developed in great haste.
For example, assertion (like Eiffel) seem to have been
omitted simply because the implementation was buggy
at the time of a delivery deadline.
System development
The Java virtual machine is a good idea.
It can be realized on any platform, including computers of
all sorts and a variety of gadgets.
Java is easy to learn and there are many tools.
However, a survey entitled `Are Java Tools ready for Prime Time'
indicated that all tools still needed improvements.
Now back to the reality of software development.
Many Internet applications are written in script languages.
Perl for server-side scripting and
Javascript on the client-side.
Given the efficiency problems of Java
(which are a consequence of the virtual machine approach)
and the long download times for applets,
Java runs the risk of being too light for
heavy-duty servers and too heavy for lightweight clients.
Computer science
Java has been adopted by many universities
as the first programming language,
and students like it.
That is a good thing, although I am worried to see
C++ disappear from the curriculum.
In terms of research, what Java offers is not really new.
Personally, I am somewhat disappointed
that the attention is focused on another third-generation
language,
whereas to my mind, we should have a declarative programming
technology on our research agendas,
a technology that supports the development of reliable and
verifiable software.
Nevertheless, Java appears to be an excellent platform for
Web-related research.
IT (in) business
Java is being adopted rapidly.
It is nevertheless hard to establish to what extent
this involves mission-critical applications or pilot projects.
After all, at the time of writing, Java is still
cutting-edge technology.
And common wisdom has it not to use
cutting-edge technology for strategic projects, see [Surviving].
An example of a business application framework
is the IBM San Francisco framework,
discussed in
section [San Francisco],
which offers generic solutions for the realization
of business processes, such as order management and quality control.
Nevertheless, crucial issues in this area do not seem
to concern technology per se,
but rather the standardization of such notions
as business objects, business processes and, of course,
business logic.
This is also an area of active OMG interest.
Global village
On the Internet we see an increasing number
of virtual communities deploying 3D technology for
rendering worlds and their inhabitants.
Imagine a virtual stockmarket.
Decisions must be taken quickly.
There is an overload of information,
from a variety of sources.
Stock prices, political tensions,
market trends, all these must be monitored
continuously.
In critical situations, direct actions must be possible.
A nice playground for virtual worlds technology.
Is the Java platform ripe for this?
It might, given the Java3D and JavaVRML97 efforts.
And what about the knowledge management?
Discussion
In summary, Java is a promising platform,
with a wealth of APIs for the development of a
variety of applications.
At this stage there might be problems of efficiency
and problems due to the instability and
immaturity of the APIs offered.
However, as indicated, there are a number of issues
that surpass the reach of the Java platform
since they do not depend on technical
solutions only.
The most important issues, I would say,
concern the standardization of (domain-specific)
business objects and processes,
and the migration problems due to the inescapable
existence of legacy applications.
(C) Æliens
04/09/2009
You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.