Politechnika Wrocławska, Wydział Elektroniki, Kierunek: Informatyka (4 rok,7 sem.)

Laboratorium:  INES00207 L
PROGRAMOWANIE W JĘZYKU JAVA
(prow. dr Marek Piasecki)


Program laboratorium (ustalony przez dr Tomasza Kubika)  

  1. RMI
    Zaimplementuj rozwiązanie składające się z dwóch aplikacji:
    serwera namiastek (pełniącego rolę rejestru) oraz programu
    pozwalającego na zdalne wywoływanie procedur (nazwijmy go Pr).
    Aplikacja Pr powinna rejestrować swoją namiastkę w serwerze
    namiastek oraz powinna pobierać namiastki innych aplikacji Pr,
    które się tam już zarejestrowały. Po pobraniu namiastki
    aplikacje Pr powinny komunikować się między sobą.

  2. Refleksja / Odzwierciedlenie
    Napisz program, który "prześwietli" wskazaną klasę, wypisując wszystkie jej pola i metody.
    Program powinien umożliwić uruchomienie dowolnej, wskazanej metody (przy założeniu,
    że jej argumentami i typem zwracanym będą typy podstawowe razem ze String lub tablice tych typów).
    Program powinien posiadać przyjazny GUI.


  3. Ładowacz klas
    Zmodyfikuj program z ćwiczenia 2 tak, aby ładowanie klas mogło odbywać się wskazanym ładowaczem klas.
    Ładowacze klas powinny być dołączane do projektu w postaci skompilowanej, tzn. program powinien
    przeglądnąć folder dodatków zawierający klasy ładowaczy, aby później wyświetlić je na liście wyboru
    bieżącego ładowacza. Obowiązkowo należy zaimplementować przynajmniej jednego ładowacza klas, który będzie
    pozwalał na załadowanie klasy zaszyfrowane (z wykorzystaniem kluczy szyfrujących).


  4. Ziarna
    Zaprojektuj ziarenko z własnościami wszystkich możliwych typów (proste, ograniczone, wiązane, indeksowane).
    Ziarenko powinno być zdolne do generowania zdarzeń oraz powinno posiadać własną klasę opisową BeanInfo.
    Klasa opisowa powinna udostępniać deskryptory udostępnionych metod i właściwości. Należy wykorzystać
    możliwość edycji właściwości ziarenka z pola tekstowego, za pomocą dostarczonego edytora oraz
    za pomocą "customizera".
    Ziarenko należy przetestować w środowisku programowania (tzn. wstawić je na testowy wizualny komponent
    za pomocą wizarda, zmodyfikować jego parametry, a następnie sprawdzić działanie stworzonej aplikacji).
    Pewnym rozszerzeniem tematu byłoby skorzystanie z ActiveX bridge (wykorzystanie ziarenka w aplikacji .netowej)

  5. SOAP
     Zaprojektuj architekturę rozproszonego systemu, w którym wymiana informacji bazuje na wykorzystaniu SOAP.
     Może to być rozwiązanie typu "pierścień", "gwiazda", "łańcuch". Następnie zaimplementuj aplikację mogącą
     pełnić rolę węzła w takim systemie. W implementacji należy wykorzystać nagłówki i ciała komunikatów SOAP.

    Wskazówki:
    Do implementacji warstwy komunikacyjnej można wykorzystać klasy z pakietu: java.net, java.net.Socket
    Do implementacji przetwarzania dokumentów XML, technologie DOM,SAX, np klasy z pakietu javax.xml.soap

    Przykładowe zadania:
    a) Komunikator - 
    aplikacja, która wykorzystuje SOAP do kodowania komunikatów wymienianych pomiędzy
        kilkoma instancjami tworzącymi
    wybraną strukturę rozproszoną.
        np. w strukturze typu ring komunikat może wędrować pomiędzy kolejnymi węzłami aż wróci do źródła,
             w strukturze typu gwiazda, komunikat wysłany do "centrum" jest rozsyłany do pozostałych odbiorców
             a zwrotnie przekazywana jest informacja kto go otrzymał.

    b) Może również zrealizować alternatywną implementację zadania z RMI (lab.1)
        w którym zamiast zdalnych wywołań procedur przesyłane są komunikaty zakodowane w SOAP,
        których interpretacja inicjalizuje wywołanie zadanej (w komunikacie) procedury z zadanymi parametrami
        a następnie zwrotne odesłanie komunikatu z wynikami.

    Materiały pomocnicze: 
      - W3C - SOAP Messaging Framework
      - W3C schools - SOAP Tutorial
      - What is SOAP
      - Tip: Send and receive SOAP messages with SAAJ
      - Exercise: Using SAAJ



  6. JDBC
    Stwórz wielowarstwowe rozwiązanie wspierające jakiś proces zarządzania danymi (np. zarządzanie zamówieniami,
    zarządzanie danymi osobowymi, zarządzanie repozytorium zdjęć itp.). Warstwą danych powinno być
    jakieś źródło danych. Najlepiej, aby była to baza danych (MySQL lub PostgreSQL). Może to też
    być plik (w laboratorium może być problem z podłączeniem się do bazy danych).
    Do komunikacji z bazą danych wykorzystaj JDBC (lub mostek odbc-jdbc).
    Projekt aplikacji musi być dobrze przemyślany. Dobrze zaprojektowany schemat bazy danych z narzuconymi
    więzami integralności pozwoli zmniejszyć ilość kodu aplikacji pisanej w języku Java. Można co prawda
    próbować programowo (w aplikacji Java) wymusić więzy integralności, ale takie rozwiązania będą gorzej oceniane.


  7. MIDlet
    Napisz midlet do komunikacji z wybraną usługą sieciową, np. usługą WMS
    Midlet powinien oferować możliwość definiowania nowych połączeń, ustawiania parametrów wywołania usługi itp.
    Zmianę ustawień można zaimplementować jako część związaną z zarządzaniem opcjami MIDletu.


  8. JNI
    Napisz program wykorzystując możliwość dołączania do projektu natywnych klas
    (napisanych w języku C++ w danym systemie).
    Co mają robić klasy natywne - jest do ustalenia.


  9. JavaWS
    Dokonaj wdrożenia programów zaimplementowanych w ramach laboratorium za pomocą technologii Java Web Start.