OOT Seminar H-97 CORBA. Praktisk del

Like dokumenter
Hentet fra Suns Totorial:

Java RMI. Introduksjon. Markus Foss Hans-Gunnar Vold

UNIVERSITETET I OSLO

Stein Gjessing. Institutt for informatikk. Universitetet i Oslo. Institutt for informatikk

INF 1010, vår 2005 Løsningsforslag uke 11

INF Notater. Veronika Heimsbakk 10. juni 2012

Gruppe 11. Frank Petter Larsen Vegard Dehlen

Distributed Component Object Model. Utvikling av distribuerte applikasjoner. Utvidelse av COM for støtte av distribuerte objekter

INF1010. Grensesnittet Comparable<T>

Eks 1: Binærtre Binærtretraversering Eks 2: Binærtre og stakk

Mål med kurset. Java i INF Dagens tema. GUI med Swing. Dokumentasjon

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister

Kapittel 8: Programutvikling

IN våren 2019 Onsdag 16. januar

IN våren 2018 Tirsdag 16. januar

Gjøre noe i hele treet = kalle på samme metode i alle objekten. Java datastruktur Klassestruktur

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Videre

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }

Java RMI (Remote Method Invocation) Gruppe 9: Ivar Steien Rasmussen Tom Anders Dalseng Andreas Petlund

INF våren 2017

CORBA Objektmodell (Java RMI)

Kapittel 9: Sortering og søking Kort versjon

INF1010, 15. januar time. Parametriserte klasser (generiske klasser) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

Implementering av caching ved hjelp av Spring. Christian Vestøl

Konstruktører. Bruk av konstruktører når vi opererer med "enkle" klasser er ganske ukomplisert. Når vi skriver. skjer følgende:

Å lese tall fra en fil, klassen Scanner

Kapittel 7: Mer om arv

CORBA Component Model (CCM)

Object interaction. Innhold. Abstraksjon Grunnleggende programmering i Java Monica Strand 3. september 2007.

< T extends Comparable<T> > Indre klasser mm. «Det du bør ha hørt om før oblig 4»

INF1010, 21. februar Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

Avdeling for ingeniørutdanning Institutt for teknologi

Java i INF 2310 Dagens tema

INF2100. Oppgaver 23. og 24. september 2010

Utplukk av Java (GUI, kode-konvensjon, Java og bildebehandling i J2SE. BufferedImage m/venner. polymorfisme, classpath, javadoc) UNIVERSITETET I OSLO

INF2100. Oppgaver 9. oktober 2012 C 100 X 10

I et Java-program må programmøren lage og starte hver tråd som programmet bruker. Er dette korrekt? Velg ett alternativ

INF2100. Oppgaver 6. og 11. oktober 2011 C 100 X 10

Rekursjon. (Big Java kapittel 13) Fra Urban dictionary: recursion see recursion. IN1010 uke 8 våren Dag Langmyhr

Hittil har programmene kommunisert med omverden via tastatur og skjerm Ønskelig at data kan leve fra en kjøring til neste

Kapittel 9. Distribusjon. Fjernbruker. Tjenermaskin LAN WAN. Nærbruker. Figur 9-1: En enkel klient/tjener distribusjon

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5)

Det finnes ingenting. som kan gjøres med interface. men som ikke kan gjøres uten

INF2100. Oppgaver uke 40 og

Socket og ServerSocket

Utplukk av Java (GUI, kode-konvensjon, Introduksjon til første Java øving. polymorfisme, classpath, javadoc) Java og signalbehandling UNIVERSITETET

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5)

UNIVERSITETET I OSLO

Rekursjon. (Big Java kapittel 13) Fra Urban dictionary: recursion see recursion. IN1010 uke 8 våren Dag Langmyhr

Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen?

Jentetreff INF1000 Debugging i Java

Operativsystemer, prosesser og tråder

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

Eksamen Objektorientert Programmering 2012

INF1010, 22. mai Prøveeksamen (Eksamen 12. juni 2012) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

La oss begynne med en repetisjon av hva som skjer når du kjører Javaprogrammet

INF2100. Oppgaver 26. september til 1. oktober 2007

Eksamen i Internetteknologi Fagkode: ITE1526

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

Forkurs INF1010. Dag 2. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 14.

1. Krav til klasseparametre 2. Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

IN1010 våren 2018 Tirsdag 15. mai. Repetisjon av subklasser og tråder. Stein Gjessing Institutt for informatikk Universitetet i Oslo

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

INF1000: Forelesning 7

INF1010 våren 2017 Onsdag 25. januar. Litt om unntak i Java

OPPGAVE 5b og 8b Java Kode

Emnenavn: Objektorientert programmering. Faglærer: Lars Emil Knudsen

INF1010, 21. januar Klasser med parametre = Parametriserte klasser = Generiske klasser

IN 211 Programmeringsspråk. Java. på 20 enkle ark. spesielt for de som kan. Simula. (og gjerne litt C) Ark 1 av 20

Kapittel 9: Sortering og søking Kort versjon

INF1010. grensesni-et Comparable<T> grensesni-et Iterable<T> rekursjon

Synkronisering II. Kapittel 7. Betingelse oppfylt (0) liste. tråd-deskriptor. venteliste. tråd-deskriptor. tråd-deskriptor.

INF1010 Eksamenstips. Løsningsforslag prøveeksamen del 1.

Dagens tema. Hva er kompilering? Anta at vi lager dette lille programmet doble.rusc (kalt kildekoden): Hva er kompilering?

Eksekveringsrekkefølgen (del 1) Oppgave 1. Eksekveringsrekkefølgen (del 2) Kommentar til oppgave 1. } // class Bolighus

