Structuring Components Specifications using Dependencies among the Runtime Environments

Σχετικά έγγραφα
ΚΑΤΑΝΕΜΗΜΕΝΟ ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΣΥΣΚΕΥΩΝ ΑΣΗΜΑΚΟΠΟΥΛΟΣ ΣΩΤΗΡΗΣ ΑΜ : 3021

Remote Method Invocation (RMI)

Διδάσκων: Παναγιώτης Ανδρέου

HelloApplet. Παύλος Εφραιμίδης Java Applets 1

EPL 603 TOPICS IN SOFTWARE ENGINEERING. Lab 5: Component Adaptation Environment (COPE)

02 Αντικειμενοστρεφής Προγραμματισμός

Κατανεµηµένα Συστήµατα ΙΙ Μάθηµα Ελεύθερης Επιλογής, Εαρινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων

ιαδικτυακές Εφαρµογές

Υποστηρικτικό υλικό Σημειώσεις

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 133: ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΕΡΓΑΣΤΗΡΙΟ 3 Javadoc Tutorial

Κινητά και Διάχυτα Συστήματα. Ενότητα # 4: Απομακρυσμένα αντικείμενα Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

(C) 2010 Pearson Education, Inc. All rights reserved.

Κατανεμημένα Συστήματα με Java. Ενότητα # 16: Κατανεμημένα συστήματα αντικειμένων Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi <at> ee.duth.

JAVA TUTORIAL ΠΕΡΙΕΧΟΜΕΝΑ. ΚΕΦΑΛΑΙΟ 1. Τί κάνει τη Java να ξεχωρίζει; Εγκαθιστώντας τη Java

Δομές Δεδομένων - Εργαστήριο 2. Λίστες

Αντικειµενοστρεφής Προγραµµατισµός

JAX-RPC (Web Services) ΕΠΛ 425: Τεχνολογίες ιαδικτύου Μιχάλης Έλληνας

άσκηση Hide UI Elements 7.2 Try and Catch

Η λέξη κλειδί this. Γαβαλάς Δαμιανός

A browser-based digital signing solution over the web

ΕΠΛ233 ΠΛΗΡΟΦΟΡΙΑ ΤΥΠΟΥ. Type Information. Μ. Δικαιάκος

HelloWorld. Παύλος Εφραιμίδης. Java Το πρόγραμμα HelloWorld 1

Πτυχιακή εργασία. Ανάπτυξη παιχνιδιού πολλών παικτών

Αντικειμενοστρεφής Προγραμματισμός

Προγραµµατισµός ΙΙ Java 2

Approximation of distance between locations on earth given by latitude and longitude

Εισαγωγή βιβλιοθηκών import java.applet.applet; import java.awt.graphics; ή import java.*.*

(2) Thread Thread. Runnable. ( ) Java. Sample91. Thread Thread ) Thread. Runnable. run() / run() Runnnale ( ) MyRun implements Runnable Runnable

API: Applications Programming Interface

Διασυνδέσεις / Διεπαφές. Παναγιώτης Σφέτσος, PhD

Τι είναι η Spring. Η Spring είναι ένα ελεύθερο (open source) περιβάλλον εργασίας για εφαρμογές Java. Μπορεί να περιγραφεί ως:

VBA Microsoft Excel. J. Comput. Chem. Jpn., Vol. 5, No. 1, pp (2006)

Αντικειμενοστρεφής Προγραμματισμός

ιαδικτυακές Εφαρµογές Πραγµατικού Χρόνου µε Java

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III

ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ

Dynamic types, Lambda calculus machines Section and Practice Problems Apr 21 22, 2016

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ ΕΡΓΑΣΤΗΡΙΟ


Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών

Ευφυείς Τεχνολογίες ----Πράκτορες

Σύνοψη 6 ης ιάλεξης. Εισαγωγικά (2)

Προγραµµατισµός ΙΙ Java 2

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εξαιρέσεις

Java sessions. Part 1 - Βασικά έννοιες - μέθοδοι

Σύνοψη 3 ης ιάλεξης. Κατανεµηµένα Συστήµατα ΙΙ Μάθηµα Ελεύθερης Επιλογής, Εαρινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων.

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Οντοκεντρικός Προγραμματισμός

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο

Homomorphism in Intuitionistic Fuzzy Automata

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 12 : ΜΙΚΡΟΕΦΑΡΜΟΓΕΣ (APPLETS)

Κλάσεις. Τροποποιητές, ιασυνδέσεις, Πακέτα. Τροποποιητές ελέγχου προσπέλασης µεταβλητών και µεθόδων

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Graphical User Interfaces (GUI) SWING

(Διαφάνειες Νίκου Βιδάκη)

SOAP API. Table of Contents

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

Αντικειμενοστρεφής Προγραμματισμός

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 1/11/07

Εξαιρέσεις (στη Java)

Πανεπιστήµιο Πειραιά Τµήµα Εκπαιδευτικής Τεχνολογίας και Ψηφιακών Συστηµάτων. Εισαγωγή στη γλώσσα προγραµµατισµού. Java. Βασίλειος Βεσκούκης

