The Java Language and Environment. Cecilia Bastarrica, Anupama Vadali, and Prof. Steven A. Demurjian, Sr. Computer Science & Engineering Department The University of Connecticut 371 Fairfield Road, Box U-255 Storrs, CT 06269-2155. steve@engr.uconn.edu http://www.engr.uconn.edu/~steve
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation
Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement.Téléchargez la présentation en cliquant sur ce lien.Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.
F I N
Plus de contenu associé
Transcription de la présentation
The Java Language and Environment Cecilia Bastarrica, Anupama Vadali, and Prof. Steven A. Demurjian, Sr. Computer Science & Engineering Department The University of Connecticut 371 Fairfield Road, Box U-255 Storrs, CT 06269-2155 steve@engr.uconn.edu http://www.engr.uconn.edu/~steve http://www.engr.uconn.edu/cse (860) 486 - 4818
Overview of Presentation • Motivation and Introduction to Java • Designing and Developing Applets in Java • The Java User Interface - GUI with AWT • Designing and Developing Java Classes • Inheritance and Interfaces in Java • Polymorphism and Object Serialization
Motivation and Introduction to Java • Java is Emerging as the OO Language of Choice • Java’s Utilization in … • Distributed Internet-Based Applications of All Types • Legacy/COTS Integration for Enterprise Computing • General-Purpose, Single-CPU Development • Significant Dissemination on WWW: • http://www.javasoft.com • http://www.gamelan.com • We’ll Overview Key Features and Capabilities
An Overview of Java • Java is a Third Generation, General Purpose, Platform Independent, Concurrent, Class-Based, Object-Oriented Language and Environment • Java Composed of JDK and JRE • Java Language • Java Packages (Libraries) • javac Compiler to Bytecode (p-code) • JDB Java Debugger • Java Interpreter - Platform Specific • JDK: Java Development Environmenthttp://www.javasoft.com/products/jdk/1.2/ • JRE: Java Runtime Environmenthttp://www.javasoft.com/products/jdk/1.2/jre/index.html
What is Java?Software Releases and IDEs • Java is Free! • Current Releases • Version 2 for Win95, Win98, NT • Version 2 (Early Access) for Solaris • Third-Party Ports to All Conceivable HW/SW Platforms from Micros to Mainframes http://www.javasoft.com/cgi-bin/java-ports.cgi • Integrated Development Environments (IDEs) • Commercial Products, Freeware, Visual IDEs • Visual J++, Visual Café, Kawa, Jpad, Javelin
Java Virtual Machine (JVM) • JVM is a Platform Specific Program which Interprets and Executes Java Code • JVM Interprets and Executes Bytecodes • JVM Targeted as Small/Efficient - Embeddable within Consumer Electronics • JVM Stack Based Machine - Simulates Real Processor CA FE BA BE 00 03 00 2D 00 3E 08 00 3B 08 00 01 08 00 20 08
Packages In Java • Allows Related Classes to be Grouped into a Larger Abstraction • Similar to Ada95 Packages • Unavailable in C++ • Utilization of Packages for SW Design and Development • Components, Modularization, Groupings • Enforcement by Compiler of Package Rules • Overall, Packages Enhance the Control and Visibility to Fine-Tune • Who Can See What When
The Java API Packages • Application Programming Interface (API) • Java Defined - Building Blocks/Libraries • Java Platform 1.2/2 Core API java.applet java.rmi java.awt java.rmi.dgc java.awt.datatransfer java.rmi.registry java.awt.event java.rmi.server java.awt.image java.security java.beans java.security.acl java.io java.security.interfaces java.lang java.sql java.lang.reflect java.text java.math java.util java.net java.util.zip • Power of Java Contained with APIs
The Java Language • Overview of Non-OO Capabilities • Based on C/C++ • No includes, typedefs, structures, groups • Unicode Character Set - 34,168 Characters • Automatic Coercions Not Supported • Strongly-Type Language • Variables in Java • Primitive Types: ints, floats, booleans, Unicode chars • Reference Types: arrays, classes, interfaces • No Physical Pointers in Java!
The Java Language • Statements in Java - Resembles C and C++ • Assignment/Expressions and Precedence • for, while, do-while • if-then, switch-case • break, continue, label, return • Exception Handling • Similar to C++ • try, throws, catch Blocks • Strongly Integrated Throughout APIs
The Java LanguageMotivating the Class Concept • Conceptually, Classes are Structures/Records with Functions that are Encapsulated structure Item { int UPC, OnShelf, InStock, ROLimit; char* Name; float RCost, WCost; Status Create_New_Item(int UPC, ...); NameCost* Get_Item_NameCost(int UPC); void Modify_Inventory(int UPC, int Delta) ; Boolean Check_If_On_Shelf(int UPC); Boolean Time_To_Reorder(int UPC); }; NameCost *nc; Item I1, I2; I1.Create_New_Item(...); nc = I2.Get_Item_NameCost(UPC);
The Java LanguageObject-Oriented Features • Class - similar to C++ Class • Classes have Members (Methods and Variables) • Members Tagged Using Keywords • private: Typically, Inaccessible • public: Potential to be Accessible • protected: Accessible via Inheritance • package: Accessible within Package • Involve Visible Between Classes, Within Packages, and Due to Inheritance
Classes in Java • A Supermarket Item • Keywords must be Utilized for Each Attribute or Method Declaration class Item { private String UPC, Name; private int Quantity; private double RetailCost; protected double WholeCost; public Item() { ... }; public void finalize() { ... }; public boolean Modify_Inventory(int Delta){...}; public int Get_InStock_Amt() {return Quantity;}; };
Classes in Java class Item { private String UPC, Name; private int Quantity; private double RetailCost; protected double WholeCost; public Item() { ... }; public void finalize() { ... }; public boolean Modify_Inventory(int Delta) { int i = Get_InStock_Amt (); if (Delta >= 0) { Quantity += Delta; return true; } else { return false;} }; public int Get_InStock_Amt() {return Quantity;}; public double Compute_Item_Profit() {...}; protected boolean Modify_WholeSale(); {...}; };
Visibility of Attributes/Methods • Class Members (Attributes and Methods) • Visibility Tags for Members • Private: Visible only to Class • Protected: Visible to Class and Other Classes within Package • Public: Visible to Class, Other Classes within Package, and if Class is Public, Visible to Other Packages/Classes • No Tag: Visible Only to Other Classes within Defining Package • Java's Controlled Sharing within/between Packages not Supported in C++ • Abstraction/Encapsulation Superior in Java!
Inheritance - Two Roles • Controlled Sharing Between Classes • Generalization vs. Specialization • Treat Instances of Different Classes in a Uniform Fashion • Polymorphism and Dynamic Binding • Inheritance in Java Item / \ DeliItem ProduceItem | SaladItem class DeliItem extends Item { ... }; class SaladItem extends DeliItem { ... }; class ProduceItem extends Item { ... };
Designing and Developing Applets in Java • Applets Small Independent Programs Intended for Embedding into WWW Pages and Executable via Java-Enabled Browser (Netscape or IE) • Applets Operate Under Severe Security Limits: • Can’t Execute Local Programs • Can’t Communicate with Host Other than one from Which Downloaded • Can’t Read/Write to Local File System • Can’t Find Information on Local System Except Java/OS Versions and Character/Line Separators
Designing and Developing Applets in Java • An Applet is a Java Program that Executes as part of an HTML Page applet A.java HTML file ... <APPLET CODE = “A.class”> ... javac applet A.class
Applets Inheritance Structure java.lang.Object java.awt.Component java.awt.Container java.applet.Applet your applet Everything in Java inherits from the Object class Event-handling and drawing capabilities Ability to hold components Limits what an Applet can and cannot do Every Applet is a subclass of the Applet class.
Applet Methods Eligible for Overriding Methods for Milestones • init - initializes an applet when it is loaded • start - (re)starts applet’s execution • stop - stops applet’s execution • destroy - final cleanup before unloading Methods for Drawing • paint • update The applet subclass must override at least one of these methods: init, start or paint.
Applets Handle Events by Implementing the Corresponding interface import java.awt.event.MouseListener; import java.awt.event.MouseEvent; … public class Simple extends Applet implements MouseListener { … public void init() { addMouseListener(this); … } public void mouseClicked(MouseEvent event) { addItem(“click…”); } … } Handling Events mouseClicked mouseEntered mouseExited mousePressed mouseReleased Protocol of behavior All methods in the interface must be implemented
Running an Applet in HTML <APPLET CODE = “AppletSubclass.class” WIDTH = anInt HEIGHT = anInt> </APPLET> The Browser: • Reserves a Display Area for the Applet • Loads the bytecode • Creates an Instance of the Subclass • Calls the init and start Methods
Loading an Applet • Finding an Applet • CODEBASE • Relative/Absolute Address CODEBASE=“example/” CODEBASE=“http://someServer/…/otherDirectory/” • Bringing the Applet • Class by Class/Archives otherDirectory example HTML file HTML file Class file Class file
Security Issues • An Untrusted Applet Cannot: • Load Libraries or Define Native Methods • Read or Write Files on the Host that is Executing the Applet • Make Network Connections Except to the Host from Which it was Loaded From • Start any Program on the Host that is Executing the Applet • Get Many System Properties
Example of a GUI Applet /* http://java.sun.com/docs/books/tutorial/ui/components/example/ ButtonDemo.java */ import java.awt.*; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.applet.Applet; public class ButtonDemo extends Applet implements ActionListener { Button b1, b2, b3; static final String DISABLE = "disable"; static final String ENABLE = "enable"; public void init() { b1 = new Button(); b1.setLabel("Disable middle button"); b1.setActionCommand(DISABLE); b2 = new Button("Middle button"); b3 = new Button("Enable middle button"); b3.setEnabled(false); b3.setActionCommand(ENABLE);
Example of a GUI Applet (Continued) //Listen for actions on buttons 1 and 3. b1.addActionListener(this); b3.addActionListener(this); //Add Components to the Applet, using the default FlowLayout. add(b1); add(b2); add(b3); } public void actionPerformed(ActionEvent e) { String command = e.getActionCommand(); if (command == DISABLE) { //They clicked "Disable middle button" b2.setEnabled(false); b1.setEnabled(false); b3.setEnabled(true); } else { //They clicked "Enable middle button" b2.setEnabled(true); b1.setEnabled(true); b3.setEnabled(false); } } }
The Java User Interface - GUI with AWT • UI Refers to the Communications Between a Program and a User • Java Abstract Windowing Toolkit (AWT) and Swing Contains Complete Set of Classes for Writing GUI Programs • AWT Classes Categorized into: • GUI Components • Containers • Layout Managers • Drawing • Event Handling
AWT Components • Button • CheckBoxes • Choices • Lists • Menus • Textfields • Text Areas • Labels
Containers • The Java AWT Provides Three Types of Containers Implemented as Subclasses of Container Class: • Window • Frame - creates a normal full fledged window to contain components • Dialog - provides a window that is dependent on another window • FileDialog - helps the user to open and save file • Panel - Groups Components within an Area of an Existing Window • ScrollPane -Like Panel, Used to Display Large Component in a Limited Amount of Space
Layout Managers • Layout Manager Controls the Size and Position of Components in a Container • By Default Every Container Object has an Associated LayoutManger • Panel Objects - FlowLayout • Window Object - BorderLayout
Layout Managers - Simple • FlowLayout • Default for Panel Objects • Lays out Components from Left to Right Starting New Rows if Needed • GridLayout • Displays the Components in Equal Size in the Requested Number of Rows and Columns
Layout Managers - Special Purpose • BorderLayout • Default for Window Objects • Uses 5 Areas to hold Components: North, South, East, West, and Center • CardLayout • One Area Contains Different Components at Different Times
Layout Managers - Flexible • GridBagLayout • Aligns Components by Placing them in a Grid of Cells • Allows some Components to Span more than one Cell • The Rows and Columns have Different Heights and Widths
Example of a GUI applet TextField Name TextArea Address Label Order Now CheckBox Size Choices Color OK Cancel Quit Button
Excerpts for GUI Applet Example (Note: Many Lines Omitted!!) p1.setLayout(new GridLayout(0,2,2,2)); p1.add(l1); p1.add(name); p1.add(l2); p1.add(address); p1.add(l3); p1.add(order); p1.add(l4); p1.add(size); p1.add(l5); p1.add(color); p2.setLayout(new FlowLayout()); p2.add(ok); p2.add(clear); p2.add(quit); setLayout(new BorderLayout()); add("North", p1); add("South", p2); } public void init() { p1 = new Panel(); p2 = new Panel(); l1 = new Label("Name"); l2 = new Label("Address"); // … other labels omitted name = new TextField(30); address = new TextArea(3, 30); order = new Checkbox(); size = new Choice(); size.addItem("Small"); size.disable(); ok = new Button("OK"); clear = new Button("Clear"); quit = new Button("Quit");
Excerpts for GUI Applet Example (Note: Many Lines Omitted!!) public boolean action(Event e, Object o) { if(e.target == ok) { // You must provide the actions/code } if(e.target == clear) { // You must provide the actions/code } if(e.target == quit) { // You must provide the actions/code } if(e.target == order) { if(order.getState() == true) { // You must provide the actions/code } else if(order.getState() == false) { // You must provide the actions/code } } return true; } }
Event Handling • When a User Acts on a Component, the AWT Detects the Event and Notifies the Event Listeners • A Class Implements the Event Listener and Every Class Instance can Register as Event Listeners • Steps for Implementing and Registering: • Declare that a Class Implements a Listener Interface in the Class declaration • Implement the Listener methods in the Class • Register an Instance of the Class as a Listener on One or More Components
Example of Event Handling public class Beeper ... implements ActionListener { ... // where initialization occurs: button.addActionListener(this); ... public void actionPerformed(ActionEvent e) { // Make a beep sound ... } }
Action Listeners • Easiest Event Handlers to Implement • Generated by: • Clicking a Button • Double Clicking a List Item • Choosing a Menu Item • Pressing Return in a Text Field • Listener Interface - ActionListener • Methods - actionPerformed(ActionEvent)
Action Listeners - ActionEvent • Parameter to the actionPerfomed Method • ActionEvent Defines Two Useful Methods • String setActionCommand • Associates a string to the action • String getActionCommand • Returns the string associated with this action
Item Listeners • Generated by Components that Maintain State, Generally on/off State • Components that Generate ItemEvents: • Checkboxes • Choices • Lists • Listener Interface - ItemListener • Methods - itemStateChanged(ItemEvent)
ItemListeners - ItemEvent • Parameter to the itemStateChanged Method • ItemEvent Defines Two Useful Methods: • Object getItem() • Returns the component specific object associated with the item whose state has changed • int getStateChange() • Returns the new state of the item • SELECTED = 1 • DESELECTED = 0
Excerpts for GUI Applet with Listener(Note: Many Lines Omitted!!) import java.applet.*; import java.awt.*; import java.awt.event.*; import Message; public class Sample1 extends Applet implements ActionListener, ItemListener { // Declarations similar to previous example static final String OK = "ok"; public void init() { // Init actions similar to previous example, // except for code shown below for checkbox and buttons order = new Checkbox(); order.addItemListener(this); ok = new Button("OK"); ok.setActionCommand(OK); ok.addActionListener(this); }
Excerpts for GUI Applet with Listener(Note: Many Lines Omitted!!) public void actionPerformed(ActionEvent e) { String command = e.getActionCommand(); if(command == OK) { // You must provide the actions/code } if(command == CLEAR) { // You must provide the actions/code } if(command == QUIT) { // You must provide the actions/code } } public void itemStateChanged(ItemEvent e1) { if(e1.getStateChange() == ItemEvent.SELECTED) { // You must provide the actions/code } else { // You must provide the actions/code } } }
Designing and Developing Java Classes • Encapsulation Capabilities of Java • Classes (Data + Operations) - ADTs • Packages - Collections of “Related” Classes • Class Declaration: • Access Modes and Variable Members • Constructors and Class Bodies • Method Declaration and Access Modes • Class and Instance Members • Garbage Collection
Connexion au compte
Connectez-vous pour publier votre contenu sur SlideServe.