INF1010. Stein Michael Storleer (michael) Lenkelister

INF1010 Binære søketrær ++

import java.util.arraylist;

INF1000: Forelesning 7. Konstruktører Static

Videregående programmering 6

Dagens tema. Oppsummering om assemblerspråk. Programmering i C. Bakgrunn. Et minimalt eksempel med forklaring. Datatyper i C.

Stein Gjessing, Institutt for informatikk, Universitetet i Oslo

Forkurs INF1010. Dag 2. Andreas Færøvig Olsen Tuva Kristine Thoresen

Del 3: Evaluere uttrykk

STABLER OG REKURSJON. Abstrakte Data Typer (ADT) Stabler. ADT Stabel

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

2 Om statiske variable/konstanter og statiske metoder.

INF1010 våren Grensesnitt

INF1010 Rekursive metoder, binære søketrær. Algoritmer: Mer om rekursive kall mellom objekter Ny datastruktur: binært tre

INF1010 våren Arv, subklasser og grensesnitt - del 2

GUI («Graphical User Interface») del 2

Oppsummering. Kort gjennomgang av klasser etc ved å løse halvparten av eksamen Klasser. Datastrukturer. Interface Subklasser Klasseparametre

INF Seminaroppgaver til uke 3

GUI («Graphical User Interface») del 2

INF1010 våren Arv og subklasser del 1

INF1010 våren 2008 Uke 4, 22. januar Arv og subklasser

Leksjon 7. Filer og unntak

(MVC - Model, View, Control)

Løsningsforslag Test 2

Transkript:

OOT Seminar H-97 CORBA Praktisk del

Valg av ORB implementasjon Har valgt å bruke Visigenic sin ORB implementsjon ORB en er 100% Java kodet Bygger på OMG sin IDL to Java language mapping fra Jun 97 Gratis prøveversjon i 1 mnd.

Counter eksempel Formål Beregne gjennomsnittstiden det tar for en klient å utføre en metode på et serverobjekt. Eksempel hentet fra Client/Server Programming with Java and CORBA Robert Orfali, Dan Harkey

Ide / Tidlig klassediagram <<IDL Interface>> Count CountServer public int increment() { sum++; return sum; CountClient // Increment 1000 times for (int i = 0 ; i < 1000 ; i++ ) { counter.increment();

Interface Defenition Language Count Interfacet nedfelt i IDL <<IDL Interface>> Count sum : long increment( ) : long module Counter { interface Count { attribute long sum; long increment(); ; ;

IDL til Java Prekompilering idl2java count.idl Produktet blir en Java Package med navn Counter (navnet på modulen)

Hva generer idl2java kompilatoren Count.java _sk_count.java<->countimplbase.java CountHelper.java CountHolder.java (leverer container obj) _st_count.java _tie_count.java CountOperations.java

Count.java Interface til Count objekt package Counter; public interface Count extends org.omg.corba.object { public void sum(int sum); public int sum(); public int increment(); Count.java module Counter { interface Count { attribute long sum; long increment(); ; ; Count.idl

_st_count.java Java klasse for stub kode implementerer interface Count på klient siden blir også kalt clientproxy denne klassen blir ikke direkte brukt av programmerere

Klassediagram <<Interface>> Count CountServer CountImpl _sk_count main( ) 1 1..* CountClient main( ) Server Client

Implementasjon CountImpl class CountImpl extends Counter._sk_Count implements Counter.Count { private int sum; // Constructor CountImpl(String name) { super(name); System.out.println("Count Object Created"); sum = 0; // get sum public int sum() throws org.omg.corba.systemexception { return sum; // set sum public void sum(int val) throws org.omg.corba.systemexception { sum = val; // increment method public int increment() throws org.omg.corba.systemexception { sum++; return sum;

Imlementasjon CountServer // CountServer.java: The Count Server main program class CountServer { static public void main(string[] args) { try { // Initialize the ORB. org.omg.corba.orb orb = org.omg.corba.orb.init(); // Initialize the BOA. org.omg.corba.boa boa = orb.boa_init(); // Create the Count object. CountImpl count = new CountImpl("My Count"); // Export to the ORB newly created object. boa.obj_is_ready(count); // Ready to service requests. boa.impl_is_ready(); catch(org.omg.corba.systemexception e) { System.err.println(e);

Implementajson av CountClient // CountClient.java Static Client, VisiBroker for Java class CountClient { public static void main(string args[]) { try { // Initialize the ORB System.out.println("Initializing the ORB"); org.omg.corba.orb orb = org.omg.corba.orb.init(); // Bind to the Count Object System.out.println("Binding to Count Object"); Counter.Count counter = Counter.CountHelper.bind(orb,"My Count");

// Set sum to initial value of 0 System.out.println("Setting sum to 0"); counter.sum((int)0); // Calculate Start time long starttime = System.currentTimeMillis(); // Increment 1000 times System.out.println("Incrementing"); for (int i = 0 ; i < 1000 ; i++ ) { counter.increment(); // Calculate stop time; print out statistics long stoptime = System.currentTimeMillis(); System.out.println("Avg Ping = " + ((stoptime - starttime)/1000f) + " msecs"); System.out.println("Sum = " + counter.sum()); catch(org.omg.corba.systemexception e) { System.err.println("System Exception"); System.err.println(e);

Kjøring av eksempelet Set CLASSPATH Kompiler alle Java-klassene Start: osagent (er en name service) Start: java CountServer Start: java CountClient

Resultat av kjøringen > java CountServer Count Object Created > java CountClient Initializing the ORB Binding to Count Object Setting sum to 0 Incrementing Avg Ping = 5.28 msecs Sum = 1000