ηµιουργία ιαλογικών Προγραµµάτων για το Web

The Simply Typed Lambda Calculus

Βασίλης Χριστοφίδης Επαναληπτική Εξέταση (3 ώρες) Ηµεροµηνία: 21 Σεπτεµβρίου 2012

Εκτέλεση εξωτερικών προγραμμάτων και εντολών The Java Reflection - Αρχικοποίηση (Initialization)

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΣΤΗ JAVA ΤΕΛΕΣΤΕΣ - ΜΕΤΑΒΛΗΤΕΣ

Σημασιολογικός Ιστός (Semantic Web) - XML

Σχεδιασµός, Εµφάνιση και Υφος

ΕΙΣΟ ΟΣ-ΕΞΟ ΟΣ Ε ΟΜΕΝΩΝ

HOMEWORK 4 = G. In order to plot the stress versus the stretch we define a normalized stretch:

Αντικείµενα. ηµιουργία και χρησιµοποίηση αντικειµένων. ηµιουργία αντικειµένων

2.1 Αντικειµενοστρεφής προγραµµατισµός

6. Εξαιρέσεις στη γλώσσα Java

Αντικειμενοστρεφής Προγραμματισμός

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #1 ο : Εισαγωγή στο Περιβάλλον Ανάπτυξης (IDE)

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #1 ο : Εισαγωγή στο Περιβάλλον Ανάπτυξης (IDE)

ΕΞΑΙΡΕΣΕΙΣ. Εξαιρέσεις προκαλούνται. από το σύστηµα. από το πρόγραµµα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα

EE512: Error Control Coding

Τ.Ε.Ι. Μεσολογγίου, Τµήµα τηλεπικοινωνιακών Συστημάτων & Δικτύων

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07

Εξαιρέσεις στη Java. Περιεχόμενα. Κάποιες προκαθορισμένες ρ εξαιρέσεις. Κωστής Σαγώνας

n 1 n 3 choice node (shelf) choice node (rough group) choice node (representative candidate)

CHAPTER 25 SOLVING EQUATIONS BY ITERATIVE METHODS

Εξαιρέσεις στην Java EXCEPTIONS IN JAVA

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΒΑΛΕΝΤΙΝΑ ΠΑΠΑΔΟΠΟΥΛΟΥ Α.Μ.: 09/061. Υπεύθυνος Καθηγητής: Σάββας Μακρίδης

Κατανεµηµένα Συστήµατα ΙΙ Μάθηµα Ελεύθερης Επιλογής, Εαρινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων

Βασικά της γλώσσας JAVA

Μάθημα 2 [10/11/2015]

Κατανεμημένα Συστήματα. Javascript LCR example

Test Data Management in Practice

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

6.1 Εισαγωγή. 6.2 Ασφάλεια

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

Transcript:

Vol. 99 No. 72 SS99-7 [ ] 1999 5 21 17 923-1292 1-1 : 0761-51-1262 : 0761-51-1360 : kaiya@jaist.ac.jp ochimizu@jaist.ac.jp Java RMI RMI / Java Z Structuring Components Specifications using Dependencies among the Runtime Environments Haruhiko Kaiya Koichiro Ochimizu School of Information Science Japan Advanced Institute of Science and Technology, HOKURIKU 1-1, Asahidai, Tatsunokuchi-machi, Nomi-gun, Ishikawa, JAPAN, 923-1292 Phone: +81-761-51-1262 Fax: +81-761-51-1149 Email: kaiya@acm.org ochimizu@jaist.ac.jp http://www.jaist.ac.jp/ kaiya/ Abstract When we develop a software system with a resuable component, we should refer not only to its own specification, e.g. its signatures and constraints of input, output and internal values, but also to the relationships between the component and external environments. But the specification with such additional information tends to be a large document, hence it is too hard to read and maintain its descriptions. In this paper, we specify an external environment for RMI, Remote Method Invovation Components in Java using Z notation. And we also introduce a way to simplying and generalizing its specification. As a result, we can systematically describe the specification of any remote objects. Key words reusable component, runtime environment, Java, RMI, Z notation

1 A B [1] [2] Java RMI [3] Z [4] RMI [5] [5] RMI RMI RMI 2 RMI Applet 3 4 2 1, 2, 3 RMI 1 appletviewer RMI 1: ( ) C A http RMI B 2: RMI httpd ( ) 2 httpd httpd RMI httpd ( www ) RMI httpd RMI RMI [3, p.28] 3 httpd httpd RMI 18

A http RMI B Report ::= OK Exception sayhello 3: RMI httpd ( ) out! : String; rep! : Report ΞHelloImpl; SecurityManager out! =message; 3 3.1 Applet RMI Applet- SecurityManager Actions ::= CCONNETCT CREAD... 23 dlhost RMI cldhost slfhost AppletSecurityManager checktable : Actions B dlhost, cldhost, slfhost : Host checktable CCONNECT =(dlhost = cldhost) checktable CREAD = false. 3.2 : HelloImpl class HelloImpl extends UnicastRemoteObject implements Hello HelloImpl HelloImpl message : String SecurityManager 23 SecurityManager 3.3 : Naming public final class Naming extends Object public static Remote lookup(string name) public static void rebind(string name, Remote obj) nmhost Naming lookuptable : String Remote nmhost : Host rebind Naming.rebind n? : String; o? : Remote; rep! : Report Naming; SecurityManager dlhost = nmhost lookuptable n?=o?; dom lookuptable {n?} dlhost nmhost = dom lookuptable lookup 19

