Java /

For more information see Sun's Java site.

What's Java?

Java is a programming language, very Similar to C++.

What's HotJava?

HotJava is a Web browser.

What's their relationship?

While Java can be used to write stand-alone programs (applications), it can also be used to write "applets" which are embedded in HTML documents. These applets "live on the web" and tag along with the HTML documents to be executed on the client machine.


(See "The Java Language: A White Paper" for details. Also see "Trail Map: Java/HotJava Programmer's Guide" (draft))

Simple, Object-Oriented, Distributed, Interpreted, Robust, Secure, Architecture Neutral, Portable, High-Performance, Multithreaded, Dynamic

  • Simple: it's C++--!
    Minus: operator overloading (but does have method overloading), multiple inheritance, some auto coercions.
    Plus: garbage collection
    Small: 40K for interpreter and class support; +175K for standard libraries and thread support

  • Object-Oriented
    OO a la C++
    Dynamic method resolution borrowed from Objective C
    SI class hierarchy, MI interface hierarchy (Objective C)

  • Distributed
    Large library for TCPP/IP protocols (HTTP, FTP...)
    URLs as easy as file opens

  • Interpreted
    Bytecode is "executed" on any machine
    Compile-time info embedded in bytecode stream

  • Robust
    Explicit declaration
    No pointers ("true arrays")
    Java does the memory managment

  • Secure
    Authentication (public-key encryption)

  • Architecture Neutral
    Bytecode system (like P-code)
    One source/all platforms

  • Portable
    No implementation-dependent aspects in the spec (int=2's complement 32 bit integer, always)
    Library includes GUI
    Portable boundary ~= POSIX

  • High-Performance
    Bytecode can be translated to machine (specific) code
    Bytecode-to-machine code is comparable to C++ or C

  • Multithreaded
    Hoare monitor and condition variable paradigm

  • Dynamic
    Late dynamic binding means apps don't have to relink with changed libraries
    Interfaces a la Objective C

    (See "The HotJava Browser: A White Paper" for details. Also see "HotJava User's Guide")

  • Why is HotJava Different from a conventional browser?

  • Interactive Content
    Like OODBs are supposed to be

  • Dynamic types

  • Other claims
    Dynamic protocols allow for proprietary protocols using HotJava
    Freedom to innovate

    Creating a Java application

    Creating a HotJava applet

    Creating a protocol handler

    Creating a content handler