Download lecture38

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
CSC 205 – Java Programming II
Lecture 38
April 24, 2002
Types of Java Programs
• Applets
• Applications
– Console applications
– Graphics applications
• Applications are stand-alone programs
• An application must have a main method
What Is Applet
• An applet is
– a program that adheres to a set of conventions
– run within a Java-compatible Web browser
– downloaded from a Web server
• An applet must extend the Applet class
Download From Web Server
Advantages & Disadvantages
• Advantages
– Can be accessed where Internet is available
– When GUIs need to be upgraded, just change them at
one location: on the Web server
• Disadvantages
– Time to download may be long
– Security could be an issue
Security Policies
• Browsers impose the following restrictions on
any applet that is loaded over the network:
– An applet cannot load libraries or define native
methods.
– It cannot ordinarily read or write files, or start any
program on the host that's executing it.
– It cannot make network connections except to the host
that it came from.
– It cannot read certain system properties.
– Windows that an applet brings up look different than
windows that an application brings up.
Inheritance Hierarchy
java.applet
Class Applet
java.lang.Object
|
+--java.awt.Component
|
+--java.awt.Container
|
+--java.awt.Panel
|
+--java.applet.Applet
A Typical Applet
import java.applet.Applet;
import java.awt.Graphics;
public class Simple extends Applet {
//methods to be overridden
public void init() {…}
public void start() {…}
public void stop() {…}
public void destroy() {…}
void addItem(String newWord) { …; repaint(); }
public void paint(Graphics g) {…}
//inherited from the Container class
}
Life Cycle of an Applet
• Loading the Applet
– An instance of the applet's controlling class (an
Applet subclass) is created
– The applet initializes itself
– The applet starts running
• Leaving and Returning to the Applet's Page
– The applet stops running when leaving the page
– the applet can start itself again when returning
Methods for Milestones
• An applet can override the following methods
– init
To initialize the applet each time it's loaded (or
reloaded).
– start
To start the applet's execution, such as when the
applet's loaded
or when the user revisits a page that contains the
applet.
– stop
To stop the applet's execution, such as when the user
leaves the
applet's page or quits the browser.
– destroy
To perform a final cleanup in preparation for
Methods for Drawing
• An applet can override the following two display
methods (of the Container class) :
– paint
The basic display method. Many applets implement
the paint method to draw the applet's representation
within a browser page.
– update
A method you can use along with paint to improve
drawing performance
Animation
• To update applet changes
– invoke the repaint method (inherited from the
Component class) periodically
– The paint method will be invoked when the applet
is repainted
Event Handling
• Applets inherit a group of event-handling
methods from the Component class
• To react to an event, an applet must override
– either the appropriate event-specific method, or
– the handleEvent method (from the Component
class)
Event Handling – Example
• Adding the following code to the Simple applet
makes it respond to mouse clicks.
import java.awt.Event;
. . .
public boolean mouseDown(Event event, int x,
int y) {
addItem("click!... ");
return true;
}
Deprecation
• Unfortunately, many of the samples available
online or in textbooks use deprecated methods
• You will be warned when you compile code with
deprecated methods
• Use the –deprecation option to see detailed info
javac –deprecation Simple.java
• Replace deprecated methods with newer methods
as recommended by latest version of Java API
Deprecation
Using UI Components
• Because the Applet class inherits from the AWT
Container class, it's easy to add components
to applets and to use layout managers to control
the components' onscreen positions.
– add
Adds the specified Component
– remove
Removes the specified Component
– setLayout
Sets the layout manager
Testing Applets
• Two ways to run an applet
– Use the applet viewer
appletviewer simple.html
– Embed applets into Web pages
• Both need to use the applet tag in HTML files
<APPLET CODE=AppletSubclass.class
WIDTH=anInt HEIGHT=anInt>
</APPLET>
HTML – An Overview
• Markup language
– use tags to represent the meaning and/or content of the
enclosed data
• Some features
–
–
–
–
Not case sensitive
Loose syntax
Predefined tags
Text is the only data type
More Examples
• The following two tags are equivalent
<APPLET CODE=Simple.class WIDTH=100
HEIGHT=100>
</APPLET>
<applet code=“Simple.class” width=“100”
height=“100”>
</applet>
A Simple HTML File
<html>
<body>
<p>Click on the applet to start
the animation.</p>
<!– this line is comment -->
<applet
code="SelectionSortApplet.class"
width="300" height="300">
</applet>
</body>
</html>
Thread
• A thread is a program unit that is executed
independently of other parts of the program
• The JVM executes each thread for a short time
and then switches to another thread
• A programmer can concentrate on what tasks
each thread need to perform
– and possibly, the communication between threads
Write a Thread
• Follow the steps
– Write a class that extends the Thread class
– Place the code for the task in the run method
– Create an object of the your thread class
– Call the start method to activate your thread
Sample Thread Class
public class GreetingThread extends Thread{
public GreetingThread(String aGreeting){
greeting = aGreeting;
}
public void run() {
try {
for (int i = 1; i <= REPETITIONS; i++) {
Date now = new Date();
System.out.println(now + " " + greeting);
sleep(DELAY);
}
} catch (InterruptedException exception){
}
}
Running A Thread – I
public class GreetingThreadTest{
public static void main(String[] args)
{
GreetingThread t1
= new GreetingThread("Hello, World!");
GreetingThread t2
= new GreetingThread("Goodbye, World!");
t1.start();
t2.start();
}
}
Sample Output
The Runnable Interface
• Problems of writing a thread which extends
another class, e.g. the Frame class
– Since Java doesn’t allow multiple inheritance
• Can implement the Runnable interface instead
public class MyFrame extends Frame
implements Runnable {
public MyFrame() {…}
public void run() {…}
}
Running A Thread – II
• Follow the steps
– Construct a Runnable object
– Create a thread using the Runnable object
– Invoke the start method of the thread
MyFrame frame = new MyFrame();
Thread myThread = new Thread(frame);
myThread.start();
start
interrupt