Linux
IN THIS CHAPTER
- What You Need
- The Java Language
- JavaScript and HTML
A quick word before we start: We're not going to teach you how to program Java in
this chapter! There's far too much material to do justice to the subject in a few
pages. Instead, we'll look at what Java is and does, and some of the basic programming
aspects.
What is Java? Java is a programming language developed at Sun Microsystems. Sun
describes Java in press releases as "a simple, object-oriented, distributed,
interpreted, robust, secure, architecture-neutral, portable, high-performance, multi-threaded,
and dynamic language." What does all that really mean? To start with, Java was
intended to be a much simpler object- oriented language to work with than C++ or
SmallTalk, both of which are large, cumbersome languages. By producing a small object-oriented
language, Sun's developers also made Java simple and much less prone to bugs than
are larger languages. Those are the simple and robust aspects of the language. The
small size of the Java language also contributes to performance.
Java is an interpretive language, meaning that each line of source code is read
by the Java interpreter and is executed on that basis, rather than as a compiled
executable. Actually, that's a bit of a simplification, because Java code is pseudo-compiled
to produce a binary object file, called a class file, that is non-hardware dependent
and can be read by any Java system. This approach might be slower than a true compiled
system, but by using a platform-neutral language (meaning there are no hardware or
operating-specific instructions in the language), Java source code can execute on
any system with a Java interpreter. That covers the architecture-neutral and portable
aspects of Sun's description. The distributed aspect derives naturally from these
points, because Java source code can be easily sent from one machine to another across
a network for execution. This allows a server to send Java code to clients, making
a distributed system (Java runs on the client and communicates back to the server).
Because Java can run on practically any operating system, it can take advantage
of the host operating system's features, such as UNIX's capability to handle multithreading.
Java by itself can be thought of as multithreaded, but the operating system contributes
a lot in this regard. Finally, the security aspect of Java was one of the design
principles of the development group. A secure method of transferring information
from client to server and vice versa was needed, and Java was designed to fill this
requirement.
To provide the client and server software components, Java is designed to have
the interpretive component of the language attached to other software, most commonly
a Web browser. Netscape's Navigator and Microsoft's Explorer, for example, both have
the client components of Java attached (or "plugged in," in Web parlance)
to the browser code. When incoming Java source code is detected, the Java interpreter
starts and handles the task.
JavaScript was introduced after Java was on the market for a while. JavaScript
is built into most Java-enabled Web browsers. JavaScript and Java don't have much
in common, despite the name. Many people think of JavaScript as a stripped-down Java,
but that is incorrect and misleading. JavaScript is more an extension of HTML coding
that allows users to build interactive Web pages in a client-server system.
JavaScript has various uses that make it attractive, including the capability
to tell what a user is doing. When a user leaves a page or clicks a certain button,
the JavaScript client can communicate this information and start new routines. JavaScript
is also ideal for writing little housekeeping tasks and for managing complex tasks,
such as string handling, that are beyond HTML.
To write Java applications, you need the Java Developer's Kit (JDK). The JDK contains
all the software necessary to write, compile, and test Java applets. Besides the
JDK, all you need is a Java-enabled browser to test and display your applets. Netscape
Navigator's and Microsoft Explorer's latest releases all support Java, as do many
other browsers. Sun developed its own Java-enabled browser called HotJava, which
is available from the Sun Web site.
-
NOTE: You can get the
JDK at many sites on the Web or through FTP. The primary location is the Sun page
http://java.sun.com, although most Linux sites also contain pointers to
mirrors or backup sites for the JDK. For a Java-enabled Web browser, check out both
Netscape and Microsoft home pages, as well as Sun's HotJava. For other browsers and
Java development tools, check the Linux sites on the Web. For FTP access to the JDK,
FTP to java.sun.com and change to the directory /pub, which contains
the files you need.
The Sun Java section also contains a wealth of details on Java development, lots
of sample code, advice, and FAQs. A white paper on Java obtained at the same site
(http://java.sun.com/ tutorial/java/index.html) is an excellent introduction
to the language. The Java Developer's Kit is free if you are using it for personal
reasons only, but if you plan to publish Java-based Web pages, you might need a license.
Details are included with the JDK.
When installing the JDK, make sure that the path to the Java executables is in
your path. Even better, link the executables to /bin. The most common errors
Java programmers make while learning the language have to do with case sensitivity
and class use. Java, like UNIX, is case sensitive, so developers must be careful
to ensure that their code is correct. Class usage follows C++ methods, and it must
be adhered to properly. A good Java book is a must for learning the language, and
there are many books on learning Java.
For JavaScript, all you need is a JavaScript-enabled browser (such as Netscape
Navigator 2.02 or higher), a standard ASCII editor or an editor that can save in
ASCII, and a TCP/IP stack to communicate with other machines over the Internet or
an intranet.
From the programmer's point of view, Java is a very stripped-down object-oriented
(OO) language. The principles of OO programming are suitable in most cases to client-server
applications, so using OO for Java made sense. By staying with OO, Java avoided the
need to set up procedural language structures, all of which cause code bloat to the
point that Java would not be nearly as fast. Also, by avoiding procedural language
principles, Java designers can ignore many of the startup and initialization aspects
of programming, again making the source code smaller and faster. Learning Java is
not especially difficult. If you know an OO language such as C++, you will probably
find Java easier to learn than if you've worked only in procedural languages such
as C or BASIC.
Java may be an OO language, but it's not strict about it. SmallTalk, for example,
is considered a pure OO language because all aspects of SmallTalk are dealt with
as either objects or messages, and all data are object classes. Java doesn't go quite
as far, primarily to avoid an overly large language. Java implements all the simple
C data types (integers, floating points, and characters) outside of the OO method,
but everything else is object-based. This is both a benefit, because it leads to
smaller, faster code, and a problem, because it means you can't subclass Java data
objects.
As mentioned earlier, Java is interpreted. When you develop Java applications,
you write the Java code as you would with any other language, then pass it through
a Java processor to produce the binary object file. The binary object file, called
a class file in Java, is not directly readable, but it can be transmitted faster
than the source code from which it was derived. When a Java-equipped browser receives
the class file, it runs the class file through the Java interpreter, which decodes
and executes the class file instructions. In one sense, Java is both a compiler and
an interpreter, in much the same way as many early languages that produced pseudo-code
requiring a runtime module were. The Java client that decodes the class file performs
a conversion from the generic instructions contained in the class file to machine-specific
instructions for the client's hardware and operating system.
Programming in the Java language takes a little while to become comfortable. The
code often seems like a hybrid of C and C++, and experience with both is handy. Because
Java is a fairly simple language, however, even nonprogrammers can pick it up with
a little practice. The most difficult aspects of learning Java for most people are
the need to understand object-oriented design and programming, and the somewhat awkward
syntax requirements (these are also familiar to C and C++ programmers). For example,
here's a simple Java program:
// HelloWorldApp.java
class HelloWorldApp {
public static void main (String args[]){
system.out.println("Hello World!");
}
}
This program (called HelloWorldApp) defines a single method called main
that returns nothing (void) and consists of a single Java instruction to
print the message Hello World! The first line in the code is a comment.
To compile this source code into a class file, you invoke the Java compiler with
the following command line:
javac HelloWorldApp.java
The compiler then grinds away and produces a class file (HelloWorldApp.class).
This class file can be run in a Java-equipped browser or from the command-line client
with the command
java HelloWorldApp
which instructs Java to load and execute the .class file.
As you probably expect, Java is a lot more complicated than that in real life,
but if you have programmed before, you will see the similarities to other languages
(especially C and C++). The Java language is quite rich. You might need a couple
of weeks to wade through it, becoming familiar with its nuances as you go, but for
most people, Java is much more easily learned than other programming languages.
You embed JavaScript commands inside HTML documents (see Chapter 53, "HTML
Programming Basics," for more details on HTML) by enclosing them in the HTML
tags <SCRIPT> and </SCRIPT>. The general syntax for
a JavaScript program inside an HTML document looks like this:
<SCRIPT language="JavaScript">
JavaScript statements
</SCRIPT>
The language option inside the <SCRIPT> tag is optional, but it
is a good idea to use it to make sure that the browser knows what is incoming. If
you want to load the JavaScript from a URL, you need to embed the URL in the <SCRIPT>
tag like this:
<SCRIPT language="JavaScript" src="http://www.where.com">
If the JavaScript source is embedded in the HTML file, you can leave off the SRC
component. For example, here's a simple JavaScript applet in some HTML code (which
has been trimmed down to the essentials):
<HTML>
<HEAD>
...
<SCRIPT language="JavaScript">
alert("Welcome to my Web site!");
</SCRIPT>
</HEAD>
</HTML>
The alert() function in JavaScript displays the message in a window with
an exclamation mark icon next to it. This is usually used to catch your attention
when you try to do something critical or illegal, or something that might cause problems.
JavaScript's functions, as you can see, are much like those in C. You can define
a complete function within a JavaScript file, similar to in a C program.
If you are calling a file with the JavaScript source in it from your HTML code,
the convention is to name the file with the .js filetype at the end (sample.js,
for example). This is because several applications, including MIME, already recognize
the .js filetype and can handle them properly.
We don't have the space here to go into details about JavaScript programming,
but many good books have been published on the subject, including Web Programming
with Java and Teach Yourself Java in 14 Days (both Sams.net, 1995).
We've taken a quick look at Java and JavaScript, both of which are available for
Linux platforms in both server and client versions. Programming both Java and JavaScript
requires a bit of past programming experience, but if you've programmed before, you
can use them both to add a lot of features to Web pages and HTML documents. Give
them a try! After all, the software is free.
Contact
reference@developer.com with questions or comments.
Copyright 1998
EarthWeb Inc., All rights reserved.
PLEASE READ THE ACCEPTABLE USAGE STATEMENT.
Copyright 1998 Macmillan Computer Publishing. All rights reserved.