- An OOP (Object Oriented Programming) language. Java programs are composed of classes. Classes are grouped into package. Custom classes can be made. Java also has a large and growing class library.
- A 3GL (Third Generation Language). Java has a sentence-like syntax.
- A compiled interpreted language. Java is compiled into J-code (i.e. bytes) and those bytes are interpreted instead by a JVM (Java Virtual Machine).
- Cross-platform. The same J-code can be run on different JVMs, each customized to run on different machines and operating systems. This is the infamous WORA (Write Once Run Anywhere) concept.
- Sufficiently Fast. Java is sufficiently fast because since it deals primarily with interactive network apps, the delays are usually user delays or network delays. On the other hand, Java is pretty fast because J-code can be interpreted and compiled to native machine code almost as quickly as native compiled code. This is especially possible with techniques such as JITC (Just-In-Time Compilation, where compilation occurs on the fly) and adaptive compilation (called HotSpot by Sun, where only the most crucial parts of the program are compiled and optimized).
- Small. Java is small especially because of its roots as a language for portable information appliances.
- Secure. The JVM provides three layers of protection around imported Java apps. A Verifier, a Class Loader, and a Security Manager (aka Security Policies)
- A Verifier checks the J-code for corruption or subversion. Only proper syntax and the appropriate components are allowed.
- A Class Loader guarantees that the right classes are used.
- A Security Manager, usually part of a browser, sets access to basic system resources such as the file system, network ports, external process, and the operating system in general. Policies and levels of trust can be set for certain domains or classifications of domains.
Java became popular because it could create small applications that could be embedded into web pages called applets. However Java has become a popular language for making regular applications, server-side applications called servlets, and enterprise applications using reusable blocks of Java called JavaBeans or Beans.
Sun Microsystems offers the JDK (Java SDK, where SDK = Software Development Kit) for free from Sun. The JDK includes includes a number of items, but the most notable are as follows:
- Java compiler (
javac, written in Java)
- Java interpreter (
jview, written in C)
- JRE (Java Runtime Environment). Includes the JVM.
Here are some Java IDEs (Integrated Developer Environments) used to make Java apps:
- Forte for Java by Sun. Became ONE Studio. Based upon NetBeans, an open source IDE written in Java. For J2SE, J2EE, and J2ME.
- JBuilder by Inprise
- KAWA by Tek-Tools
- VisualAge by IBM
- Visual Cafe by WebGain
- Visual J++ and J# by Microsoft. Java-like languages usually using the Visual Studio or Visual Studio .NET IDE.
Java has many API (Application Programming Interfaces), including Swing and Java2D. The APIs are also segmented into three platforms:
- J2SE (Java 2 Platform, Standard Edition). The core, desktops, and workstations.
- J2EE (Java 2 Platform, Enterprise Edition). For enterprise, server, and Internet.
- J2ME (Java 2 Platform, Micro Edition). For mobile and wireless.
In 1990 Bill Joy of Sun Microsystems was trying to push away from PC-based computing and pull toward network-based computing. Joy went to Aspen, CO and formed a team of programmers called Sun Aspen Smallworks.
One of the members of Smallworks was James Gosling. Gosling had previously created Gosling Emacs (an editor which lost out to GNU Emacs because the latter was free) and Sun's NeWS (a GUI (Graphical User Interface) for Unix which lost out to X Window System because the latter had open source code). In essence, Goslign learned that you need a good language and that you need a need a network capable GUI.
By 1992, the team had evolved a Sun subsidiary called First Person, Inc. They worked on information appliances such as cellular phones, PDAs (Personal Digital Assistants), and ITV (Interactive TV). They tried using C++ but found it too complex and insecure. They eventually settled upon using a small, robust, cross-platform, object oriented language called Oak. They added some network capability, and voila, Java was born in 1993.
- 1.0. 1996. Initial release.
- 1.1. 1997.
- 1.2. 1998-12-04. Codenamed "Playground". Branded "Java 2".
- 1.3. 2000-05-08. Codenamed "Kestrel".
- 1.4. 2002-02-13. Codenamed "Merlin".
- 1.4.1. Codenamed "Hopper".
- 5.0. 2004-09-29. Codenamed "Tiger". Internally version 1.5. The "Annotations" feature based upon C#.
- 6.0. Expected 2006. Codenamed "Mustang".
- 7.0. Codenamed "Dolphin".
The Java mascot is called "Duke" and he tends to wave and flip a lot.
A glossary of words related to Java.
- Allow programs to display text in the appropriate language automatically. As of Java 1.1.
- Enterprise JavaBeans. Component architecture for making distributed server-side apps.
- Java Applets
- A small Java program that is embedded, usually inline, directly to a web page. A Java applet is usually accessed and used by a user within a Java-enabled browser.
- Reusable blocks of Java.
- Java Card
- A smaller version of Java for used in credit-card sized or smaller devices.
- Java Cryptography
- Implements algorithms for cryptography.
- A facility for incorporating help systems into Java apps.
- An API for writing e-mail apps.
- Java Media
Covers the classes and facilities that enable Java to deal with different media. This includes the following:
- Java 2D
- Java 3D
- JMF (Java Media Framework)
- Java Speech
- Java Sound
- Java TV
- Java Security
- A facility for secure access to system resources. As of Java 1.1.
- Java Servlets
- A facility that enables customization of web servers, including writing web apps.
- Java source code (plain text) is compiled into J-code (bytes). J-code is interpreted by JVMs.
- Java DataBase Connectivity. A facility for interacting with databases. As of Java 1.1.
Java Foundation Classes. The sets of classes that come with Java. Java 2 introduced the following:
- Swing. A facility for GUIs (Graphic User Interfaces). Replaces the Java AWT (Abstract Windowing Toolkit).
- Pluggable look-and-feel. Enables Java GUIs to look like whatever platform the app is running on.
- Accessibility. Java 2 accommodates programming for disabilities.
- Enables massively distributed computing.
- Java Naming and Directory Interface. A general service for looking up resources, particularly in directory services such as LDAP, NDS by Novell, and others.
- Java Virtual Machine. An application which enables a Java application to run. There are different JVMs for different platforms and machines.
- Remote Method Invocation. Java's system for distribute objects. Allows calls to methods on objects elsewhere on the network.
Links that lead to off-site pages about Java.
Official, i.e. via Sun, the maker of Java.
- java.com. A bunch of Java apps via Sun.
java.sun.com. Java for developers.
- "A White Paper". By James Gosling, creator of Java, 1996.
- Java Specs
"The Eight Fallacies of Distributed Computing". Here they are:
- The network is reliable
- Latency is zero
- Bandwidth is infinite
- The network is secure
- Topology doesn't change
- There is one administrator
- Transport cost is zero
- The network is homogeneous
- Brewing Java: A Tutorial [ibiblio.org/javafaq/javatutorial.html]. By Elliotte Rusty Harold, the guy who runs the com.lang.java FAQ list.
- Free Java Guide [freejavaguide.com]. Umm, lifted?
- Wikipedia --unless otherwise marked.
- 101 Reasons Why Java Is Better Than .NET.
- Gamelan.com. A good source of Java info, classes, applets, and applications.
- "Head First Java" Author Interview. About teaching Java.
- Java Tester [javatester.org]. "This web site addresses four Java issues: (1) Is your web browser Java enabled?, (2) If so, what version of Java is it using?, (3) How to install and upgrade Java and (4) Configuring the Java options in your browser."
- Kaffe.org. 'a clean room implementation of the Java virtual machine, plus the associated class libraries needed to provide a Java runtime environment. The Kaffe virtual machine is free software, licensed under the terms of the GNU General Public License. '
- Microsoft Technologies for Java. Ha!
- news://comp.lan.java. The primary newsgroup regarding Java.
- comp.lang.java FAQ List [ibiblio.org/javafaq/javafaq.html].