Programowanie rozproszone w języku Java
|
|
- Piotr Witek
- 8 lat temu
- Przeglądów:
Transkrypt
1 Wstęp Gniazda RMI Podsumowanie Programowanie rozproszone w języku Java Wojciech Rząsa wrzasa@prz-rzeszow.pl Katedra Informatyki i Automatyki, Politechnika Rzeszowska 25 maja 2015 Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 1/46
2 Wstęp Gniazda RMI Podsumowanie Plan 1 Wstęp 2 Komunikacja sieciowa 3 Zdalne wywołanie metod (RMI) 4 Podsumowanie Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 2/46
3 Wstęp Gniazda RMI Podsumowanie Plan 1 Wstęp 2 Komunikacja sieciowa 3 Zdalne wywołanie metod (RMI) 4 Podsumowanie Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 3/46
4 Wstęp Gniazda RMI Podsumowanie Programowanie rozproszone Osobne procesory Rozdzielona przestrzeń adresowa Komunikacja poprzez sieć Duży narzut komunikacyjny Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 4/46
5 Wstęp Gniazda RMI Podsumowanie Modele programowania rozproszonego Message passing (przekazywanie wiadomości) Remote procedure call (zdalne wywoływanie procedur) Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 5/46
6 Wstęp Gniazda RMI Podsumowanie Omówione mechanizmy Komunikacja sieciowa gniazda (sockets) Zdalne wywołanie metod (RMI, odpowiednik RPC) Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 6/46
7 Wstęp Gniazda RMI Podsumowanie Plan 1 Wstęp 2 Komunikacja sieciowa 3 Zdalne wywołanie metod (RMI) 4 Podsumowanie Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 7/46
8 Wstęp Gniazda RMI Podsumowanie Możliwości Przesyłanie danych pomiędzy procesami Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 8/46
9 Wstęp Gniazda RMI Podsumowanie Gniazdo Punkt końcowy kanału komunikacyjnego Każda strona ma własne gniazdo Pozwala wykonywać podstawowe operacje wejścia/wyjścia Operacje realizuje system operacyjny Komunikacja przez sieć Komunikacja lokalna Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 9/46
10 Wstęp Gniazda RMI Podsumowanie Komunikacja przy użyciu gniazd Model klient-serwer Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 10/46
11 Wstęp Gniazda RMI Podsumowanie Komunikacja przy użyciu gniazd Model klient-serwer Rozpoczęcie komunikacji Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 10/46
12 Wstęp Gniazda RMI Podsumowanie Komunikacja przy użyciu gniazd Model klient-serwer Rozpoczęcie komunikacji Pasywne (nasłuchiwanie) serwer Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 10/46
13 Wstęp Gniazda RMI Podsumowanie Komunikacja przy użyciu gniazd Model klient-serwer Rozpoczęcie komunikacji Pasywne (nasłuchiwanie) serwer Aktywne (inicjowanie połączenia) klient Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 10/46
14 Wstęp Gniazda RMI Podsumowanie Komunikacja przy użyciu gniazd Model klient-serwer Rozpoczęcie komunikacji Pasywne (nasłuchiwanie) serwer Aktywne (inicjowanie połączenia) klient Typy gniazd Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 10/46
15 Wstęp Gniazda RMI Podsumowanie Komunikacja przy użyciu gniazd Model klient-serwer Rozpoczęcie komunikacji Pasywne (nasłuchiwanie) serwer Aktywne (inicjowanie połączenia) klient Typy gniazd Determinują protokół warstwy transportowej Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 10/46
16 Wstęp Gniazda RMI Podsumowanie Komunikacja przy użyciu gniazd Model klient-serwer Rozpoczęcie komunikacji Pasywne (nasłuchiwanie) serwer Aktywne (inicjowanie połączenia) klient Typy gniazd Determinują protokół warstwy transportowej gniazda strumieniowe protokół TCP komunikacja niezawodna dane jako strumień bajtów Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 10/46
17 Wstęp Gniazda RMI Podsumowanie Komunikacja przy użyciu gniazd Model klient-serwer Rozpoczęcie komunikacji Pasywne (nasłuchiwanie) serwer Aktywne (inicjowanie połączenia) klient Typy gniazd Determinują protokół warstwy transportowej gniazda strumieniowe protokół TCP komunikacja niezawodna dane jako strumień bajtów gniazda datagramowe protokół UDP komunikacja zawodna dane jako datagram Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 10/46
18 Wstęp Gniazda RMI Podsumowanie Komunikacja przy użyciu gniazd Model klient-serwer Rozpoczęcie komunikacji Pasywne (nasłuchiwanie) serwer Aktywne (inicjowanie połączenia) klient Typy gniazd Determinują protokół warstwy transportowej gniazda strumieniowe protokół TCP komunikacja niezawodna dane jako strumień bajtów gniazda datagramowe protokół UDP komunikacja zawodna dane jako datagram gniazda surowe (ang. raw sockets), niedostępne w Javie Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 10/46
19 Wstęp Gniazda RMI Podsumowanie Porty Adres IP identyfikuje maszynę Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 11/46
20 Wstęp Gniazda RMI Podsumowanie Porty Adres IP identyfikuje maszynę Numer portu identyfikuje proces na maszynie Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 11/46
21 Wstęp Gniazda RMI Podsumowanie Porty Adres IP identyfikuje maszynę Numer portu identyfikuje proces na maszynie numery od 0 do Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 11/46
22 Wstęp Gniazda RMI Podsumowanie Porty Adres IP identyfikuje maszynę Numer portu identyfikuje proces na maszynie numery od 0 do zarezerwowane Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 11/46
23 Wstęp Gniazda RMI Podsumowanie Porty Adres IP identyfikuje maszynę Numer portu identyfikuje proces na maszynie numery od 0 do zarezerwowane od 1 do 1024 tylko administrator Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 11/46
24 Wstęp Gniazda RMI Podsumowanie Porty Adres IP identyfikuje maszynę Numer portu identyfikuje proces na maszynie numery od 0 do zarezerwowane od 1 do 1024 tylko administrator UDP i TCP mają osobną pulę portów Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 11/46
25 Wstęp Gniazda RMI Podsumowanie Porty Adres IP identyfikuje maszynę Numer portu identyfikuje proces na maszynie numery od 0 do zarezerwowane od 1 do 1024 tylko administrator UDP i TCP mają osobną pulę portów Serwer nasłuchuje na wybranym porcie Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 11/46
26 Wstęp Gniazda RMI Podsumowanie Porty Adres IP identyfikuje maszynę Numer portu identyfikuje proces na maszynie numery od 0 do zarezerwowane od 1 do 1024 tylko administrator UDP i TCP mają osobną pulę portów Serwer nasłuchuje na wybranym porcie Klient otrzymuje port, łączy się z wybranym IP i portem Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 11/46
27 Wstęp Gniazda RMI Podsumowanie Gniazda klienckie (TCP) [ Klient tworzy gniazdo Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 12/46
28 Wstęp Gniazda RMI Podsumowanie Gniazda klienckie (TCP) [ Klient tworzy gniazdo Podaje adres IP i numer portu z którym się łączy Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 12/46
29 Wstęp Gniazda RMI Podsumowanie Gniazda klienckie (TCP) [ Klient tworzy gniazdo Podaje adres IP i numer portu z którym się łączy Może podać lokalny numer portu Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 12/46
30 Wstęp Gniazda RMI Podsumowanie Gniazda klienckie (TCP) [ Klient tworzy gniazdo Podaje adres IP i numer portu z którym się łączy Może podać lokalny numer portu Jeśli połączenie jest przyjęte, może pisać i czytać z gniazda Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 12/46
31 Wstęp Gniazda RMI Podsumowanie Gniazda serwera (TCP) [ Serwer tworzy gniazdo Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 13/46
32 Wstęp Gniazda RMI Podsumowanie Gniazda serwera (TCP) [ Serwer tworzy gniazdo Podaje numer portu z którym ma się połączyć klient Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 13/46
33 Wstęp Gniazda RMI Podsumowanie Gniazda serwera (TCP) [ Serwer tworzy gniazdo Podaje numer portu z którym ma się połączyć klient Czeka na połączenie klienta Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 13/46
34 Wstęp Gniazda RMI Podsumowanie Gniazda serwera (TCP) [ Serwer tworzy gniazdo Podaje numer portu z którym ma się połączyć klient Czeka na połączenie klienta Po nadejściu i nawiązaniu nowego połączenia tworzy nowe gniazdo Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 13/46
35 Wstęp Gniazda RMI Podsumowanie Gniazda serwera (TCP) [ Serwer tworzy gniazdo Podaje numer portu z którym ma się połączyć klient Czeka na połączenie klienta Po nadejściu i nawiązaniu nowego połączenia tworzy nowe gniazdo nowe gniazdo jest wykorzystywane do komunikacji z klientem Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 13/46
36 Wstęp Gniazda RMI Podsumowanie Gniazda serwera (TCP) [ Serwer tworzy gniazdo Podaje numer portu z którym ma się połączyć klient Czeka na połączenie klienta Po nadejściu i nawiązaniu nowego połączenia tworzy nowe gniazdo nowe gniazdo jest wykorzystywane do komunikacji z klientem stare gniazdo może być równocześnie używane do dalszego nasłuchiwania Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 13/46
37 Wstęp Gniazda RMI Podsumowanie Gniazda w Javie Komunikacja strumieniowa (TCP) 1 DatagramSocket.html 2 clientserver.html Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 14/46
38 Wstęp Gniazda RMI Podsumowanie Gniazda w Javie Komunikacja strumieniowa (TCP) Socket gniazdo komunikacyjne klienta i serwera 1 DatagramSocket.html 2 clientserver.html Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 14/46
39 Wstęp Gniazda RMI Podsumowanie Gniazda w Javie Komunikacja strumieniowa (TCP) Socket gniazdo komunikacyjne klienta i serwera ServerSocket gniazdo do nasłuchiwania (dla serwera) 1 DatagramSocket.html 2 clientserver.html Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 14/46
40 Wstęp Gniazda RMI Podsumowanie Gniazda w Javie Komunikacja strumieniowa (TCP) Socket gniazdo komunikacyjne klienta i serwera ServerSocket gniazdo do nasłuchiwania (dla serwera) Komunikacja datagramowa (UDP) 1 DatagramSocket.html 2 clientserver.html Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 14/46
41 Wstęp Gniazda RMI Podsumowanie Gniazda w Javie Komunikacja strumieniowa (TCP) Socket gniazdo komunikacyjne klienta i serwera ServerSocket gniazdo do nasłuchiwania (dla serwera) Komunikacja datagramowa (UDP) DatagramSocket gniazdo komunikacyjne UDP 1 DatagramSocket.html 2 clientserver.html Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 14/46
42 Wstęp Gniazda RMI Podsumowanie Gniazda w Javie Komunikacja strumieniowa (TCP) Socket gniazdo komunikacyjne klienta i serwera ServerSocket gniazdo do nasłuchiwania (dla serwera) Komunikacja datagramowa (UDP) DatagramSocket gniazdo komunikacyjne UDP Metody send i receive 1 DatagramSocket.html 2 clientserver.html Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 14/46
43 Wstęp Gniazda RMI Podsumowanie Gniazda w Javie Komunikacja strumieniowa (TCP) Socket gniazdo komunikacyjne klienta i serwera ServerSocket gniazdo do nasłuchiwania (dla serwera) Komunikacja datagramowa (UDP) DatagramSocket gniazdo komunikacyjne UDP Metody send i receive DatagramPacket 1 DatagramSocket.html 2 clientserver.html Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 14/46
44 Wstęp Gniazda RMI Podsumowanie Gniazda w Javie Komunikacja strumieniowa (TCP) Socket gniazdo komunikacyjne klienta i serwera ServerSocket gniazdo do nasłuchiwania (dla serwera) Komunikacja datagramowa (UDP) DatagramSocket gniazdo komunikacyjne UDP Metody send i receive DatagramPacket Dokumentacja DatagramSocket.html 2 clientserver.html Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 14/46
45 Wstęp Gniazda RMI Podsumowanie Gniazda w Javie Komunikacja strumieniowa (TCP) Socket gniazdo komunikacyjne klienta i serwera ServerSocket gniazdo do nasłuchiwania (dla serwera) Komunikacja datagramowa (UDP) DatagramSocket gniazdo komunikacyjne UDP Metody send i receive DatagramPacket Dokumentacja 1 Tutorial DatagramSocket.html 2 clientserver.html Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 14/46
46 Wstęp Gniazda RMI Podsumowanie Gniazda w Javie Komunikacja strumieniowa (TCP) Socket gniazdo komunikacyjne klienta i serwera ServerSocket gniazdo do nasłuchiwania (dla serwera) Komunikacja datagramowa (UDP) DatagramSocket gniazdo komunikacyjne UDP Metody send i receive DatagramPacket Dokumentacja 1 Tutorial 2 MulticastSocket gniazdo komunikacyjne multicast 1 DatagramSocket.html 2 clientserver.html Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 14/46
47 Wstęp Gniazda RMI Podsumowanie Użycie gniazda klienta 1 socket = new Socket ( adres, port ); 2 PrintWriter out = 3 new PrintWriter ( socket. getoutputstream (), true ); 4 BufferedReader in = new BufferedReader ( new 5 InputStreamReader ( socket. getinputstream ())); 6 System. out. println (in. readline ()); 7 out. println (" Cze ść! Uda ło się!"); 8 System. out. println (in. readline ()); Użycie gniazda klienta Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 15/46
48 Wstęp Gniazda RMI Podsumowanie Implementacja klienta 1 import java. net.*; import java.io.*; 2 public class Client { 3 public static void main ( String args []) { 4 String adres = args [0]; 5 int port = Integer. parseint ( args [1]); 6 Socket socket = null ; 7 try { 8 socket = new Socket ( adres, port ); 9 PrintWriter out = 10 new PrintWriter ( socket. getoutputstream (), true ); 11 BufferedReader in = new BufferedReader ( new 12 InputStreamReader ( socket. getinputstream ())); 13 System. out. println (in. readline ()); 14 out. println (" Cze ść! Uda ło się!"); 15 System. out. println (in. readline ()); 16 } catch ( UnknownHostException e) { e. printstacktrace (); } 17 catch ( IOException e) { e. printstacktrace (); } 18 finally { try { socket. close (); } 19 catch ( IOException e) { e. printstacktrace (); } 20 } 21 } 22 } Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 16/46
49 Wstęp Gniazda RMI Podsumowanie Użycie gniazda serwera 1 ssocket = new ServerSocket (1234); 2 while ( true ) { 3 Socket s = ssocket. accept (); 4 serveclient ( s); 5 } Użycie gniazda serwera Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 17/46
50 Wstęp Gniazda RMI Podsumowanie Użycie gniazda serwera 1 ssocket = new ServerSocket (1234); 2 while ( true ) { 3 Socket s = ssocket. accept (); 4 serveclient ( s); 5 } Użycie gniazda serwera 1 private static void serveclient ( Socket s) { 2 new Server (s). start (); 3 } Obsługa klienta w nowym wątku Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 17/46
51 Wstęp Gniazda RMI Podsumowanie Implementacja serwera 1 import java. net.*; 2 import java.io.*; 3 public class Server extends Thread { 4 private Socket csocket ; 5 Server ( Socket csocket ) { 6 super (); this. csocket = csocket ; 7 } Implementacja serwera (początek) Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 18/46
52 Wstęp Gniazda RMI Podsumowanie Implementacja serwera 1 PrintWriter out = new PrintWriter ( 2 csocket. getoutputstream (), true ); 3 BufferedReader in = new BufferedReader ( new 4 InputStreamReader ( csocket. getinputstream ())); 5 out. println (" ==> Cze ść "+ip+"! Uda ło Ci się połą czy ć!"); 6 String line ; 7 while (( line = in. readline ())!= null ) { 8 out. println (" ==> Powiedzia łeś: " + line ); 9 } Interakcja z klientem Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 18/46
53 Wstęp Gniazda RMI Podsumowanie Implementacja serwera 1 public void run () { 2 InetAddress ip = csocket. getinetaddress (); 3 System. out. println ("Połą czenie z "+ip ); 4 try { 5 PrintWriter out = new PrintWriter ( 6 csocket. getoutputstream (), true ); 7 BufferedReader in = new BufferedReader ( new 8 InputStreamReader ( csocket. getinputstream ())); 9 out. println (" ==> Cze ść "+ip+"! Uda ło Ci się połą czy ć!"); 10 String line ; 11 while (( line = in. readline ())!= null ) { 12 out. println (" ==> Powiedzia łeś: " + line ); 13 } 14 } catch ( IOException e) { 15 e. printstacktrace (); 16 } finally { 17 try { csocket. close (); } 18 catch ( IOException e) { e. printstacktrace (); } 19 } 20 System. out. println (" Koniec połą czenia z "+ip ); 21 } Kompletna metoda run Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 18/46
54 Wstęp Gniazda RMI Podsumowanie Gniazda i komunikacja Punkty końcowe komunikacji sieciowej Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 19/46
55 Wstęp Gniazda RMI Podsumowanie Gniazda i komunikacja Punkty końcowe komunikacji sieciowej Pozwalają przesyłać komunikaty pomiędzy procesami Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 19/46
56 Wstęp Gniazda RMI Podsumowanie Gniazda i komunikacja Punkty końcowe komunikacji sieciowej Pozwalają przesyłać komunikaty pomiędzy procesami Obsługują różne protokoły warstwy transportowej Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 19/46
57 Wstęp Gniazda RMI Podsumowanie Gniazda i komunikacja Punkty końcowe komunikacji sieciowej Pozwalają przesyłać komunikaty pomiędzy procesami Obsługują różne protokoły warstwy transportowej Interfejs obiektowy w Javie Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 19/46
58 Wstęp Gniazda RMI Podsumowanie Gniazda i komunikacja Punkty końcowe komunikacji sieciowej Pozwalają przesyłać komunikaty pomiędzy procesami Obsługują różne protokoły warstwy transportowej Interfejs obiektowy w Javie Nie zapomnieć o zamykaniu gniazd i strumieni (wycieki pamięci)! Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 19/46
59 Wstęp Gniazda RMI Podsumowanie Gniazda i komunikacja Punkty końcowe komunikacji sieciowej Pozwalają przesyłać komunikaty pomiędzy procesami Obsługują różne protokoły warstwy transportowej Interfejs obiektowy w Javie Nie zapomnieć o zamykaniu gniazd i strumieni (wycieki pamięci)! Aplikacja rozproszona wymaga zdefiniowania protokołu komunikacyjnego Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 19/46
60 Wstęp Gniazda RMI Podsumowanie Gniazda i komunikacja Punkty końcowe komunikacji sieciowej Pozwalają przesyłać komunikaty pomiędzy procesami Obsługują różne protokoły warstwy transportowej Interfejs obiektowy w Javie Nie zapomnieć o zamykaniu gniazd i strumieni (wycieki pamięci)! Aplikacja rozproszona wymaga zdefiniowania protokołu komunikacyjnego Następstwa wymienianych komunikatów Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 19/46
61 Wstęp Gniazda RMI Podsumowanie Gniazda i komunikacja Punkty końcowe komunikacji sieciowej Pozwalają przesyłać komunikaty pomiędzy procesami Obsługują różne protokoły warstwy transportowej Interfejs obiektowy w Javie Nie zapomnieć o zamykaniu gniazd i strumieni (wycieki pamięci)! Aplikacja rozproszona wymaga zdefiniowania protokołu komunikacyjnego Następstwa wymienianych komunikatów Znaczenia wymienianych komunikatów Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 19/46
62 Wstęp Gniazda RMI Podsumowanie Gniazda i komunikacja Punkty końcowe komunikacji sieciowej Pozwalają przesyłać komunikaty pomiędzy procesami Obsługują różne protokoły warstwy transportowej Interfejs obiektowy w Javie Nie zapomnieć o zamykaniu gniazd i strumieni (wycieki pamięci)! Aplikacja rozproszona wymaga zdefiniowania protokołu komunikacyjnego Następstwa wymienianych komunikatów Znaczenia wymienianych komunikatów Protokoły tekstowe i binarne Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 19/46
63 Plan 1 Wstęp 2 Komunikacja sieciowa 3 Zdalne wywołanie metod (RMI) Wstęp Interfejsy Zdalne klasy Działanie RMI Aplikacja RMI 4 Podsumowanie Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 20/46
64 Zdalne wywołanie metod (RMI) Remote Method Invocation Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 21/46
65 Zdalne wywołanie metod (RMI) Remote Method Invocation Sposób tworzenia aplikacji rozproszonych Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 21/46
66 Zdalne wywołanie metod (RMI) Remote Method Invocation Sposób tworzenia aplikacji rozproszonych Wyższy poziom niż gniazda Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 21/46
67 Zdalne wywołanie metod (RMI) Remote Method Invocation Sposób tworzenia aplikacji rozproszonych Wyższy poziom niż gniazda Bazuje na gniazdach Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 21/46
68 Zdalne wywołanie metod (RMI) Remote Method Invocation Sposób tworzenia aplikacji rozproszonych Wyższy poziom niż gniazda Bazuje na gniazdach Koncepcja oparta na RPC (Remote Procedure Call) Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 21/46
69 Idea RMI Wywoływanie metod Na obiektach zdalnych Na innej maszynie wirtualnej Na innej maszynie fizycznej Implementacja w Javie Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 22/46
70 Wywołanie metody na zdalnym obiekcie Zlokalizowanie obiektu rejestr RMI Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 23/46
71 Wywołanie metody na zdalnym obiekcie Zlokalizowanie obiektu rejestr RMI Komunikacja z obiektem Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 23/46
72 Wywołanie metody na zdalnym obiekcie Zlokalizowanie obiektu rejestr RMI Komunikacja z obiektem Zdalne załadowanie definicji klasy dla obiektu Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 23/46
73 Zlokalizowanie obiektu Rejestr rmiregistry Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 24/46
74 Zlokalizowanie obiektu Rejestr rmiregistry Obiekty rejestrują zdalne interfejsy w rejestrze Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 24/46
75 Zlokalizowanie obiektu Rejestr rmiregistry Obiekty rejestrują zdalne interfejsy w rejestrze Pobranie referencji z rejestru, wywołanie metody Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 24/46
76 Zlokalizowanie obiektu Rejestr rmiregistry Obiekty rejestrują zdalne interfejsy w rejestrze Pobranie referencji z rejestru, wywołanie metody Użycie zdalnej referencji z poprzedniego wywołania Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 24/46
77 Komunikacja z obiektem Realizowana przez RMI Niewidoczna dla użytkownika Ukryta za zwykłym wywołaniem metody na obiekcie Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 25/46
78 Interfejsy Wywołujący zdalną metodę obiektu nie musi znać jego implementacji... Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 26/46
79 Interfejsy Wywołujący zdalną metodę obiektu nie musi znać jego implementacji ale musi znać jego interfejs Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 26/46
80 Interfejsy Wywołujący zdalną metodę obiektu nie musi znać jego implementacji ale musi znać jego interfejs Zdalne wywołanie wymaga znajomości zdalnego interfejsu Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 26/46
81 Interfejsy Wywołujący zdalną metodę obiektu nie musi znać jego implementacji ale musi znać jego interfejs Zdalne wywołanie wymaga znajomości zdalnego interfejsu Zdalne interfejsy ustalone i współdzielone przez obie strony Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 26/46
82 Zdalny interfejs w Javie Interfejs Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 27/46
83 Zdalny interfejs w Javie Interfejs Dziedziczący po java.rmi.remote Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 27/46
84 Zdalny interfejs w Javie Interfejs Dziedziczący po java.rmi.remote Każda metoda może wygenerować java.rmi.remoteexception Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 27/46
85 Implementacja zdalnych metod Klasa Javy Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 28/46
86 Implementacja zdalnych metod Klasa Javy Implementująca jeden lub więcej zdalny interfejs Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 28/46
87 Implementacja zdalnych metod Klasa Javy Implementująca jeden lub więcej zdalny interfejs Może implementować wiele innych metod Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 28/46
88 Obiekty zdalne i lokalne w wywołaniach Parametrem zdalnej metody może być obiekt Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 29/46
89 Obiekty zdalne i lokalne w wywołaniach Parametrem zdalnej metody może być obiekt Zdalna metoda może zwracać obiekt Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 29/46
90 Obiekty zdalne i lokalne w wywołaniach Parametrem zdalnej metody może być obiekt Zdalna metoda może zwracać obiekt Do kompilacji wystarczy znać interfejs tego obiektu Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 29/46
91 Obiekty zdalne i lokalne w wywołaniach Parametrem zdalnej metody może być obiekt Zdalna metoda może zwracać obiekt Do kompilacji wystarczy znać interfejs tego obiektu Obiekt zdalny Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 29/46
92 Obiekty zdalne i lokalne w wywołaniach Parametrem zdalnej metody może być obiekt Zdalna metoda może zwracać obiekt Do kompilacji wystarczy znać interfejs tego obiektu Obiekt zdalny przekazany przez zdalną referencję Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 29/46
93 Obiekty zdalne i lokalne w wywołaniach Parametrem zdalnej metody może być obiekt Zdalna metoda może zwracać obiekt Do kompilacji wystarczy znać interfejs tego obiektu Obiekt zdalny przekazany przez zdalną referencję istnieje jedna kopia obiektu Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 29/46
94 Obiekty zdalne i lokalne w wywołaniach Parametrem zdalnej metody może być obiekt Zdalna metoda może zwracać obiekt Do kompilacji wystarczy znać interfejs tego obiektu Obiekt zdalny przekazany przez zdalną referencję istnieje jedna kopia obiektu Obiekt lokalny Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 29/46
95 Obiekty zdalne i lokalne w wywołaniach Parametrem zdalnej metody może być obiekt Zdalna metoda może zwracać obiekt Do kompilacji wystarczy znać interfejs tego obiektu Obiekt zdalny przekazany przez zdalną referencję istnieje jedna kopia obiektu Obiekt lokalny serializowany, przesyłany i deserializowany Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 29/46
96 Obiekty zdalne i lokalne w wywołaniach Parametrem zdalnej metody może być obiekt Zdalna metoda może zwracać obiekt Do kompilacji wystarczy znać interfejs tego obiektu Obiekt zdalny przekazany przez zdalną referencję istnieje jedna kopia obiektu Obiekt lokalny serializowany, przesyłany i deserializowany tworzona zdalna kopia obiektu Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 29/46
97 Obiekty zdalne i lokalne w wywołaniach Parametrem zdalnej metody może być obiekt Zdalna metoda może zwracać obiekt Do kompilacji wystarczy znać interfejs tego obiektu Obiekt zdalny przekazany przez zdalną referencję istnieje jedna kopia obiektu Obiekt lokalny serializowany, przesyłany i deserializowany tworzona zdalna kopia obiektu do użycia obiektu konieczna jest definicja jego klasy! Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 29/46
98 Obiekty zdalne i lokalne w wywołaniach Parametrem zdalnej metody może być obiekt Zdalna metoda może zwracać obiekt Do kompilacji wystarczy znać interfejs tego obiektu Obiekt zdalny przekazany przez zdalną referencję istnieje jedna kopia obiektu Obiekt lokalny serializowany, przesyłany i deserializowany tworzona zdalna kopia obiektu do użycia obiektu konieczna jest definicja jego klasy! klasa musi implementować java.io.serializable Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 29/46
99 Obiekty zdalne i lokalne w wywołaniach Parametrem zdalnej metody może być obiekt Zdalna metoda może zwracać obiekt Do kompilacji wystarczy znać interfejs tego obiektu Obiekt zdalny przekazany przez zdalną referencję istnieje jedna kopia obiektu Obiekt lokalny serializowany, przesyłany i deserializowany tworzona zdalna kopia obiektu do użycia obiektu konieczna jest definicja jego klasy! klasa musi implementować java.io.serializable W czasie działania konieczne jest załadowanie definicji nieznanej klasy! Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 29/46
100 Obiekty zdalne i lokalne w wywołaniach Parametrem zdalnej metody może być obiekt Zdalna metoda może zwracać obiekt Do kompilacji wystarczy znać interfejs tego obiektu Obiekt zdalny przekazany przez zdalną referencję istnieje jedna kopia obiektu Obiekt lokalny serializowany, przesyłany i deserializowany tworzona zdalna kopia obiektu do użycia obiektu konieczna jest definicja jego klasy! klasa musi implementować java.io.serializable W czasie działania konieczne jest załadowanie definicji nieznanej klasy! Dynamiczne ładowanie konieczne zarówno przez klienta jak i serwer Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 29/46
101 Dynamiczne ładowanie kodu klas Z określonego miejsca na dysku (wymaga wielu kopii plików class) Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 30/46
102 Dynamiczne ładowanie kodu klas Z określonego miejsca na dysku (wymaga wielu kopii plików class) RMI potrafi pobrać potrzebne klasy np. przez HTTP (tzw. codebase) Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 30/46
103 Dynamiczne ładowanie kodu klas Z określonego miejsca na dysku (wymaga wielu kopii plików class) RMI potrafi pobrać potrzebne klasy np. przez HTTP (tzw. codebase) Poza rejestrem zdalnych metod konieczne repozytorium z implementacją Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 30/46
104 rmiregistry i współdzielone interfejsy rmiregistry porzebuje plików class dla interfejsów współdzielonych Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 31/46
105 rmiregistry i współdzielone interfejsy rmiregistry porzebuje plików class dla interfejsów współdzielonych Mogą być dostępne lokalnie w CLASSPATH Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 31/46
106 rmiregistry i współdzielone interfejsy rmiregistry porzebuje plików class dla interfejsów współdzielonych Mogą być dostępne lokalnie w CLASSPATH Mogą być ładowane dynamicznie (z codebase serwera) Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 31/46
107 Działanie RMI 1 rmiregistry [ Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 32/46
108 Działanie RMI 1 rmiregistry 2 Serwer [ Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 32/46
109 Działanie RMI 1 rmiregistry 2 Serwer 3 codebase serwera na serwerze HTTP [ Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 32/46
110 Działanie RMI 1 rmiregistry 2 Serwer 3 codebase serwera na serwerze HTTP 4 Klient [ Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 32/46
111 Działanie RMI 1 rmiregistry 2 Serwer 3 codebase serwera na serwerze HTTP 4 Klient 5 codebase klienta na serwerze HTTP [ Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 32/46
112 Komunikacja ze zdalnym obiektem Serwer rejestruje tzw. stub w rmiregistry Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 33/46
113 Komunikacja ze zdalnym obiektem Serwer rejestruje tzw. stub w rmiregistry stub implementuje zdalny interfejs Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 33/46
114 Komunikacja ze zdalnym obiektem Serwer rejestruje tzw. stub w rmiregistry stub implementuje zdalny interfejs rmiregistry zwraca stub do klienta Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 33/46
115 Komunikacja ze zdalnym obiektem Serwer rejestruje tzw. stub w rmiregistry stub implementuje zdalny interfejs rmiregistry zwraca stub do klienta Wywołania metod stuba są przekazywane do zdalnego obiektu Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 33/46
116 Komunikacja ze zdalnym obiektem Serwer rejestruje tzw. stub w rmiregistry stub implementuje zdalny interfejs rmiregistry zwraca stub do klienta Wywołania metod stuba są przekazywane do zdalnego obiektu Wyniki metod zdalnego obiektu są przekazywane do stuba i zwracane do klienta Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 33/46
117 Komunikacja ze zdalnym obiektem Serwer rejestruje tzw. stub w rmiregistry stub implementuje zdalny interfejs rmiregistry zwraca stub do klienta Wywołania metod stuba są przekazywane do zdalnego obiektu Wyniki metod zdalnego obiektu są przekazywane do stuba i zwracane do klienta Komunikacja ukryta przez klientem Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 33/46
118 Bezpieczeństwo Zdalnie załadowany kod może być niebezpieczny Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 34/46
119 Bezpieczeństwo Zdalnie załadowany kod może być niebezpieczny Bezpieczeństwo zapewnia SecurityManager Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 34/46
120 Bezpieczeństwo Zdalnie załadowany kod może być niebezpieczny Bezpieczeństwo zapewnia SecurityManager Wymagany do załadowania zdalnego kodu Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 34/46
121 Bezpieczeństwo Zdalnie załadowany kod może być niebezpieczny Bezpieczeństwo zapewnia SecurityManager Wymagany do załadowania zdalnego kodu Konfigurowany z pliku Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 34/46
122 Bezpieczeństwo Zdalnie załadowany kod może być niebezpieczny Bezpieczeństwo zapewnia SecurityManager Wymagany do załadowania zdalnego kodu Konfigurowany z pliku Ogranicza działania aplikacji Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 34/46
123 Bezpieczeństwo Zdalnie załadowany kod może być niebezpieczny Bezpieczeństwo zapewnia SecurityManager Wymagany do załadowania zdalnego kodu Konfigurowany z pliku Ogranicza działania aplikacji Uruchamiając klienta i serwer trzeba podać ścieżkę do policy file Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 34/46
124 Tworzenie aplikacji RMI Uzgodnienie zdalnych interfejsów Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 35/46
125 Tworzenie aplikacji RMI Uzgodnienie zdalnych interfejsów Implementacja zdalnych interfejsów (serwer) Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 35/46
126 Tworzenie aplikacji RMI Uzgodnienie zdalnych interfejsów Implementacja zdalnych interfejsów (serwer) Implementacja zdalnych wywołań (klient) Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 35/46
127 Uruchamianie aplikacji RMI Kompilacja Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 36/46
128 Uruchamianie aplikacji RMI Kompilacja Udostępnienie w sieci definicji klas klienta Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 36/46
129 Uruchamianie aplikacji RMI Kompilacja Udostępnienie w sieci definicji klas klienta Udostępnienie w sieci definicji klas serwera Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 36/46
130 Uruchamianie aplikacji RMI Kompilacja Udostępnienie w sieci definicji klas klienta Udostępnienie w sieci definicji klas serwera Start rmiregistry Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 36/46
131 Uruchamianie aplikacji RMI Kompilacja Udostępnienie w sieci definicji klas klienta Udostępnienie w sieci definicji klas serwera Start rmiregistry Start serwera (rejestruje zdalne obiekty w rmiregistry) Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 36/46
132 Uruchamianie aplikacji RMI Kompilacja Udostępnienie w sieci definicji klas klienta Udostępnienie w sieci definicji klas serwera Start rmiregistry Start serwera (rejestruje zdalne obiekty w rmiregistry) Start klienta (klientów) Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 36/46
133 Przykładowa aplikacja Zgłaszanie obecności osoby Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 37/46
134 Przykładowa aplikacja Zgłaszanie obecności osoby Klient tworzy nowy obiekt Osoba wraz z danymi Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 37/46
135 Przykładowa aplikacja Zgłaszanie obecności osoby Klient tworzy nowy obiekt Osoba wraz z danymi Klient wywołuje zdalną metodę reportpresenceof podając obiekt klasy Osoba Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 37/46
136 Przykładowa aplikacja Zgłaszanie obecności osoby Klient tworzy nowy obiekt Osoba wraz z danymi Klient wywołuje zdalną metodę reportpresenceof podając obiekt klasy Osoba Serwer zapamiętuje osobę na podstawie danych otrzymanych od klienta Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 37/46
137 Współdzielone części kodu Przy programowaniu Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 38/46
138 Współdzielone części kodu Przy programowaniu Zdalny interfejs zgłaszania obeności (RemotePresenceList) Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 38/46
139 Współdzielone części kodu Przy programowaniu Zdalny interfejs zgłaszania obeności (RemotePresenceList) Interfejs klasy Osoba (OsobaInterface) Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 38/46
140 Współdzielone części kodu Przy programowaniu Zdalny interfejs zgłaszania obeności (RemotePresenceList) Interfejs klasy Osoba (OsobaInterface) Tylko interfejsy! Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 38/46
141 Współdzielone części kodu Przy programowaniu Zdalny interfejs zgłaszania obeności (RemotePresenceList) Interfejs klasy Osoba (OsobaInterface) Tylko interfejsy! Przy uruchomieniu Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 38/46
142 Współdzielone części kodu Przy programowaniu Zdalny interfejs zgłaszania obeności (RemotePresenceList) Interfejs klasy Osoba (OsobaInterface) Tylko interfejsy! Przy uruchomieniu Definicja klasy Osoba (skompilowana) Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 38/46
143 Współdzielone interfejsy 1 package shared ; 2 public interface RemotePresenceList 3 extends java. rmi. Remote { 4 5 public boolean reportpresenceof ( OsobaInterface o) 6 throws java. rmi. RemoteException ; 7 8 } Interfejs zdalnej rejestracji Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 39/46
144 Współdzielone interfejsy 1 package shared ; 2 public interface RemotePresenceList 3 extends java. rmi. Remote { 4 5 public boolean reportpresenceof ( OsobaInterface o) 6 throws java. rmi. RemoteException ; 7 8 } Interfejs zdalnej rejestracji 1 package shared ; 2 public interface OsobaInterface { 3 public String getfirstname (); 4 public String getlastname (); 5 public int getindexnumber (); 6 } Interfejs osoby Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 39/46
145 Implementacja zdalnego interfejsu (serwer) 1 package server ; 2 3 import java. rmi. RemoteException ; 4 import java. rmi. registry. LocateRegistry ; 5 import java. rmi. registry. Registry ; 6 import java. rmi. server. UnicastRemoteObject ; 7 8 import shared.*; 9 10 public class PresenceList implements RemotePresenceList { Początek implementacji zdalnego interfejsu Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 40/46
146 Implementacja zdalnego interfejsu (serwer) 12 public boolean reportpresenceof ( OsobaInterface o) { 13 System. out. print (" Zapisano obecno ść osoby : "); 14 System. out. print (o. getfirstname () + " "); 15 System. out. print (o. getlastname () + " "); 16 System. out. println (" indeks : " + o. getindexnumber ()); return true ; 19 } Implementacja metody wywoływanej zdalnie Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 40/46
147 Implementacja zdalnego interfejsu (serwer) 21 public static void main ( String args []) { 22 if ( System. getsecuritymanager () == null ) { 23 System. setsecuritymanager ( new SecurityManager ()); 24 } 25 try { 26 PresenceList list = new PresenceList (); 27 RemotePresenceList remote_list = ( RemotePresenceList ) 28 UnicastRemoteObject. exportobject ( list, 0); 29 Registry registry = LocateRegistry. getregistry (); 30 registry. rebind (" RemotePresenceList ", remote_list ); 31 System. out. println (" Remote presence list bound "); 32 } catch ( RemoteException e) { 33 e. printstacktrace (); 34 } 35 } Utworzenie obiektu i rejestracja zdalnej metody Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 40/46
148 Wywołanie zdalnej metody (klient) 1 package client ; 2 3 import java. rmi. RemoteException ; 4 import java. rmi. NotBoundException ; 5 import java. rmi. registry. LocateRegistry ; 6 import java. rmi. registry. Registry ; 7 8 import shared.*; 9 import client. shared. Student ; public class ReportStudent { Początek implementacji części klienckiej Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 41/46
149 Wywołanie zdalnej metody (klient) 13 public static void main ( String args []){ 14 if ( System. getsecuritymanager () == null ) { 15 System. setsecuritymanager ( new SecurityManager ()); 16 } Student ja = new Student (" Jan ", " Kowalski ", 1234); Operacje wstępne Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 41/46
150 Wywołanie zdalnej metody (klient) 19 try { 20 Registry registry = LocateRegistry. getregistry ( args [0]); 21 RemotePresenceList list = ( RemotePresenceList ) 22 registry. lookup (" RemotePresenceList "); boolean result = list. reportpresenceof ( ja ); if ( result ) { 27 System. out. println (" Obecno ść zarejestrowano poprawnie "); 28 } else { 29 System. out. println (" System odm ówił przyj ę cia zgł oszenia "); 30 } 31 } 32 catch ( RemoteException e) { e. printstacktrace (); } 33 catch ( NotBoundException e) { e. printstacktrace (); } 34 } Wywołanie zdalnej metody Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 41/46
151 Wywołanie zdalnej metody (klient) 1 package client. shared ; 2 3 import java. io. Serializable ; 4 import shared.*; 5 6 public class Student implements OsobaInterface, Serializable { 7 private String fname, lname ; 8 private int index ; 9 10 public Student ( String fname, String lname, int index ) { 11 this. fname = fname ; this. lname = lname ; 12 this. index = index ; 13 } public String getfirstname () { return fname ; } 16 public String getlastname () { return lname ; } 17 public int getindexnumber () { return index ; } 18 } Klasa przekazywana do zdalnej metody Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 41/46
152 Przygotowanie do uruchomienia Kompilacja kodu współdzielonego, serwera i klienta Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 42/46
153 Przygotowanie do uruchomienia Kompilacja kodu współdzielonego, serwera i klienta Utworzenie archiwów jar skomilowanego kodu: Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 42/46
154 Przygotowanie do uruchomienia Kompilacja kodu współdzielonego, serwera i klienta Utworzenie archiwów jar skomilowanego kodu: shared.jar współdzielone interfejsy (serwer) Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 42/46
155 Przygotowanie do uruchomienia Kompilacja kodu współdzielonego, serwera i klienta Utworzenie archiwów jar skomilowanego kodu: shared.jar współdzielone interfejsy (serwer) client shared.jar klasy klient potrzebne serwerowi (klient) Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 42/46
156 Przygotowanie do uruchomienia Kompilacja kodu współdzielonego, serwera i klienta Utworzenie archiwów jar skomilowanego kodu: shared.jar współdzielone interfejsy (serwer) client shared.jar klasy klient potrzebne serwerowi (klient) Umieszczenie plików jar na serwerach www Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 42/46
157 Przygotowanie do uruchomienia Kompilacja kodu współdzielonego, serwera i klienta Utworzenie archiwów jar skomilowanego kodu: shared.jar współdzielone interfejsy (serwer) client shared.jar klasy klient potrzebne serwerowi (klient) Umieszczenie plików jar na serwerach www Konfiguracja SecurityManagera client.policy i server.policy 1 grant codebase " file :${ user. home }/ sciezka /-" { 2 permission java. security. AllPermission ; 3 }; Przykładowa definicja polityki bezpieczeństwa Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 42/46
158 Uruchomienie aplikacji 1 Uruchomenie rmiregistry (javase 7) rmiregistry -J- Djava. rmi. server. usecodebaseonly = false Uruchomienie rmiregistry guides/rmi/enhancements-7.html This change of default value may cause RMI-based applications to break unexpectedly. Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 43/46
159 Uruchomienie aplikacji 1 Uruchomenie rmiregistry (javase 7) rmiregistry -J- Djava. rmi. server. usecodebaseonly = false Uruchomienie rmiregistry 2 Uruchomienie serwera (javase 7) java -Djava. security. policy = server. policy \ -Djava. rmi. server. codebase = http :// s1/ shared. jar \ -Djava. rmi. server. usecodebaseonly = false \ server / PresenceList Uruchomienie serwera Może być potrzebne też java.rmi.server.hostname=ip Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 43/46
160 Uruchomienie aplikacji 1 Uruchomenie rmiregistry (javase 7) rmiregistry -J- Djava. rmi. server. usecodebaseonly = false Uruchomienie rmiregistry 2 Uruchomienie serwera (javase 7) java -Djava. security. policy = server. policy \ -Djava. rmi. server. codebase = http :// s1/ shared. jar \ -Djava. rmi. server. usecodebaseonly = false \ server / PresenceList Uruchomienie serwera 3 Uruchomienie klienta (javase 7) java -Djava. security. policy = client. policy \ -Djava. rmi. server. codebase = http :// s2/ client_shared. jar \ client / ReportStudent adres_serwera_z_rmiregistry Uruchomienie klienta Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 43/46
161 RMI podsumowanie Proste wywołanie metody na zdalnym obiekcie Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 44/46
162 RMI podsumowanie Proste wywołanie metody na zdalnym obiekcie Wymaga sporo przygotowań Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 44/46
163 RMI podsumowanie Proste wywołanie metody na zdalnym obiekcie Wymaga sporo przygotowań Kwestia dostępności kodu Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 44/46
164 RMI podsumowanie Proste wywołanie metody na zdalnym obiekcie Wymaga sporo przygotowań Kwestia dostępności kodu Bezpieczeństwo Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 44/46
165 RMI podsumowanie Proste wywołanie metody na zdalnym obiekcie Wymaga sporo przygotowań Kwestia dostępności kodu Bezpieczeństwo Wysokopoziomowy model programowania rozproszonego Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 44/46
166 Wstęp Gniazda RMI Podsumowanie Plan 1 Wstęp 2 Komunikacja sieciowa 3 Zdalne wywołanie metod (RMI) 4 Podsumowanie Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 45/46
167 Wstęp Gniazda RMI Podsumowanie Programowanie rozproszone w Javie (omówione aspekty) Obsługa gniazd, wymiana danych Strumieniowych (TCP) Datagramowych (UDP), multicast Brak gniazd surowych (raw) Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 46/46
168 Wstęp Gniazda RMI Podsumowanie Programowanie rozproszone w Javie (omówione aspekty) Obsługa gniazd, wymiana danych Strumieniowych (TCP) Datagramowych (UDP), multicast Brak gniazd surowych (raw) Remote Method Invocation (RMI) Model wysokopoziomowy Narzut organizacyjny Gotowy protokół komunikacyjny Rozproszone programowanie obiektowe Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 46/46
Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html
Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html Dr inż. Zofia Kruczkiewicz wykład 4 Programowanie aplikacji internetowych, wykład 4 1 1. Zadania aplikacji rozproszonych obiektów
Bardziej szczegółowoObiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1
Obiektowe programowanie rozproszone Java RMI Krzysztof Banaś Systemy rozproszone 1 Java RMI Mechanizm zdalnego wywołania metod Javy (RMI Remote Method Invocation) posiada kilka charakterystycznych cech,
Bardziej szczegółowoPodejście obiektowe do budowy systemów rozproszonych
Podejście obiektowe do budowy systemów rozproszonych interfejs (w języku Java), wywiedziony z Remote obiekt aplikacja kliencka interfejs serwer stub szkielet sieć Dariusz Wawrzyniak 1 Mechanizm RMI umożliwia
Bardziej szczegółowoJava RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć
Podejście obiektowe do budowy systemów rozproszonych interfejs (w języku Java), wywiedziony z Remote obiekt aplikacja kliencka interfejs serwer stub szkielet sieć Mechanizm RMI umożliwia tworzenie obiektów
Bardziej szczegółowoWywoływanie metod zdalnych
Wywoływanie metod zdalnych model systemu Wywoływanie metod zdalnych aplikacja kliencka interfejs obiekt serwer Podejście obiektowe do budowy systemów rozproszonych proxy szkielet sieć Istota podejścia
Bardziej szczegółowoPodejście obiektowe do budowy systemów rozproszonych
Podejście obiektowe do budowy systemów rozproszonych interfejs (w języku Java), wywiedziony z Remote obiekt aplikacja kliencka interfejs serwer stub szkielet sieć Dariusz Wawrzyniak (IIPP) 1 Mechanizm
Bardziej szczegółowoRemote Method Invocation 17 listopada 2010
Podejście obiektowe do budowy systemów rozproszonych interfejs (w języku Java), wywiedziony z Remote obiekt aplikacja klienckak interfejs serwer stub szkielet sieć Mechanizm RMI umożliwia tworzenie obiektów
Bardziej szczegółowoJava RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć
interfejs (w języku Java), wywiedziony z Remote obiekt Podejście obiektowe do budowy systemów rozproszonych aplikacja kliencka stub interfejs serwer szkielet sieć Mechanizm RMI umożliwia tworzenie obiektów
Bardziej szczegółowoRemote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1
interfejs (w języku Java), wywiedziony z Remote obiekt Podejście obiektowe do budowy systemów rozproszonych aplikacja kliencka interfejs serwer stub szkielet sieć Mechanizm RMI umożliwia tworzenie obiektów
Bardziej szczegółowoWywoływanie metod zdalnych
Wywoływanie metod zdalnych Podejście obiektowe do budowy systemów rozproszonych Wywoływanie metod zdalnych model systemu obiekt aplikacja kliencka interfejs serwer proxy szkielet sieć Istota podejścia
Bardziej szczegółowoRemote Method Invocation 17 listopada rozproszonych. Dariusz Wawrzyniak (IIPP) 1
P d jś i bi kt d b d t ó Podejście obiektowe do budowy systemów rozproszonych Dariusz Wawrzyniak (IIPP) 1 interfejs (w języku Java),wywiedziony idi z Remote obie kt aplikacja klie ncka interfe js serw
Bardziej szczegółowoAplikacje RMI Lab4
Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html Lab4 Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych 1 1. Koncepcja budowy aplikacji RMI (aplikacja rozproszonych
Bardziej szczegółowoZdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu
Zdalne wywołanie metod - koncepcja Oprogramowanie systemów równoległych i rozproszonych Wykład 7 RMI (Remote Method Invocation) - obiektowe RPC, dostarcza klientowi interfejs do obiektu, implementacja
Bardziej szczegółowoOprogramowanie systemów równoległych i rozproszonych Wykład 7
Wykład 7 p. 1/2 Oprogramowanie systemów równoległych i rozproszonych Wykład 7 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Zdalne wywołanie
Bardziej szczegółowoJava programowanie w sieci. java.net RMI
Java programowanie w sieci java.net RMI Programowanie sieciowe OSI WARSTWA APLIKACJI (7) WARSTWA PREZENTACJI(6) WARSTWA SESJI (5) WARSTWA TRANSPORTU (4) DoD Warstwa aplikacji (HTTP) Transport (gniazdka)
Bardziej szczegółowoSystemy Rozproszone - Ćwiczenie 6
Systemy Rozproszone - Ćwiczenie 6 1 Obiekty zdalne Celem ćwiczenia jest stworzenie obiektu zdalnego świadczącego prostą usługę nazewniczą. Nazwy i odpowiadające im punkty końcowe będą przechowywane przez
Bardziej szczegółowoRMI-2. Java Remote Method Invocation (RMI) na podstawie m.in. podręcznika firmy Sun Microsystems SYSTEMY ROZPROSZONE
Java Remote Method Invocation (RMI) na podstawie m.in. podręcznika firmy Sun Microsystems www.cs.agh.edu.pl/~slawek/zrodla_rmi2.zip Kilka pytań Co mamy? rok 2005-ty, gotową wersję 2 programu NoteBoard.
Bardziej szczegółowoPlatformy Programistyczne Zagadnienia sieciowe i wątki
Platformy Programistyczne Zagadnienia sieciowe i wątki Agata Migalska 27/28 maja 2014 Komunikacja sieciowa 1 Komunikacja sieciowa 2 Wiele wątków 3 Serializacja Architektura typu klient-serwer Architektura
Bardziej szczegółowoPrzykłady interfejsu TCP i UDP w Javie
Przykłady interfejsu TCP i UDP w Javie W Javie interfejsy TCP i UDP znajdują się w pakiecie java.net http://docs.oracle.com/javase/6/docs/api/java/net/packagesummary.html 1 Przykład interfejsu UDP Protokół
Bardziej szczegółowosieć 4) Mechanizm RMI jest zazwyczaj wykorzystywany w rozwiązaniach typu klient-serwer.
RMI (Remote Method Invocation) zdalne wywołanie metod Część 1 1) RMI jest mechanizmem, który pozwala danej aplikacji: wywoływać metody obiektów zdalnych oraz uzyskać dostęp do obiektów zdalnych (np. w
Bardziej szczegółowoAplikacje RMI. Budowa aplikacji rozproszonych. Część 2.
Aplikacje RMI Część 2 Budowa aplikacji rozproszonych http://java.sun.com/j2se/1.5.0/docs/guide/rmi/socketfactory/index.html I. Implementacja gniazd dziedziczących po Socket i ServerSocket oraz produkcji
Bardziej szczegółowoKomunikacja z użyciem gniazd aplikacje klient-serwer
Programowanie obiektowe Komunikacja z użyciem gniazd aplikacje klient-serwer Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski @ pwr.wroc.pl Architektura
Bardziej szczegółowoProgramy typu klient serwer. Programowanie w środowisku rozproszonym. Wykład 5.
Programy typu klient serwer. Programowanie w środowisku rozproszonym. Wykład 5. Schemat Internetu R R R R R R R 2 Model Internetu 3 Protokoły komunikacyjne stosowane w sieci Internet Protokoły warstwy
Bardziej szczegółowoProgramowanie współbieżne i rozproszone
Programowanie współbieżne i rozproszone WYKŁAD 6 dr inż. Komunikowanie się procesów Z użyciem pamięci współdzielonej. wykorzystywane przede wszystkim w programowaniu wielowątkowym. Za pomocą przesyłania
Bardziej szczegółowoSystemy rozproszone. Dr inż. L. Miękina. Department of Robotics and Mechatronics AGH University of Science and Technology 1/1
1/1 Systemy rozproszone Dr inż. L. Miękina Department of Robotics and Mechatronics AGH University of Science and Technology Marzec, 2013 RMI - zdalne wywołanie metod Rozproszone obiekty Stan obiektu składa
Bardziej szczegółowoInterfejsy w Javie. Przykład zastosowania interfejsów:
1 Plan wykładu 1. Interfejsy w Javie. 2. Zdalne wywołanie metod (Remote Method Invocation). interfejsy w RMI, architektura RMI, przykładowa aplikacja korzystająca z RMI, przekazywanie parametrów, dystrybucja
Bardziej szczegółowoAplikacja wielowątkowa prosty komunikator
Aplikacja wielowątkowa prosty komunikator Klient 0 (host 1) Wątek 0 Komponent serwera Wątek pochodny 3.1 Klient 1 (host 2) Wątek 1 Komponent serwera Wątek pochodny 3.2 Host 4 Serwer Wątek 3 Klient 2 (host
Bardziej szczegółowoPodstawy i języki programowania
Podstawy i języki programowania Laboratorium 8 - wprowadzenie do obsługi plików tekstowych i wyjątków mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 11 grudnia 2017 1 / 34 mgr inż. Krzysztof
Bardziej szczegółowoProgramowanie w języku Java
Programowanie w języku Java Wykład 4: Programowanie rozproszone: TCP/IP, URL. Programowanie sieciowe w Javie proste programowanie sieciowe (java.net) na poziomie UDP na poziomie IP na poziomie URL JDBC
Bardziej szczegółowoRozproszone systemy internetowe. Wprowadzenie. Koncepcja zdalnego wywołania procedury
Rozproszone systemy internetowe Wprowadzenie. Koncepcja zdalnego wywołania procedury Zakres tematyczny przedmiotu Aplikacje rozproszone Technologie /standardy internetowe Programowanie obiektowe 2 Co będzie
Bardziej szczegółowoWątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego
Wątki Wątek - definicja Ciąg instrukcji (podprogram) który może być wykonywane współbieżnie (równolegle) z innymi programami, Wątki działają w ramach tego samego procesu Współdzielą dane (mogą operować
Bardziej szczegółowoJAVA I SIECI. MATERIAŁY: http://docs.oracle.com/javase/tutorial/networking/index.html
JAVA I SIECI ZAGADNIENIA: URL, Interfejs gniazd, transmisja SSL, protokół JNLP. MATERIAŁY: http://docs.oracle.com/javase/tutorial/networking/index.html http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK JAVA,
Bardziej szczegółowoAplikacja wielow tkowa prosty komunikator
Aplikacja wielow tkowa prosty komunikator Klient 0 (host 1) W tek 0 Komponent serwera W tek pochodny 3.1 Klient 1 (host 2) W tek 1 Komponent serwera W tek pochodny 3.2 Host 4 Serwer W tek 3 Klient 2 (host
Bardziej szczegółowoNetworking. Zaawansowane technologie Javy 2019
Networking Zaawansowane technologie Javy 2019 Model klient-serwer W modelu klient-serwer (ang. client-server) dane trzymane są na serwerze, interfejs użytkownika i logika przetwarzania danych są realizowane
Bardziej szczegółowoTworzenie i wykorzystanie usług
Strona 1 Co to jest usługa w systemie Android? Usługi HTTP Obsługa wywołania HTTP GET Obsługa wywołania HTTP POST Obsługa wieloczęściowego wywołania HTTP POST Usługi lokalne Usługi zdalne Tworzenie usługi
Bardziej szczegółowoKurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016
Wykład 1 3 marca 2016 Słowa kluczowe języka Java abstract, break, case, catch, class, const, continue, default, do, else, enum, extends, final, finally, for, goto, if, implements, import, instanceof, interface,
Bardziej szczegółowoKatedra Architektury Systemów Komputerowych Wydział Elektroniki, Telekomunikacji i Informatyki Politechniki Gdańskiej
Katedra Architektury Systemów Komputerowych Wydział Elektroniki, Telekomunikacji i Informatyki Politechniki Gdańskiej dr inż. Paweł Czarnul pczarnul@eti.pg.gda.pl Architektury usług internetowych laboratorium
Bardziej szczegółowoWybrane działy Informatyki Stosowanej
Wybrane działy Informatyki Stosowanej Dr inż. Andrzej Czerepicki a.czerepicki@wt.pw.edu.pl http://www2.wt.pw.edu.pl/~a.czerepicki 2017 APLIKACJE SIECIOWE Definicja Architektura aplikacji sieciowych Programowanie
Bardziej szczegółowoTworzenie aplikacji rozproszonej w Sun RPC
Tworzenie aplikacji rozproszonej w Sun RPC Budowa aplikacji realizowana jest w następujących krokach: Tworzenie interfejsu serwera w języku opisu interfejsu RPCGEN Tworzenie: namiastki serwera namiastki
Bardziej szczegółowoRemote Method Invocation
Remote Method Invocation 1. Interfejsy w Javie. 2. Zdalne wywołanie metod (Remote Method Invocation). interfejsy w RMI, 3. Przykładowa aplikacja korzystająca z RMI, 4. Własne gniazda w RMI. 5. Dystrybucja
Bardziej szczegółowoMichał Jankowski. Remoting w.net 2.0
Michał Jankowski Remoting w.net 2.0 Co to jest? Remoting jest zbiorem funkcji pozwalającym na komunikacje miedzy aplikacjami zarówno w obrębie jednego komputera jak i poprzez sieć Pozwala na komunikację
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Wykład 2: Wstęp do języka Java 3/4/2013 S.Deniziak: Programowanie obiektowe - Java 1 Cechy języka Java Wszystko jest obiektem Nie ma zmiennych globalnych Nie ma funkcji globalnych
Bardziej szczegółowoNarzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl
Narzędzia i aplikacje Java EE Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl Niniejsze opracowanie wprowadza w technologię usług sieciowych i implementację usługi na platformie Java EE (JAX-WS) z
Bardziej szczegółowo1. Model klient-serwer
1. 1.1. Model komunikacji w sieci łącze komunikacyjne klient serwer Tradycyjny podziała zadań: Klient strona żądająca dostępu do danej usługi lub zasobu Serwer strona, która świadczy usługę lub udostępnia
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Wykład 5 Marcin Młotkowski 23 marca 2017 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 50 Historia Początkowe założenia Projekt OAK Sterowanie urządzeniami
Bardziej szczegółowoProgramowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków
Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków mgr inż. Maciej Lasota Version 1.0, 13-05-2017 Spis treści Wyjątki....................................................................................
Bardziej szczegółowoObiekty sieciowe - gniazda Komputery w sieci Internet komunikują się ze sobą poprzez:
Obiekty sieciowe - gniazda Komputery w sieci Internet komunikują się ze sobą poprzez: TCP (Transport Control Protocol) User Datagram Protocol (UDP). TCP/IP (IP - Iternet Protocol) jest warstwowym zestawem
Bardziej szczegółowoZadanie 2: transakcyjny protokół SKJ (2015)
Zadanie 2: transakcyjny protokół SKJ (2015) 1 Wstęp Zadanie polega na zaprojektowaniu niezawodnego protokołu transakcyjnego bazującego na protokole UDP. Protokół ten ma być realizowany przez klasy implementujące
Bardziej szczegółowoZdalne wywołanie procedur. Krzysztof Banaś Systemy rozproszone 1
Zdalne wywołanie procedur Krzysztof Banaś Systemy rozproszone 1 RPC Komunikacja za pomocą gniazd jest wydajna, gdyż korzystamy z funkcji systemowych niewygodna, gdyż musimy wyrażać ją za pomocą jawnego
Bardziej szczegółowoProgramowanie sieciowe
Programowanie sieciowe Wykład 5: Java sieciowa cd. mgr inŝ. Paweł Kośla mgr Marcin Raniszewski Łódź, 2009 1 Plan wykładu ServerSocket serwer TCP DatagramSocket i DatagramPacket UDP FTP 2 Serwer TCP Gniazdo
Bardziej szczegółowo1. Co można powiedzieć o poniższym kodzie? public interface I { void m1() {}; static public void m2() {}; void abstract m3();
1. Co można powiedzieć o poniższym kodzie? public interface I { void m1() {; static public void m2() {; void abstract m3(); default static void m4() {; a) Poprawnie zadeklarowano metodę m1() b) Poprawnie
Bardziej szczegółowoTworzenia aplikacji rozproszonej RMI
Tworzenia aplikacji rozproszonej RMI Mówiąc o aplikacjach RMI wyróżnia się w nich dwa typy obiektów: obiekty wywołujące metody zdalne (klienci) obiekty udostępniające metody zdalne (serwery) RMI dostarcza
Bardziej szczegółowoWprowadzenie. Dariusz Wawrzyniak 1
Dariusz Wawrzyniak Politechnika Poznańska Instytut Informatyki ul. Piotrowo 2 (CW, pok. 5) 60-965 Poznań Dariusz.Wawrzyniak@cs.put.poznan.pl Dariusz.Wawrzyniak@put.edu.pl www.cs.put.poznan.pl/dwawrzyniak
Bardziej szczegółowoWątki. Definiowanie wątków jako klas potomnych Thread. Nadpisanie metody run().
Wątki Streszczenie Celem wykładu jest wprowadzenie do obsługi wątków w Javie. Czas wykładu 45 minut. Definiowanie wątków jako klas potomnych Thread Nadpisanie metody run(). class Watek extends Thread public
Bardziej szczegółowoAdresy URL. Zaawansowane technologie Javy 2019
Adresy URL Zaawansowane technologie Javy 2019 Podstawowe pojęcia dotyczące sieci Sieć to zbiór komputerów i innych urządzeń, które mogą się ze sobą komunikować w czasie rzeczywistym za pomocą transmisji
Bardziej szczegółowoArchitektury systemów rozproszonych LABORATORIUM. Ćwiczenie 1
Architektury systemów rozproszonych LABORATORIUM Ćwiczenie 1 Temat: Aplikacja klient-serwer - implementacja w środowisku QT Creator. Przykładowy projekt aplikacji typu klient - serwer został udostępniony
Bardziej szczegółowoJAVA W SUPER EXPRESOWEJ PIGUŁCE
JAVA W SUPER EXPRESOWEJ PIGUŁCE Obiekt Obiekty programowe to zbiór własności i zachowań (zmiennych i metod). Podobnie jak w świecie rzeczywistym obiekty posiadają swój stan i zachowanie. Komunikat Wszystkie
Bardziej szczegółowoKOMUNIKACJA MIĘDZYPROCESOWA O B S Ł U G A WEJŚCIA/WYJŚCIA
Wykorzystano fragmenty wykładów M. Piotrowskiego i M. Wójcika KOMUNIKACJA MIĘDZYPROCESOWA O B S Ł U G A WEJŚCIA/WYJŚCIA Waldemar Korłub Platformy Technologiczne KASK ETI Politechnika Gdańska Komunikacja
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe IV. Interfejsy i klasy wewnętrzne Małgorzata Prolejko OBI JA16Z03 Plan Właściwości interfejsów. Interfejsy a klasy abstrakcyjne. Klonowanie obiektów. Klasy wewnętrzne. Dostęp do
Bardziej szczegółowoKurs programowania. Wykład 10. Wojciech Macyna. 05 maja 2016
Wykład 10 05 maja 2016 Biblioteka wejścia/wyjścia (Input/Output) import java.io.*; Umożliwia przechowywania danych na nośniku zewnętrznym Dane moga być wysyłane do plików, na drukarkę, do bufora pamięci,
Bardziej szczegółowoK O M U N I K A C J A MIĘDZYPROCESOWA O B S Ł U G A WEJŚCIA/WYJŚCIA
Wykorzystano fragmenty wykładów M. Piotrowskiego i M. Wójcika K O M U N I K A C J A MIĘDZYPROCESOWA O B S Ł U G A WEJŚCIA/WYJŚCIA Waldemar Korłub Platformy Technologiczne KASK ETI Politechnika Gdańska
Bardziej szczegółowoRPC. Zdalne wywoływanie procedur (ang. Remote Procedure Calls )
III RPC Zdalne wywoływanie procedur (ang. Remote Procedure Calls ) 1. Koncepcja Aplikacja wywołanie procedury parametry wyniki wykonanie procedury wynik komputer klienta komputer serwera Zaletą takiego
Bardziej szczegółowoJava a dost p do Internetu.
Java a dost p do Internetu. Robert A. Kªopotek r.klopotek@uksw.edu.pl Wydziaª Matematyczno-Przyrodniczy. Szkoªa Nauk cisªych, UKSW 20.04.2017 Java a dost p do Internetu Java Networking - jest koncepcj
Bardziej szczegółowoJava programowanie sieciowe
Java programowanie sieciowe Podstawowe pojęcia dotyczące sieci Sieć to zbiór komputerów i innych urządzeń, które mogą się ze sobą komunikować w czasie rzeczywistym za pomocą transmisji danych. Każda maszyna
Bardziej szczegółowoMechanizmy pracy równoległej. Jarosław Kuchta
Mechanizmy pracy równoległej Jarosław Kuchta Zagadnienia Algorytmy wzajemnego wykluczania algorytm Dekkera Mechanizmy niskopoziomowe przerwania mechanizmy ochrony pamięci instrukcje specjalne Mechanizmy
Bardziej szczegółowoObliczenia równoległe i rozproszone w JAVIE. Michał Kozłowski 30 listopada 2003
Obliczenia równoległe i rozproszone w JAVIE Michał Kozłowski 30 listopada 2003 Wątki w JAVIE Reprezentacja wątków jako obiektów Uruchamianie i zatrzymywanie wątków Realizacja wątków Ograniczenia Mechanizmy
Bardziej szczegółowoProgramowanie aplikacji w architekturze Klient-Serwer - UDP
Katedra Inżynierii Komputerowej Koszalin 2002 Programowanie dla sieci Wykłady i ćwiczenia Dariusz Rataj Część 2 Programowanie aplikacji w architekturze Klient-Serwer - UDP Kontakt email: rataj@man.koszalin.pl
Bardziej szczegółowoWspółbieżność w środowisku Java
Współbieżność w środowisku Java Wątki i ich synchronizacja Zagadnienia Tworzenie wątków Stany wątków i ich zmiana Demony Synchronizacja wątków wzajemne wykluczanie oczekiwanie na zmiennych warunkowych
Bardziej szczegółowoMultimedia JAVA. Historia
Multimedia JAVA mgr inż. Piotr Odya piotrod@sound.eti.pg.gda.pl Historia 1990 rozpoczęcie prac nad nowym systemem operacyjnym w firmie SUN, do jego tworzenia postanowiono wykorzystać nowy język programowania
Bardziej szczegółowoBezpieczne uruchamianie apletów wg
Bezpieczne uruchamianie apletów wg http://java.sun.com/docs/books/tutorial/security1.2/ Zabezpieczenia przed uruchamianiem apletów na pisanych przez nieznanych autorów 1) ograniczenie możliwości odczytywania,
Bardziej szczegółowoObszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),
Tworzenie obiektów Dostęp do obiektów jest realizowany przez referencje. Obiekty w języku Java są tworzone poprzez użycie słowa kluczowego new. String lan = new String( Lancuch ); Obszary pamięci w których
Bardziej szczegółowoProgramowanie obiektowe
Przygotował: Jacek Sroka 1 Programowanie obiektowe Wykład 9 Serializacja Przygotował: Jacek Sroka 2 Przypomnienie Abstrakcja strumienia hierarchia binarna InputStream/OutputStream hierarchia znakowa Reader/Writer
Bardziej szczegółowoProxy (pełnomocnik) Cel: Zastosowanie: Dostarczyć zamiennik pewnego obiektu, pozwalający kontrolować dostęp do niego.
Proxy (pełnomocnik) Cel: Dostarczyć zamiennik pewnego obiektu, pozwalający kontrolować dostęp do niego. Zastosowanie: Wszędzie tam, gdzie oczekujemy bardziej zaawansowanego odwołania do obiektu, niż zwykły
Bardziej szczegółowoWprowadzenie do technologii Web Services: SOAP, WSDL i UDDI
Wprowadzenie do technologii Web Services: SOAP, WSDL i UDDI Maciej Zakrzewicz PLOUG mzakrz@cs.put.poznan.pl Plan prezentacji Wprowadzenie do architektury zorientowanej na usługi Charakterystyka technologii
Bardziej szczegółowoJAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.
JAVA Java jest wszechstronnym językiem programowania, zorientowanym obiektowo, dostarczającym możliwość uruchamiania apletów oraz samodzielnych aplikacji. Java nie jest typowym kompilatorem. Źródłowy kod
Bardziej szczegółowoJava Zadanie 1. Aby poprawnie uruchomić aplikację desktopową, należy zaimplementować główną metodę zapewniającą punkt wejścia do programu.
Wstęp Java Zadanie Celem laboratorium jest zapoznanie się z podstawami platformy oraz języka Java. W ramach zadania należy przygotować aplikację zarządzania notatkami użytkownika obsługiwaną z konsoli.
Bardziej szczegółowoInterfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej
Programowanie obiektowe Interfejsy Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Interfejsy Autor: Paweł Rogaliński Instytut Informatyki,
Bardziej szczegółowoKurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019
Wykład 3 22 marca 2019 Klasy wewnętrzne Klasa wewnętrzna class A {... class B {... }... } Klasa B jest klasa wewnętrzna w klasie A. Klasa A jest klasa otaczajac a klasy B. Klasy wewnętrzne Właściwości
Bardziej szczegółowoRESTful Android. Na co zwrócić uwagę przy tworzeniu aplikacji klienckich REST na Androidzie
RESTful Android Na co zwrócić uwagę przy tworzeniu aplikacji klienckich REST na Androidzie Jacek Laskowski jacek@japila.pl http://www.jaceklaskowski.pl wersja 1.0, 08.12.2011 O prelegencie - Jacek Laskowski
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć
Bardziej szczegółowo1. Co można powiedzieć o poniższym kodzie?
1. Co można powiedzieć o poniższym kodzie? void m(int a) { int m(string s){return Integer.parseInt(s); String m(int a){ return Integer.toString(a); a) Jego kompilacja powiedzie się b) Jego kompilacja nie
Bardziej szczegółowoSerwer współbieżny połączeniowy
Serwery współbieżne 1. Serwery współbieżne serwery połączeniowe, usuwanie zakończonych procesów, serwery bezpołączeniowe, 2. Jednoprocesowe serwery współbieżne. koncepcja i implementacja. 1 Serwer współbieżny
Bardziej szczegółowoJava. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak
Java język programowania obiektowego Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak 1 Język Java Język Java powstał w roku 1995 w firmie SUN Microsystems Java jest językiem: wysokiego
Bardziej szczegółowoKlient-Serwer Komunikacja przy pomocy gniazd
II Klient-Serwer Komunikacja przy pomocy gniazd Gniazda pozwalają na efektywną wymianę danych pomiędzy procesami w systemie rozproszonym. Proces klienta Proces serwera gniazdko gniazdko protokół transportu
Bardziej szczegółowoAplikacje w Javie- wykład 11 Wątki-podstawy
1 Aplikacje w Javie- wykład 11 Wątki-podstawy Treści prezentowane w wykładzie zostały oparte o: Barteczko, JAVA Programowanie praktyczne od podstaw, PWN, 2014 http://docs.oracle.com/javase/8/docs/ http://docs.oracle.com/javase/9/docs/
Bardziej szczegółowoKurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016
Wykład 9 28 kwiecień 2016 Java Collections Framework (w C++ Standard Template Library) Kolekcja (kontener) Obiekt grupujacy/przechowuj acy jakieś elementy (obiekty lub wartości). Przykładami kolekcji sa
Bardziej szczegółowoSieci komputerowe. Wykład 5: Warstwa transportowa: TCP i UDP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski
Sieci komputerowe Wykład 5: Warstwa transportowa: TCP i UDP Marcin Bieńkowski Instytut Informatyki Uniwersytet Wrocławski Sieci komputerowe (II UWr) Wykład 5 1 / 22 Warstwa transportowa Cechy charakterystyczne:
Bardziej szczegółowoMiddleware wprowadzenie października 2010
Dariusz Wawrzyniak Politechnika Poznańska Instytut Informatyki ul. Piotrowo 2 (CW, pok. 5) 60-965 Poznań Dariusz.Wawrzyniak@cs.put.poznan.pl Dariusz.Wawrzyniak@put.edu.pl www.cs.put.poznan.pl/dwawrzyniak/middleware
Bardziej szczegółowo1. Co można powiedzieć o poniższym kodzie (zakładając, że zaimportowano wszystkie niezbędne klasy)?
1. Co można powiedzieć o poniższym kodzie (zakładając, że zaimportowano wszystkie niezbędne klasy)? public static void test1() { Object[] o = new Object[] { "1", "2", "3" ; List l = new ArrayList(Arrays.asList(o));
Bardziej szczegółowoMiddleware wprowadzenie października Dariusz Wawrzyniak (IIPP) 1
Dariusz Wawrzyniak Politechnika Poznańska Instytut Informatyki ul. Piotrowo 2 (CW, pok. 5) 60-965 Poznań Dariusz.Wawrzyniak@cs.put.poznan.pl poznan pl Dariusz.Wawrzyniak@put.edu.pl www.cs.put.poznan.pl/dwawrzyniak/middleware
Bardziej szczegółowoStrumienie i serializacja
Strumienie i serializacja Prezentacja dostępna na Syriuszu: http://sirius.cs.put.poznan.pl/~inf80156 Klasy: InputStream, OutputStream, Reader i Writer W Javie hierarchia strumieni oparta jest o cztery
Bardziej szczegółowoJęzyk JAVA podstawy. Wykład 6, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna
Język JAVA podstawy Wykład 6, część 2 Jacek Rumiński 1 Język JAVA podstawy Plan wykładu: 1. Wprowadzenie do operacji wejścia/wyjścia: strumienie 2. Podstawowe klasy strumieni i InputStream/OutputStream
Bardziej szczegółowo1. Co będzie wynikiem wykonania poniŝszych instrukcji? g2d.gettransform().scale(1, -1); g2d.gettransform().translate(4, -8); g2d.drawline(4, 0, 4, 4);
1. Co będzie wynikiem wykonania poniŝszych instrukcji? g2d.gettransform().scale(1, -1); g2d.gettransform().translate(4, -8); g2d.drawline(4, 0, 4, 4); a) b) c) d) 2. Jaki będzie wynik kompilacji i wykonania
Bardziej szczegółowo1 Atrybuty i metody klasowe
1 Atrybuty i metody klasowe Składowe klasowe (statyczne) Każdy obiekt klasy posiada własny zestaw atrybutów. Metody używają atrybutów odpowiedniego obiektu. Czasem potrzeba atrybutów wspólnych dla wszystkich
Bardziej szczegółowoWspółbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1
Współbieżność i równoległość w środowiskach obiektowych Krzysztof Banaś Obliczenia równoległe 1 Java Model współbieżności Javy opiera się na realizacji szeregu omawianych dotychczas elementów: zarządzanie
Bardziej szczegółowoTechnologie internetowe laboratorium nr 4. Instalacja i uruchomienie usługi sieciowej w serwerze Tomcat/AXIS
Technologie internetowe laboratorium nr 4 Instalacja i uruchomienie usługi sieciowej w serwerze Tomcat/AXIS 1. Wprowadzenie i konfiguracja Celem niniejszego laboratorium jest zainstalowanie i uruchomienie
Bardziej szczegółowoJava. Programowanie Obiektowe Mateusz Cicheński
Java Programowanie Obiektowe Mateusz Cicheński Wielowątkowość Proces a wątek? Thread vs Runnable sleep(), interrupt(), join() Problemy wielowątkowości Obiekty niemodyfikowalne (immutable) Serializacja
Bardziej szczegółowoSposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.
Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu. Dr inż. Zofia Kruczkiewicz Dwa sposoby tworzenia apletów Dwa sposoby
Bardziej szczegółowoAplikacje internetowe i rozproszone - laboratorium
Aplikacje internetowe i rozproszone - laboratorium Enterprise JavaBeans (EJB) Celem tego zestawu ćwiczeń jest zapoznanie z technologią EJB w wersji 3.0, a w szczególności: implementacja komponentów sesyjnych,
Bardziej szczegółowoLaboratorium 03: Podstawowe konstrukcje w języku Java [2h]
1. Typy. Java jest językiem programowania z silnym systemem kontroli typów. To oznacza, że każda zmienna, atrybut czy parametr ma zadeklarowany typ. Kompilator wylicza typy wszystkich wyrażeń w programie
Bardziej szczegółowo