Java
Index: Requirements
Problems Companies
Platforms Languages
Software Research
- Here's a good summary of what Java is and is not: http://reality.sgi.com/employees/shiffman_engr/Java-QA.html
- Java does not have multiple inheritence, but allows inheritence of
multiple "interfaces", however not inheritence of multiple implementations.
This allows it to avoid ambiguities about resolving messages to methods,
and makes it possible to implement more efficient compilers and code generators.
- There's an excellent paper comparing Java and Python and Phantom,
by Alex Nicolaou, at:
http://www.cgl.uwaterloo.ca/~anicolao/termpaper.html
- Roaster Pro
- Java's "native method" interface
- javah
- Compiles Java interfaces to Java classes into C macros and glue,
so C can call Java.
- Compiles Java interfaces to C libraries, so Java can call C.
- Netscape Navigator
Java
- Netscape thinks they've taken the ball from Sun, with respect to
Java. They have really bought into it. All the real Java development is
going on there, and they will have more customers using Java than anyone
else with the delivery of the Navigator with
Java support.
- They will be rewriting the Navigator to support Java at a much lower
and more interesting level, so it will be much more programmable like Emacs,
instead of just having an isolated "plug-in viewer".
- Warren Harris warren@netscape.com wrote a message on the netscape
developers secure newsgroup, about what's wrong with Sun's native method
interface, and why Netscape intends to change it in the near future:
- Too tied to internals of their runtime.
- javah gives you structs that map directly to objects. Fragile
base-class problem. Changing a Java class can break native methods that
depend on the layout of the objects fields.
- Their strategy doesn't support high-performance garbage collection.
Some of the best GC algorythms today can't be done with their handle strategy
and object representation. Sun's GC strategy requires conservative GC (because
you can "unhand" handles) and leads to fragmentation and wasted
memory.
- Incomplete interface. Can't access all fields of a class or write
a complete debugger without peeking or tweaking their source.
- Paul Haeberli
on Java: http://www.naples.net/~nfn03457/960304.html