Uge 14: distribuerede objekter, fjernprocedurekald, RMI Tirsdag: Introduktion Mulige fordele ved distribuerede objekter Introduktion til RMI: - Interfacets.

Slides:



Advertisements
Lignende præsentationer
Velkommen til Softwarekonstruktion
Advertisements

07 – Kort om OO Introduktion.
Indledende Programmering Uge 2 - Efterår 2006 Selektioner og interaktion mellem objekter Susanne Brix Lindros.
KONCEPT Klasser og objekter En klasse beskriver et World ArrayList
Distribueret programmering, specielt.NET Remoting Rasmus D. Lehrmann DM
DS-kursusgang nr. 6: distribuerede objekter 1. Intro (oversigt over grundl₣ggende begreber og komponenter) 2. De basale designspørgsm ₢ l ved konstruktion.
Selve objektet versus referencen til objektet Nedarvning
DotNET Remoting Præsentation. Beskrivelse af arkitekturen i et dot NET program. Hvad er en Proxy. Klient, server og host begreberne. Marshaling. Eventuelt.
Grundlæggende programmering Efterår 2001
Objektorienteret programmering
09 – Arv og polymorfi i java
Hvordan man skriver koden.
01 – Java platform for starters. 2 NOEA2009Java-kursus – Java Platform Introduktion til Java Baggrund Hvad er Java? Faciliteter i Java.
VOOP, 8 april Refleksion i objekt orienterede programmeringssprog Mandag 8/ Kasper Østerbye.
Structs Structs allokeres på stakken Memory-allokering sker ved oprettelse af variabel og ikke ved new Der kan defineres metoder incl. Constructor. Eksempel.
VPG/Otto Knudsen1 VPR - Repetition Trådning Distribueret Programmering Sprogteori Grafer.
GP5, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 5 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder.
FEN IntroJava AAU1 Opsamling: afvikling af Java-programmer Input fra keyboard og fil Fra en prompt Fra BlueJ Fra NetBeans.
Forelæsning 3.1 Collections Javas for-each løkke
To måder at overføre objekt- referencer mellem processer (1) Via naming service - interface RMISolver (2) Som parametre til fjernprocedurekald - interface.
GP6, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 6 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder.
Mønstre En lille introduktion. Singleton Tilgå et objekt igennem klassereference i stedet for objektreference.  Overflødiggør referencer til objektet.
Eksempel på realisering af domænemodel
GP 8, 24/ Grundlæggende programmering Efterår 2001 Forelæsning 8 onsdag 24/ kl. 9:15 – 12:00.
GP 5, 26/ Grundlæggende programmering Efterår 2001 Forelæsning 5 onsdag 26/ kl. 9:15 – 12:00.
Objekter og klasser Rasmus D. Lehrmann DM
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper : arrays, stakke, køer,
Repetition: Introduktion til OOP med C# og .NET
1 Kursusafslutning. 2 Plan Opgaveseminar Kursusevaluering.
Procestræ under afvikling af cp init login shell cp cp src dest.
Comparable Students German Students Composite Pattern State Pattern Observer Pattern Collections Interfaces Abstrakte klasser Design Patterns.
8 RÅD VEDRØRENDE GOD PROGRAMMERING Effective (brown) Java.
FEN IntroJava AAU1 Klasser og objekter Grundbegreber Student-Course.
Distribuerede objekter og RMI. Disposition Hvad er RMI? Semantikker Transparens Implementation.
FEN IntroJava AAU1 Endnu mere om Klasser og Objekter Mange til mange relationer Student-Course v3.
8.5 JDBC1 JDBC 8.5 Java Database Connectivity. 8.5 JDBC2 JDBC introduktion, 393 JDBC er ikke en forkortelse for –Java Database Connectivity Sun har defineret.
03 – Udtryk og metoder. 2 NOEA2009Java-kursus – Udtryk og metoder Udtryk i Java Java har standard udtrykene… Værditildeling Subrutiner og funktionskald.
Hvad består en distribueret applikation af ? Processer der kører på hver deres maskine Tråde - 1 eller flere "letvægtsprocesser" per proces Objekter i.
Begreber og Redskaber 11. Plan for idag Lidt afrunding: Collections Framework i Java Noget om oversættere og sprog Evaluering Sidste gang øvelser før.
GP3, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 3 Vi begynder Slides ligger på hjemmesiden. Du er velkommen til.
Forelæsning 7.1 – repetition
Deadlock Definition deadlock (baglås) er en tilstand som en mængde af processer kan være i en mængde processer er i deadlock hvis alle processerne står.
Paradigmer i Programmering 3. Højere ordens funktioner Idag: Højere ordens funktioner Algebraiske datatyper Næste gang: I/O, Filer, interaktive programmer.
Effective Java Blå gruppe. Item 18: Interfaces frem for abstrakte klasser Kan implementeres i klasser der ikke nedarver Eksisterende klasser kan nemt.
Begreber og Redskaber 4. Plan for idag Om metoder, parametre, returværdier Et par ord om objekt-orientering Håndkøring af programmer.
Begreber og Redskaber 3. Plan for idag Om metoder, parametre, returværdier Overblik over klasser,objekter,nedarvning Et par ord om objekt-orientering.
I o p o DAIMI, AU, November 1999Programkonstruktion I9E.1 Konstruktion og brug af klasser – en stak og en HP-regnemaskine push pop.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6B.1 Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence.
Klasser og objekter. dIntProg, E08Klasser og objekter.2 Grundbegreber Klasser og objekter –beskrivelse –oprettelse Attributter og metoder –tilstand –opførsel.
DAIMIIntroducerende objektorienteret programmering3B.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
 Henrik B. Christensen, 1999Introducerende objektorienteret programmering8B.1 Interfaces En ren kontrakt.
 Jens Bennedsen, 2003Introducerende objektorienteret programmeringinterfaces.1 Interfaces En ren kontrakt.
