29
CHAPTER 10 @geoffjuma

CHAPTER Agenda Applets Servelets Browsers HelloWorld

Embed Size (px)

DESCRIPTION

Applets An applet is a Java program that runs in a Web browser –An applet is a Panel that allows interaction with a Java program You need special HTML in the Web page to tell the browser about the applet For security reasons, applets run in a sandbox: they have no access to the client’s file system

Citation preview

Page 1: CHAPTER Agenda Applets Servelets Browsers HelloWorld

CHAPTER 10

@geoffjuma

Page 2: CHAPTER Agenda Applets Servelets Browsers HelloWorld

Agenda• Applets• Servelets• Browsers• HelloWorld

Page 3: CHAPTER Agenda Applets Servelets Browsers HelloWorld

Applets• An applet is a Java program that runs in a Web

browser– An applet is a Panel that allows interaction with a Java

program• You need special HTML in the Web page to tell

the browser about the applet• For security reasons, applets run in a sandbox:

they have no access to the client’s file system

Page 4: CHAPTER Agenda Applets Servelets Browsers HelloWorld

Applet Support• Most modern browsers support Java 1.4 if they

have the appropriate plugin• In the PC labs, Internet Explorer 5.5 has been

updated, but Netscape has not• The best support isn't a browser, but the

standalone program appletviewer• In general you should try to write applets that can

be run with any browser

Page 5: CHAPTER Agenda Applets Servelets Browsers HelloWorld

Differences between applets and Standalone

• An applet is a Java class that extends the java.applet.Applet class.

• A main() method is not invoked on an applet, and an applet class will not define main().

• Applets are designed to be embedded within an HTML page.

• When a user views an HTML page that contains an applet, the code for the applet is downloaded to the user's machine.

Page 6: CHAPTER Agenda Applets Servelets Browsers HelloWorld

Differences between applets and Standalone programs (2)

• A JVM is required to view an applet. The JVM can be either a plug-in of the Web browser or a separate runtime environment.

• The JVM on the user's machine creates an instance of the applet class and invokes various methods during the applet's lifetime.

• Applets have strict security rules that are enforced by the Web browser. The security of an applet is often referred to as sandbox security, comparing the applet to a child playing in a sandbox with various rules that must be followed.

• Other classes that the applet needs can be downloaded in a single Java Archive (JAR) file.

Page 7: CHAPTER Agenda Applets Servelets Browsers HelloWorld

What an applet is• You write an applet by extending the class

Applet• Applet is just a class like any other; you can even

use it in applications if you want• When you write an applet, you are only writing

part of a program• The browser supplies the main method

Page 8: CHAPTER Agenda Applets Servelets Browsers HelloWorld

The genealogy of Applet

java.lang.Object | +----java.awt.Component | +----java.awt.Container | +----java.awt.Panel | +----java.applet.Applet

Page 9: CHAPTER Agenda Applets Servelets Browsers HelloWorld

Applet's Life Cycle• init: This method is intended for whatever initialization is

needed for your applet.• start: This method is automatically called after the browser

calls the init method. It is also called whenever the user returns to the page containing the applet after having gone off to other pages.

• stop: This method is automatically called when the user moves off the page on which the applet sits.

• destroy: This method is only called when the browser shuts down normally.

• paint: Invoked immediately after the start() method, and also any time the applet needs to repaint itself in the browser. – The paint() method is actually inherited from the java.awt.

Page 10: CHAPTER Agenda Applets Servelets Browsers HelloWorld

The simplest possible applet

import java.applet.Applet;public class TrivialApplet extends Applet { }

<applet code="TrivialApplet.class” width=150 height=100></applet>

TrivialApplet.java

TrivialApplet.html

Page 11: CHAPTER Agenda Applets Servelets Browsers HelloWorld

The simplest reasonable applet

import java.awt.*;import java.applet.Applet;

public class HelloWorld extends Applet { public void paint( Graphics g ) { g.drawString( "Hello World!", 30, 30 ); }}

Page 12: CHAPTER Agenda Applets Servelets Browsers HelloWorld

Applet methodspublic void init ()public void start ()public void stop ()public void destroy ()public void paint (Graphics)Also:public void repaint()public void update (Graphics)public void showStatus(String)public String getParameter(String)

Page 13: CHAPTER Agenda Applets Servelets Browsers HelloWorld

Why an applet works

• You write an applet by extending the class Applet• Applet defines methods init( ), start( ), stop( ),

paint(Graphics), destroy( )• These methods do nothing--they are stubs• You make the applet do something by overriding

these methods• When you create an applet in BlueJ, it automatically

creates sample versions of these methods for you

