Programowanie rozproszone w języku Java

Save this PDF as:
 WORD  PNG  TXT  JPG

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 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) [http://java.sun.com/docs/books/tutorial/networking/sockets/definition.html] 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) [http://java.sun.com/docs/books/tutorial/networking/sockets/definition.html] 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) [http://java.sun.com/docs/books/tutorial/networking/sockets/definition.html] 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) [http://java.sun.com/docs/books/tutorial/networking/sockets/definition.html] 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) [http://java.sun.com/docs/books/tutorial/networking/sockets/definition.html] 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) [http://java.sun.com/docs/books/tutorial/networking/sockets/definition.html] 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) [http://java.sun.com/docs/books/tutorial/networking/sockets/definition.html] 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) [http://java.sun.com/docs/books/tutorial/networking/sockets/definition.html] 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) [http://java.sun.com/docs/books/tutorial/networking/sockets/definition.html] 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) [http://java.sun.com/docs/books/tutorial/networking/sockets/definition.html] 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 1 1 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 2 1 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 [http://docs.oracle.com/javase/tutorial/rmi/overview.html] Wojciech Rząsa, KIiA PRz Programowanie rozproszone w języku Java 32/46

108 Działanie RMI 1 rmiregistry 2 Serwer [http://docs.oracle.com/javase/tutorial/rmi/overview.html] 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 [http://docs.oracle.com/javase/tutorial/rmi/overview.html] 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 [http://docs.oracle.com/javase/tutorial/rmi/overview.html] 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 [http://docs.oracle.com/javase/tutorial/rmi/overview.html] 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java Aplikacje Internetowe Podstawy języka Java Najprostsza aplikacja class Hello { public static void main(string[] args) { System.out.println("Hello World!"); Komponenty Javy JRE Java Runtime Environment

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

Wykład 12. Programowanie serwera MS SQL 2005 w C#

Wykład 12. Programowanie serwera MS SQL 2005 w C# Wykład 12 Programowanie serwera MS SQL 2005 w C# Budowa procedur składowanych w C# Budowa funkcji składowanych w C# Wykorzystanie funkcji składowanych w C# po stronie klienta Tworzenie typów definiowanych

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

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

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

Wykład 7: Pakiety i Interfejsy

Wykład 7: Pakiety i Interfejsy Wykład 7: Pakiety i Interfejsy Plik Źródłowy w Javie Składa się z: instrukcji pakietu (pojedyncza, opcjonalna) instrukcji importujących (wielokrotne, opcjonalne) deklaracji klasy publicznej (pojedyncza,

Bardziej szczegółowo

Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ Procesy i wątki Proces posiada samodzielne środowisko wykonawcze. Proces posiada własny zestaw podstawowych zasobów w czasie wykonywania; W szczególności, każdy proces ma własną przestrzeń pamięci. W uproszczeniu

Bardziej szczegółowo

1 Wprowadzenie do J2EE

1 Wprowadzenie do J2EE Wprowadzenie do J2EE 1 Plan prezentacji 2 Wprowadzenie do Java 2 Enterprise Edition Aplikacje J2EE Serwer aplikacji J2EE Główne cele V Szkoły PLOUG - nowe podejścia do konstrukcji aplikacji J2EE Java 2

Bardziej szczegółowo

STRUMIENIE DANYCH, SERIALIZACJA OBIEKTÓW

STRUMIENIE DANYCH, SERIALIZACJA OBIEKTÓW STRUMIENIE DANYCH, SERIALIZACJA OBIEKTÓW 1. Procedura korzystania ze strumieni danych Aby utworzyć plik: 1) Należy utworzyć obiekt (np. typu FileOutputStream), powiązany ze plikiem danych binarnych (np.

Bardziej szczegółowo

Ćwiczenie 1. Kolejki IBM Message Queue (MQ)

Ćwiczenie 1. Kolejki IBM Message Queue (MQ) Ćwiczenie 1. Kolejki IBM Message Queue (MQ) 1. Przygotowanie Przed rozpoczęciem pracy, należy uruchomić "Kreator przygotowania WebSphere MQ" oraz przejść przez wszystkie kroki kreatora, na końcu zaznaczając

Bardziej szczegółowo

Podstawy i języki programowania

Podstawy i języki programowania Podstawy i języki programowania Laboratorium 7 - wprowadzenie do metod mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 27 listopada 2017 1 / 15 mgr inż. Krzysztof Szwarc Podstawy i języki

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

Programowanie współbieżne i rozproszone

Programowanie współbieżne i rozproszone Programowanie współbieżne i rozproszone WYKŁAD 11 dr inż. CORBA CORBA (Common Object Request Broker Architecture) standard programowania rozproszonego zaproponowany przez OMG (Object Management Group)

Bardziej szczegółowo

Systemy Rozproszone Technologia ICE

Systemy Rozproszone Technologia ICE Systemy Rozproszone Technologia ICE Zespół Systemów Rozproszonych () Katedra Informatyki AGH Kraków Kornel Skałkowski skalkow@agh.edu.pl Opracowano na podstawie książki: Henning M, Spruiell M. Distributed

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

Wykład 2: Podstawy Języka

Wykład 2: Podstawy Języka Wykład 2: Podstawy Języka 1.wprowadzenie 2.podstawy języka 3.sterowanie 4.inicjacja i sprzątanie 5.kontrola dostępu 6.dziedziczenie 7.polimorfizm 8.obsługa błędów 9.kolekcje obiektów 10.wejście i wyjście

Bardziej szczegółowo

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami. UML a kod w C++ i Javie Projektowanie oprogramowania Dokumentowanie oprogramowania Diagramy przypadków użycia Przewoznik Zarzadzanie pojazdami Optymalizacja Uzytkownik Wydawanie opinii Zarzadzanie uzytkownikami

Bardziej szczegółowo

Łukasz Przywarty Wrocław, r. Grupa: WT/N 11:15-14:00. Sprawozdanie z zajęć laboratoryjnych: OpenSSL - API

Łukasz Przywarty Wrocław, r. Grupa: WT/N 11:15-14:00. Sprawozdanie z zajęć laboratoryjnych: OpenSSL - API Łukasz Przywarty 171018 Wrocław, 17.01.2013 r. Grupa: WT/N 11:15-14:00 Sprawozdanie z zajęć laboratoryjnych: OpenSSL - API Prowadzący: mgr inż. Mariusz Słabicki 1 / 5 1. Treść zadania laboratoryjnego W

Bardziej szczegółowo

Ćwiczenie 2. Obsługa gniazd w C#. Budowa aplikacji typu klient-serwer z wykorzystaniem UDP.

Ćwiczenie 2. Obsługa gniazd w C#. Budowa aplikacji typu klient-serwer z wykorzystaniem UDP. Ćwiczenie 2. Obsługa gniazd w C#. Budowa aplikacji typu klient-serwer z wykorzystaniem UDP. Wprowadzenie Gniazdo (ang. socket) z naszego punktu widzenia (czyli programów w.net) reprezentuje najniższy poziom

Bardziej szczegółowo

76.Struktura oprogramowania rozproszonego.

76.Struktura oprogramowania rozproszonego. 76.Struktura oprogramowania rozproszonego. NajwaŜniejsze aspekty obiektowego programowania rozproszonego to: Współdziałanie (interoperability) modułów programowych na róŝnych maszynach. Wielokrotne wykorzystanie

Bardziej szczegółowo

Wywoływanie procedur zdalnych

Wywoływanie procedur zdalnych Mechanizm wywołania Wywoływanie procedur zdalnych main(int argc, char* argv[]){ int id, status; id = atoi(argv[1]); status = zabij_proc(id); exit(status) int zabij_proces (int pid){ int stat; stat = kill(pid,

Bardziej szczegółowo

Języki Programowania II Wykład 3. Java podstawy. Przypomnienie

Języki Programowania II Wykład 3. Java podstawy. Przypomnienie Języki Programowania II Wykład 3 Java podstawy Przypomnienie Analiza, projektowanie, programowanie, testowanie, wdrażanie Iteracyjnie nie kaskadowo Przypadki użycia = opowiastki o używaniu systemu = wymagania

Bardziej szczegółowo

Plan prezentacji. Budowa aplikacji w technologii Enterprise JavaBeans. Przegląd architektur: CORBA. Cele budowy aplikacji rozproszonych

Plan prezentacji. Budowa aplikacji w technologii Enterprise JavaBeans. Przegląd architektur: CORBA. Cele budowy aplikacji rozproszonych Plan prezentacji Budowa aplikacji w technologii Enterprise JavaBeans Przegląd architektur aplikacji rozproszonych: CORBA,, Wprowadzenie do Enterprise JavaBeans () Budowa komponentów sesyjnych Budowa komponentów

Bardziej szczegółowo

Budowa aplikacji w technologii. Enterprise JavaBeans. Maciej Zakrzewicz PLOUG

Budowa aplikacji w technologii. Enterprise JavaBeans. Maciej Zakrzewicz PLOUG Budowa aplikacji w technologii Enterprise JavaBeans Maciej Zakrzewicz PLOUG Plan prezentacji Przegląd architektur aplikacji rozproszonych: CORBA, SOAP, EJB Wprowadzenie do Enterprise JavaBeans (EJB) Budowa

Bardziej szczegółowo

Zdalne wywoływanie procedur RPC. Dariusz Wawrzyniak 1

Zdalne wywoływanie procedur RPC. Dariusz Wawrzyniak 1 Zdalne wywoływanie procedur Zagadnienia projektowe Zagadnienia realizacyjne main(int argc, char* argv[]){ int id, status; id = atoi(argv[1]); status = zabij_proc(id); exit(status)... int zabij_proces (int

Bardziej szczegółowo

Wprowadzenie db4o - podstawy db4o - technikalia Przydatne wiadomości. Wprowadzenie. db4o. Norbert Potocki. 1 czerwca 2009. Norbert Potocki db4o

Wprowadzenie db4o - podstawy db4o - technikalia Przydatne wiadomości. Wprowadzenie. db4o. Norbert Potocki. 1 czerwca 2009. Norbert Potocki db4o Wprowadzenie - podstawy - technikalia Przydatne wiadomości Wprowadzenie 1 czerwca 2009 Wprowadzenie - podstawy - technikalia Przydatne wiadomości Wprowadzenie = bjects = database for objects w pełni obiektowa

Bardziej szczegółowo

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut. Konstruktory Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut. Rozpatrzmy przykład przedstawiający klasę Prostokat: class

Bardziej szczegółowo

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy wykład 2, część 1 1 Język JAVA podstawy Plan wykładu: 1. Rodzaje programów w Javie 2. Tworzenie aplikacji 3. Tworzenie apletów 4. Obsługa archiwów 5. Wyjątki 6. Klasa w klasie! 2 Język

Bardziej szczegółowo

Kurs programowania. Wykład 8. Wojciech Macyna. 10 maj 2017

Kurs programowania. Wykład 8. Wojciech Macyna. 10 maj 2017 Wykład 8 10 maj 2017 Współbieżność Watki w JAVA-ie Współbieżność może być realizowana na poziomie systemu operacyjnego (procesy) lub na poziomie aplikacji (watki). W JAVA-ie powszechnie stosuje się watki.

Bardziej szczegółowo

Instytut Teleinformatyki

Instytut Teleinformatyki Instytut Teleinformatyki Wydział Inżynierii Elektrycznej i Komputerowej Politechnika Krakowska programowanie usług sieciowych Dziedzina Unix laboratorium: 06 Kraków, 2014 06. Programowanie Usług Sieciowych

Bardziej szczegółowo

1. Co można powiedzieć o poniższym kodzie (zakładając, że znajduje się on w jednym pliku A.java)?

1. Co można powiedzieć o poniższym kodzie (zakładając, że znajduje się on w jednym pliku A.java)? 1. Co można powiedzieć o poniższym kodzie (zakładając, że znajduje się on w jednym pliku A.java)? public class A { public int i; { i++; System.out.print(i); public static void main(string[] args) { A a1

Bardziej szczegółowo

Zdalne wywoływanie procedur RPC

Zdalne wywoływanie procedur RPC Zdalne wywoływanie procedur Zagadnienia projektowe Zagadnienia realizacyjne main(int argc, char* argv[]){ int id, status; id = atoi(argv[1]); status = zabij_proc(id); exit(status) }... int zabij_proces

Bardziej szczegółowo

Zdalne wywoływanie procedur RPC

Zdalne wywoływanie procedur RPC Zdalne wywoływanie procedur Zagadnienia projektowe Zagadnienia realizacyjne main(int argc, char* argv[]){ int id, status; id = atoi(argv[1]); status = zabij_proc(id); exit(status)... int zabij_proces (int

Bardziej szczegółowo