The Fundamental Client Side Programming Language for the Web

Embed Size (px)

Citation preview

  • 8/3/2019 The Fundamental Client Side Programming Language for the Web

    1/28

    * The fundamental client side programming

    language for the web.

    * "Java is just a small, simple, safe, object-oriented, interpreted or dynamically optimized, byte-

    coded, architecture-neutral, garbage-collected,

    multithreaded programming language with a

    strongly typed exception-handling mechanism for

    writing distributed dynamically extensible program."---- Bill Joy, cofounder of SUN Microsystems.

    History

    * It was originally called Oak, developed by SUN

    Microsystems, in a project called FirstPerson for

    smart appliances, such as set-top-box (interactive

    TV) 1992, lead by James Gosling.

    * It adopted C++ syntax but get rid of pointer,memory management, and multiple inheritance,

    which are main causes of programming errors.

  • 8/3/2019 The Fundamental Client Side Programming Language for the Web

    2/28

    * It failed to be adopted by Timer Warner in

    Spring 93's ITV trial.

    * 1993 Marc Andreesen developed Mosaic WebBrowser, started the web revolution.

    * Oak found its reason for existence. A Web

    browser called WebRunner was developed for

    demonstration.

    * January 1995, Sun adopted Java name due to

    trademark issue.

    * Marc Andreesen saw the demo and license it for

    use in its browser.

    * Nov. 1995, 1st Beta release with developer kitand source code.

    What is Java Applet

    * Java is a general purpose programming

    language.

  • 8/3/2019 The Fundamental Client Side Programming Language for the Web

    3/28

    * A Java program is created as a text file with

    .java extension.

    * It is compiled into one or more files ofbytecodes with .class extension.

    * Bytecodes are a set of instructions similar to

    machine code of a specific machine but it can be run

    on any machine that has a Java Virtual Machine

    (JVM). JVM interprets bytecodes.

    * JVM was first implemented on Sparc/Solaris

    and PC/Win32. Now ported to many other

    platforms.

    * Java applets are Java programs that are retrieved

    and executed by web browsers through the JVM

    under tight secure environment.

    * Web browsers retrieve Java applets according to

    following tags in the web pages:

    deprecated or the new more general,

  • 8/3/2019 The Fundamental Client Side Programming Language for the Web

    4/28

    are used to specifyparameters for the applet. For example,

    -- the height (in

    pixels) of the tallest frame

    -- the directory

    that has the animation frames (gif, jpg) All other

    types of java programs are called Java applications.

    * Examples:

    * Network Restoration Applet: User specifies twoend node of a failed link. The applet retrieves the

    simulation results of two network restoration

    algorithms (twoprong and rreact) in two

  • 8/3/2019 The Fundamental Client Side Programming Language for the Web

    5/28

    corresponding files at original web server site, and

    plot the results.

    * SUN Java demos:

    o MoleculeViewer

    o SimpleGraph

    o SortDemo

    o BarChart

    o Animator

    o JumpingBox

    Java is safe

    * When a Java applet is downloaded, the bytecode

    verifier of the JVM verifies to see if it contains

    bytecodes that open, read, write to local disk.* Java applet can open new window but they have

    Java log to prevent them from being disguised as

    system window (for stealing password).

  • 8/3/2019 The Fundamental Client Side Programming Language for the Web

    6/28

    * Java applet is not allowed to connect back to

    other servers except that hosts itself.

    * This secure execution environment is calledsand box model.

    * JDK 1.1 extends this tight security with digitally

    signed applet using jar file.

    * More detailed fine grained security levels are

    planned for future release.

    Java Development Kit

    * The current release is JDK 1.1.7A. It is free for

    download, containing documents, demos, library,

    bin/utilities, and Java API packages.

    * Java Application Programming Interface (API)

    consists of classes for programming:o java.applet.*: for applet context and

    interface to browsers

  • 8/3/2019 The Fundamental Client Side Programming Language for the Web

    7/28

    o java.lang.*: variable, string manipulation,

    exception handing, thread.

    o java.io.*: File I/O through [buffered]input/outputStream,

    o java.awt.*: Abstract Window Toolkit

    (AWT) for window/GUI design, image creation and

    manipulation

    o java.util.*: hashtable, stringTokenizer

    (simple split), date, random, bitset, vector.

    o java.net.*: url, urlconnection for connecting

    to original web servers, socket

    o java.math.*: math functions.

    o java.sql: for Java-Database interface

    * Extended APIs:

    o Media API for sound, video, 3D, VRML

    o Commerce API

    o Servlet API

    * JDK 1.2 will soon be released.

  • 8/3/2019 The Fundamental Client Side Programming Language for the Web

    8/28

    Java Applet Development Environment

    * Make sure the CLASSPATH in your

    autoexec.bat does not contain local directory, or just

    comment it out. They triggers the security alarm

    saying that the applet trying access to local drive.

    * Use Jbuilder2 (in our PC lab). It contains

    o java source code editor

    o class browser

    o debugger

    o visual GUI design tool similar to VBasics.

    o wizard for guiding the java application, java

    applet, java class development.

    o extensive java beans and libraries for

    Database access and enhanced GUI design.

    * Create new Java Applet by

    o first create a project folder by

  • 8/3/2019 The Fundamental Client Side Programming Language for the Web

    9/28

    + select the File/New Project, the project

    wizard window appears

    + replace the untitle string in the filetextfield with your project name, say cs301hw6.

    + replace the title of the project, click

    finish, a project template will appear.

    o then create the Java applet template by

    + select File/New

    + click on the Applet icon

    + fill in the information in the applet

    creation dialog box (choose the core Java and Swing

    only option)

    + write java code in the created template.

    + control-s to save file the myprojects\cs301hw6 directory, where

    is the directory setup for jbuilder2in your system.

    + select build/make

    "CompareCookieSales.java", it will compile the

  • 8/3/2019 The Fundamental Client Side Programming Language for the Web

    10/28

    code, show the error if any, and save the class byte

    code in

    myclasses\CompareCookieSales.class

    + ftp the .java code and .class code (note

    there may be more than one .class generated) back to

    the web server directory.

    + Make sure the case of the class file nameis correct after the file transfer.

    * Download JDK1.1.7A (you can also try

    JDK1.2RC2 a beta release) to your own PC.

    * Use text editor to create .java source code.

    * Reference document web page,

    http://java.sun.com/products/jdk/1.1/docs/api/packag

    es.html

    * Use " javac ResPlot.java" to compile the java

    code.

    * Create a web page with the object or applet tag

    to reference the Java Applet.

  • 8/3/2019 The Fundamental Client Side Programming Language for the Web

    11/28

    Basics of Applet Programming

    Operators and Their Precedence

    The following table shows the precedence assigned

    to Java's operators. The operators in this table are

    listed in precedence order: the higher in the table an

    operator appears, the higher its precedence.

    Operators with higher precedence are evaluated

    before operators with a relatively lower precedence.

    Operators on the same line have equal precedence.

    postfix operators [] . (params) expr++ expr--

    unary operators ++expr --expr +expr -expr ~ !

    creation or cast new (type)expr

    multiplicative * / %

    additive + -

    shift > >>>

    relational < > = instanceof

    equality == !=

  • 8/3/2019 The Fundamental Client Side Programming Language for the Web

    12/28

    bitwise AND &

    bitwise exclusive OR ^

    bitwise inclusive OR |

    logical AND &&

    logical OR ||

    conditional ? :

    assignment = += -= *= /= %= &= ^= |= =

    >>>=

    When operators of equal precendence appear in the

    same expression, some rule must govern which isevaluated first. In Java, all binary operators except

    for the assignment operators are evaluated in left to

    right order. Assignment operators are evaluated right

    to left.

    Control Flow Statements

    A statement such as the while statement is a control

    flow statement, that is, it determines the order in

  • 8/3/2019 The Fundamental Client Side Programming Language for the Web

    13/28

    which other statements are executed. Besides while,

    similar to C, the Java language supports several

    other control flow statements (except the exceptionhandling), including:

    Statement Keyword

    decision making if-else, switch-case

    loop for, while, do-while

    exception try-catch-finally, throw

    miscellaneous break, continue, label: , return

    Note: Although goto is a reserved word, currently

    the Java language does not support the goto

    statement.

    Handling errors with Expression using Try, Catch,

    and Throw

    Basic Steps:

  • 8/3/2019 The Fundamental Client Side Programming Language for the Web

    14/28

    * All Applet source code starts with

    import java.applet.*;

    and other import statements for packages used in

    the applet such as

    * import java.awt.*; import java.io.*; import

    java.lang.*; import java.net.*; import java.util.*; Itthen starts with a class definition like:

    public class Chart extends java.applet.Applet {

    // followed by a list of variables or objects

    declaration

    //

    Button b1 = new Button("play");

    Button b2 = new Button("stop");

    Button b3 = new Button("resume");

    TextField tf = new TextField("Message here",

    50);

  • 8/3/2019 The Fundamental Client Side Programming Language for the Web

    15/28

    TextArea ta = new TextArea("please wait...",

    10, 40);

    * } The main class contains four basic Appletmethods:

    public void init() {

    // for any initialization code performed duringloading time of the applet

    // such as loading graphics, initialize variables,

    creating objects

    // add() is used to insert the objects into the

    area allocated for the applet

    add(b1); add(b2); add(b3); add(tf); add(ta);

    }

    public void start() {

    // implement the main action of the applet

    behavior

  • 8/3/2019 The Fundamental Client Side Programming Language for the Web

    16/28

    // it is also called by browser to restart after it

    was stopped.

    }

    public void stop() {

    // stop an applet's execution but leaves

    resources intact so it can restart.

    }

    public void destroy() {

    // release all its resources

    // typically happens when the user leaves the

    page containing the applet.

    * } Many Applet only needs to implement init()

    * For control and user input, Button, TextField,

    TextArea, Canvas objects are created in init()

    and special method action() is called when event

    happens

    public boolean action(Event e, Object o) {

  • 8/3/2019 The Fundamental Client Side Programming Language for the Web

    17/28

    if (e.target instanceof Button) {

    String s = (String) o;

    if (s.equals("play") {

    tf.setText("play button is pushed");

    } else if (s.equal("stop") {

    ta.setText("stop button is pushed");

    } else {

    ta.appendText("resume button is

    pushed");

    }

    return true;

    }

    return false;

    * } Try this basic example.

    Abstract Window Toolkit (AWT)

    Tutorial from Netscape

  • 8/3/2019 The Fundamental Client Side Programming Language for the Web

    18/28

    Using AWT Components:

    http://owl.uccs.edu/~cs301/java/awt/oldui/components/using.html

    Layout the Components in a container:

    http://owl.uccs.edu/~cs301/java/awt/oldui/layout/ind

    ex.html

    Note that there are new GUI packages such swing

    and Java 2D graphics recommended by Netscape.

    They are great for making Java applications withGUI, but there are still a lot of browsers do not

    support that. They require JDK1.2 compatible

    viewer or Java plug in.

    "Java Plug-in software enables enterprise customers

    to direct Java applets or JavaBeansTM components

    on their intranet web pages to run using Sun's Java

  • 8/3/2019 The Fundamental Client Side Programming Language for the Web

    19/28

    Runtime Environment (JRE), instead of the

    browser's default Java runtime. This enables an

    enterprise to deploy Java applets that take fulladvantage of the latest capabilities and features of

    the Java platform and be assured that they will run

    reliably and consistently. " --

    http://java.sun.com/applets/index.html.

    Using JFC/SWING to create GUI

    The swing components in Java Foundation Classes

    (JFC) is the new package in JDK1.1 and JDK1.2 for

    supporting GUI design in Java applications and

    applets.

    It provides much more features to those of AWT.

    For examples,

    * allow images on buttons/labels,

    * dynamically change of borders,

    * component can be round,

  • 8/3/2019 The Fundamental Client Side Programming Language for the Web

    20/28

    * specify look and feels (Java, Windows,

    CDE/Motif).

    * wider selection of components

    * not using native code (more portable)

    Unfortunately, Sun recommends that SWING and

    AWT components not mix. Their drawing sequence

    are basically different. "Heavyweight" AWT

    components such as menu, scrollpane, canvas, and

    panel always draw on top of "lightweight" SWING

    components.

    Tutorial on using GridBagLayout.

    Note that the current tutorial on java.sun.com isgoing through major revision. Some web pages,

    such as the layout manager tutorial, event hung the

    whole browser. Use them with caution. 12/3/98.

  • 8/3/2019 The Fundamental Client Side Programming Language for the Web

    21/28

    Example for using GridBagLayout and submit data

    to a CGI script

    http://owl.uccs.edu/~cs301/java/Register.html and

    Register.java

    Goal:

    * Illustrate the use of the GridBagLayout manager

    and AWT components.

    * Learn how to exchange data between Applet and

    CGI script using URL.

    How we arrange the GridBagLayout using

    GridBagConstraints:

    * Here we create a title as a Label and set

    gbc.anchor = GridBagConstraints.NORTH.

  • 8/3/2019 The Fundamental Client Side Programming Language for the Web

    22/28

    * We have login and address Labels and set their

    gbc.anchor = GridBagConstraints.WEST and

    gbc.gridwidth = 1.* The login TextField and address TextArea are

    set with gbc.grdiwidth =

    GridBagConstraints.REMAINDER.

    * The submit Button is set with gbc.anchor =

    GridBagConstraints.CENTER and padded with 10pixels on each side using gbc.insets = new

    Insets(10,10,10,10);

    * Finally the return result TextArea is set with

    gbc.anchor = GridBagConstraints.SOUTH and

    gbc.grdiwidth = GridBagConstraints.REMAINDER.

    Basic steps for using the applet:

    * When the submit button is hit, the action

    method first performs www-url-encode on the

    content of address TextArea, then puts the fields of

  • 8/3/2019 The Fundamental Client Side Programming Language for the Web

    23/28

    the login and address in the name-value pair format

    attached at the end of the url.

    * Create a URL with it, which in effect submit thedata the corresponding CGI script on the server side.

    * The registerData.pl saves the data in a file and

    return a web page that is then displayed in the result

    TextArea.

    Example for plotting the cookie sale of a particular

    year.

    http://owl.uccs.edu/~cs301/java/plotdemo/CookieSal

    es.html and CookieSales.java.

    Goal:

    * Learn how to use the graphic drawing capability

    of the AWT.* Learn how to retrieve data files from the web

    server.

  • 8/3/2019 The Fundamental Client Side Programming Language for the Web

    24/28

    Here are the basic steps for using the Applet:

    * After the user selects the year in the choice

    menu and hits the plot button, the action method

    creates the url string by concatenating

    http://owl.uccs.edu/~cs301/java/plotdemo/data/ with

    CookieSale.

    * It then creates an URL object with the string and

    open a DataInputStream for reading the 12 month

    sale data from the web server into an array.

    * Each line of the data file contains the month andbox numbers of the cookie sale.

    * The data file is displayed in the contents

    TextArea.

    * It then sets the array in the CookieSalesCanvas

    class and asks it to plot the bar chart based on the

    data.

  • 8/3/2019 The Fundamental Client Side Programming Language for the Web

    25/28

    * drawRect() and fillRect() are used to draw the

    bar of each month.

    Reasons for Extending Canvas Class

    * For AWT components, we do not have extend

    classes unless there is a special need.

    * For plots using Canvas class, we have a special

    requirement for handling the redrawing when the

    part or whole of the canvas area is destroyed due to

    the resizing of the applet or window hierarchy

    changes (other window pops up).

    * Those destroyed areas need to be redrawn.

    * The paint(Graphics g) method is designated for

    handling the redrawing and the first drawing of the

    area.

    * It will be given the area that needs to be

    redrawn.

  • 8/3/2019 The Fundamental Client Side Programming Language for the Web

    26/28

    * It needs to know how to redraw the area -->

    needs to have access to the original source data.

    * Therefore, we extend the canvas class withadditional variables, such as Year and Sv[][] for

    holding a copy of the original source data.

    * Here we use a setValue() to copy the source data

    from the applet to CookieSalesCanvas.

    * In the paint(), we use the basic drawing

    functions create the content.

    Important Site

    * http://java.sun.com

    * Applet collections:

    http://java.sun.com/applets/index.html

    * Java Tutorial

    * http://java.sun.com/products/jdk/1.1/docs.html:

    main document web page for JDK

  • 8/3/2019 The Fundamental Client Side Programming Language for the Web

    27/28

    * http://www.gamelan.com: depository for java

    applets and links to related web sites.

    * http://www.javaworld.com: magazine, article,source code, news.

    *

    http://www.yahoo.com/Computers_and_Internet/Pro

    gramming_Languages/Java

    *

    Good References

    * The Java Tutorial by Mary Campione and Kathy

    Walrath, Addison Wesley, 1996 Note that there is a

    new book "The Java Tutorial Continue" will appear

    Dec 98.

    * Java How to Program, by Deitel & Deitel,Prentice Hall, 1997.

    * Java 1.1 Unleashed 3rd ed., Sam.net,

  • 8/3/2019 The Fundamental Client Side Programming Language for the Web

    28/28

    * Graphic Java, Mastering the AWT, 2nd ed., by

    David M, Geary, Prentice Hall, 1997.

    *

    Debug Java Applet

    * Use showStatus() which shows string on

    browser's status window.

    * Create a TextArea or TextField for displaying

    intermediate results.

    * Use JDB that comes with JDK.

    * Use tools such as Jbuilder, Visual cafe, MS J++.