Projektowanie aplikacji internetowych



Informacje

Materialy wykladowe

Przydatne linki

Strony w j. angielskim

http://www.oracle.com/technetwork/java/index.html
Java Tutorial
Java World
Java Zone

Strony w j. polskim:

http://www.java.pl

API

JSE 8 API Specification

Laboratorium

Cwiczenia laboratoryjne

    Cwiczenia nieobowiazkowe (nie trzeba ich pokazywac):

  1. Napisz program, ktory pobiera liste plikow z linii polecen i wyswietla liczbe wierszy kazdego z nich. Program powinien utworzyc jeden watek dla kazdego z plikow i uzyc tych watkow do zliczenia liczby wierszy kazdego z plikow rownoczenie. Utworz wersje programu, ktora odczytuje pliki nie jednoczesnie a sekwencyjnie. Porownaj wydajnosc wielowatkowego i jednowatkowego programu uzywajac System.currentTimeMillis() do okreslenia czasu wykonania. Porownania dokonaj dla dwoch, trzech i pieciu plikow.
  2. Napisz program laczacy sie ze strona podana jako argument wywolania programu i wypisujacy wszystkie znalezione na niej linki i adresy email wykorzystujac w tym celu wyrazenia regularne (pakiet java.util.regex). Oprocz tego program ma zapisac do pliku wszystkie parametry polaczenia, adres IP komputera na ktorym znajduje sie strona oraz naglowek strony (zawartosc sekcji <head>).
  3. Napisz program, ktory zasymuluje nastepujace zjawiska: deadlock, livelock, starvation. Rodzaj symulacji powinien byc parametrem wywolania programu. Zrob ograniczenie czasowe na dane zjawisko, tak aby program sie nie zawiesil.

    Cwiczenia obowiazkowe

  4. Aplikacja obslugujaca salon fryzjerski z jednym fryzjerem. Dla ulatwienia nalezy przyjac ze salon pracuje w godzinach 10-18 a kazda wizyta trwa rowno godzine. Klienci zglaszaja (i wycofuja) terminy wizyt ktore chcieliby odbyc. Klienci widza aktualny stan zajetosci fryzjera (na ekranie klienta wyswietla sie zmiana widoku po kazdej aktualizacji terminarza fryzjera). Serwer rozsyla komunikaty o zarezerwowanych i wycofanych uslugach (i terminach) do wszystkich klientow powodujac odswiezenie widoku klienta. Nalezy zadbac o odpowiednia synchronizacje dostepu do zasobow i ich aktualizacje. Nalezy zadbac o wydajnosc aplikacji: zuzycie procesora i wykorzystanie lacza sieciowego.
  5. Napisz klienta SMTP w dwóch wersjach: z wykorzystaniem i bez wykorzystania java.smtp.mail.
  6. Napisz prototypowe implementacje dwóch z czterech algorytmów optymalizacyjnych (do ustalenia z prowadzacym które). Calosc rozwiazania oprzyj na kontenerze Docker:
    - algorytm genetyczny,
    - algorytm symulowanego wyzarzania,
    - algorytm roju czastek,
    - algorytm DE (differential evolution).
    Zaproponuj uniwersalny sposób przekazywania funkcji do optymalizacji dla funkcji dwuwymiarowych.
    Jako podstawe testowania wykorzystaj funkcje Rosenbrocka. Przetestuj jednak algorytmy także na bardziej skomplikowanych funkcjach.
    Zwizualizuj kolejne kroki kazdego z algorytmów (forma wizualizacji do opracowania przez autora) na przykladzie funkcji dwuwymiarowych.

    Przykżadowe funkcje do testowania: https://en.wikipedia.org/wiki/Test_functions_for_optimization

Projekt:

Gra sieciowa w kierki wg regul: https://www.kurnik.pl/kierki/zasady.phtml, nie jest wymagana implementacja odgrywki ani gry 3-osobowej. Reguly samego projektu (projekt dla jednej osoby) (25 pkt) : Dodatkowo: