Évekkel ezelőtt hálózatos Java EE esettanulmányt akartunk készíteni Lengyel Borisz kollégával. Ötleteltünk: milyen technológiával és hogyan kommunikáljon egymással a szerver és a kliens(ek). A távoli metódushívás (Remote Method Invocation) mellett döntöttünk és elkészült a denevérek a barlangban projekt, amely evolúciós projektként azóta több változatot is megélt. A felhasználói felület (barlang) betölt néhány képet (denevér kliensek), amelyek a szerver segítségével mozognak.
Ismertetjük a tervezés folyamatát, a kliens és szerver funkcióit részletesen, végül ötleteket adunk a továbbfejlesztésre.
A főbb feladatokat így határoztuk meg:
- az RMI kommunikációs módszer megismertetése,
- az RMI szolgáltatás reprezentálása látványos grafikus/swinges klienssel,
- alternatíva nyújtása a TCP protokoll közvetlenül csatlakozó socket-jére.
Elkészítettük az alábbi osztálydiagramot (persze ez nem az első változat):
A szerver és kliens funkcióit megvalósító osztályok/interfészek feladatait így határoztuk meg:
BarlangDenevérInterfész interfész:
- véletlen 5 és 10 közötti a denevérek száma,
- méretek a GUI-hoz.
Denevér osztály:
- megvalósítja az RMI kliens funkciót,
- JLabel leszármazott, külső képfájlt tölt be ( bat.jpg),
- egyedi azonosítója van,
- eldönti mozgásának irányát (4) és léptékét (3), mintha ultrahangot adna,
- a szerver megadja neki, hogy az új helyre elmozdulhat-e,
- saját magát képes mozgatni.
Pozíció interfész:
- öröklődik a java.rmi.Remote interfészből,
- két távolról hívható metódus fejét tartalmazza.
BarlangSzerver osztály:
- megvalósítja az RMI szerver funkciót,
- implementálja a Pozíció interfészt,
- JFrame leszármazott,
- figyel arra, hogy a denevérek ne mozogjanak ki a barlangból.
BarlangFelület osztály:
- JFrame leszármazott,
- GUI az RMI kliensek megjelenítéséhez.
BarlangSzerverTérkép osztály:
- JPanel leszármazott,
- GUI a szerveren a kliensek mozgásának követésére.
Ha futtatjuk az elkészült szerver és kliens programot, akkor ezt láthatjuk:
A fejlesztés és tesztelés közben sok-sok továbbfejlesztési ötletet/javaslatot fogalmaztunk meg:
- háttérkép a barlangról,
- a háttérkép megvalósíthat labirintust, koordináta-rendszert,
- átlátszó illetve egyedi képfájlok a denevéreknek,
- a denevérek mozgásának tetszőleges iránya (360),
- a denevérek mozgásának egyedi léptéke,
- a denevérek figyeljenek egymásra (ne ütközzenek össze),
- a denevérek figyeljenek a környezetükre (ne ütközzenek bele sziklákba, cseppkövekbe),
- a szerver követheti a denevérek útvonalát,
- a szerver archiválhat, szerializálhat, készíthet statisztikát.
A bejegyzéshez tartozó – több lépésben továbbfejlesztett – forráskódot ILIAS e-learning tananyagban tesszük elérhetővé tanfolyamaink résztvevői számára.
A feladat a Java EE szoftverfejlesztő tanfolyam 21-24. óra: RMI alapú kommunikáció alkalmához kapcsolódik.
A képernyőről a videó a FlashBack Express programmal, a videóból az animált gif az aconvert.com weboldalon készült.