Introduction: CS 310 Lecture notes
Outline
Java.
Some buzzwords.
Some history.
Some clarification.
What is Java?
Java is
A language.
A class library (3000+ classes).
An execution environment (the JVM).
A computation model (reflection, dynamic distributed computing).
A security model (verified bytecodes, sandboxed execution).
A protocol set (JNI, RMI, Serialization, ...)
Subsystems (JINI, JXTA, JavaBeans, ...)
Java is What?
The Java Environment
Java is …
Simple
Robust
Object oriented
Interpreted
Architecture neutral , redundant with interpreted.
Portable , redundant with interpreted.
High performance , yeah whatever.
Secure , too complicated.
Dynamic , advanced class.
Distributed , different class.
Multithreaded , different class.
Simple
Java the language is simple on average.
Syntactically it's too simple.
Java the system is not simple.
Which part of the class library is of interest?
Object-Oriented
Java the language is mostly object-oriented.
Java the system is object-oriented too.
Distributed systems really shine.
Robust
Java programs have a set of expected error sources.
The set’s smaller and simpler than sets for some other
languages.
For example, there are still pointer problems.
And there’s the usual (C++) boneheadedness.
Programs that abort in an orderly fashion with exceptions are just as
useless as programs that abort with a coredump.
Interpreted
The interpreter (the Java Virtual Machine, JVM) is the heart of the
Java system.
Most of the system benefits flow from the JVM.
Including architecture neutrality and portability.
As do most of the problems, particularly performance.
The problems
won’t bother us in this course.
Except, perhaps, for security.
Java History
1991, A language for networked consumer devices.
1992, Marketing and failure.
1993-4, Spin-off and failure, browsers and success.
1995, Java 1.0 proof of concept.
1996, Java 1.0 and 1.1 released.
1998, Java 1.2 released.
Java at Work
Java’s ended up in four main environments:
The browser (applets); not so much these days.
The server (JSP, servlets, frameworks); Java’s widest use.
The desktop (programs); winning over C++, less so Microsoft.
Portables (cell phones, &c); unclear but promising.
It’s applets and programs in this course.
Java ≠ JavaScript
Java and JavaScript are unrelated languages.
Netscape used “JavaScript” to annoy Sun.
JavaScript is now properly called ECMAScript.
In a browser Java wins and JavaScript loses.
JavaScript is wildly unsecure, and will always be so.
But JavaScript’s simpler, faster, and in the browser.
Java’s none of these things.
Java: Blue or White?
James Gosling has called Java a blue-collar programming language.
Negatively, not a PhD-driven research language.
Positively, a language for working programmers to get things done.
Note: blue-collar ≠ stupid.
“Java programmers won't understand that” is not a good
counter-argument.
Java as Bureaucracy
Java’s a white-collar language too.
Object-oriented systems can be bureaucractic organizations.
Positively, a bureaucracy organizes and streamlines complexity.
Negatively, a bureaucracy is inflexible and expensive off the path.
This course rejects, but cannot avoid, a bureaucratic view of Java.
Summary
Java is a system, not just a language.
In some areas, compared to some languages, Java is ok.
Java wanted to be everywhere, and may still be.
Java ≠ JavaScript.
And possibly Java > JavaScript
References