Forum Client - Spring in Swing



Podobne dokumenty
Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV

Wstęp Budowa Serwlety JSP Podsumowanie. Tomcat. Kotwasiński. 1 grudnia 2008

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

Dokumentacja aplikacji Szachy online

Dokumentacja techniczna. Młodzieżowe Pośrednictwo Pracy

Tworzenie aplikacji Web Alicja Zwiewka. Page 1

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

Architektura mikroserwisów na platformie Spring IO

Wprowadzenie do projektu QualitySpy

Specyfikacja projektów zaliczeniowych

Przygotowanie do nowoczesnego programowania po stronie przeglądarki. (HTML5, CSS3, JS, wzorce, architektura, narzędzia)

Architektura interfejsu użytkownika

Web frameworks do budowy aplikacji zgodnych z J2EE

Warstwa integracji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe.

ASP.NET MVC. Grzegorz Caban 20 stycznia 2009

Integracja wirtualnego laboratorium z platformą e-learningową

Grzegorz Ruciński. Warszawska Wyższa Szkoła Informatyki Promotor dr inż. Paweł Figat

ul. Pogodna Olsztyn codeit@codeit.pl

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

Java Podstawy. Michał Bereta

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

REFERAT PRACY DYPLOMOWEJ

EXSO-CORE - specyfikacja

Założenia projektowe dla zapytania ofertowego EAK_ZA_01/2015

Specyfikacja implementacyjna aplikacji mobilnej

Programowanie obiektowe

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Międzyplatformowy interfejs systemu FOLANessus wykonany przy użyciu biblioteki Qt4

Wybrane działy Informatyki Stosowanej

Wybrane działy Informatyki Stosowanej

Wybrane działy Informatyki Stosowanej

HP Service Anywhere Uproszczenie zarządzania usługami IT

System kontroli wersji - wprowadzenie. Rzeszów,2 XII 2010

KOŁO NAUKOWE INFORMATYKÓW SYSTEMY KONTROLI WERSJI CZ.1 16 XII 2009 OPRACOWAŁ: PRZEMYSŁAW PARDEL

Tworzenie i wykorzystanie usług sieciowych

Komunikator internetowy w C#

Enterprise JavaBeans (EJB)

Serwery Statefull i Stateless

Aplikacje w środowisku Java

Profesjonalne Zarządzanie Drukiem

Projektowanie oprogramowania. Warstwa integracji z bazą danych oparta na technologii ORM Platforma Java EE Autor: Zofia Kruczkiewicz

Cechy systemu X Window: otwartość niezależność od producentów i od sprzętu, dostępny kod źródłowy; architektura klient-serwer;

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

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

Zaawansowane aplikacje internetowe

Szczegółowy opis zlecenia Plugin do oprogramowania dlibra. Szczegółowy opis zlecenia dla Pluginu do oprogramowania dlibra.

Architektura nowoczesnych aplikacji internetowych

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java

Programowanie Obiektowe GUI

BSX PRINTER INSTRUKCJA UŻYTKOWNIKA. Autor: Karol Wierzchołowski 30 marca 2015

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

IT Camp Junior Java Developer. Cel kursu

Programowanie komponentowe 5

Internetowy sterownik podlewania ogrodowego na LOGO! Sieciowy dostęp do LOGO! za pomocą http

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone

KURS SPRING APLIKACJE WEBOWE

Diagram wdrożenia. Rys. 5.1 Diagram wdrożenia.

Aplikacje RMI

Wybrane działy Informatyki Stosowanej

Technologie dla aplikacji klasy enterprise. Wprowadzenie. Marek Wojciechowski

Kielce, dnia roku. HB Technology Hubert Szczukiewicz. ul. Kujawska 26 / Kielce

Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej. Wstęp. Programowanie w Javie 2. mgr inż.

Katalog książek cz. 3: Web Service

AKADEMIA GÓRNICZO-HUTNICZA Wydział Elektrotechniki, Automatyki, Elektroniki i Informatyki

<Nazwa firmy> <Nazwa projektu> Specyfikacja dodatkowa. Wersja <1.0>

Projektowanie obiektowe Wzorce projektowe

Jak korzystać z Nadaj Przesyłkę. I. Informacje podstawowe

Kurs ASP.NET ASP.NET CORE APLIKACJE WEBOWE

Dokumentacja techniczna

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Stworzenie programu KSIĄŻKA ADRESOWA posiadającego funkcjonalności przechowywania danych o osobach dodanych przez użytkownika.