Naming.lookup shost? : String; sname? : String r! : Remote; rep! : Report ΞNaming; SecurityManager cldhost = shost? (checktable CCONNETCT slfhost = dlhost) sname? dom lookuptable lookuptable sname? =r! sname? dom lookuptable θnaming = θnaming (checktable CCONNETCT slfhost = dlhost) 3.4 AppletSecurityManager sayhello [SecurityManager/ AppletSecurityManager] out! =message sayhello SecurityManager ( 3 ) Naming.rebind Naming.lookup dlhost = nmhost nmhost = shost? n? =sname? o? =r! 1 Naming.rebind Naming.lookup slfhost = dlhost n? =sname? o? =r! 4 3 RMI ResType ::= Strage FileSystemR FileSystemW Port 4.1 AppletSecurityManager HelloImpl HelloImpl message : String ResType sayhello 1 out! : String; rep! : Report ΞHelloImpl SecurityManager[a/message] (out!, Strage) =message SecurityManager[a/message] AppletSecurityManager AppletSecurityManager a : String ResType dlhost, cldhost, slfhost : Host x : String a =(x, Strage) x : String a (x, FileSystemR) x : String a (x, FileSystemW). 1 20

[SecurityManager /AppletSecurityManager] 4.2 FSReadSecurityManager a : String ResType dlhost, cldhost, slfhost : Host [1] Bertrand Meyer. The Next Software Breakthrough. COMPUTER, Vol. 30, No. 7, pp. 113 114, Jul. 1997. IEEE/CS. [2] Tommy Thorn. Programming languages for mobile code. ACM Computing Surveys, Vol. 29, No. 3, pp. 213 239, Sep. 1997. [3] Sun Microsystems, Inc. Java Remote Method Invocation Specification, Feb. 1997. Revision 1.4, JDK1.1 FCS. [4] J. M. Spivey. The Z Notation, A Reference Manual, Second Edition. Prentice Hall, 1992. http:// spivey.oriel.ox.ac.uk/ mike/zrm/. [5],.., Vol. 98, No. 439, pp. 7 14, Dec. 1998. SS98-31. x : String a =(x, Strage) x : String a =(x, FileSystemR) x : String a (x, FileSystemW). readfile 2 HelloImp.readfile [SecurityManager /FSReadSecurityManager] HelloImp.readfile [SecurityManager /AppletSecurityManager] 5 RMI 2 21

: 1 // $ 1999-04-15 19:35:57+09 kaiya Exp $ 2 3 import java.rmi.*; 4 5 public interface Hello extends Remote{ 6 public String sayhello() throws java.rmi.remoteexception; 7 } 8 1 // $ 1999-04-15 19:35:57+09 kaiya Exp $ 2 3 import java.rmi.*; 4 import java.rmi.server.unicastremoteobject; 5 import java.net.*; 6 7 public class HelloImpl extends UnicastRemoteObject implements Hello{ 8 int cnt=0; 9 10 public HelloImpl() throws RemoteException{ 11 super(); 12 } 13 14 public String sayhello() throws RemoteException{ 15 cnt++; 16 System.err.println(cnt+": Hello Jaist!"); 17 return "Hello Jaist!"; 18 } 19 20 public static void main(string args[]){ 21 String n=args.length>0? args[0]: "hello"; 22 try{ 23 System.setSecurityManager(new RMISecurityManager()); 24 }catch(exception e){ 25 System.err.println("can not set SM, "+e); 26 } 27 28 try{ 29 HelloImpl h=new HelloImpl(); 30 Naming.rebind(n, h); 31 System.out.println(n+" ready as hello"); 32 }catch(remoteexception re){ 33 System.out.println("RemoteException "); 34 }catch(malformedurlexception e){ 35 System.out.println("URL Excetion "); 36 } 37 } 38 } 39 Applet html 1 <html> 2 <title>hello jaist</title> 3 <applet codebase="." code="helloapplet" width=200 height=100> 4 <param name=server value=rmi > 5 <param name=service value=jaist> 6 </applet> 7 </html> Applet java 1 // $ 1999-04-15 19:35:57+09 kaiya Exp $ 2 import java.awt.*; 3 import java.rmi.*; 4 import java.applet.*; 5 6 public class HelloApplet extends Applet{ 7 String message="", serv; 8 public void init(){ 9 try{ 10 serv="rmi://"+getparameter("server")+"/"+getparameter("service"); 11 Hello obj=(hello)naming.lookup(serv); 12 message=obj.sayhello(); 13 }catch(exception e){ 14 System.out.println(""+e); 15 } 16 } 17 public void paint(graphics g){ 18 // System.err.println(message); 19 g.drawstring(serv+" said, ", 0, 10); 20 g.drawstring(message, 0, 20); 21 } 22 } 23 22