44
Network Communication and Applets Dr Andy Evans

Network Communication and Applets Dr Andy Evans. Applets. URLs. Advanced Applets. Webpages. Network communications. The Art of Programming Part Ten: Working

Embed Size (px)

Citation preview

Page 1: Network Communication and Applets Dr Andy Evans. Applets. URLs. Advanced Applets. Webpages. Network communications. The Art of Programming Part Ten: Working

Network Communication and Applets

Dr Andy Evans

Page 2: Network Communication and Applets Dr Andy Evans. Applets. URLs. Advanced Applets. Webpages. Network communications. The Art of Programming Part Ten: Working

Applets.URLs.Advanced Applets.Webpages.Network communications.The Art of Programming Part Ten: Working with webpages.Next week.

Page 3: Network Communication and Applets Dr Andy Evans. Applets. URLs. Advanced Applets. Webpages. Network communications. The Art of Programming Part Ten: Working

The web

The web has a client-server architecture.

Server Program Web browser

Server or ‘Host’ ClientRequest

Files returned

Page 4: Network Communication and Applets Dr Andy Evans. Applets. URLs. Advanced Applets. Webpages. Network communications. The Art of Programming Part Ten: Working

Applets

Small programs that run on web clients.

Are contained in a tight security ‘sandbox’.Can’t read or write files on the browser’s machine.Can’t start local programs or access the local OS.Can only access the machine it was sent from (though can get webpages from others).Can’t switch off and replace the JVM.

You can, however, “sign” applets. If the user trusts you the applets can be given more freedom.

Page 5: Network Communication and Applets Dr Andy Evans. Applets. URLs. Advanced Applets. Webpages. Network communications. The Art of Programming Part Ten: Working

Basics

Called by a line within a webpage which says that an applet should be inserted and where to find it.

All applets extend java.applet.Applet.All therefore need to import java.applet.*.java.applet.Applet is a subtype of Panel.

All applets are GUI based and all but simplest are Event Based.Therefore they also need to import java.awt.* and java.awt.event.*.

Page 6: Network Communication and Applets Dr Andy Evans. Applets. URLs. Advanced Applets. Webpages. Network communications. The Art of Programming Part Ten: Working

Methods

Don’t usually have a ‘main’ method.init()

Replaces the main/constructor – used to set-up the applet. Called when applet first shown.

start()Used each time an applet is shown – e.g. if a webpage is visited, left and then revisited. Calls paint().

paint()Inherited by Applet from Panel / Component. Called at start and whenever needed, e.g. if the browser is covered by another window and then uncovered.

Page 7: Network Communication and Applets Dr Andy Evans. Applets. URLs. Advanced Applets. Webpages. Network communications. The Art of Programming Part Ten: Working

Methods

stop()Called when a browser leaves the webpage.

destroy()Called when the browser kills the applet - ‘stop’ is always called first. Not usually possible to say when this happens.

You don’t have to implement all these methods – each has a default.Just implement those you want – usually init, start and paint.

Page 8: Network Communication and Applets Dr Andy Evans. Applets. URLs. Advanced Applets. Webpages. Network communications. The Art of Programming Part Ten: Working

Basic Applet

import java.applet.*;import java.awt.*import java.awt.event.*

public class OurApplet extends Applet {

public void init() {System.out.println(“Hello World!”);

}

}System.out is the browser’s Java Console.

Page 9: Network Communication and Applets Dr Andy Evans. Applets. URLs. Advanced Applets. Webpages. Network communications. The Art of Programming Part Ten: Working

Applets.

URLs.Advanced Applets.Webpages.Network communications.The Art of Programming Part Ten: Working with webpages.Next week.

Page 10: Network Communication and Applets Dr Andy Evans. Applets. URLs. Advanced Applets. Webpages. Network communications. The Art of Programming Part Ten: Working

java.net.URL

Encapsulates a Uniform Resource Locator (URL).

http://www.w3.org:80/People/Berners-Lee/Overview.html

A URL represents another file on the network. It’s comprised of…