Serwery. Autorzy: Karol Czosnowski Mateusz Kaźmierczak

Kompleksowe tworzenie aplikacji klasy Desktop z wykorzystaniem SWT i

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15 Artur.Kalinowski@fuw.edu.

PROJEKTOWANIE APLIKACJI INTERNETOWYCH

Systemy Rozproszone Technologia ICE

PROJEKTOWANIE APLIKACJI INTERNETOWYCH

Programowanie Komponentowe WebAPI

1 Wprowadzenie do J2EE

Prezentacja portalu INTEGRACJA APLIKACJI E-COMMERCE AUTOMATYZACJA PROCESÓW

Dotacje na innowacje. Inwestujemy w waszą przyszłość.

Jednym z najważniejszych zagadnień, z którym może się zetknąć twórca

UNIWERSYTET RZESZOWSKI KATEDRA INFORMATYKI

SPECYFIKACJA TECHNICZNA OPROGRAMOWANIA

OpenLaszlo. OpenLaszlo

problem w określonym kontekście siły istotę jego rozwiązania

Aplikacje RMI Lab4

System zarządzania firmą specyfikacja techniczna.

Serwery aplikacji. dr Radosław Matusik. radmat

Informacje ogólne o projekcie

Wirtualizacja panelu HMI w systemie LOGO!

Programowanie komponentowe. Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Specyfikacja implementacyjna aplikacji serwerowej

Wzorce projektowe cz. II. Wzorce projektowe cz. II 1/35

Web frameworks do budowy aplikacji zgodnych z J2EE. Jacek Panachida

Transkrypt:

Forum Client - Spring in Swing Paweł Charkowski. 0. Cel projektu Celem projektu jest próba integracji Spring Framework z różnymi technologiami realizacji interfejsu użytkownika, oraz jej ocena. Niniejszy dokument dotyczy integracji Spring MVC z technologią Java Swing z wykorzystaniem wzorca projektowego MVC. Przykładową aplikacją dla realizacji celu projektu jest prosty klient forum. 1. Budowa Systemu 1.1. Architektura Klient łączy się za pośrednictwem RMI z dedykowanym serwerem (rys. 1). rys.1 Architektura systemu

1.1.1. Serwer forum Serwer forum udostępnia niżej opisany interfejs: Thread[] getthreads() Pobranie wszystkich wątków z serwera Forum Thread createthread(string username, String title) Stworzenie nowego wątku Message[] getmessages(int threadid) Pobranie wiadomości z danego wątku Message createmessage(int threadid, String username, String text) Stworzenie wiadomości w danym wątku boolean modifymessage(int messageid, String username, String text) Modyfikacja wybranej wiadomości 1.1.2. Klient forum Swingowy Aplikacja klienta została wykonana przy użyciu technologii Java Swing. Klient realizuje następującą funkcjonalność: przejrzenie istniejących wątków dodanie nowego wątku przejrzenie wiadomości dla danego wątku dodanie nowej wiadomości dla danego wątku zmodyfikowanie wybranej wiadomości 1.2. MVC Rys. 2. - wzorzec MVC

2. Budowa i zasada działania aplikacji 2.1. Diagram klas Rys.3 diagram klas

2.2. Opis klas Forum interfejs udostępniany przez serwer forum Thread klasa przechowująca informacje o wątku Message klasa przechowująca wiadomość ForumConnector łączy się z serwerem forum uniezależniając programistę od protokołu warstwy sieciowej (w naszym przypadku RMI) SwingClientController kontroler aplikacji, obsługujący zdarzenia przełączenia pomiędzy elementami graficznego interfejsu użytkownika SwingClientWindow reprezentuje okienko wyświetlające klienta forum CreateThreadPanel panel pozwalający na utworzenie nowego wątku forum ModifyMessagePanel pozwala na modyfikację wiadomości zamieszczonej na forum ThreadsPanel panel wyświetlający wątki dostępne na forum ThreadDetailsPanel panel wyświetlający wiadomości należące do danego wątku xxxxxxxlayout określa położenie elementów GUI w odpowiednim panelu ThreadsTableModel przechowuje informacje o wątkach pobranych z forum MessagesTableModel przechowuje informacje o wyświetlanych wiadomościach 2.3. Zasada działania 2.3.1. Przełączenia pomiędzy widokami (rys. 4 poniżej): W aplikacji możliwe są następujące przejścia pomiędzy wyświetlanymi panelami

