Applets • An applet is a program written in the Java programming language that can be included in an HTML page, much in the same way an image is included in a page. • When you use a Java technology-enabled browser to view a page that contains an applet, the applet's code is transferred to your system and executed by the browser's Java Virtual Machine • By calling certain methods, a browser manages an applet life cycle, if an applet is loaded in a web page. • Applets are small applications that are accessed on an Internet server, transported over the Internet, automatically installed, and run as part of a Web document • Applet has limited access to the client machine’s resources • The limited access can produce an arbitrary multimedia user interface and run complex computations without introducing the risk of viruses or breaching data integrity. Applets Cont.. • Applets are used to provide interactive features to web applications that cannot be provided by HTML alone. • They can capture mouse input (like rotating 3D object) and also have controls like buttons or check boxes. • In response to the user action an applet can change the provided graphic content. This makes applets well suitable for demonstration, visualization and teaching. • Applets are also used to create online game collections that allow players to compete against live opponents in real-time. • An applet can also be a text area only. • If needed, an applet can leave the dedicated area and run as a separate window. However, applets have very little control over web page content outside the applet dedicated area, so they are less useful for improving the site appearance in general • Applets can also play media in formats that are not natively supported by the browser.. • Java applets run at a speed that is comparable to (but generally slower than) other compiled languages such as C++, but many times faster than JavaScript. • In addition they can use 3D hardware acceleration that is available from Java. This makes applets well suited for non trivial, computation intensive visualizations • • • • • • HTML pages may embed parameters that are passed to the applet. Hence the same applet may appear differently depending on the parameters that were passed. The first implementations involved downloading an applet class by class. While classes are small files, there are frequently a lot of them, so applets got a reputation as slow loading components. Since jars were introduced, an applet is usually delivered as a single file that has a size of the bigger image (hundreds of kilobytes to several megabytes). Since Java's bytecode is platform independent, Java applets can be executed by browsers for many platforms, including Microsoft Windows, Unix, Mac OSand Linux. It is also trivial to run a Java applet as an application with very little extra code. This has the advantage of running a Java applet in offline mode without the need for any Internet browser software and also directly from the development IDE. Many Java developers, blogs and magazines are recommending that the Java Web Start technology be used in place of Applet Technical Information • • • • • • Java applets are executed in a sandbox by most web browsers, preventing them from accessing local data like clipboard or file system. The code of the applet is downloaded from a web server and the browser either embeds the applet into a web page or opens a new window showing the applet's user interface. A Java applet extends the class java.applet.Applet, or in the case of a Swing applet, javax.swing.JApplet. The class must override methods from the applet class to set up a user interface inside itself (Applet is a descendant of Panel which is a descendant of Container. As applet inherits from container, it has largely the same user interface possibilities as an ordinary Java application, including regions with user specific visualization. The domain from where the applet executable has been downloaded is the only domain to which the usual (unsigned) applet is allowed to communicate. This domain can be different from the domain where the surrounding HTML document is hosted. Java system libraries and runtimes are backwards compatible, allowing to write code that runs both on current and on future versions of the Java virtual machine. Sample Applet import java.awt.*; import java.applet.*; public class SimpleApplet extends Applet { public void paint(Graphics g) { g.drawString("A Simple Applet", 20, 20); } } Ref:SimpleApplet.java • The first imports the Abstract Window Toolkit (AWT) classes. Applets interact with the user through the AWT, not through the console-based I/O classes. • The AWT contains support for a window-based, graphical interface. • The second import statement imports the applet package, which contains the class Applet. • Every applet that create must be a subclass of Applet. • The class SimpleApplet must be declared as public, because it will be accessed by code that is outside the program. • Inside SimpleApplet, paint() is declared. This method is defined by the AWT and must be overridden by the applet. paint( ) is called each time that the applet must redisplay its output. • Redisplay can happen several reasons, the window in which the applet is running can be overwritten by another window and then uncovered. Or, the applet window can be minimized and then restored. • paint( ) is also called when the applet begins execution. Whatever the cause, whenever the applet must redraw its output, paint( ) is called. • The paint() method has one parameter of type Graphics. This parameter contains the graphics context, which describes the graphics environment in which the applet is running. This context is used whenever output to the applet is required. • Inside paint() is a call to drawString(), which is a member of the Graphics class. This method outputs a string beginning at the specified X,Y location. It has the following general form: • void drawString(String message, int x, int y) • message is the string to be output beginning at x,y. • In a Java window, the upperleft corner is location 0,0. The call to drawString( ) in the applet causes the message "A Simple Applet" to be displayed beginning at location 20,20. Applet Execution • There are two ways to run the applet 1. Executing the applet within a Java-compatible Web browser, such as Netscape Navigator. 2. Using an applet viewer, such as the standard JDK tool, appletviewer. 3. An applet viewer executes your applet in a window. This is generally the fastest and easiest way to test your applet. Executing in browser • Compile the Appletclass • Create an html file with the following applet tag <applet code="com.mes.training.applets.SimpleApple t" width=200 height=60> </applet> • The width and height statements specify the dimensions of the display area used by the applet. • If the applet class is within in package, put the html file in the root directory and give fully qualified name • After creating this file, execute browser and then load this file,which causes SimpleApplet to be executed. Applet viewer • To execute SimpleApplet with an applet viewer, execute the HTML file in the using appletviewer command • For example, if the preceding HTML file is called RunApp.html, then the following command line will run SimpleApplet: • C:\\>appletviewer RunApp.html • Include a comment at the head of Java source code file that contains the APPLET tag. By doing so, code is documented with a prototype of the necessary HTML statements, and we can test the compiled applet merely by starting the applet viewer with your Java source code file. • Ref:SimpleApplet.java • applets.html Applets are….. • Applets do not need a main() method. • Applets must be run under an applet viewer or a Java-compatible browser. • User I/O is not accomplished with Java's stream I/O classes. Instead, applets use the interface provided by the AWT. Applet Class • All applet classes need to extend Applet class • Applet class provides all necessary support for applet execution, such as starting and stopping. • It also provides methods that load and display images, and methods that load and play audio clips. • Applet extends the AWT class Panel. In turn, Panel extends Container, which extends Component. Applet Architecture • An applet is a window-based program and they are event driven • When the user clicks a mouse inside the applet's window, a mouse-clicked event is generated. If the user presses a key while the applet's window has input focus, a keypress event is generated. As you will see in later chapters, applets can contain various controls, such as push buttons and check boxes. When the user interacts with one of these controls, an event is generated. Life Cycle • Basically, there are four methods in the Applet class on which any applet is built. • init: This method is intended for whatever initialization is needed for your applet. It is called after the param attributes of the applet tag. • start: This method is automatically called after init method. It is also called whenever user returns to the page containing the applet after visiting other pages. • stop: This method is automatically called whenever the user moves away from the page containing applets. You can use this method to stop an animation. • destroy: This method is only called when the browser shuts down normally. • The applet can be initialized once and only once, started and stopped one or more times in its life, and destroyed once and only once. • Another, paint(), is defined by the AWT Component class. Applet skeleton import java.awt.*; import java.applet.*; /* <applet code="AppletSkel" width=300 height=100> </applet> */ public class AppletSkel extends Applet { // Called first. public void init() { // initialization } /* Called second, after init(). Also called whenever the applet is restarted. */ public void start() { // start or resume execution } Applet skeleton….. // Called when the applet is stopped. public void stop() { // suspends execution } /* Called when applet is terminated. This is the last method executed. */ public void destroy() { // perform shutdown activities } // Called when an applet's window must be restored. public void paint(Graphics g) { // redisplay contents of window } } Advantages • It is simple to make it work on Linux, Microsoft Windows and Mac OS X i.e. to make it cross platform. Applets are supported by most web browsers. • The same applet can work on "all" installed versions of Java at the same time, rather than just the latest plug-in version only. However, if an applet requires a later version of the Java Runtime Environment (JRE) the client will be forced to wait during the large download. • Most web browsers cache applets, so will be quick to load when returning to a web page. Applets also improve with use: after a first applet is run, the JVM is already running and starts quickly (the JVM will need to restart each time the browser starts afresh). Advantage… • • • • • • Applet can move the work from the server to the client, making a web solution more scalable with the number of users/clients. If a standalone program (like Google Earth) talks to a web server, that server normally needs to support all previous versions in case a user has not kept his or her client software up to date. In contrast, a properly configured browser loads (and caches) the latest applet version, so there is no need to support legacy versions. The applet naturally supports the changing user state, such as figure positions on the chessboard. Developers can develop and debug an applet direct simply by creating a main routine (either in the applet's class or in a separate class) and calling init() and start() on the applet, thus allowing for development in their favorite Java SE development environment. All one has to do after that is re-test the applet in the AppletViewer program or a web browser to ensure it conforms to security restrictions. An untrusted applet has no access to the local machine and can only access the server it came from. This makes such an applet much safer to run than a standalone executable that it could replace. However, a signed applet can have full access to the machine it is running on if the user agrees. Java applets are fast - and can even have similar performance to native installed software. Disadvantages • • • • • • • It requires the Java plug-in. Some organizations only allow software installed by the administrators. As a result, some users can only view applets that are important enough to justify contacting the administrator to request installation of the Java plug-in. As with any client-side scripting, security restrictions may make it difficult or even impossible for an untrusted applet to achieve the desired goals. Some applets require a specific JRE. This is discouraged.[25] If an applet requires a newer JRE than available on the system, or a specific JRE, the user running it the first time will need to wait for the large JRE download to complete. Java automatic installation or update may fail if a proxy server is used to access the web. This makes applets with specific requirements impossible to run unless Java is manually updated. The Java automatic updater that is part of a Java installation also may be complex to configure if it must work through a proxy. Unlike the older applet tag, the object tag needs workarounds to write a cross-browser HTML document. • • • • Ref:SampleApplet1.java SimpleBannerApplet.java PraDemo.java Read Html tags