REST API w module kontrolera Floodlight. Implementacja kolektora statystyk OpenFlow.

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

Download "REST API w module kontrolera Floodlight. Implementacja kolektora statystyk OpenFlow."

Transkrypt

1 Instrukcja do laboratorium 6 REST API w module kontrolera Floodlight. Implementacja kolektora statystyk OpenFlow. 1. Cel ćwiczenia Celem ćwiczenia jest implementacja własnego rutera REST API pozwalającego na sprawdzanie i modyfikację czasów IdleTimeout oraz HardTimeout dla nowo dodawanych przepływów. Zaimplementowana zostanie także prosta aplikacja pozwalająca na zbieranie statystyk z przełączników OpenFlow oraz obliczanie przepustowości łączy. 2. Przygotowanie środowiska 2.1 Instalacja wymaganych zależności Przed zbudowaniem i uruchomieniem środowiska należy zainstalować potrzebne repozytoria poleceniem: $ sudo apt-get update $ sudo apt-get install build-essential ant maven python-dev eclipse 2.2 Pobieranie i budowanie kontrolera Proszę pobrać kontroler ze strony: lab6.zip a następnie rozpakować go (lub kontynuować implementację z wykorzystaniem kodu z poprzedniego laboratorium). Kontroler zawiera już kilka klas w paczce pl.edu.agh.kt. Dodawanie klas i edycja kodu źródłowego podczas zajęć następuje tylko dla klas w tej paczce! 2.3 Import projektu do środowiska Eclipse IDE Proszę uruchomić środowisko Eclipse i utworzyć nowe Workspace. W celu importu projektu proszę wybrać kolejno: File -> Import -> General -> Existing Projects into Workspace Kliknąć na przycisk Browse obok Select root directory i odnaleźć katalog, do którego został pobrany wcześniej projekt Floodlight W oknie Projects zaznaczyć Floodlight Kliknąć przycisk Finish. Po tym procesie cały projekt powinien zostać zaimportowany. W lewej części środowiska Eclipse w oknie Package Explorer powinno pojawić się drzewo katalogów projektu Floodlight. 2.4 Budowanie i uruchamianie projektu w środowsku Eclipse Aby zbudować projekt (np. po zmianach w kodzie źródłowym) należy utworzyć cel: Wybrać Run->Run Configurations Prawym przyciskiem myszy wybrać Java Application->New W polu nazwy wpisać FloodlightLaunch W polu Project wybrać Floodlight W polu Main Class wybrać net.floodlightcontroller.core.main Kliknąć przycisk Apply 1