rys. 4. - przejścia między panelami Przełączanie pomiędzy widokami odbywa się za pośrednictwem kontrolera, który po otrzymaniu żądania zmiany widoku, informuje odpowiedni widok o potrzebie aktualizacji zawartości a następnie podpina go do okna aplikacji. 3. Wzorzec projektowy MVC (Model-Widok-Kontroler) w SwingClient 3.1 Rola poszczególnych klas w modelu MVC 3.1.1 Model Reprezentowany jest przez klasę Model. Odpowiada on za komunikację z serwerem forum poprzez sieć ( z wykorzystaniem technologii RMI). Zasłania on także warstwę sieciową przed programistą udostępniając proste API do obsługi bazy danych. 3.1.2 Widok

Realizowany przez klasy graficznego interfejsu użytkownika 3.1.3 Kontroler Realizowany jest przez klasę SwingClientGUIController. 3.2 Reużywalność komponentów 3.2.1 Ponowne wykorzystanie modelu Moduł pełniący rolę modelu jest w pełni reużywalny. Reprezentuje on serwer forum po stronie localhost a i odpowiada za wysyłanie zapytań i odbieranie odpowiedzi od serwera z wykorzystaniem RMI. Dzięki czemu zwalnia on programistę od problemów związanych z komunikacją z serwerem i pozwala mu skupić się na rozwiązywanym problemie. 3.2.2 Ponowne wykorzystanie kontrolera Kontroler aplikacji (reprezentowany przez klasę SwingClientGUIController) jest ściśle związany z okienkową technologią JAVA Swing wykorzystaną przy realizacji modułu klienta. W związku z tym faktem po niewielkich modyfikacjach kodu mógłby on zostać użyty w innym kliencie okienkowym. Natomiast ze względu na swój charakter nie nadaje się on do zastosowania w jakimkolwiek kliencie opartym o technologie webowe. 4. Integracja klienta ze Springiem 4.1. Sposób integracji Ze względu na konsolowy charakter klienta forum opartego o Swing wykorzystanie wbudowanego w Spring a modelu Web MVC stało się niemożliwe, głównie ze względu na sposób komunikacji w aplikacjach webowych oparty o protokół http. Próba wykorzystanie Spring Web MVC sprowadziła by się do napisania komunikacji opartej o HttpRequest i HttpResponse co przyczyniło by się do dużo zwiększonego nakładu pracy potrzebnego do stworzenia działającego klienta okienkowego.

Wykorzystany został natomiast mechanizm pozwalający na zarządzanie instancjami poszczególnych klas do reprezentowania poszczególnych komponentów systemu, by zwolnić programistę od konieczności ustawiania referencji do poszczególnych obiektów a także celem zwiększenia wydajności aplikacji by nie tworzyć co chwilę nowych instancji komponentów z których w danym momencie wykorzystywany jest co najwyżej jeden. 4.2. Ocena integracji Zastosowanie reprezentowania poszczególnych komponentów aplikacji oraz elementów interfejsu graficznego jako beanów instancjonowanych przez framework Spring pozwala na uproszczenie procesu implementcaji aplikacji. Jednakże Spring wydaje się być bardziej dostosowany do ułatwiania tworzenia klientów opartych o technologie webowe. 5. Pliki źródłowe 5.1 Pliki konfiguracyjne pl/edu/agh/pp/swingclient/spring-swing-context.xml 5.2. Pliki źródłowe pl/edu/agh/pp/swingclient/forumconnector.java pl/edu/agh/pp/swingclient/swingclientcontroller.java pl/edu/agh/pp/swingclient/gui/createthreadpanel.java pl/edu/agh/pp/swingclient/gui/modifymessagepanel.java pl/edu/agh/pp/swingclient/gui/swingclientwindow.java pl/edu/agh/pp/swingclient/gui/threaddetailspanel.java pl/edu/agh/pp/swingclient/gui/threadspanel.java pl/edu/agh/pp/swingclient/gui/layouts/guiclientmessagelayout.java pl/edu/agh/pp/swingclient/gui/layouts/guiclientthreadlayout.java pl/edu/agh/pp/swingclient/gui/layouts/modifymessagelayout.java pl/edu/agh/pp/swingclient/gui/layouts/newthreadlayout.java pl/edu/agh/pp/swingclient/gui/listeners/threadstableselectionlistener.java pl/edu/agh/pp/swingclient/gui/tablemodels/messagestablemodel.java pl/edu/agh/pp/swingclient/gui/tablemodels/threadstablemodel.java