Projekt z przedmiotu Technologie Internetowe Autorzy: Jakub Białas i Jarosław Tyma grupa II, Automatyka i Robotyka sem. V, Politechnika Śląska

Przedmiot projektu: Aplikacja internetowa w języku Java

Dokumentacja aplikacji Szachy online

Spis treści: 1. 2. 3. 4. 5.

Wstęp. Przedmiot projektu. Wykorzystane technologie i środowisko. Wymagania sprzętowe i programowe. Aplikacja serwera. Aplikacja klienta.

Autorzy: Jarosław Tyma i Jakub Białas. Gliwice 2010 str. 1

1. Wstęp. Przedmiot projektu. Przedmiotem projektu z przedmiotu Technologie Internetowe było stworzenie aplikacji internetowej napisanej w języku Java. Głównymi założeniami było m.in. to iż ma to być aplikacja typu klient-serwer. Stworzyliśmy zatem grę internetową umożliwiającą rozgrywki szachowe oraz prowadzenie rozmów pomiędzy klientami za pośrednictwem serwerowego czatu. 2. Wykorzystane technologie i środowisko. Szachy online stworzone zostały w Javie z wykorzystaniem kilku niezbędnych technologii i mechanizmów takich jak: - wbudowane w NetBeansa biblioteki umożliwiające połączenie za pomocą protokołu TCP/IP - sterownik JDBC dla Javy – umożliwił nam łatwe połączenie z lokalną bazą danych (więcej informacji pod adresem http://www.mysql.com/products/connector/) - biblioteki Secure iNet Factory – wykorzystane przez nas do wysyłania maili za pośrednictwem serwera gmail (więcej informacji można znaleźć na http://www.jscape.com/secureinetfactory/download.html); - biblioteki graficzne Java Swing – wykorzystaliśmy je do stworzenia aplikacji klienckiej

Naszym głównym środowiskiem pracy było chyba najpopularniejsze IDE Javy jakim jest NetBeans. Jest to projekt otwartego oprogramowania umożliwiający komfortowe i efektywne tworzenie aplikacji, szczególnie tych nastawionych na komunikację internetową oraz rozwiązania mobilne. Więcej informacji na temat NetBeansa można znaleźć na stronie projektu pod adresem: http://netbeans.org/index.html 3. Wymagania sprzętowe i programowe. Całość napisana została w języku Java, stworzonym przez Sun Microsystems, a której obecnym właścicielem jest Oracle Corporation. W związku ze specyfiką tego języka, nasza gra jest w pełni przenośna pomiędzy różnymi systemami operacyjnymi. Ma to również swoje złe strony – aplikacje uruchamiane są za pośrednictwem tzn. wirtualnej maszyny Javy czego konsekwencjami są oddanie użytkownikom do dyspozycji języka obiektowego wysokiego poziomu, który nie jest bezpośrednio kompilowany do źródeł binarnych. Skutkuje to zatem stosunkowo wysokim apetytem aplikacji na zasoby sprzętowe. Zalecanymi przez nas wymaganiami sprzętowymi i programowymi, zapewniającymi bezproblemową obsługę serwera i płynną rozgrywkę za pomocą klienta są: - system operacyjny z zainstalowaną wirtualną maszyną Javy - w przypadku klienta – przeglądarka obsługująca aplety Javy - niemalże dowolny procesor o wydajności odpowiadającej minimum P4 1.8GHz - pamięć operacyjna większa niż 1GB - szerokopasmowy dostęp do Internetu w przypadku aplikacji serwera Wszelkie informacje na temat Javy oraz najnowsze wersje wirtualnej maszyny można znaleźć pod adresem: http://www.oracle.com/us/technologies/java/index.html. Autorzy: Jarosław Tyma i Jakub Białas. Gliwice 2010 str. 2

4. Aplikacja serwera. Zadaniem serwera gry Szachy online, na wzór innych aplikacji o podobnym profilu, jest szeroko pojęta obsługa klientów do niego podłączonych. Główny nacisk w naszej aplikacji położyliśmy na rozbudowę funkcjonalności serwera o mechanizmy umożliwiające swobodną komunikację użytkowników oraz prowadzenie jednocześnie wielu gier. Serwer jest zatem aplikacją wielowątkową a do jej głównych zadań należą: - udostępnianie mechanizmu nawiązywania połączeń - implementacja przynajmniej podstawowych mechanizmów diagnostycznych związanych z połączeniem z klientami - zapewnienie mechanizmów obsługi serwera (podgląd stanu serwera, zarządzanie użytkownikami itd.) - zapewnienie sobie bezpośredniego dostępu do bazy danych przechowujących dane użytkowników oraz statystyki - umożliwienie prowadzenia pojedynku szachowego - weryfikacja wykonywanych przez graczy ruchów - udostępnienie funkcji czatu graczom oraz klientom oczekującym na grę - prowadzenie prostych statystyk wśród zarejestrowanych graczy - obsługa wszelkich żądań klientów związanych z grą i innymi działaniami Serwer jest typowo konsolową aplikacją (większość dedykowanych serwerów gry ze względu na minimalizację wymagań sprzętowych udostępnia tylko tekstowy interfejs). Jego funkcje zostały rozdzielone na kilka niezależnych wątków, które w razie potrzeby modyfikują określone zasoby. Przybliżona struktura serwera prezentuje się następująco: - MainServerThread – nadrzędny wątek startujący serwer; uruchamia on konsole, zapewnia obsługę jej komend oraz uruchamia pozostałe wątki serwera - ConnectionThread – wątek przyjmujący połączenia klientów; po nawiązaniu połączenia przekazuje odpowiednie obiekty do obsługi przez inne wątki - LobbyThread – wątek lobby do którego przekierowywani są wszyscy pomyślnie zalogowani użytkownicy; zapewnia obsługę najważniejszych akcji jak logowanie i rejestracja oraz komunikacja - PingSenderThread – wątek na bieżąco testujący połączenia z klientami - ChessGameThread – wątek tworzony dla każdej dwójki graczy Taka architektura serwera pozwoliła nam na stworzenie systemu, w którym większość akcji mogła zostać rozsynchronizowana niezależnie od ilości graczy i prowadzonych gier. Obsługa serwera z wiersza poleceń ogranicza się do kilku podstawowych funkcji jak zarządzanie użytkownikami, grami, logami oraz wysyłanie wiadomości. Wszystkie dostępne polecenia konsoli dostępne są po wpisaniu komendy „help”. Przykładowe wywołanie komendy konsoli:

Autorzy: Jarosław Tyma i Jakub Białas. Gliwice 2010 str. 3

5. Aplikacja klienta. Aplikacja klienta, zgodnie z wytycznymi projektu, stworzona została w formie apletu uruchamianego w przeglądarce klienta. Podstawowymi funkcjami klienta jest: - łączenie się z serwerem poprzez TCP/IP - udostępnienie pełnej obsługi użytkownika – rejestracja, logowanie, resetowanie hasła oraz zmiana obecnych danych - możliwość tworzenia gier oraz komunikowania się z innymi użytkownikami - kontrola poprawności wykonywanych przez gracza ruchów Uruchomiony aplet prezentuje się następująco:

Autorzy: Jarosław Tyma i Jakub Białas. Gliwice 2010 str. 4

Po uruchomieniu użytkownika wita ekran w którym może dokonać rejestracji, logowania lub resetu hasła. Po zalogowaniu, oczom użytkownika prezentuje się lobby:

Za jego pomocą klient może komunikować się z innymi graczami oraz pobrać listę trwających gier. Na samej górze umieszczona zostały przyciski umożliwiające stworzenie nową grę, dołączenie do już istniejącej oraz odświeżenie listy gier i graczy. Po stworzeniu gry gracz zostaje przeniesiony do panelu oczekiwania na drugiego gracza:

Autorzy: Jarosław Tyma i Jakub Białas. Gliwice 2010 str. 5

Gdy do gry dołączy drugi gracz i oboje zadeklarują gotowość do pojedynku. Gra uruchomi stosowny panel z szachownicą:

W przypadku stwierdzenia niemożliwości wykonania ruchu (mat) gracze mają możliwość zdecydowania o zakończeniu gry, ucieczce lub stwierdzenia remisu.

Autorzy: Jarosław Tyma i Jakub Białas. Gliwice 2010 str. 6