Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Lekce 1 - Java server - Úvod

Vítejte u kurzu ze sekce Java, ve kterém si ukážeme, jak vytvořit server pro klientské aplikace. V tomto případě se zaměříme na server pro chat, ale základ bude stejný i pro jiné použití. V této lekci si stanovíme cíle, kterých chceme dosáhnout, popíšeme si použité technologie, a založíme projekt.

Cíle

Jak již bylo řečeno v úvodu, tento kurz si klade za cíl ukázat, že napsat kvalitní server v Javě není až tak těžké, jak by se mohlo zdát. V první polovině kurzu implementujeme základní části, které budou použitelné pro jakoukoliv aplikaci serveru, od chatu po jednoduchý herní server. Druhá polovina se zaměří na samotný chat.

Funkce serveru

Server bude poskytovat následující funkce:

  • správa klientů
    • zahájení přímé komunikace
    • vložení do čekací fronty
  • čekací fronta pro případ, že je na serveru příliš mnoho klientů
  • snadné nalezení serveru v lokální síti
  • snadná rozšiřitelnost pomocí pluginů
  • interaktivní komunikace se správcem serveru

Výsledná podoba

Níže můžete vidět výsledného chat klienta. U kontaktů se zobrazuje počet nepřečtených zpráv. Dále indikátor psaní se zobrazuje v tabu. Pokud je konverzace delší, zobrazí se scrollbar.

Příklad konverzace - Server pro klientské aplikace v Javě

Použité technologie

Protože se jedná o kurzu v sekci Java, tak celou aplikaci napíšeme právě v Javě. O správu projektu a závislostí se bude starat Gradle a dependency injection nám zajistí Google Guice.

Založení projektu

Začneme založením projektu. K programování doporučuji používat rozumné IDE. Já budu v celém kurzu používat IntelliJ IDEA.

Klikneme tedy v menu na tlačítko File -> New -> Project... Otevře se okno jako je na obrázku níže. V tomto okně zaškrtněte, že chcete, aby se o projekt staral Gradle. Pokud Gradle není v možnosti, je potřeba aktivovat plugin v nastavení: File -> Settings -> Plugins Otevře se okno s nastavením pluginů. Do vyhledávacího políčka zadáme název pluginu "Gradle", zaškrtneme checkbox, klikneme na tlačítko apply a ok. Po restartu prostředí již bude Gradle aktivní. Jazyk vyberte Java (měl by být vybrán ve výchozím nastavení). Pokračujte tlačítkem Next.

Založení nového projektu v IntelliJ Idea s Gradle - Server pro klientské aplikace v Javě

V dalším okně je potřeba vyplnit políčka GroupId a ArtifactId. GroupId představuje balíček, který obvykle reprezentuje firmu/institu­ci/jedince, která stojí za aplikací. Já sem obvykle vyplňuji cz.stechy. ArtifactId je název aplikace, kterou se snažíme vytvořit. V tomto případě zadáme jednoduše chat. Je zde ještě políčko Version. To udává verzi aplikace. Políčko nechte vyplněno výchozí hodnotou a pokračujte tlačítkem Next.

Nastavení GroupID a ArtifactID s IntelliJ IDEA - Server pro klientské aplikace v Javě

Další okno obsahuje nastavení Gradlu. Vše ponechte ve výchozích hodnotách a zaškrtněte checkbox Use auto-import. Pokračujte dál tlačítkem Next.

Nastavení Gradlu v intelliJ IDEA - Server pro klientské aplikace v Javě

Následuje poslední okno, ve kterém si nastavíte kořenový adresář projektu. Až budete spokojeni s umístěním projektu, tlačítkem Finish dokončíte jeho zakládání.

Nastavení kořenového adresáře projektu - Server pro klientské aplikace v Javě

Hned po vytvoření projektu se začne inicializovat Gradle.

Struktura projektu

Struktura našeho projektu je vidět na následujícím obrázku.

Základní struktura projektu - Server pro klientské aplikace v Javě

V adresáři projektu se nacházejí dvě skryté složky: .gradle/ a .idea/. V těchto složkách se nacházejí konfigurační soubory pro gradle a idea, nevšímejte si jich. Dále se zde nachází složky:

  • gradle/, obsahující wrapper pro gradle.
  • src/, která je prázdná.

Žádnou z těchto složek nemažte ani needitujte. Složku src/ nebudeme používat. Ze souborů se zde nachází:

  • build.gradle, konfigurační soubor obsahující informace o sestavení hlavního modulu chat.
  • Soubor settings.gradle obsahující informaci o názvu projektu.
  • Soubory gradlew a gradlew.bat, které jsou spouštěcími soubory pro gradle.