DAIMIIntroducerende objektorienteret programmeringkd.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6A.1 Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Indledende Programmering Uge 6 - Efterår 2006
Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Java på 20 minutter (eller lidt mere)
Programmering med interfaces Separering af specifikation, anvendelse og implementation.
Klasser og objekter – grundbegreber.  Michael E. Caspersen, 2001Introducerende objektorienteret programmeringKlasser og objekter.2 Klasser og objekter.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
 Jens Bennedsen 2001Multimedie programmering10B.1 Interfaces En ren kontrakt.
Jesper Mosegaard Multimedie Programmering E2003 MMProg uge46 Ancestor.
 Jens Bennedsen 2001Multimedie programmering4.1 Definition af begreber Interface, implements, klasse.
 Jens Bennedsen 2001Multimedie programmering3A.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
Klasser og objekter. dIntProg, F08Klasser og objekter.2 Grundbegreber Klasser og objekter –beskrivelse –oprettelse Attributter og metoder –tilstand –opførsel.
Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence s; int i; int j; Sequence s; String s; int i; int j;
I o p o DAIMI, AU, September 1999Introducerende objektorienteret programmering5C.1 Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence.
Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence s; int i; int j; Sequence s; String s; int i; int j;
Objecter Introduktion Webintegrator HF1 PHP Object orienteret.
Quiz – Uge 4 – torsdag – første time
Forelæsning Uge 4 – Torsdag
Præsentationens transcript:

Uge 14: distribuerede objekter, fjernprocedurekald, RMI Tirsdag: Introduktion Mulige fordele ved distribuerede objekter Introduktion til RMI: - Interfacets rolle - Tekniske detaljer ved programmering - Stubbe og skeletter Farleys re-konstruktion af RMI Torsdag: Anvendelse af Javas RMI. Parametre til fjernprocedurekald Farleys solver-program

Eksempel: Webservice som styres fra separat maskine Du skal udvikle en webservice webserver = Farleys webserver (udvidelse = f.eks. e-handelsprogram, søgefacilitet,..) Og bagefter selv være administrator på den Servicen skal afvikles hos Internetudbyder/webhotel, hvor du lejer maskine (evt. virtuel maskine). Administration skal kunne ske fra fjern maskine (f.eks. hjemmefra via modem) start, stop konfigurering af webservicen: hvem må bruge den, til hvad ?

Opgave Kan vores webservice startes og stoppes via: telnet ? ftp ? http ? sockets ? fjernprocedurekald ?

Ren tekstbaseret kommunikation.. klient server "hello.... set category 1 users:,,.... stop service no raise priority of service no. 2.. bye" Nødvendigt at konstruere parser - f.eks. udvidelse af Farleys class SimpleCmdInputStream Mange fejlmuligheder, - mange fejl først vil vise sig på køretidspunktet ?

Fordele ved distribuerede objekter og fjernprocedurekald Højniveau-programmering lade systemet (oversætter, RMI,..) håndtere detaljer jf. løkker i stedet for GOTO-sætninger, Java i stedet for C,.. Typecheck vil afsløre fejl allerede på oversættelsestidspunktet "metoden set_categyro findes ikke.." Muliggør udarbejdelse af abstrakt design Overordnet design kan abstrahere fra fordeling af objekter på processer og maskiner CORBA: højere abstraktionsniveau end RMI: uafhængig af programmeringssprog

