UMBC CMSC 331 Java The JAVA API. UMBC CMSC 331 Java 2 A Tour of the Java API An API User’s Guide, in HTML, is bundled with Java Much of the “learning.

Slides:



Advertisements
Similar presentations
Multiplexing/Demux. CPSC Transport Layer 3-2 Multiplexing/demultiplexing application transport network link physical P1 application transport network.
Advertisements

1 Frameworks. 2 Framework Set of cooperating classes/interfaces –Structure essential mechanisms of a problem domain –Programmer can extend framework classes,
Review of Java Applets Vijayan Sugumaran Decision and Information Sciences Oakland University.
CSE S. Tanimoto Java Threads 1 Java Threads (Outline) Motivation The class Thread Example program: ThreadRace The Runnable interface Example: Clock.
Liang, Introduction to Java Programming, Fifth Edition, (c) 2005 Pearson Education, Inc. All rights reserved Chapter 16 Applets.
18-Jun-15 Applets. 2 An applet is a program that is typically embedded in a Web page and can be run from a browser You need special HTML in the Web page.
1 Recitation 11. Applet Applets. An applet is a Java program that is started by a browser (e.g. netscape or internet explorer) when an html file has a.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved L24 (Chapter 25) Networking.
Liang, Introduction to Java Programming, Fifth Edition, (c) 2005 Pearson Education, Inc. All rights reserved Chapter 14 Applets, Images,
26-Jun-15 Applets. 2 An applet is a Panel that allows interaction with a Java program A applet is typically embedded in a Web page and can be run from.
28-Jun-15 Applets. 2 An applet is a program that is typically embedded in a Web page and can be run from a browser You need special HTML in the Web page.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Chapter 25 Networking.
Multithreading in Java Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
Threads II. Review A thread is a single flow of control through a program Java is multithreaded—several threads may be executing “simultaneously” If you.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved L05 (Chapter 16) Applets.
Web Proxy Server. Proxy Server Introduction Returns status and error messages. Handles http CGI requests. –For more information about CGI please refer.
Io package as Java’s basic I/O system continue’d.
Introduction to JAVA CMSC 331 Spring Introduction Present the syntax of Java Introduce the Java API Demonstrate how to build –stand-alone Java programs.
Java Programming, 2E Introductory Concepts and Techniques Chapter 2 Creating a Java Application and Applet.
Applets  The Applet Class  The HTML Tag F Passing Parameters to Applets.
Applets Java API.
Building an ftp client and server using sockets we now know enough to build a sophisticated client/server application!  ftp  telnet  smtp  http.
CS4273: Distributed System Technologies and Programming I Lecture 5: Java Socket Programming.
MIT AITI 2002 Abstract Classes, Interfaces. Abstract Classes What is an abstract class? An abstract class is a class in which one or more methods is declared,
20-753: Fundamentals of Web Programming Copyright © 1999, Carnegie Mellon. All Rights Reserved. 1 Lecture 16: Java Applets & AWT Fundamentals of Web Programming.
Java Programming, 3e Concepts and Techniques Chapter 2 - Part 2 Creating a Java Application and Applet.
Java Programming, 3e Concepts and Techniques Chapter 3 Section 65 – Manipulating Data Using Methods – Java Applet.
(c) 2008 E.S.Boese All Rights Reserved. Threads and Media Chapter 8 - Lecture Slides 1.
Applets Chapter 17.  Java’s big splash onto the scene came in the mid 90’s. The people at Sun Microsystems had managed to work java programs into Web.
Internet Software Development Applets Paul J Krause.
Java applet basics, loading & displaying images After this section, you should be able to : –Use the applet tag and applet parameters –Describe what a.
JAPPLET.
Applets Life Cycle Drawing and Event Handling Methods for UI Components Applet Capabilities Example.
Java Programming, Second Edition Chapter Seventeen Multithreading and Animation.
9/21/99www.cs.vt.edu/wwtut/1 User Interface Programming In Java Part 1 – Introduction Marc Abrams Virginia Tech CS Dept courses.cs.vt.edu/wwwtut/
CIS 644 Aug. 25, 1999 tour of Java. First … about the media lectures… we are experimenting with the media format please give feedback.
REVIEW On Friday we explored Client-Server Applications with Sockets. Servers must create a ServerSocket object on a specific Port #. They then can wait.
Object Oriented Programming Lecture 4: Refactoring, An Applet Example, Idiom - Animation applets, Introduction to the Laboratorial exercise www2.hh.se/staff/jebe/oop2005/
CS 3131 Introduction to Programming in Java Rich Maclin Computer Science Department.
Java Threads. What is a Thread? A thread can be loosely defined as a separate stream of execution that takes place simultaneously with and independently.
1 Block1 – unit 2 (The Case study in Budd 5-6).  create a small application that uses the Abstract Windowing Toolkit (AWT)  Swing packages to simulate.
CSC 205 – Java Programming II Applet. Types of Java Programs Applets Applications Console applications Graphics applications Applications are stand-alone.
Li Tak Sing COMPS311F. Case study: consumers and producers A fixed size buffer which can hold at most certain integers. A number of producers which generate.
1 Chapter 28 Networking. 2 Objectives F To comprehend socket-based communication in Java (§28.2). F To understand client/server computing (§28.2). F To.
Concurrent Programming and Threads Threads Blocking a User Interface.
1 Windows program example import java.awt.*; import java.awt.event.*; public class wpexample extends Frame { public wpexample(String title) { super(title);
Chapter 14 Applets and Advanced GUI  The Applet Class  The HTML Tag F Passing Parameters to Applets F Conversions Between Applications and Applets F.
Intro to Applets. Applet Applets run within the Web browser environment Applets bring dynamic interaction and live animation to an otherwise static HTML.
Introduction to Threads Session 01 Java Simplified / Session 14 / 2 of 28 Objectives Define a thread Define multithreading List benefits of multithreading.
Concurrent Computing CSCI 201L Jeffrey Miller, Ph.D. HTTP :// WWW - SCF. USC. EDU /~ CSCI 201 USC CSCI 201L.
Creating a Java Application and Applet
UMBC CMSC 331 Java The JAVA API. UMBC CMSC 331 Java 2 A Tour of the Java API An API User’s Guide, in HTML, is bundled with Java Much of the “learning.
Java Programming II Java Network (I) Java Programming II.
1 Lecture 9: Network programming. 2 Manipulating URLs URL is an acronym for Uniform Resource Locator and is a reference (an address) to a resource on.
Java Applets Adding Animation. Import Files You still need to include the same files: –import java.applet.*; –import java.awt.*;
Introduction to JAVA CMSC 331 Fall Introduction Present the syntax of Java Introduce the Java API Demonstrate how to build –stand-alone Java programs.
Programming and Problem Solving With Java Copyright 1999, James M. Slack Threads and Animation Threads Animation.
Java Threads 1 1 Threading and Concurrent Programming in Java Threads and Swing D.W. Denbo.
Chapter 11: Threaded Programs Situations where the program is following multiple execution paths (how to stop one?) Thread: a line of execution Thread.
Session 7 More Implications of Inheritance & Chapter 5: Ball World Example.
 It is a pure oops language and a high level language.  It was developed at sun microsystems by James Gosling.
Network Programming Communication between processes Many approaches:
The JAVA API.
User Interface Programming In Java
Threads in Java Two ways to start a thread
Distributed Computing, M. L. Liu
Distributed Computing, M. L. Liu
Programming in Java Text Books :
The JAVA API.
Multiplexing/Demux.
Presentation transcript:

UMBC CMSC 331 Java The JAVA API

UMBC CMSC 331 Java 2 A Tour of the Java API An API User’s Guide, in HTML, is bundled with Java Much of the “learning curve” is in the API Let’s look at some packages

UMBC CMSC 331 Java 3 The Java API java.applet –Applet class java.awt –Windows, buttons, mouse, etc. java.awt.image –image processing java.awt.peer –GUI toolkit java.io –System.out.print java.lang –length method for arrays; exceptions java.net –sockets java.util –System.getProperty See for the current APIs

UMBC CMSC 331 Java 4

5

6

7 The package java.lang The class Object –The root class in Java –Example methods: clone(), equals(), toString() –Subclasses may override these methods The class Class –Example methods: getName(), getSuperClass()

UMBC CMSC 331 Java 8 Observing an object’s class void printClassName (Object obj) { System.out.println("The class of " + obj + " is " + obj.getClass().getName()); }

UMBC CMSC 331 Java 9 Strings in Java Strings are nt a primitive data type, but represented as objects. Many methods defined in class java.lang: –Several constructors –Lots of methods: concat(), equals(), indexOf(), length() –strings are concatenated with + Strings are constants (immutable) –You can concatenate two strings to produce a new, longer string, using the + operator, but you cannot add, delete, insert into, or delete from any particular string.

UMBC CMSC 331 Java 10 StringBuffers in Java Several methods defined in class java.lang: –Constructors can specify length or initial value –append(), insertf(), length(), toString()

UMBC CMSC 331 Java 11 Java.lang.system Printstreams –System.out.err(“Error message”); Inputstreams –System.in.read(inputCharacter) –System.in.read(inputBuffer, 0, maxChars)

UMBC CMSC 331 Java 12 The Cloneable Interface A class implements the cloneable interface by overriding the Object method clone() For example, we could add a clone() method to the FIFO class, if we wanted to be able to make copies of queues.

UMBC CMSC 331 Java 13 The class java.util Interface to host OS Some basic functions and data structures –BitSet, Dictionary (the superclass of Hashtable), Stack, Vector –Random number generation

UMBC CMSC 331 Java 14 System Properties System properties are like UNIX environment variables, but platform independent The API class java.util has methods for accessing the system properties

// determine environment variables import java.util.*; class envSnoop { public static void main ( String args[] ) { Properties p; String s; p = System.getProperties(); p.list(System.out); s = System.getProperty("user.name"); System.out.println("user.name="+s); s = System.getProperty("user.home"); System.out.println("user.home="+s); }

C:\UMBC\331\java>java envSnoop -- listing properties -- java.specification.name=Java Platform API Specification awt.toolkit=sun.awt.windows.WToolkit java.version=1.2 java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment user.timezone=America/New_York java.specification.version=1.2 java.vm.vendor=Sun Microsystems Inc. user.home=C:\WINDOWS java.vm.specification.version=1.0 os.arch=x86 java.awt.fonts= java.vendor.url= user.region=US file.encoding.pkg=sun.io java.home=C:\JDK1.2\JRE java.class.path=C:\Program Files\PhotoDeluxe 2.0\Adob... line.separator= java.ext.dirs=C:\JDK1.2\JRE\lib\ext java.io.tmpdir=C:\WINDOWS\TEMP\ os.name=Windows 95 java.vendor=Sun Microsystems Inc. java.awt.printerjob=sun.awt.windows.WPrinterJob java.library.path=C:\JDK1.2\BIN;.;C:\WINDOWS\SYSTEM;C:\... java.vm.specification.vendor=Sun Microsystems Inc. sun.io.unicode.encoding=UnicodeLittle file.encoding=Cp1252 java.specification.vendor=Sun Microsystems Inc. user.language=en user.name=nicholas java.vendor.url.bug= java.vm.name=Classic VM java.class.version=46.0 java.vm.specification.name=Java Virtual Machine Specification sun.boot.library.path=C:\JDK1.2\JRE\bin os.version=4.10 java.vm.version=1.2 java.vm.info=build JDK-1.2-V, native threads, symcjit java.compiler=symcjit path.separator=; file.separator=\ user.dir=C:\UMBC\331\java sun.boot.class.path=C:\JDK1.2\JRE\lib\rt.jar;C:\JDK1.2\JR... user.name=nicholas user.home=C:\WINDOWS C:\UMBC\331\java>

UMBC CMSC 331 Java 17 Java GUI The awt class allows you to create –frames –buttons –menus and menubars –checkboxes –text areas –scrolling lists

UMBC CMSC 331 Java 18 GUI Examples “Hello World”, revisited The Scribble example Both examples adapted from Flanagan’s “Java in a Nutshell”, first edition

import java.applet.*; import java.awt.*; public class SecondApplet extends Applet { static final String message = "Hello World"; private Font font; // One-time initialization for the applet public void init() { font = new Font("Helvetica", Font.BOLD, 48); } // Draw the applet whenever necessary. // Do some fancy graphics. public void paint(Graphics g) { // The pink oval g.setColor(Color.pink); g.fillOval(10, 10, 330, 100);

// The red outline. java doesn't support wide lines, so we // try to simulate a 4-pixel wide line by drawing four ovals g.setColor(Color.red); g.drawOval(10,10, 330, 100); g.drawOval(9, 9, 332, 102); g.drawOval(8, 8, 334, 104); g.drawOval(7, 7, 336, 106); // The text g.setColor(Color.black); g.setFont(font); g.drawString(message, 40, 75); }

UMBC CMSC 331 Java 21 Scribble Graphics objects can be added to applets, e.g. buttons and menus Events, such as mouse clicks, are handled

import java.applet.*; import java.awt.*; public class Scribble extends Applet { private int last_x = 0; private int last_y = 0; private Color current_color = Color.black; private Button clear_button; private Choice color_choices; // Called to initialize the applet. public void init() { // Set the background color this.setBackground(Color.white); // Create a button and add it to the applet. // Also, set the button's colors clear_button = new Button("Clear"); clear_button.setForeground(Color.black); clear_button.setBackground(Color.lightGray); this.add(clear_button);

// Create a menu of colors and add it to the applet. // Also set the menu's colors and add a label. color_choices = new Choice(); color_choices.addItem("black"); color_choices.addItem("red"); color_choices.addItem("yellow"); color_choices.setForeground(Color.black); color_choices.setBackground(Color.lightGray); this.add(new Label("Color:")); this.add(color_choices); }

// Called when the user clicks the mouse to start a scribble public boolean mouseDown(Event e, int x, int y) { last_x = x; last_y = y; return true; } // Called when the user scribbles with the mouse button down public boolean mouseDrag(Event e, int x, int y) { Graphics g = this.getGraphics(); g.setColor(current_color); g.drawLine(last_x, last_y, x, y); last_x = x; last_y = y; return true; }

// Called when the user clicks the button or chooses a color public boolean action(Event event, Object arg) { // If the Clear button was clicked, handle it if (event.target == clear_button) { Graphics g = this.getGraphics(); Rectangle r = this.bounds(); g.setColor(this.getBackground()); g.fillRect(r.x, r.y, r.width, r.height); return true; } // Otherwise if a color was chosen, handle that if (event.target == color_choices) { if (arg.equals("black")) current_color=Color.black; else if (arg.equals("red")) current_color=Color.red; else if (arg.equals("yellow")) current_color=Color.yellow; return true; } // Otherwise let the superclass handle the event else return super.action(event, arg); }

UMBC CMSC 331 Java 26 Java.net Defines several useful objects: –URLs –Internet Addresses –Sockets –Datagrams packets sockets

UMBC CMSC 331 Java 27 Manipulating URLs A Web server can provide lots of information about a file being sent back in response to an HTTP request. A URL can be read –into a string, using the getContent() –or opened as a DataInputStream, and read using readLine()

import java.net.*; import java.io.*; import java.util.*; public class GetURLInfo { // Create a URL from the specified address, open a connection // to it, and then display information about the URL. public static void main(String[] args) throws MalformedURLException, IOException { URL url = new URL(args[0]); URLConnection connection = url.openConnection(); printinfo(connection); }

public static void printinfo(URLConnection u) throws IOException { // Display the URL address, and information about it. System.out.println(u.getURL().toExternalForm() + ":"); System.out.println(" Content Type: " + u.getContentType()); System.out.println(" Content Length: " + u.getContentLength()); System.out.println(" Last Modified: " + new Date(u.getLastModified())); System.out.println(" Expiration: " + u.getExpiration()); System.out.println(" Content Encoding: " + u.getContentEncoding()); // Read and print out the first five lines of the URL. System.out.println("First five lines:"); DataInputStream in = new DataInputStream(u.getInputStream()); for(int i = 0; i < 5; i++) { String line = in.readLine(); if (line == null) break; System.out.println(" " + line); }

UMBC CMSC 331 Java 30 UDP Examples UDP - Unreliable datagram packet Examples from Flanagan –Send a UDP packet –Receive a UDP packet

// This example is from the book _Java in a Nutshell_ by // David Flanagan. // Written by David Flanagan. // Copyright (c) 1996 O'Reilly & Associates. // You may study, use, modify, and distribute this example for // any purpose. This example is provided WITHOUT WARRANTY // either expressed or implied. import java.io.*; import java.net.*; // This class sends the specified text as a datagram to // port 6010 of the specified host. public class UDPSend { static final int port = 6010; public static void main(String args[]) throws Exception { if (args.length != 2) { System.out.println( "Usage: java UDPSend "); System.exit(0); }

// Get the internet address of the specified host InetAddress address = InetAddress.getByName(args[0]); // Convert the message to an array of bytes int msglen = args[1].length(); byte[] message = new byte[msglen]; args[1].getBytes(0, msglen, message, 0); // Initilize the packet with data and address DatagramPacket packet = new DatagramPacket(message, msglen, address, port); // Create a socket, and send the packet through it. DatagramSocket socket = new DatagramSocket(); socket.send(packet); }

import java.io.*; import java.net.*; // This program waits to receive datagrams sent to port // When it receives one, it displays the sending host and port, // and prints the contents of the datagram as a string. public class UDPReceive { static final int port = 6010; public static void main(String args[]) throws Exception { byte[] buffer = new byte[1024]; String s; // Create a packet with an empty buffer to receive data DatagramPacket packet = new DatagramPacket(buffer, buffer.length); // Create a socket to listen on the port. DatagramSocket socket = new DatagramSocket(port);

for(;;) { // Wait to receive a datagram socket.receive(packet); // Convert the contents to a string s = new String(buffer, 0, 0, packet.getLength()); // And display them System.out.println("UDPReceive: received from " + packet.getAddress().getHostName() + ":" + packet.getPort() + ": " + s); } // close for } // close main } // close class UDPReceive

UMBC CMSC 331 Java 35 Using Threads Thread objects are the basis for multi-threaded programming. Multi-threaded programming allows a single program to conduct concurrently running threads that perform different tasks. Defined in java.lang.Thread

UMBC CMSC 331 Java 36 The Runnable Interface A class that implements this interface can provide the “body” of a thread The run() method needs to be specified

UMBC CMSC 331 Java 37 Using a Single Thread The simpleThread class implements the Runnable interface –Implements run() method for Runnable interface –Implements init(), start() and stop(), extending Applet class –Can’t just extend Thread class, since Thread.stop() is final and can’t be overriden (why?)

// Simple Thread Example, based on "Neon Sign" public class OneThread extends java.applet.Applet implements Runnable { Thread kicker; public void init() { kicker = null; } public void start() { if(kicker == null) { // If no thread is started yet kicker=new Thread(this); // then create one kicker.start(); // and start it } public void stop() { kicker.stop(); kicker = null; }

public void run() { long sleepTime; System.out.println("Hello!"); sleepTime = 5000; while(true) { // Loop forever // The sleep method below might be interrupted // and cause an exception, so catch it. try { // Wait for some period of time Thread.sleep( sleepTime ); sleepTime = (sleepTime == 3000 ? 4000 : 3000 ); } catch (Exception e){ return; } System.out.println("Hello again after "+sleepTime+ " milliseconds"); }

UMBC CMSC 331 Java 40 Neon Sign Example Start a thread Load two GIF images Repeat forever –Display first image –Sleep a random period of time –Display the other image

// Blinking Neon Light by Mattias Flodin import java.awt.*; public class BlinkItem extends java.applet.Applet implements Runnable { Image imPic[]; // Array that holds the two images int iPicIndex=0; // Keeps track of which image is displayed Thread kicker; public void init() { // *Always* resize, in case the HTML author forgot to // include WIDTH and HEIGHT tags resize(512,243); } public void Paint(Graphics g) { update(g); } // Using the update method will get rid of some flickering public void update(Graphics g) { // Display an error message if something // unexpected has happened to the images if(imPic[iPicIndex]==null) g.drawString("Error when loading picture", 0, 172); // Draw the current image g.drawImage(imPic[iPicIndex],0,0, this); }

public void start() { if(kicker == null) { // If no thread is started yet kicker=new Thread(this); // then create one kicker.start(); // and start it } public void stop() { kicker=null; } public void run() { imPic=new Image[2]; // Dimension the image array // Load the two images in our 'animation' imPic[0]=getImage(getCodeBase(), "images/Homepage1.gif"); imPic[1]=getImage(getCodeBase(), "images/Homepage2.gif"); for(;;) { // Loop forever repaint(); // Redraw the window iPicIndex=iPicIndex==0 ? 1 : 0; // Switch image // The sleep method below might be interrupted // and cause an InterruptedException, so we'll // have to catch it. try { // Wait for a random amount of time Thread.sleep( (int) (Math.random()*500)); } catch (InterruptedException e){} }

UMBC CMSC 331 Java 43 Multiple Threads An applet that creates a pool of simple threads Each thread has an ID number, and may handle different tasks Note separation of applet and thread classes

UMBC CMSC 331 Java 44 public class ThreadExample extends java.applet.Applet { public void init() { simpleThread[] threadPool = new simpleThread[2]; threadPool[0] = new simpleThread(1); threadPool[1] = new simpleThread(2); } Multiple Threaded Example

public class simpleThread implements Runnable { Thread thisThread; int thisThreadID; public simpleThread (int i) { thisThreadID = i; this.start(); } public void start() { if(thisThread == null) { // If thread isn’t started thisThread = new Thread(this); // create one thisThread.start(); // and start it } public void stop() { thisThread.stop(); thisThread = null; }

public void run() { long sleepTime; System.out.println("Hello from simpleThread "+ thisThreadID); while(true) { // The sleep method below might be interrupted // and cause an exception, so catch it. try { // Wait for a random amount of time sleepTime = (long) ( Math.random()*4 ); Thread.sleep( sleepTime*1000 ); } catch (Exception e) { return; } System.out.println("Hello again from simpleThread "+ thisThreadID+" after "+sleepTime+" seconds"); }

UMBC CMSC 331 Java 47 Other Ideas Patterns as an addition to the StringBuffer class (ala Perl) One could easily write a better browser –intelligent pre-fetching of URLs –other ideas?

UMBC CMSC 331 Java 48 Where to get more information There are now many decent Java books, e.g. Dietel and Dietel, and the second edition of Flanagan Many other web resources