So What's New in Java?
(Warning/Disclaimer: Now we are getting into the realm
of personal
opinion. Although I have been an extremely interested
observer of the Java development, have taught Java courses,
and have written some small Java programs, I am by no means
and expert in progamming languages/software design so my
opinions should definitely not be considered as those of a
knowledgable sage.

Not Much!
The Language
A well-designed, pure object-oriented language, but all the features can be
found in earlier languages.
The Virtual Machine
-
The idea of a virtual machine for portability is not new. Used, for
example, in the UCSD implementation of Pascal.
-
The idea of shipping code
around the net also not new. One of my PhD students, Erich Kaltofen, was
doing this ~10 years ago with his black box software. He was shipping
source code, however, and compiling it on the target machine.
-
The security ideas in the JVM to help protect against untrusted applets
might be new.
The Java Class Libraries
Embody many of the most important software design ideas of the past 25
years, but the ideas are not new.
So Why All the Fuss?
It's a MASTERPIECE of Software Design!
Like an architect that takes well-known materials and designs a wonderful
new building, the Java architects have taken well-known ideas and designed
a wonderful new software system that
- makes formerly difficult tasks much easier to program. E.g.,
- GUIs and other graphics applications
- Multithreaded applications
- Networking applications including client/server applications
- Database applications
- 3D Graphics and virtual reality
- Visual programming with Java Beans
- Cryptographic applications
Provides a Pedadogical Framework Unlike Any Seen Before
with its high
level of abstraction that enables students to quickly learn how to
write programs with graphics, multiple threads, networking, databases,
etc. This allows an instructor in these complex areas to illustrate
the important, big concepts of an application area (and more importantly
allows the students to write programs using the big, over arching ideas)
that provides a framework for studying these areas. That is, it makes
it possible to study these topics from the top-down instead of the
more traditional bottom up approach of starting out with many details
(that were initially hard to motivate) and build up to the big
concepts.
What Are The Implications?
Programming will never be the same again.
Java will influence the design of
all new software systems for the forseeable future.
Computer science instruction will never be the same again.
Students will now learn complex concepts much more quickly.