2 3. Implementacja własnego REST API Dla własnego modułu istnieje możliwość implementacji interfejsu REST API. Taki interfejs pozwala na interakcję z modułem już w trakcie jego pracy, np. zmianę parametrów czy wartości zmiennych zapisanych w kodzie. Ponieważ kontroler Floodlight już implementuje potrzebne interfejsy, bazowy serwer HTTP oraz przetwarzanie i kierowanie żądań do odpowiednich metod w kontrolerze dopisanie własnego REST API jest uproszczone. Ta usługa jest wspierana przez framework o nazwie Restlet. W kolejnych krokach tego ćwiczenia: Dokonana zostanie rejestracja własnego modułu w IRestApiService, Zdefiniowane zostaną URI dla własnego modułu, Zaimplementowane zostaną klasy i metody dla danych URI, Dokonany zostanie start własnego REST API wraz ze startem modułu. 3.1 Rejestracja własnego modułu w IRestApiService Tworzenie własnego REST API należy rozpocząć od rejestracji własnego modułu w usłudze IRestApiService. Usługa ta zapewnia mechanizm rejestracji REST API dla wszystkich modułów kontrolera Floodligh. Każdy moduł, który implementuje interfejs REST API, po prostu rejestruje interfejs API za pomocą IRestApiService, a usługa IRestApiService pobiera go z tego interfejsu, obsługując dla nas wszystkie szczegóły niskiego poziomu. Implementując REST API należy zapewnić, że usługa IRestApiService zostanie załadowana jeszcze przed inicjalizacją modułu (metoda init()). W tym celu należy do metody getmodulesdependencies() klasy SdnLabListener dodać: import net.floodlightcontroller.restserver.irestapiservice; protected IRestApiService restapiservice; public Collection<Class<? extends IFloodlightService>> getmoduledependencies() { Collection<Class<? extends IFloodlightService>> l = new ArrayList<Class<? extends IFloodlightService>>(); l.add(irestapiservice.class); return l; Następnie należy uzyskać referencję do IRestApiService. W tym celu w metodzie init() klasy SdnLabListener proszę dodać: public void init(floodlightmodulecontext context) throws FloodlightModuleException { restapiservice = context.getserviceimpl(irestapiservice.class); 2

3 3.2 Definicja URI Kolejnym krokiem jest definicja URI, dla którego zostanie wystawiony interfejs REST. Tylko te URI będą do wykorzystania przez nasz moduł. Taka definicja pozwala Restletowi na przekierowywanie odpowiednich żądań do naszego modułu. W tym celu należy stworzyć nową klasę w paczce pl.edu.agh.kt o nazwie RestLab i implementującą interfejs RestletRoutable. W klasie tej, po stworzeniu, pojawią się dwie adnotacje (), które w następnych krokach będą uzupełniane. Kod źródłowy po utworzeniu tej klasy przedstawia się następująco: package pl.edu.agh.kt; import org.restlet.context; import org.restlet.restlet; import net.floodlightcontroller.restserver.restletroutable; public class RestLab implements RestletRoutable { public Restlet getrestlet(context context) { // TODO Auto-generated method stub return null; public String basepath() { // TODO Auto-generated method stub return null; Teraz już wystarczy zdefiniować ścieżkę podstawową (bazową) oraz odpowiednie ścieżki dostępu (URIs). W tym celu proszę dokonać edycji kodu tej klasy: public Restlet getrestlet(context context) { Router router = new Router(context); router.attach("/timeout", LabRestServer.class); return router; public String basepath() { return "/sdnlab"; Uwaga 1: W powyższym przykładzie zdefiniowaliśmy tylko jedno URI ( /timeout ). Nic nie szkodzi na przeszkodzie, aby do rutera dodać kolejne URI implementujące inne ścieżki oraz wykorzystujące inne klasy. 3

4 Uwaga 2: Ten kod nie skompiluje się jeszcze poprawnie. Jak łatwo można zauważyć nie mamy klasy LabRestServer, która to zostanie zaimplementowana w następnym punkcie. 3.3 Implementacja klasy zadanego URI W kolejnym kroku należy zdefiniować (zaimplementować) klasę i jej metody dla zadanego URI w metodzie getrestlet(). Podczas tych zajęć zaimplementowana zostanie klasa pomocnicza, dzięki której możliwa będzie dynamiczna zmiana liczników idletimeout oraz hardtimeout dla nowo dodawanych przepływów. W tym celu należy w paczce pl.edu.agh.kt stworzyć nowa klasę o nazwie LabRestServer dziedziczącą z klasy ServerResource (opcja Superclass podczas tworzenia klasy). Po dodaniu odpowiednich importów (wymaganych później) i loggera klasa ta powinna wyglądać jak poniżej: package pl.edu.agh.kt; import java.io.ioexception; import org.restlet.resource.get; import org.restlet.resource.post; import org.restlet.resource.serverresource; import org.slf4j.logger; import org.slf4j.loggerfactory; import com.fasterxml.jackson.core.jsonprocessingexception; import com.fasterxml.jackson.databind.objectmapper; import com.fasterxml.jackson.databind.serializationfeature; public class LabRestServer extends ServerResource { protected static Logger log = LoggerFactory.getLogger(LabRestServer.class); Zanim jednak zaimplementowane zostaną w niej odpowiednie metody nasłuchujące należy przygotować jeszcze kolejną klasę, która to będzie wywoływana z tych żądań. W tym celu proszę dodać nowa klasę o nazwie Timeout w paczce pl.edu.agh.kt. Poniżej pełen kod tej klasy. Klasa ta ma dwie zmienne (idletimeout oraz hardtimeout), dwa konstruktory (parametryczny i bez parametrów) oraz metody służące do ustawiania i pobierania wartości zmiennych (podstawowy poziom programowania, bez dalszych wyjaśnień). package pl.edu.agh.kt; public class Timeout { private short hardtimeout = 0; private short idletimeout = 0; public Timeout() { this.idletimeout = Flows.getIdleTimeout(); this.hardtimeout = Flows.getHardTimeout(); public Timeout(short idle, short hard){ this.idletimeout = idle; 4

5 this.hardtimeout = hard; Flows.setIdleTimeout(idle); Flows.setHardTimeout(hard); public short gethardtimeout() { return hardtimeout; public void sethardtimeout(short hardtimeout) { this.hardtimeout = hardtimeout; public short getidletimeout() { return idletimeout; public void setidletimeout(short idletimeout) { this.idletimeout = idletimeout; Klasa ta implementuje metody Flows.getIdleTimeout(), Flows.setIdleTimeout(), Flows.getHardTimeout(), Flows.setHardTimeout(). Ponieważ klasa Flows do tej pory nie posiadała tych metod oraz zmiennych należy je dodać (do klasy Flows). Należy wkleić poniższy kod: public static short idletimeout = 5; public static short hardtimeout = 0; public static short getidletimeout() { return idletimeout; public static void setidletimeout(short idletimeout) { Flows.idleTimeout = idletimeout; public static short gethardtimeout() { return hardtimeout; public static void sethardtimeout(short hardtimeout) { Flows.hardTimeout = hardtimeout; Po tym można dokończyć implementację klasy LabRestServer. Poniżej zamieszczono kod dla Metody oznaczone tymi adnotacjami są wywołane, jeśli na skonfigurowane REST API (tj. /sdnlab/timeout ) zostanie wysłane żądanie GET lub POST (np. za pomocą znanej aplikacji curl lub wtyczki Postman). W przypadku zapytania GET tworzony jest nowy obiekt Timeout, dla którego wartości liczników (idle/hard timeout) są ustawiane na takie, jakie obecne są w klasie Flows (pobrania wartości z klasy Flows). Następnie obiekt ten jest serializowany i wysyłany jako String. Resztą zajmuje się ruter i Restlet zaimplementowany w kontrolerze Floodlight. Dla metody POST odbierany jest string (JSON), na podstawie którego tworzony jest nowy obiekt 5

6 Timeout z deserializowanych danych. Następnie wartości obiektu timeout wykorzystywane są do ustawienia wartości liczników w klasie Flows. Dwie metody serialize() oraz deserialize() są przykładową implementacją serializowania i deserializowania obiektów typu Timeout do i z Stringów z wykorzystaniem public String handleget() throws JsonProcessingException { log.info("handleget"); return serialize(new Timeout(Flows.getIdleTimeout(), public String handlepost(string text) throws JsonProcessingException, IOException { log.info("handlepost"); Timeout timeout = new Timeout(); timeout = deserialize(text, Timeout.class); Flows.setIdleTimeout(timeout.getIdleTimeout()); Flows.setHardTimeout(timeout.getHardTimeout()); return serialize(timeout); private static final ObjectMapper mapper; static { mapper = new ObjectMapper(); mapper.configure(serializationfeature.fail_on_empty_beans, false); public static String serialize(timeout t) throws JsonProcessingException { return mapper.writevalueasstring(t); public static Timeout deserialize(string text, Class<Timeout> clazz) throws IOException { return mapper.readvalue(text, clazz); 3.4 Start własnego REST API Teraz już wystarczy tylko wystartować własne REST API wraz ze startem własnego modułu. W tym celu do metody startup() klasy SdnLabListener należy dodać: public void startup(floodlightmodulecontext context) throws FloodlightModuleException { restapiservice.addrestletroutable(new RestLab()); 6

7 Zadanie1: Proszę uruchomić kontroler i w przeglądarce wejść na stronę Proszę sprawdzić pobieranie aktualnych wartości liczników. Zadanie 2: Proszę zmienić wartości tych liczników wysyłając odpowiedniego JSONa na podany adres (np. z wykorzystaniem aplikacji curl). Proszę sprawdzić czy wartości te zostały nadpisane (ponownym ich pobraniem). W tym celu można wykorzystać polecenie: $ curl -X POST -H 'Content-Type: application/json' -i ' --data '{"hardtimeout":10,"idletimeout":15' Zadanie 3: Proszę tak zmodyfikować klasę Flows, aby dodawanie nowych przepływów następowało z wykorzystaniem ustawionych wartości przez REST API (sugeruję wartości rzędu kilku sekund). Proszę odczekać chwilę na wygaśnięcie przepływów, a następnie zmienić wartości liczników i jeszcze raz puścić ruch, aby zaobserwować nowe przepływy z nowymi wartościami. Pomocne może być wykorzystanie komendy: #ovs-ofctl dump-flows s1 4. Pobieranie statystyk za pomocą protokołu Openflow OpenFlow dostarcza możliwość pobrania statystyk per port, per kolejka, per tablica, per przepływ. W niniejszym przykładzie zostaną pobrane statystyki dla portów przełącznika. Należy zaznaczyć, że synchroniczne zbieranie statystyk (nie tylko dla protokołu OpenFlow) nie powinno być implementowane w żadnym wątku kodu wykonującym wywołania wejścia lub wyjścia oraz w żadnym wątku, w którym jest implementacja metod nasłuchujących (listener thread). Taka implementacja może spowodować, że oczekiwanie na odpowiedź zablokuje inne zadania. Rekomendowana jest implementacja osobnego wątku, w którym następuje obsługa zapytań i odpowiedzi wiadomości OpenFlow dotyczących statystyk Implementacja klasy kolektora statystyk OpenFlow Poniżej zaprezentowano przykładową klasę o nazwie StatisticsCollector, w której zaimplementowano zbieranie statystyk ze wszystkich portów przełącznika OpenFlow. Klasa ta jest singletonem, tj. może powstać tylko jeden obiekt tej klasy. Proszę zwrócić uwagę, że konstruktor jest prywatny a sam dostęp do obiektu tej klasy następuje przez metodę getinstance(), która to może wywołać ten konstruktor o ile obiekt singleton nie istnieje. W klasie tej zaimplementowano kolejną klasę (PortStatisticsPoller) dziedziczącą z klasy TimerTask. W klasie PortStatisticsPoller jest wymagane implementacja jednej metody run() z adnotacją. Metoda ta jest odpowiedzialna za wysyłanie zapytań typu OFStatsRequest o statystyki portów oraz odbieranie i obsługę odpowiedzi OFStatsReply. Poniżej pełny kod tej klasy. Proszę ją umieścić w paczce pl.edu.agh.kt. package pl.edu.agh.kt; import java.util.list; import java.util.timer; import java.util.timertask; import java.util.concurrent.executionexception; import java.util.concurrent.timeunit; import java.util.concurrent.timeoutexception; import org.projectfloodlight.openflow.protocol.ofportstatsentry; import org.projectfloodlight.openflow.protocol.ofportstatsreply; 7

8 import org.projectfloodlight.openflow.protocol.ofstatsreply; import org.projectfloodlight.openflow.protocol.ofstatsrequest; import org.projectfloodlight.openflow.types.ofport; import org.slf4j.logger; import org.slf4j.loggerfactory; import com.google.common.util.concurrent.listenablefuture; import net.floodlightcontroller.core.iofswitch; public class StatisticsCollector { private static final Logger logger = LoggerFactory.getLogger(StatisticsCollector.class); private IOFSwitch sw; public class PortStatisticsPoller extends TimerTask { private final Logger logger = LoggerFactory.getLogger(PortStatisticsPoller.class); private static final int TIMEOUT = PORT_STATISTICS_POLLING_INTERVAL / 2; public void run() { logger.debug("run() begin"); synchronized (StatisticsCollector.this) { if (sw == null) { // no switch logger.error("run() end (no switch)"); return; ListenableFuture<?> future; List<OFStatsReply> values = null; OFStatsRequest<?> req = null; req = sw.getoffactory().buildportstatsrequest().setportno(ofport.any).build(); try { if (req!= null) { future = sw.writestatsrequest(req); values = (List<OFStatsReply>) future.get(port_statistics_polling_interval * 1000 / 2, TimeUnit.MILLISECONDS); OFPortStatsReply psr = (OFPortStatsReply) values.get(0); for (OFPortStatsEntry pse : psr.getentries()) { if (pse.getportno().getportnumber() > 0) { logger.info("port number: {, txpackets: {", pse.getportno().getportnumber(), pse.gettxpackets().getvalue()); ex) { catch (InterruptedException ExecutionException TimeoutException logger.error("error during statistics polling", ex); logger.debug("run() end"); public static final int PORT_STATISTICS_POLLING_INTERVAL = 3000; // in ms private static StatisticsCollector singleton; 8

9 private StatisticsCollector(IOFSwitch sw) { this.sw = sw; new Timer().scheduleAtFixedRate(new PortStatisticsPoller(), 0, PORT_STATISTICS_POLLING_INTERVAL); public static StatisticsCollector getinstance(iofswitch sw) { logger.debug("getinstance() begin"); synchronized (StatisticsCollector.class) { if (singleton == null) { logger.debug("creating StatisticsCollector singleton"); singleton = new StatisticsCollector(sw); logger.debug("getinstance() end"); return singleton; 4.2 Uruchomienie kolektora statystyk Teraz już wystarczy tylko utworzyć obiekt tej klasy (stworzony zostanie tylko jeden raz, singleton), aby zacząć zbierać i wyświetlać statystyki. W tym celu w klasie SdnLabListener w metodzie receive() proszę dodać linię jak poniżej: public net.floodlightcontroller.core.ilistener.command receive(iofswitch sw, OFMessage msg, FloodlightContext cntx) { StatisticsCollector.getInstance(sw); Zadanie 4: Proszę tak zmodyfikować klasy StatisticsCollector oraz PortStatisticsPoller, aby wyświetlać szybkość transmisji na poszczególnych łączach. 9

Wprowadzenie do tworzenia własnego modułu w kontrolerze Floodlight.

Wprowadzenie do tworzenia własnego modułu w kontrolerze Floodlight. Instrukcja do laboratorium 4 Wprowadzenie do tworzenia własnego modułu w kontrolerze Floodlight. 1. Cel ćwiczenia Celem ćwiczenia jest implementacja własnego modułu sterownika Floodlight w języku Java.

Bardziej szczegółowo

W celu uruchomienia kontrolera należy w katalogu głównym kontrolera z wiersza poleceń wydać następujące polecenie: $ java -jar target/floodlight.

W celu uruchomienia kontrolera należy w katalogu głównym kontrolera z wiersza poleceń wydać następujące polecenie: $ java -jar target/floodlight. Instrukcja do laboratorium 3 Rest API. Proaktywna instalacja przepływów. 1. Cel ćwiczenia Celem ćwiczenia jest zapoznanie się z Rest API kontrolera Floodlight. Podczas zajęć przedstawione zostaną metody

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

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

Aplikacje WWW - laboratorium Aplikacje WWW - laboratorium Serwlety Celem ćwiczenia jest przygotowanie kilku prostych serwletów ilustrujących możliwości tej technologii. Poszczególne ćwiczenia prezentują sposób przygotowania środowiska,

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

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

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

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

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf Materiały poprawione Rozwiązanie zadania w NetBeans IDE 7.4: Jarosław Ksybek, Adam Miazio Celem ćwiczenia jest przygotowanie prostej aplikacji

Bardziej szczegółowo

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

Zaawansowane aplikacje internetowe - laboratorium Web Services (część 1).

Zaawansowane aplikacje internetowe - laboratorium Web Services (część 1). Zaawansowane aplikacje internetowe - laboratorium Web Services (część 1). Celem ćwiczenia jest przygotowanie prostej aplikacji internetowej wykorzystującej technologię usług sieciowych (ang. Web Services).

Bardziej szczegółowo

Instrukcja implementacji sterownika wirtualnego portu szeregowego dla systemu Android. Opracowanie: Elzab Soft sp. z o.o.

Instrukcja implementacji sterownika wirtualnego portu szeregowego dla systemu Android. Opracowanie: Elzab Soft sp. z o.o. Instrukcja implementacji sterownika wirtualnego portu szeregowego dla systemu Android. Opracowanie: Elzab Soft sp. z o.o. 29.06.2015 2 Spis treści 1. Wymagania...4 2. Uprawnienia systemowe...4 3. Uprawnienie

Bardziej szczegółowo

Zaawansowane aplikacje WWW - laboratorium

Zaawansowane aplikacje WWW - laboratorium Zaawansowane aplikacje WWW - laboratorium Przetwarzanie XML (część 2) Celem ćwiczenia jest przygotowanie aplikacji, która umożliwi odczyt i przetwarzanie pliku z zawartością XML. Aplikacja, napisana w

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

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

2) W wyświetlonym oknie należy zaznaczyć chęć utworzenia nowej aplikacji (wygląd okna może się różnić od powyższego); kliknąć OK

2) W wyświetlonym oknie należy zaznaczyć chęć utworzenia nowej aplikacji (wygląd okna może się różnić od powyższego); kliknąć OK Zaawansowane aplikacje internetowe EJB 2 Celem tego laboratorium jest pokazanie, w jaki sposób aplikacje stworzone w różnych technologiach mogą korzystać z funkcjonalności udostępnianej przez komponenty

Bardziej szczegółowo

Programowanie Obiektowe GUI

Programowanie Obiektowe GUI Programowanie Obiektowe GUI Swing Celem ćwiczenia jest ilustracja wizualnego tworzenia graficznego interfejsu użytkownika opartego o bibliotekę Swing w środowisku NetBeans. Ponadto, ćwiczenie ma na celu

Bardziej szczegółowo

D:\DYDAKTYKA\ZAI_BIS\_Ćwiczenia_wzorce\04\04_poprawiony.doc 2009-lis-23, 17:44

D:\DYDAKTYKA\ZAI_BIS\_Ćwiczenia_wzorce\04\04_poprawiony.doc 2009-lis-23, 17:44 Zaawansowane aplikacje internetowe EJB 1 Rozróżniamy dwa rodzaje beanów sesyjnych: Stateless Statefull Celem tego laboratorium jest zbadanie różnic funkcjonalnych tych dwóch rodzajów beanów. Poszczególne

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

Zaawansowane aplikacje internetowe - laboratorium Architektura CORBA.

Zaawansowane aplikacje internetowe - laboratorium Architektura CORBA. Zaawansowane aplikacje internetowe - laboratorium Architektura CORBA. Celem ćwiczenia jest przygotowanie prostej aplikacji wykorzystującej architekturę CORBA. Aplikacja składa się z usługodawcy (serwera)

Bardziej szczegółowo

Git, Bitbucket, IntelliJ IDEA

Git, Bitbucket, IntelliJ IDEA Państwowa Wyższa Szkoła Zawodowa w Tarnowie Zakład Informatyki Narzędzia i środowiska programistyczne Laboratorium 3 Git, Bitbucket, IntelliJ IDEA Prowadzący: Kierunek: Semestr: Rok: Informatyka Zimowy

Bardziej szczegółowo

ZAPOZNANIE SIĘ Z TWORZENIEM

ZAPOZNANIE SIĘ Z TWORZENIEM LABORATORIUM SYSTEMÓW MOBILNYCH ZAPOZNANIE SIĘ Z TWORZENIEM APLIKACJI MOBILNEJ W J2ME I. Temat ćwiczenia II. Wymagania Podstawowe wiadomości z zakresu języka Java Podstawowa znajomość środowiska Eclipse

Bardziej szczegółowo

1. Czynności przygotowujące aplikację działającą na platformie Java SE Biblioteka5 (należy ją pobrać z załącznika z p.1)

1. Czynności przygotowujące aplikację działającą na platformie Java SE Biblioteka5 (należy ją pobrać z załącznika z p.1) Instrukcja tworzenia aplikacji EE na podstawie aplikacji z dostępem do bazy danych, prezentowanej na zajęciach lab.5 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom. Projektowanie i wdrażanie

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu Programowanie obiektowe - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia.

Bardziej szczegółowo

Zapoznanie ze środowiskiem Mininet. Instalacja zewnętrznego kontrolera SDN.

Zapoznanie ze środowiskiem Mininet. Instalacja zewnętrznego kontrolera SDN. Instrukcja do laboratorium 1 Zapoznanie ze środowiskiem Mininet. Instalacja zewnętrznego kontrolera SDN. 1. Cel ćwiczenia Celem ćwiczenia jest zaznajomienie się ze środowiskiem Mininet, protokołem OpenFlow

Bardziej szczegółowo

Wprowadzenie do laboratorium. Zasady obowiązujące na zajęciach. Wprowadzenie do narzędzi wykorzystywanych podczas laboratorium.

Wprowadzenie do laboratorium. Zasady obowiązujące na zajęciach. Wprowadzenie do narzędzi wykorzystywanych podczas laboratorium. Wprowadzenie do laboratorium. Zasady obowiązujące na zajęciach. Wprowadzenie do narzędzi wykorzystywanych podczas laboratorium. Prowadzący Dr inż. Zofia 1 La1 La2 Forma zajęć - laboratorium Wprowadzenie

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

Java Platform Micro Edition

Java Platform Micro Edition Java Platform Micro Edition Instalacja środowiska programistycznego Java Platform Micro Edition Software Development Kit 3.0 for Windows z lokalizacji http://www.oracle.com/technetwork/java/javame/downloads/sdk30-jsp-139759.html

Bardziej szczegółowo

Wielowątkowość. Programowanie w środowisku rozproszonym. Wykład 1.

Wielowątkowość. Programowanie w środowisku rozproszonym. Wykład 1. Wielowątkowość Programowanie w środowisku rozproszonym. Wykład 1. Informacje organizacyjne Wymiar godzin: W-30, LAB-15 Zaliczenie wykonanie kilku programów i ich zaliczenie (w trakcie zajęć laboratoryjnych)

Bardziej szczegółowo

Zaawansowane aplikacje internetowe

Zaawansowane aplikacje internetowe Zaawansowane aplikacje internetowe EJB 1 Rozróżniamy dwa rodzaje beanów sesyjnych: Stateless Statefull Celem tego laboratorium jest zbadanie różnic funkcjonalnych tych dwóch rodzajów beanów. Poszczególne

Bardziej szczegółowo

Aplikacja webowa w Javie szybkie programowanie biznesowych aplikacji Spring Boot + Vaadin

Aplikacja webowa w Javie szybkie programowanie biznesowych aplikacji Spring Boot + Vaadin Aplikacja webowa w Javie szybkie programowanie biznesowych aplikacji Spring Boot + Vaadin Czym jest Spring Boot? Spring Boot jest szkieletem aplikacji, opiera się o Spring Framework czyli Framework szeroko

Bardziej szczegółowo

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3 3 ASP.NET MVC Podstawy 1 1. Cel zajęć Celem zajęć jest zapoznanie się z podstawami ASP.NET MVC 2.0 Framework. 2. Zadanie Proszę zbudować prostą aplikację WWW przy zastosowaniu framework a ASP.NET MVC 2.0

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

Projektowanie aplikacji internetowych laboratorium

Projektowanie aplikacji internetowych laboratorium Projektowanie aplikacji internetowych laboratorium Programowanie w języku Java Do realizacji projektu potrzebne jest zintegrowane środowisko programistyczne NetBeans 7 (zrzuty ekranów pochodzą z wersji

Bardziej szczegółowo

Aplikacje w środowisku Java

Aplikacje w środowisku Java Aplikacje w środowisku Java Materiały do zajęć laboratoryjnych Graficzny Interfejs Użytkownika mgr inż. Kamil Zieliński Katolicki Uniwersytet Lubelski Jana Pawła II 2018/2019 Spis treści Graficzny Interfejs

Bardziej szczegółowo

Wprowadzenie do projektu QualitySpy

Wprowadzenie do projektu QualitySpy Wprowadzenie do projektu QualitySpy Na podstawie instrukcji implementacji prostej funkcjonalności. 1. Wstęp Celem tego poradnika jest wprowadzić programistę do projektu QualitySpy. Będziemy implementować

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

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem. WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM NetBeans Wykonał: Jacek Ventzke informatyka sem. VI 1. Uruchamiamy program NetBeans (tu wersja 6.8 ) 2. Tworzymy

Bardziej szczegółowo

Laboratorium 7 Blog: dodawanie i edycja wpisów

Laboratorium 7 Blog: dodawanie i edycja wpisów Laboratorium 7 Blog: dodawanie i edycja wpisów Dodawanie nowych wpisów Tworzenie formularza Za obsługę formularzy odpowiada klasa Zend_Form. Dla każdego formularza w projekcie tworzymy klasę dziedziczącą

Bardziej szczegółowo

Microsoft.NET: ASP.NET MVC + Entity Framework (Code First)

Microsoft.NET: ASP.NET MVC + Entity Framework (Code First) Microsoft.NET: ASP.NET MVC + Entity Framework (Code First) Do realizacji projektu potrzebne jest zintegrowane środowisko programistyczne Microsoft Visual Studio 2012. W ramach projektu budowana jest prosta

Bardziej szczegółowo

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe Architektury Usług Internetowych Laboratorium 2. Usługi sieciowe Wstęp Celem laboratorium jest zapoznanie się z modelem usług sieciowych na przykładzie prostego serwera Apache Axis2. Apache Axis2 Apache

Bardziej szczegółowo

Instrukcja tworzenia aplikacji EE na bazie aplikacji prezentowanej na zajęciach lab.4 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom.

Instrukcja tworzenia aplikacji EE na bazie aplikacji prezentowanej na zajęciach lab.4 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom. Instrukcja tworzenia aplikacji EE na bazie aplikacji prezentowanej na zajęciach lab.4 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom. Projektowanie i wdrażanie systemów informatycznych Przekształcenie

Bardziej szczegółowo

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

Język JAVA podstawy. wykład 2, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy wykład 2, część 2 Jacek Rumiński 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

Bardziej szczegółowo

KLASY, INTERFEJSY, ITP

KLASY, INTERFEJSY, ITP KLASY, INTERFEJSY, ITP ZAGADNIENIA: Klasy, modyfkatory dostępu, pakiety. Zmienne i metody statyczne. Klasy abstrakcyjne, dziedziczenie. Interfejsy. Komentarze i javadoc, http://th-www.if.uj.edu.pl/zfs/ciesla/

Bardziej szczegółowo

Instrukcja 10 Laboratorium 13 Testy akceptacyjne z wykorzystaniem narzędzia FitNesse

Instrukcja 10 Laboratorium 13 Testy akceptacyjne z wykorzystaniem narzędzia FitNesse Instrukcja 10 Laboratorium 13 Testy akceptacyjne z wykorzystaniem narzędzia FitNesse 1 Cel laboratorium: Nabycie umiejętności przygotowywania testów akceptacyjnych za pomocą narzędzia FitNesse 1. Wg wskazówek

Bardziej szczegółowo

Załącznik 1 instrukcje instalacji

Załącznik 1 instrukcje instalacji Załącznik 1 instrukcje instalacji W poniższym załączniku przedstawione zostaną instrukcje instalacji programów wykorzystanych w trakcie tworzenia aplikacji. Poniższa lista przedstawia spis zamieszczonych

Bardziej szczegółowo

Architektury usług internetowych. Laboratorium 5. JADE

Architektury usług internetowych. Laboratorium 5. JADE Wstęp Architektury usług internetowych Laboratorium 5. JADE Celem laboratorium jest zapoznanie się z usługami udostępnianymi przez agenty w systemie agentowym JADE. Każdy z agentów udostępniający usługę

Bardziej szczegółowo

Architektury Usług Internetowych. Laboratorium 3. Usługi w środowisku wielo-agentowym

Architektury Usług Internetowych. Laboratorium 3. Usługi w środowisku wielo-agentowym Architektury Usług Internetowych Laboratorium 3. Usługi w środowisku wielo-agentowym Wstęp Celem laboratorium jest zapoznanie się z usługami udostępnianymi przez agenty w systemie agentowym JADE. Każdy

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

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

Zaawansowane aplikacje internetowe - laboratorium Architektura CORBA.

Zaawansowane aplikacje internetowe - laboratorium Architektura CORBA. Zaawansowane aplikacje internetowe - laboratorium Architektura CORBA. Celem ćwiczenia jest przygotowanie prostej aplikacji wykorzystującej architekturę CORBA. Aplikacja składa się z usługodawcy (serwera)

Bardziej szczegółowo

Programowanie obiektowe zastosowanie języka Java SE

Programowanie obiektowe zastosowanie języka Java SE Programowanie obiektowe zastosowanie języka Java SE Wstęp do programowania obiektowego w Javie Autor: dr inŝ. 1 Java? Java język programowania obiektowo zorientowany wysokiego poziomu platforma Javy z

Bardziej szczegółowo

Programowanie w Javie

Programowanie w Javie Programowanie w Javie Andrzej Czajkowski Lista nr 0 Debugger w Javie Celem ćwiczenia jest poznanie podstawowych funkcji narzędzia debugera (odpluskwiacz) w środowisku Eclipse. Po ukończeniu ćwiczenia student

Bardziej szczegółowo

Interfejsy w Java. Przetwarzanie równoległe. Wątki.

Interfejsy w Java. Przetwarzanie równoległe. Wątki. Informatyka I Interfejsy w Java. Przetwarzanie równoległe. Wątki. dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2017 Interfejsy w Java Pojęcie interfejsu w programowaniu Deklaracja

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

Aplikacje w środowisku Java

Aplikacje w środowisku Java Aplikacje w środowisku Java Materiały do zajęć laboratoryjnych Klasy i obiekty - wprowadzenie mgr inż. Kamil Zieliński Katolicki Uniwersytet Lubelski Jana Pawła II 2018/2019 Klasa zbiór pól i metod Obiekt

Bardziej szczegółowo

Język Java część 2 (przykładowa aplikacja)

Język Java część 2 (przykładowa aplikacja) Programowanie obiektowe Język Java część 2 (przykładowa aplikacja) Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski @ pwr.wroc.pl Java Java przykładowa

Bardziej szczegółowo

Katalog książek cz. 2

Katalog książek cz. 2 Katalog książek cz. 2 Odczytywanie danych z XML Do ćwiczenia dołączony jest plik books.xml zawierający pełen katalog książek. Poniższy listing zawiera przykładowy fragment danych w stosowanym formacie.

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

Programowanie rozproszone w języku Java

Programowanie rozproszone w języku Java 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

Bardziej szczegółowo

akademia androida Składowanie danych część VI

akademia androida Składowanie danych część VI akademia androida Składowanie danych część VI agenda 1. SharedPreferences. 2. Pamięć wewnętrzna i karta SD. 3. Pliki w katalogach /res/raw i /res/xml. 4. Baza danych SQLite. 5. Zadanie. 1. SharedPreferences.

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

Laboratorium 1. Wzorce oprogramowania lab1, Zofia Kruczkiewicz

Laboratorium 1. Wzorce oprogramowania lab1, Zofia Kruczkiewicz Aplikacja internetowa zbudowana w oparciu o środowisko Visual Web Java Server Faces. Zarządzanie obiektami typu SesionBeans, RequestBeen i ApplicationBeans, Laboratorium 1 Wzorce oprogramowania lab1, Okres

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

PWSG Ćwiczenia 12. Wszystkie ukończone zadania należy wysłać na adres: lub

PWSG Ćwiczenia 12. Wszystkie ukończone zadania należy wysłać na adres: lub PWSG Ćwiczenia 12 Wszystkie ukończone zadania należy wysłać na adres: sara.m.jurczyk@gmail.com lub sarajurczyk@kul.lublin.pl Zadanie 1: Różnica między zwykłymi polami/metodami, a polami/metodami static

Bardziej szczegółowo

Wątki w Javie. Piotr Tokarski

Wątki w Javie. Piotr Tokarski Wątki w Javie Piotr Tokarski Wprowadzenie Co to są wątki? Co to są wątki? Każdy program ma przynajmniej jeden wątek Co to są wątki? Każdy program ma przynajmniej jeden wątek Wątki są po to, by symulować

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

Singleton. Cel: Przykład: Zastosowanie: Zapewnienie, że klasa ma tylko jedną instancję i dostarczenie globalnego dostępu do niej.

Singleton. Cel: Przykład: Zastosowanie: Zapewnienie, że klasa ma tylko jedną instancję i dostarczenie globalnego dostępu do niej. 1/8 Singleton Cel: Zapewnienie, że klasa ma tylko jedną instancję i dostarczenie globalnego dostępu do niej. Przykład: Niekiedy ważne jest, aby tworzyć tylko jedną instancję jakiejś klasy. Globalne zmienne

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia. Wprowadzenie teoretyczne.

Bardziej szczegółowo

namespace HostedReceiver { public class Receiver: IConfigureThisEndpoint, AsA_Server {

namespace HostedReceiver { public class Receiver: IConfigureThisEndpoint, AsA_Server { Pobranie i instalacja: - http://www.nservicebus.com/ - download v3.0 now - rozpakować - MSMQ powinno być zainstalowane (Panel Sterowania -> Dodaj/Usuń programy -> Składniki systemu Windows -> Kolejkowanie

Bardziej szczegółowo

1 Wątki 1. 2 Tworzenie wątków 1. 3 Synchronizacja 3. 4 Dodatki 3. 5 Algorytmy sortowania 4

1 Wątki 1. 2 Tworzenie wątków 1. 3 Synchronizacja 3. 4 Dodatki 3. 5 Algorytmy sortowania 4 Spis treści 1 Wątki 1 2 Tworzenie wątków 1 3 Synchronizacja 3 4 Dodatki 3 5 Algorytmy sortowania 4 6 Klasa Runnable 4 Temat: Wątki Czym są wątki. Grafika. Proste animacje. Małe podsumowanie materiału.

Bardziej szczegółowo

1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1

1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1 1 LINQ 1 1. Cel zajęć Celem zajęć jest zapoznanie się z technologią LINQ oraz tworzeniem trójwarstwowej aplikacji internetowej. 2. Zadanie Proszę przygotować aplikację WWW, która: będzie pozwalała na generowanie

Bardziej szczegółowo

Budowa aplikacji wielowarstwowych. Obsługa zdarzeń

Budowa aplikacji wielowarstwowych. Obsługa zdarzeń Budowa aplikacji wielowarstwowych. Obsługa zdarzeń Laboratorium 6 Technologie internetowe Zofia Kruczkiewicz TINT_Lab_6, Zofia Kruczkiewicz 1 Wykaz pytań dotyczących materiału wykorzystanego w lab6, które

Bardziej szczegółowo

Spring Web MVC, Spring DI

Spring Web MVC, Spring DI Państwowa Wyższa Szkoła Zawodowa w Tarnowie Zakład Informatyki Laboratorium 5 Spring Web MVC, Spring DI Prowadzący: Kierunek: Semestr: Rok: Informatyka Zimowy 2 Technologie Technologie / narzędzia będące

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

Aplikacje w środowisku Java

Aplikacje w środowisku Java Aplikacje w środowisku Java Materiały do zajęć laboratoryjnych Klasy i obiekty - dziedziczenie mgr inż. Kamil Zieliński Katolicki Uniwersytet Lubelski Jana Pawła II 2018/2019 W ramach poprzedniego laboratorium

Bardziej szczegółowo

Db4o obiektowa baza danych wersja.net

Db4o obiektowa baza danych wersja.net Wstęp Db4o obiektowa baza danych wersja.net Db4o (database for objects) to obiektowa baza danych na platformę Java i.net. Pełna wersja bazy db4o jest dostępna na dwóch licencjach: open source: pozwala

Bardziej szczegółowo

SIP Studia Podyplomowe Ćwiczenie laboratoryjne Instrukcja

SIP Studia Podyplomowe Ćwiczenie laboratoryjne Instrukcja SIP Studia Podyplomowe Ćwiczenie laboratoryjne Instrukcja Instytut Telekomunikacji Wydział Elektroniki i Technik Informacyjnych Politechnika Warszawska, marzec 2015 Wprowadzenie Ćwiczenie jest wykonywane

Bardziej szczegółowo

Klasy i obiekty cz II

Klasy i obiekty cz II Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Klasy i obiekty cz II Hermetyzacja, mutatory, akcesory, ArrayList Rozwijamy aplikację Chcemy, aby obiekty klasy

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

Protokół JDBC współpraca z relacyjnymi bazami danych lab4. Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych

Protokół JDBC współpraca z relacyjnymi bazami danych lab4. Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych Protokół JDBC współpraca z relacyjnymi bazami danych lab4 Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych Zadanie1 Połączenie z bazą danych travel systemu bazodanowego Derby (metoda void

Bardziej szczegółowo

akademia androida Service, BroadcastReceiver, ContentProvider część IV

akademia androida Service, BroadcastReceiver, ContentProvider część IV akademia androida Service, BroadcastReceiver, ContentProvider część IV agenda 1. BroadcastReceiver 2. Service 3. ContentProvider 4. Zadanie 1. 5. Zadanie 2 (domowe). 1. BroadcastReceiver BroadcastReceiver

Bardziej szczegółowo

Ćwiczenia 9 - Swing - część 1

Ćwiczenia 9 - Swing - część 1 Ćwiczenia 9 - Swing - część 1 Utwórz nowy projekt wybierając: File->New Project->Java Application, przy czym odznacz opcję Create Main Class. Kliknij prawym przyciskiem myszy na podfolder Source Packages

Bardziej szczegółowo

WSNHiD, Programowanie 2 Lab. 2 Język Java struktura programu, dziedziczenie, abstrakcja, polimorfizm, interfejsy

WSNHiD, Programowanie 2 Lab. 2 Język Java struktura programu, dziedziczenie, abstrakcja, polimorfizm, interfejsy WSNHiD, Programowanie 2 Lab. 2 Język Java struktura programu, dziedziczenie, abstrakcja, polimorfizm, interfejsy Pojęcie klasy Program napisany w języku Java składa się ze zbioru klas. Każda klasa zawiera

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

Podstawy tworzenia aplikacji z wykorzystaniem języka Java ME ćwiczenia 1

Podstawy tworzenia aplikacji z wykorzystaniem języka Java ME ćwiczenia 1 z wykorzystaniem języka Java ME ćwiczenia 1 Budowa aplikacji MIDP utworzenie klasy dziedziczącej z klasy java.microedition.midlet.midlet Klasa musi posiadać przynajmniej trzy metody: startapp() inicjalizacja

Bardziej szczegółowo

Dokumentacja do API Javy.

Dokumentacja do API Javy. Dokumentacja do API Javy http://java.sun.com/j2se/1.5.0/docs/api/ Klasy i obiekty Klasa jest to struktura zawierająca dane (pola), oraz funkcje operujące na tych danych (metody). Klasa jest rodzajem szablonu

Bardziej szczegółowo

Enterprise JavaBeans (EJB)

Enterprise JavaBeans (EJB) Enterprise JavaBeans (EJB) Celem tego zestawu ćwiczeń jest zapoznanie z sesyjnymi komponentami Enterprise JavaBeans. Zilustrowane będą różnice między komponentami stanowymi i bezstanowymi. Pokazane będzie

Bardziej szczegółowo

Komunikatory typu TCP/IP lab2. Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych

Komunikatory typu TCP/IP lab2. Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych Komunikatory typu TCP/IP lab2 Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych Zadanie1 - klient wysyła jeden komunikat (typu String) do serwera i kończy swoje istnienie, a serwer go odbiera

Bardziej szczegółowo

Języki i metody programowania Java Lab2 podejście obiektowe

Języki i metody programowania Java Lab2 podejście obiektowe Języki i metody programowania Java Lab2 podejście obiektowe https://docs.oracle.com/javase/tutorial/ http://zofia.kruczkiewicz.staff.iiar.pwr.wroc.pl/wyklady/pojava/javazk4_2.pdf Zofia Kruczkiewicz 1 Zadanie

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

Język Java część 2 (przykładowa aplikacja)

Język Java część 2 (przykładowa aplikacja) Programowanie obiektowe Język Java część 2 (przykładowa aplikacja) Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski @ pwr.wroc.pl Java Java przykładowa

Bardziej szczegółowo

Warsztaty AVR. Instalacja i konfiguracja środowiska Eclipse dla mikrokontrolerów AVR. Dariusz Wika

Warsztaty AVR. Instalacja i konfiguracja środowiska Eclipse dla mikrokontrolerów AVR. Dariusz Wika Warsztaty AVR Instalacja i konfiguracja środowiska Eclipse dla mikrokontrolerów AVR Dariusz Wika 1.Krótki wstęp: Eclipse to rozbudowane środowisko programistyczne, które dzięki możliwości instalowania

Bardziej szczegółowo

Java pierwszy program w Eclipse «Grzegorz Góralski strona własna

Java pierwszy program w Eclipse «Grzegorz Góralski strona własna Strona 1 z 9 «Przykładowe zadania do cz. III ćwiczeń z genetyki Java pierwsze kroki w programowaniu (01)» Kategoria: java, Tagi: eclipse - java - programowanie. Autor: Grzegorz, napisał dnia: February

Bardziej szczegółowo

Platformy Technologiczne

Platformy Technologiczne i Platformy Technologiczne Laboratorium nr 4 Java: REST API Aplikacja opracowana w ramach laboratorium nr 4 będzie potrzebna do realizacji laboratorium nr 5 należy zachować przygotowany projekt. Zadanie

Bardziej szczegółowo

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Lemay, Naughton R. Cadenhead Java Podręcznik 2 dla kaŝdego Języka Programowania Java Linki Krzysztof Boone oprogramowania

Bardziej szczegółowo

Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1

Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1 Wątki 1. Wątki - wprowadzenie Wątkiem nazywamy sekwencyjny przepływ sterowania w procesie, który wykonuje dany program np. odczytywanie i zapisywanie plików Program Javy jest wykonywany w obrębie jednego

Bardziej szczegółowo