Lecture 10 Slides

Download Report

Transcript Lecture 10 Slides

Introduction to Java 2
Programming
Lecture 10
Applets
Overview
• Introduction to Applets
– The Rules for Applets
– The Applet Lifecycle
• Writing Applets
– Creating applets
– Deploying applets
• Examples: Interacting with the browser
– Parameters
– Displaying status messages
– Showing documents
Introduction to Applets
• Applets are applications that are deployed over the
Internet
– Designed to run inside a browser
– Are embedded in HTML pages
– Core part of Java
• Not are popular as they were (or forecasted to be)
– Patchy browser support
– Can be slow to download
– Macromedia Flash, etc. offer similar functionality
Introduction to Applets
•
•
•
•
But do provides a number of benefits…
Easy to deploy (“web components”)
No need for installation or upgrades
Provide more sophisticated functionality than a
web page/form
• Allow for proprietary client-server protocols
• Re-use code from traditional applications
• Very secure
The Rules for Applets
• An applet cannot (usually) do the following:
• Cannot load libraries or define native
methods
• Cannot read or write files on the client
• Cannot make network connections except to
the server it came from
• Cannot start any program on the client
• Cannot read certain system properties
• Cannot ‘pretend’ to be a local application
– Applet windows look different
The Rules for Applets
• Ensures that an applet cannot damage the client
– Otherwise opens potential for viruses, security
breaches, trojan horses, etc
– Applets are considered to be untrusted code
• Rules are enforced by a Security Manager
– Installed by the JVM in the browser
• The rules are known as a security policy
• Alternate policies can be used on request
– But only if the user decides to trust the code
The Applet Lifecycle
• Applets are loaded, started and managed by the
browser
• Browser is a ‘container’ that provides services to
the applet
– Similar to Robots in the Robocode arena
• Browser drives the applet through life-cycle
methods
– The methods mark ‘milestones’ in the applet life
– Instruct it to carry out some basic operations
– Form a contract between the browser and the applet
• (Aside: this is a common pattern used in many
Java frameworks in various forms)
The Applet Lifecycle
• Four basic lifecycle methods
– Defaults provided by java.applet.Applet
• init() – Initialises the applet when (re-)loaded
– Perform initialisation here rather than constructor
– Guarantees complete environment is available (e.g.
parameters)
• start() – Starts the applet running, after
loading or user revisits page
• stop() – Stops the applet running, when user
leaves page or quits
• destroy() – Perform final clean-up before its
unloaded
The Applet Lifecycle
init()
Initialised
start()
Running
stop()
start()
Stopped
destroy()
Destroyed
Writing Applets
• Writing applet involves creating a sub-class of
– java.applet.Applet, or
– javax.swing.JApplet (recommended)
• Remember, JApplet is a top-level Swing
container
– can add usual Swing components
• Applet base class provides a number of useful
methods
• Applets also have a context object, that provides
other functionality
– E.g. driving the browser, communicating with other
applets
Writing Applets
Useful Methods
• getParameter() – get a parameter set in the
web page
• showStatus() – show a message in the status
bar
• getImage() – load an image
• getAudioClip(), play() – play a sound
file
• getAppletContext() – get context object
• getAppletContext().showDocument()
– instruct the browser to show another webpage
Writing Applets
• Tip for development/debugging:
– Use the appletviewer tool for viewing and
testing applets
– Easier to control than in a browser
– Avoids problems with caching of applets
• Example…A Basic Applet
Deploying Applets
• Applets are embedded into web pages with the
<applet> tag
– Instructs the browser to display an applet in that
location of the web page
• The applet tag can be used to set several properties
about the applet
– the class to load and run as an applet
– height and width
– Location of class files (codebase)
Deploying Applets
<applet
name=“MyApplet”
code=“AppletSubclass.class”
width=“anInt”
height=“anInt”
codebase=“http://where.applet.lives”>
<param name=“parameter1Name”
value=“aValue”/>
<param name=“parameter2Name”
value=“anotherValue”/>
Your browser is not Java enabled!
</applet>
Deploying Applets
<html>
<body>
<h1>The Basic Applet</h1>
<applet
code="intro2java.applet.BasicApplet.class"
width="100"
height="100">
</applet>
</body>
</html>
Writing Applets
• Beware of CLASSPATH!
– Applets classes are loaded from the same
directory as the HTML page
– Unless an alternate directory is set with the
codebase attribute
Examples
•
•
The Hello World Applet
Interacting with the browser
1.
2.
3.
4.
Getting parameters
Showing a status message
Showing other web pages
The Calculator as an applet