Page 14: CHAPTER Agenda Applets Servelets Browsers HelloWorld

public void init ( )• This is the first method to execute• It is an ideal place to initialize variables• It is the best place to define the GUI Components

(buttons, text fields, scrollbars, etc.), lay them out, and add listeners to them

• Almost every applet you ever write will have an init( ) method

Page 15: CHAPTER Agenda Applets Servelets Browsers HelloWorld

public void start ( )• Not always needed• Called after init( )• Called each time the page is loaded and restarted• Used mostly in conjunction with stop( )• start() and stop( ) are used when the Applet is

doing time-consuming calculations that you don’t want to continue when the page is not in front

Page 16: CHAPTER Agenda Applets Servelets Browsers HelloWorld

public void stop( )• Not always needed• Called when the browser leaves the page• Called just before destroy( )• Use stop( ) if the applet is doing heavy

computation that you don’t want to continue when the browser is on some other page

• Used mostly in conjunction with start()

Page 17: CHAPTER Agenda Applets Servelets Browsers HelloWorld

public void destroy( )• Seldom needed• Called after stop( )• Use to explicitly release system resources (like

threads)• System resources are usually released

automatically

Page 18: CHAPTER Agenda Applets Servelets Browsers HelloWorld

Methods are called in this order

• init and destroy are only called once each

• start and stop are called whenever the browser enters and leaves the page

• do some work is code called by your listeners

• paint is called when the applet needs to be repainted

init()start()

stop()

destroy()

do some work

Page 19: CHAPTER Agenda Applets Servelets Browsers HelloWorld

public void paint(Graphics g)

• Needed if you do any drawing or painting other than just using standard GUI Components

• Any painting you want to do should be done here, or in a method you call from here

• Painting that you do in other methods may or may not happen

• Never call paint(Graphics), call repaint( )

Page 20: CHAPTER Agenda Applets Servelets Browsers HelloWorld

repaint( )

• Call repaint( ) when you have changed something and want your changes to show up on the screen

• repaint( ) is a request--it might not happen• When you call repaint( ), Java schedules a call to

update(Graphics g)

Page 21: CHAPTER Agenda Applets Servelets Browsers HelloWorld

update( )• When you call repaint( ), Java schedules a call to

update(Graphics g)• Here's what update does:

public void update(Graphics g) { // Fills applet with background color, then paint(g);}

Page 22: CHAPTER Agenda Applets Servelets Browsers HelloWorld

Sample Graphics methods

• A Graphics is something you can paint on

g.drawRect(x, y, width, height);g.fillRect(x, y, width, height);g.drawOval(x, y, width, height);g.fillOval(x, y, width, height);g.setColor(Color.red);

g.drawString(“Hello”, 20, 20); Hello

Page 23: CHAPTER Agenda Applets Servelets Browsers HelloWorld

Painting at the right time is hard• Rule #1: Never call paint(Graphics g), call

repaint( ).• Rule #2: Do all your painting in paint, or in a

method that you call from paint.• Rule #3: If you paint on any Graphics other than

the Applet’s, call its update method from the Applet’s paint method.

• Rule #4. Do your painting in a separate Thread.• These rules aren't perfect, but they should help.

Page 24: CHAPTER Agenda Applets Servelets Browsers HelloWorld

Other useful Applet methods• System.out.println(String s)

– Works from appletviewer, not from browsers– Automatically opens an output window.

• showStatus(String) displays the String in the applet’s status line.– Each call overwrites the previous call.– You have to allow time to read the line!

Page 25: CHAPTER Agenda Applets Servelets Browsers HelloWorld

Applets are not magic!• Anything you can do in an applet, you can do in

an application.• You can do some things in an application that you

can’t do in an applet.• If you want to access files from an applet, it must

be a “trusted” applet.• Trusted applets are beyond the scope of this

course.

Page 26: CHAPTER Agenda Applets Servelets Browsers HelloWorld

Structure of an HTML page

HTML

TITLE

BODYHEAD

(content)

• Most HTML tags are containers.

• A container is <tag> to </tag>

Page 27: CHAPTER Agenda Applets Servelets Browsers HelloWorld

HTML

<html> <head> <title> Hi World Applet </title> </head>

<body> <applet code="HiWorld.class” width=300 height=200> <param name="arraysize" value="10"> </applet> </body></html>

Page 28: CHAPTER Agenda Applets Servelets Browsers HelloWorld

<param name="arraysize" value="10">

• public String getParameter(String name)

• String s = getParameter("arraysize");

• try { size = Integer.parseInt (s) }catch (NumberFormatException e) {…}

Page 29: CHAPTER Agenda Applets Servelets Browsers HelloWorld

The End