JDC_Lecture3 - Computer Science

Download Report

Transcript JDC_Lecture3 - Computer Science

UMass Lowell Computer Science 91.460
Java and Distributed Computing
Prof. Karen Daniels
Fall, 2000
Lecture 3
HW#1
Jini Overview
C++ Diagnostic Results
Mon. 9/11/00
Page
WebWeb
Page
new
http://www.cs.uml.edu/~kdaniels/courses/java2000.html
Question from Last Lecture...
What is socket-based communication?
 In a Java context, Deitel answers this on p.
936 in introduction to Servlets. Java has
networking support for:




“socket-based communications that enable applications
to view networking as streams of data - a program can
read from a socket or write to a socket as simply as
reading or writing to a file.”
“packet-based communications that enable individual
packets of information to be transmitted - commonly
used to transmit audio and video over the Internet.”
Chapter 21 of Deitel treats Java networking
Homework #1
Homework #1
Assigned Due
Content
Wed, 9/6
Fri, 9/8
Read Ch 1 (Deitel)
Fri, 9/8
Mon, 9/11 Read Ch 1, 2 (Edwards)
Fri, 9/15
Read Ch 2, 3 (Deitel)
Fri, 9/15
Assignment #1, Part 1
short-answer questions
Mon, 9/18 Assignment #1, Part 2
“Hello World” programming
(application and applet)
Homework is due at the start of lecture on the due date.
Introduction to Java Applications



Java application is executed using the Java
interpreter (but not inside browser like an applet)
Application begins execution in main()
main() is static method inside class
// Save this in file Welcome1.java
public class Welcome1{
public static void main( String args[] )
{
System.out.println( "Java is fun!" );
}
}
Welcome1.java
javac Welcome1.java
Welcome1.class
java Welcome1
Similar application code is on p.36 of Deitel, Chapter 2
HW#1 HelloWorld Application
Refer to p. 36 of Deitel, Chapter 2 for their
Welcome1.java application
 Modify:

 System.out.println(
) statement
 Change name of class and file
Compiling and Running on a PC
Introduction to Java Applets

Java applet is executed inside a WWW browser (or
appletviewer) using a Java interpreter that is inside the browser.
// Save this file in Welcome1Applet.java
import java.applet.*;
import java.awt.*;
Welcome1Applet.java
javac Welcome1Applet.java
public class Welcome1Applet extends Applet{
public void paint(Graphics g)
{
g.drawString( "Java is fun!”, 25, 50 );
}
}
Welcome1Applet.class
Welcome1Applet.html
Save this file in Welcome1Applet.html
<APPLET code=“Welcome1Applet.class” width=150 height=100>
</APPLET>
appletviewer Welcome1Applet.html
HW#1 HelloWorld Applet


Refer to p. 86 and p. 90 of Deitel, Chapter 3 for their
WelcomeApplet.java applet
Modify:

.java file:




g.drawString( ) statement
Change name of class and file
Extend Applet instead of JApplet unless you want to use Swing
here. If extending Applet, import java.applet.*;
.html file:

Change name of class and file
Compiling and Running on a PC
Appletviewer on a PC
Browser on a PC
Computing Environment

Java 2 platform: Java 2 SDK v. 1.2.1


Jini v. 1.1



http://www.javasoft.com/products/jdk/1.2
http://www.javasoft.com/products/jini
UML CS UNIX environment
Optional:


PC environment (code must also run on UNIX)
Java integrated development environment

2 are on disk with Deitel textbook (NetBeans caveat)
Make sure you have a UML CS UNIX account
Jini Overview
What is Jini?
Jini Is Not Initials
portions of this slide contributed by Ayal Spitz
Sun’s Jini Vision


Initial Sun marketing focused on hardware
 Appliances in a home or office connecting to a
network
 Jini’s goal is to make it possible for all of these
appliances to seamlessly detect and communicate
with one another
Technology can also support software services
jCable box
Video Tuner
jComputer
portions of this slide contributed by Ayal Spitz
jTV
Video Display
jVCR
Digital Storage
jStereo
What is Jini?
Java-based connection framework
developed by Sun Microsystems
 Philosophy:

 plug
‘n play network
 blur distinction between hardware and software
 “self-healing”

Elements: discovery, lookup, leasing,
remote events, transactions, JavaSpaces
Background on Jini Technology
Lookup Service
Service Item
Proxy
Attribute Attribute
Attribute Attribute
Service Provider
Client
Service Item
Proxy
Attribute Attribute
Attribute Attribute
proxy manages service interaction
Service Item
Proxy
Attribute Attribute
Attribute Attribute
5 Key Concepts
Discovery: find communities on a network and join them
 Lookup: use Lookup Service(s) to find services and use

them

Leasing: resource is “loaned” to some consumer for fixed
time period

Remote Events: allow services to notify others of their
state changes

Transactions: protocol to support multiple services
moving to “safe” state
Some Jini Definitions



Service: an entity on the network (e.g. hardware device
or software module) that can be used by other Jini
participants
Community: a group of Jini services that are “aware”
of each other (typically workgroup size)
Group: used by Jini APIs to specify and represent a
community


But, due to network separation, different communities may have same
group name
Federation: a collection of communities that are
“aware” of each other
Discovery Example: Multiple Community
Service
Provider 1
Service 1 Item
Client A
Service 1 Item
Service
Provider 3
Service 3 Item
Lookup
Service
Service 4 Item
Lookup
Service
Service 1 Item
Client D
Service 1 Item
Service 2 Item
Service 3 Item
Service 2 Item
Service 3 Item
Client C
Service 3 Item
Client E
Lookup
Service
Service 4 Item
Service 3 Item
Client B
Service 2 Item
Service 3 Item
Service
Provider 2
Service 2 Item
Service 4 Item
Service
Provider 4
Service 4 Item
Requirements for Service, Client
To be a Jini Service:
 Either you or a delegate
must be able to:




Connect to a TCP/IP
network ( )
Participate in discovery to
find a Lookup Service
Register with a Lookup
Service to provide proxy
Keep leases current
To be a Jini Client:


Participate in discovery to
find a Lookup Service
Communicate with a
Lookup Service to receive
service proxy
Extra “machinery” needed:
- http server(s) for each machine to offer up downloadable code
- RMI activation daemon
Hello World in a Jini Setting...
HelloWorldServiceInterface.java
HelloWorldService.java
HelloWorldClient.java
c:
corejini
client
service
service-dl
policy
chapter5
corejini
corejini
corejini
policy.all
chapter5
chapter5
chapter5
HelloWorldServiceInterface.class
HelloWorldClient$Listener.class
HelloWorldClient.class
HelloWorldServiceInterface.class
HelloWorldServiceProxy.class
HelloWorldService$Listener.class
HelloWorldService.class
HelloWorldServiceProxy.class
Who Else is in the Game?
(other providers of coordination frameworks/connection
technologies/service architectures for distributed computing)



HAVi
 Sony, Sharp, Toshiba, Philips, RCA, Matsushita,
Hitachi, Grundig
Microsoft & HP
 ChaiAppliance Plug and Play
 eSpeak
 Universal Plug and Play
 Network protocol level
 XML device description
Salutation Framework
Further Information – Jini

Sun web sites



Development – Books



http://www.javasoft.com/jini
http://www.jini.org
“Core Jini” by W. Keith Edwards
“The Jini Specification” by Arnold, O’Sullivan, Scheifler,
Waldo, and Wollrath
Gartner Advisory:

Java Jini: A ‘Killer-App Enabler’ for Network Computing?
http://gartner.jmu.edu/research/ras/83000/83044/83044.html
portions of this slide contributed by Ayal Spitz
C++ Diagnostic
C++ Diagnostic
Assess C++ background
 Will not contribute to the course grade
 Answers on the way out of class
 Name is optional
 Provide code snippets, not entire programs
 Leave unknowns blank

We’ll summarize results of the diagnostic in lecture.