Java Gently, class ActualThing Formål Metoden getThing() skal kunne kaldes fra fjerne objekter class ActualThing { ActualThing(String n) {age = n} public String getThing() {return age} private String age; }

class ActualThing Formål (II) a = new ActualThing("I am 46"); {registrer objekt hos naming service} {T = objekt, via naming service} System.out.println(T.getThing()); Klient Server tid

God (distribueret) programmeringsstil Klientens variabel t skal pege på objekt hos serveren. Hvilken type skal t erklæres som ? - God programmeringsstil: definer type som fastlægger netop de metoder, der kan kaldes fjernt typen defineres i form af et interface (f.eks. "Thing") erklær t som denne type Hvordan kan klienten finde objektet hos serveren ? - Via naming service Server registrerer objekt under et vist navn (f.eks. "Thing Service") Klient bruger navnet som indgangsnøgle til at finde objekt

Grænsefladen ml. klient/server: Interface Thing.. a = new ActualThing("I am 46"); Naming.rebind("Thing Service",a).. String url = "rmi://" + host/"; Thing t = Naming.lookup( url + "ThingService); System.out.println(T.getThing());.. Klient Server ThingServer.java interface Thing { String getThing(); } Thing.java class ActualThing implements Thing { ActualThing(String n) {age = n} public String getThing() {return age} private String age; } ActualThing.java ThingClient.java

+ teknik: Nedarvning: interface Thing nedarver fra interface java.rmi.Remote class ActualThing nedarver fra class UnicastRemoteObject De rigtige exceptions skal kastes og fanges: netværksprogrammering er særlig udsat for fejl så struktureret fejlbehandling er ekstra vigtig Type-casting: Objektet, som naming service returnerer til klienten, skal type-castes til Thing

Type-casting Implicit type-konvertering: int i = 0; float f = i; System.out.println(f); Type-casting = eksplicit programmeret type-konvertering float f = 1.1; int i = (int) f; System.out.println(i); public java.rmi.Remote lookup(){..};.. Thing t = (Thing) Naming.lookup() Procedure lookup returnerer et objekt af typen java.rmi.Remote

Naming Service (RMI registry) a Proces A Proces B Thing Service Proces C Har du et objekt ved navn "Thing Service" ? Reference til a

"Stubbe" og "skeletter" Klient Server Har du et objekt ved navn "Thing Service" ? Reference til "stub"som har reference til a ThingClientThingServer StubSkelet Oprettelse af reference til fjernt objekt brug

Skabelse af stubbe og skeletter Thing.java ActualThing.java ThingClient.java ThingServer.java Thing.class ActualThing.class ThingClient.class ThingServer.class ActualThing_Stub.class javac rmic ActualThing_Skel.class X.java javac Kommando: javac X.java

RMI tilbyder Naming service, som er/kan overføre referencer til objekter blot ved at klient angiver 1. Typen af det fjerne objekt. 2. Navnet som objekt er registreret under overføre metodekald, herunder parametre og retur-værdi

Farleys rekonstruktion af RMI S. 49:.. String cmd = "call " + methodIdx + " on " + objRef;.. Tekst der sendes via alm. socket forbindelse fra klient til server Heltal somklient har modtaget fra server (server bruger det til opslag i hashtabel) Heltal som betegner metodens nummer ud af samtlige metoder som er defineret i objektet

Class.forName(..) og Class.newInstance() Statisk (normal) loadning: MyClass obj = new MyClass(); Dynamisk loadning: Class cls = Class.forName("MyClass"); obj = cls.newInstance(); samme Forudsætter at MyClass.class er tilgængelig lokalt via CLASSPATH

Dynamisk valg af klasse og metode String cName = "ActualThing"; // eller fra socketforb. Class reqClass = Class.forName(cName); Object obj = reqClass.newInstance(); // ActualThing obj = new ActualThing(); String mName = "getThing"; // eller fra socketforb. Method reqMethod = reqClass.getDeclaredMethod(mName,null); String s = (String) reqMethod.invoke(obj,null); // s = obj.getThing(); System.out.println(s.getThing()); // eller til socketforb. // tilføjet efter forelæsning: // mangler at overføre parametre til kaldet af // ActualThing-konstruktoren // (så forstår jeg bedre jeg ikke kunne få det til at virke. )

java.lang.Class & …Method Kun kvalifikatoren statisk er vist, alle andre er udeladt. Class: package java.lang; class Class { static Class forName(String className) {..} Method getDeclaredMethod(String methodName,Class[] paramTypes){..} Method[] getDeclaredMethods(){..} Object newInstance() {..} } Method: package java.lang.reflect; class Method { void invoke(Object obj,Object[] params) {..} }