– A method for locating information – i.e. a transmission protocol, e.g. the HyperText Transmission Protocol (http).

– A host machine name, e.g. www.w3.org– A path to a file on that server, e.g.

/People/Berners-Lee/Overview.html– A port to connect to that server on, e.g. http connects to port 80.

Page 11: Network Communication and Applets Dr Andy Evans. Applets. URLs. Advanced Applets. Webpages. Network communications. The Art of Programming Part Ten: Working

Client – Server architecture

A file requested using a URL will usually be handled by a client-server architecture.

Which server program gets which requests will depend on the port they are sent to, which is usually related to the transmission protocol.

e-mails are sent out to servers using Simple Mail Transfer Protocol (SMTP) which usually goes into Port 25.

One server can serve several clients at once.

Webservers use http/port 80 to listen for requests, then send out webpages from a particular requested directory.

Page 12: Network Communication and Applets Dr Andy Evans. Applets. URLs. Advanced Applets. Webpages. Network communications. The Art of Programming Part Ten: Working

Making a URL object

Need to import java.net.*, and deal with the MalformedURLException that the URL constructors throw.

You can then use one of the URL class constructors. Some let you put in the port, or split off the path.

Easiest is…

URL url = new URL(String urlSpecifier);

Where urlSpecifier is an address like… "http://www.w3.org/People/Berners-Lee/Overview.html"

Page 13: Network Communication and Applets Dr Andy Evans. Applets. URLs. Advanced Applets. Webpages. Network communications. The Art of Programming Part Ten: Working

Basic URL Methods

getFile()

Gets the file name of this URL.getHost()

Gets the host name of this URL, if applicable.getPath()

Gets the path part of this URL.getPort()

Gets the port number (int) of this URL.

Page 14: Network Communication and Applets Dr Andy Evans. Applets. URLs. Advanced Applets. Webpages. Network communications. The Art of Programming Part Ten: Working

Applets.URLs.

Advanced Applets.Webpages.Network communications.The Art of Programming Part Ten: Working with webpages.Next week.

Page 15: Network Communication and Applets Dr Andy Evans. Applets. URLs. Advanced Applets. Webpages. Network communications. The Art of Programming Part Ten: Working

Advanced Applet methods

getImage(URL)Returns an java.awt.Image object from a given URL object.

getDocumentBase()Returns a URL object representing the directory the applet starting webpage was in.

Together with the URL methods, these methods allow us to retrieve image files from our web server.

Page 16: Network Communication and Applets Dr Andy Evans. Applets. URLs. Advanced Applets. Webpages. Network communications. The Art of Programming Part Ten: Working

Advanced Applet methods

getAppletContext()

Returns an AppletContext object representing the environment the applet is running in.

AppletContext ap = getAppletContext();

The most important method in an AppletContext object is…

showDocument(URL webpage).This allows you to put a webpage into the browser window.

