Introduction to Java 2 Programming
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
ExampleA 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