S touto strukturou se ale nespokojíme, protože chceme tvořit klient-server aplikaci. Vytvoříme si tedy moduly reprezentující klienta, server a sdílenou část. Klikneme pravým tlačítkem na kořenovou složku (chat/) a vybereme New -> Module. Zobrazí se nám stejné okno jako při zakládání nového projektu. Opět vybereme, že chceme, aby se o závislosti staral Gradle. Dále vybereme, že chceme jazyk Java a pokračujeme tlačítkem Next.

V dalším okně se nachází nastavení GroupId a ArtifactId. GroupId je již předvyplněno a nebudeme ho měnit. Do ArtifactId napíšeme název nového modulu. Nejdříve založíme modul pro klienta, takže do políčka vyplníme client a pokračujeme tlačítkem Next.

Nastavení ArtifactID nového modulu v IntelliJ IDEA - Server pro klientské aplikace v Javě

V posledním okně se zobrazí nastavení umístění modulu. Vše necháme ve výchozích hodnotách a tlačítkem Finish dokončíme vytvoření prvního modulu. Stejně postupujte i pro modul server a share.

Výsledná struktura projektu je k dispozici na následujícím obrázku.

Výsledná struktura projektu s vytvořenými moduly v IntelliJ IDEA - Server pro klientské aplikace v Javě

Každý modul disponuje složkou src/main/java/, do které budeme psát zdrojový kód. Složka resources/ slouží pro případné doplňující soubory jako jsou obrázky, překlady apod. Složka test/ obsahuje stejné složky jako main/, ale je určena k testování aplikace.

Nastavení závislostí

Nyní si nastavíme závislosti mezi moduly. Modul share bude obsahovat třídy, které budou společné jak pro klienta, tak pro server.

V modulu client otevřeme soubor build.gradle a doplníme závislost na modulu share příkazem compile project(':share') do místa nastavení závislostí dependencies. Ten samý příkaz vložíme i do modulu server.

Jednotlivé moduly lze zkompilovat příkazem:

client: gradlew :client:compileJava
server: gradlew :server:compileJava
share: gradlew :share:compileJava

Příkazy se spouští v příkazové řádce. V IntelliJ existuje plugin terminal, který zpřístupní příkazovou řádku přímo v prostředí. Pokud máte plugin aktivní, můžete terminál zobrazit kliknutím na záložku terminal ve spodní části IDE. V opačném případě je potřeba plugin povolit v nastavení pluginů: File -> Settings -> Plugins. V okně zadáte do vyhledávacího pole název pluginu terminal a zaškrtnete checkbox. Po potvrzení změn a restartu IDE bude terminál aktivní a připravený k použití.

Nyní, pokud spustíte kompilaci klienta, tak se nejdříve zkompiluje modul share a až pak modul client.

Ještě chvilku zůstaneme u modulu client a souboru build.gradle. Abychom mohli klienta snadno spouštět, je potřeba přidat plugin, který se o to postará. Na začátku souboru do definice pluginů přidejte plugin application:

plugins {
    id 'java'
    id 'application'
}

Tento plugin ještě potřebuje zadefinovat název hlavní třídy a to se všemi balíčky, ve kterých se třída nachází. Vytvoříme proto novou proměnnou, která nebude v žádném bloku a nazveme ji mainClassName:

mainClassName = 'cz.stechy.chat.SimpleClient'

Přesuneme se do modulu server, opět do souboru build.gradle. Server budeme v budoucnu spouštět s parametry. Abychom tyto parametry snadno předali JVM, je potřeba vytvořit vlastní task:

task run (type: JavaExec, dependsOn: classes){
    if(project.hasProperty('arg')){
        args(arg.split(','))
    }

    main = "cz.stechy.chat.Server"
    classpath = sourceSets.main.runtimeClasspath
    jvmArgs = [
            "-Dkey=value"
    ]
    standardInput = System.in
}

Spouštění klienta a serveru bude následující:

client: gradlew :client:run
server: gradlew :server:run -Parg=-port=21298

To by bylo z úvodní lekce vše.

Příště, v lekci Java server - Parametry serveru, začneme tvořit serverovou část chatu.


 

Měl jsi s čímkoli problém? Stáhni si vzorovou aplikaci níže a porovnej ji se svým projektem, chybu tak snadno najdeš.

Stáhnout

Stažením následujícího souboru souhlasíš s licenčními podmínkami

Staženo 48x (110.59 kB)
Aplikace je včetně zdrojových kódů v jazyce Java

 

Všechny články v sekci
Server pro klientské aplikace v Javě
Přeskočit článek
(nedoporučujeme)
Java server - Parametry serveru
Článek pro vás napsal Petr Štechmüller
Avatar
Uživatelské hodnocení:
6 hlasů
Autor se věnuje primárně programování v Javě, ale nebojí se ani webových technologií.
Aktivity