ap.showDocument(new URL(“http://www.w3.org/”))

Page 17: Network Communication and Applets Dr Andy Evans. Applets. URLs. Advanced Applets. Webpages. Network communications. The Art of Programming Part Ten: Working

Applets.URLs.

Advanced Applets.

Webpages.Network communications.The Art of Programming Part Ten: Working with webpages.Next week.

Page 18: Network Communication and Applets Dr Andy Evans. Applets. URLs. Advanced Applets. Webpages. Network communications. The Art of Programming Part Ten: Working

Webpages

As we’ve mentioned they’re usually sent out by a web server to clients who ask for them, but you can open them directly on your harddrive.

They consist of text that will be displayed and tags that won’t, which include formatting details or references to other files like images or applets.

The tags are referred to as the HyperText Markup Language (HTML).

Saved as text files with the suffix .html (or sometimes .htm)

Page 19: Network Communication and Applets Dr Andy Evans. Applets. URLs. Advanced Applets. Webpages. Network communications. The Art of Programming Part Ten: Working

A basic webpage

<HTML>

<HEAD><TITLE>Title for top of browser</TITLE>

</HEAD>

<BODY><!—Stuff goes here--!>

</BODY>

</HTML>

The HEAD contains information about the page, the BODY contains the actual information to make the page.

Page 20: Network Communication and Applets Dr Andy Evans. Applets. URLs. Advanced Applets. Webpages. Network communications. The Art of Programming Part Ten: Working

<BODY>The break tag breaks a line<BR>like that.

<P> The paragraph tags </P>

leave a line.

This is <B>Bold</B>.This is <I>Italic</I>

<IMG src=“tim.gif” alt=“Photo: Pic of Tim” width=“50” height=“50”></IMG>

<A href=“index.html”>Link text</A></BODY>

The text in the file will only be shown with the format set out in the tags. Any line breaks etc. won’t show up on screen.

Page 21: Network Communication and Applets Dr Andy Evans. Applets. URLs. Advanced Applets. Webpages. Network communications. The Art of Programming Part Ten: Working

Putting an applet into a webpage

<APPLET

code = appletFile (without the .class)width = widthInPixelsheight = heightInPixels

align = left or right or center>

<PARAM name=“name1” value=“attributeValue1”><PARAM name=“name2” value=“attributeValue2”>

</APPLET>

Page 22: Network Communication and Applets Dr Andy Evans. Applets. URLs. Advanced Applets. Webpages. Network communications. The Art of Programming Part Ten: Working

PARAMsWe can pull in the parameters using the applet’s getParameter(String paramName) method, which returns the values associated with paramName as a String. For example, in our web page we might have:

<PARAM name = "colorTypes" value = "1" >

and in our init() we might have…

String colorScheme = getParameter("colorTypes");

if (colorScheme.equals("1")) {setBackground(Color.WHITE);

}

Note that we treat “1” as a String, even though it is a numerical character.

Page 23: Network Communication and Applets Dr Andy Evans. Applets. URLs. Advanced Applets. Webpages. Network communications. The Art of Programming Part Ten: Working

Putting an applet into a webpage

<OBJECT

codetype="application/java"

classid= appletFile

width = widthInPixels

height = heightInPixels

>

<PARAM name=“name1” value=“attributeValue1”>

<PARAM name=“name2” value=“attributeValue2”>

</OBJECT>

http://docs.oracle.com/javase/1.5.0/docs/guide/plugin/developer_guide/using_tags.html

Page 24: Network Communication and Applets Dr Andy Evans. Applets. URLs. Advanced Applets. Webpages. Network communications. The Art of Programming Part Ten: Working

Writing joint Applets and Applications

Because Applets are types of Panels, we can do this...

public class TwoFaced extends java.applet.Applet {

public void init() { // All our code here. }

public static void main(String[] args) {

Frame appFrame = new Frame("Two Faced");TwoFaced twoFaced = new TwoFaced ();twoFaced.init();

appFrame.add(twoFaced, BorderLayout.CENTER); appFrame.setSize(300, 300); appFrame.setVisible(true); }

}

Because the class is a type of Panel we can add it to the frame.

Page 25: Network Communication and Applets Dr Andy Evans. Applets. URLs. Advanced Applets. Webpages. Network communications. The Art of Programming Part Ten: Working

Applets.URLs.Advanced Applets.

Webpages.

Network communications.The Art of Programming Part Ten: Working with webpages.Next week.

Page 26: Network Communication and Applets Dr Andy Evans. Applets. URLs. Advanced Applets. Webpages. Network communications. The Art of Programming Part Ten: Working

Introduction to network communications

Communication is via a port, using a protocol. Several protocols may be involved at once. Most use the following over the internet…

Internet Protocol (IP)Used to split data into small chunks called “packets” Addresses them to the right machine.

Transport Control Protocol (TCP)Guarantees packets get to their destination.Controls the route taken and lets computers confirm receipt. Adds packets back together in the right order.

HyperText Transfer Protocol (HTTP)

Page 27: Network Communication and Applets Dr Andy Evans. Applets. URLs. Advanced Applets. Webpages. Network communications. The Art of Programming Part Ten: Working

java.net.InetAddress

We saw the URL class, and how it encapsulates the location of things on a network.

There is a second address class that deals with finding machine IP address-specific information.

java.net.InetAddress

This has no constructors. You create one using the class’s static methods.

Page 28: Network Communication and Applets Dr Andy Evans. Applets. URLs. Advanced Applets. Webpages. Network communications. The Art of Programming Part Ten: Working

InetAddress creationInetAddress ina =

InetAddress.getLocalHost();

Returns an InetAddress object representing the machine the program is running on.

InetAddress ina = InetAddress.getByName(hostNameString);

Returns an InetAddress corresponding to the host named.

InetAddress[] ina = InetAddress.getAllByName(siteNameString);

Returns an array of InetAddress objects containing all the servers associated with a given site name.

Page 29: Network Communication and Applets Dr Andy Evans. Applets. URLs. Advanced Applets. Webpages. Network communications. The Art of Programming Part Ten: Working

InetAddress methods

IP addresses are numerichttp://129.11.93.2 will get the old School webserver.

However, many machines hold a registry which contains the numbers and what they’d prefer to be called. This scheme is called the Domain Name Service (DNS)

http://www.geog.leeds.ac.uk

Methods exist for finding a numerical internet address (IP address) from the domain name, and vice versa.

These methods might have to do the DNS look-up on another computer on the network - this may take some time.

Page 30: Network Communication and Applets Dr Andy Evans. Applets. URLs. Advanced Applets. Webpages. Network communications. The Art of Programming Part Ten: Working

Sockets

Once you have your address, you can then connect to it. To do this, we use “sockets”.These are TCP/IP based stream connections to a computer port. You need a client and a server.

java.net.SocketSends requests to communicate to a port using TCP or equivalent.

java.net.ServerSocketLets you build your own server.Sits and listens to a port in case something calls it.

Page 31: Network Communication and Applets Dr Andy Evans. Applets. URLs. Advanced Applets. Webpages. Network communications. The Art of Programming Part Ten: Working

Sockets

Socket(InetAddress ipAdd, int port)

ServerSocket(int port)

TCP/IP reserves the first 1024 ports, otherwise you can use most numbers up to 49151. A ServerSocket is set to listen with its accept()method which returns a Socket when activated.

Once you have your sockets connected, you can use their getInputStream(), getOutputStream() and close() methods to talk using streams.

Page 32: Network Communication and Applets Dr Andy Evans. Applets. URLs. Advanced Applets. Webpages. Network communications. The Art of Programming Part Ten: Working

Sockets example

On the server…

ServerSocket ss = new ServerSocket(9999);Socket s = ss.accept();BufferedInputStream in = s.getInputStream();

Start the program. Once a connection has been accepted, use the socket to communicate, not the ServerSocket.

On the client…

Socket s = new Socket(InetServer, 9999);BufferedOutputStream b = s.getOutputStream();b.write(aByteArray);s.close();

Page 33: Network Communication and Applets Dr Andy Evans. Applets. URLs. Advanced Applets. Webpages. Network communications. The Art of Programming Part Ten: Working

java.net.URLConnectionIf you want specific files from an http server which exists, it’s easier to use a URLConnection object.

URL url = new URL(“http://www.bbc.co.uk/eastenders/index.html”); URLConnection urlc = url.openConnection();

Methods include…getDate()getContentLength()getInputStream()

Knowing the number of bytes of a resource (the ContentLength), and having an InputStream, you can now read the file.

Page 34: Network Communication and Applets Dr Andy Evans. Applets. URLs. Advanced Applets. Webpages. Network communications. The Art of Programming Part Ten: Working

Resource Streams

Class thisClass = getClass();

URL url = thisClass.getResource("debts.txt");

As well as getting a URL Object this way, you can actually open a Stream to resources.

Class Objects have a getResourceAsStream Method, which returns an InputStream.

This can be used to read the resource across the network or into a program from a local file.

Page 35: Network Communication and Applets Dr Andy Evans. Applets. URLs. Advanced Applets. Webpages. Network communications. The Art of Programming Part Ten: Working

Applets.URLs.Advanced Applets.Webpages.

Network communications.

The Art of Programming Part Ten: Working with webpages.

Next week.

Page 36: Network Communication and Applets Dr Andy Evans. Applets. URLs. Advanced Applets. Webpages. Network communications. The Art of Programming Part Ten: Working

Good web design.

Like any GUI, good web design concentrates on usability.

There are a number of websites that can help you – these are listed on the links page for this course.

There’s also an online tutorial – details on the handout. Before you design any pages, read through the Design tips and ‘Writing for the web sections’.

Page 37: Network Communication and Applets Dr Andy Evans. Applets. URLs. Advanced Applets. Webpages. Network communications. The Art of Programming Part Ten: Working

Basic web design tips

Keep it simple and easy to read.Try to keep to two screenfulls of info on any page if you can.Don’t use jargon or long paragraphs.Highlight important sentences to help skim readers.

Make navigation obvious.Use text links that say where they go.People prefer having lots of links on one page more than having to click through several pages to get to info.

When in doubt, keep it plain.

Page 38: Network Communication and Applets Dr Andy Evans. Applets. URLs. Advanced Applets. Webpages. Network communications. The Art of Programming Part Ten: Working

Web accessibility

If you are working for a public organisation, accessibility for the disabled has to be a major design driver. In addition, not everyone can see applets (~2% of browsers).

Generally you can make webpages accessible by not putting important information in images and sound.

Java 1.1 applets have no accessibility built in.Java Foundation Class / Swing applets have accessibility built in – will be usable with speaking browsers etc.

Page 39: Network Communication and Applets Dr Andy Evans. Applets. URLs. Advanced Applets. Webpages. Network communications. The Art of Programming Part Ten: Working

Web accessibility: Java 1.1

<APPLET code = appletFile width = widthInPixels height = heightInPixels>

Please visit this <A href=“blind.html”>site</A> for a text list of our information.

</APPLET>

Anything you write between in the APPLET / OBJECT tags will only be displayed if the applet doesn’t work.

Page 40: Network Communication and Applets Dr Andy Evans. Applets. URLs. Advanced Applets. Webpages. Network communications. The Art of Programming Part Ten: Working

Transferring files

When writing for the network, you can compress class files and associated resources using the jdk1.7/bin/jar.exe compressor. This creates “zip”-like files that can be read in java using java.util.zip or Class’s getResource().

<APPLET

code = myClass

archive = myJar.jar

width = 300 height = 300>

</APPLET>

Page 41: Network Communication and Applets Dr Andy Evans. Applets. URLs. Advanced Applets. Webpages. Network communications. The Art of Programming Part Ten: Working

Transferring files

Always check what other programs, if any, use the port you are on.

Some networks have “Firewalls”. These are security devices that sit on Ports and stop some connecting. Check for them.

Page 42: Network Communication and Applets Dr Andy Evans. Applets. URLs. Advanced Applets. Webpages. Network communications. The Art of Programming Part Ten: Working

Summary

Applets are programs that run in web browsers.Because of this they have their own security limitations.They have init, start, stop, and destroy methods.init and destroy are called when the applet is first started and killed respectively.start and stop are called when the webpage is re-entered and left.

Page 43: Network Communication and Applets Dr Andy Evans. Applets. URLs. Advanced Applets. Webpages. Network communications. The Art of Programming Part Ten: Working

Summary

Client – server architectures are a common mechanism for retrieving files over the internet.One java class that uses them is URL which encapsulates a file location and the protocol to get it.Applets can use URL objects to get files from the internet and display them.Applets are usually run from webpages. The System.out is the Java Console.

Page 44: Network Communication and Applets Dr Andy Evans. Applets. URLs. Advanced Applets. Webpages. Network communications. The Art of Programming Part Ten: Working

Summary

Most networks use TCP/IP to communicate.HTTP gets and sends specific data-type requests on TCP/IP networks.We can encapsulate specific machine addresses with an InetAddress object, and specific resources with a URL object.Using a URL/URLConnection we can get basic resource types from a http / web server.For more complex data and object transmission, we can set up sockets.We can use ServerSocket objects to make our own servers.