Programowanie rozproszone w języku Java

Wielkość: px
Rozpocząć pokaz od strony:

Download "Programowanie rozproszone w języku Java"

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 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ółowo

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Obiektowe 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ółowo

Podejście obiektowe do budowy systemów rozproszonych

Podejś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ółowo

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Java 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ółowo

Wywoływanie metod zdalnych

Wywoł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ółowo

Podejście obiektowe do budowy systemów rozproszonych

Podejś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ółowo

Remote Method Invocation 17 listopada 2010

Remote 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ółowo

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Java 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ółowo

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

Remote 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ółowo

Wywoływanie metod zdalnych

Wywoł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ółowo

Remote Method Invocation 17 listopada rozproszonych. Dariusz Wawrzyniak (IIPP) 1

Remote 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ółowo

Aplikacje RMI Lab4

Aplikacje 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ółowo

Zdalne 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. 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ółowo

Oprogramowanie systemów równoległych i rozproszonych Wykład 7

Oprogramowanie 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ółowo

Java programowanie w sieci. java.net RMI

Java 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ółowo

Systemy Rozproszone - Ćwiczenie 6

Systemy 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ółowo

RMI-2. Java Remote Method Invocation (RMI) na podstawie m.in. podręcznika firmy Sun Microsystems SYSTEMY ROZPROSZONE

RMI-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ółowo

Platformy Programistyczne Zagadnienia sieciowe i wątki

Platformy 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ółowo

Przykłady interfejsu TCP i UDP w Javie

Przykł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ółowo

sieć 4) Mechanizm RMI jest zazwyczaj wykorzystywany w rozwiązaniach typu klient-serwer.

sieć 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ółowo

Aplikacje RMI. Budowa aplikacji rozproszonych. Część 2.

Aplikacje 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ółowo

Komunikacja z użyciem gniazd aplikacje klient-serwer

Komunikacja 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ółowo

Programy typu klient serwer. Programowanie w środowisku rozproszonym. Wykład 5.

Programy 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ółowo

Programowanie współbieżne i rozproszone

Programowanie 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ółowo

Systemy rozproszone. Dr inż. L. Miękina. Department of Robotics and Mechatronics AGH University of Science and Technology 1/1

Systemy 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ółowo

Interfejsy w Javie. Przykład zastosowania interfejsów:

Interfejsy 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ółowo

Aplikacja wielowątkowa prosty komunikator

Aplikacja 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ółowo

Podstawy i języki programowania

Podstawy 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ółowo

Programowanie w języku Java

Programowanie 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ółowo

Rozproszone systemy internetowe. Wprowadzenie. Koncepcja zdalnego wywołania procedury

Rozproszone 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ółowo

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego

Wą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ółowo

JAVA I SIECI. MATERIAŁY: http://docs.oracle.com/javase/tutorial/networking/index.html

JAVA 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ółowo

Aplikacja wielow tkowa prosty komunikator

Aplikacja 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ółowo

Networking. Zaawansowane technologie Javy 2019

Networking. 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ółowo

Tworzenie i wykorzystanie usług

Tworzenie 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ółowo

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Kurs 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ółowo

Katedra 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 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ółowo

Wybrane działy Informatyki Stosowanej

Wybrane 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ółowo

Tworzenie aplikacji rozproszonej w Sun RPC

Tworzenie 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ółowo

Remote Method Invocation

Remote 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ółowo

Michał Jankowski. Remoting w.net 2.0

Michał 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ółowo

Programowanie obiektowe

Programowanie 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ółowo

Narzę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 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ółowo

1. Model klient-serwer

1. 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ółowo

Programowanie obiektowe

Programowanie 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ółowo

Programowanie 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 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ółowo

Obiekty sieciowe - gniazda Komputery w sieci Internet komunikują się ze sobą poprzez:

Obiekty 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ółowo

Zadanie 2: transakcyjny protokół SKJ (2015)

Zadanie 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ółowo

Zdalne wywołanie procedur. Krzysztof Banaś Systemy rozproszone 1

Zdalne 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ółowo

Programowanie sieciowe

Programowanie 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ółowo

1. 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(); 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ółowo

Tworzenia aplikacji rozproszonej RMI

Tworzenia 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ółowo

Wprowadzenie. Dariusz Wawrzyniak 1

Wprowadzenie. 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ółowo

Wątki. Definiowanie wątków jako klas potomnych Thread. Nadpisanie metody run().

Wą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ółowo

Adresy URL. Zaawansowane technologie Javy 2019

Adresy 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ółowo

Architektury systemów rozproszonych LABORATORIUM. Ćwiczenie 1

Architektury 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ółowo

JAVA W SUPER EXPRESOWEJ PIGUŁCE

JAVA 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ółowo

KOMUNIKACJA MIĘDZYPROCESOWA O B S Ł U G A WEJŚCIA/WYJŚCIA

KOMUNIKACJA 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ółowo

Programowanie obiektowe

Programowanie 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ółowo

Kurs programowania. Wykład 10. Wojciech Macyna. 05 maja 2016

Kurs 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ółowo

K O M U N I K A C J A MIĘDZYPROCESOWA O B S Ł U G A WEJŚCIA/WYJŚCIA

K 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ółowo

RPC. Zdalne wywoływanie procedur (ang. Remote Procedure Calls )

RPC. 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ółowo

Java a dost p do Internetu.

Java 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ółowo

Java programowanie sieciowe

Java 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ółowo

Mechanizmy pracy równoległej. Jarosław Kuchta

Mechanizmy 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ółowo

Obliczenia 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 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ółowo

Programowanie aplikacji w architekturze Klient-Serwer - UDP

Programowanie 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ółowo

Współbieżność w środowisku Java

Współ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ółowo

Multimedia JAVA. Historia

Multimedia 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ółowo

Bezpieczne uruchamianie apletów wg

Bezpieczne 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ółowo

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Obszar 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ółowo

Programowanie obiektowe

Programowanie 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ółowo

Proxy (pełnomocnik) Cel: Zastosowanie: Dostarczyć zamiennik pewnego obiektu, pozwalający kontrolować dostęp do niego.

Proxy (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ółowo

Wprowadzenie do technologii Web Services: SOAP, WSDL i UDDI

Wprowadzenie 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ółowo

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

JAVA. 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ółowo

Java Zadanie 1. Aby poprawnie uruchomić aplikację desktopową, należy zaimplementować główną metodę zapewniającą punkt wejścia do programu.

Java 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ółowo

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Interfejsy. 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ółowo

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019

Kurs 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ółowo

RESTful 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 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ółowo

Programowanie obiektowe

Programowanie 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ółowo

1. Co można powiedzieć o poniższym kodzie?

1. 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ółowo

Serwer współbieżny połączeniowy

Serwer 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ółowo

Java. 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 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ółowo

Klient-Serwer Komunikacja przy pomocy gniazd

Klient-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ółowo

Aplikacje w Javie- wykład 11 Wątki-podstawy

Aplikacje 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ółowo

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Kurs 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ółowo

Sieci 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 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ółowo

Middleware wprowadzenie października 2010

Middleware 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ółowo

1. 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)? 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ółowo

Middleware wprowadzenie października Dariusz Wawrzyniak (IIPP) 1

Middleware 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ółowo

Strumienie i serializacja

Strumienie 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ółowo

Ję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. 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ółowo

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);

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); 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ółowo

1 Atrybuty i metody klasowe

1 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ółowo

Współ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 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ółowo

Technologie 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 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ółowo

Java. Programowanie Obiektowe Mateusz Cicheński

Java. 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ółowo

Sposoby 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. 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ółowo

Aplikacje internetowe i rozproszone - laboratorium

Aplikacje 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ółowo

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Laboratorium 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