IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
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í.

1. diel - Java server - Úvod

Vitajte u kurzu zo sekcie Java, v ktorom si ukážeme, ako vytvoriť server pre klientskej aplikácie. V tomto prípade sa zameriame na server pre chat, ale základ bude rovnaký aj pre iné použitie. V tejto lekcii si stanovíme ciele, ktoré chceme dosiahnuť, popíšeme si použité technológie, a založíme projekt.

Ciele

Ako už bolo povedané v úvode, tento kurzu si kladie za cieľ ukázať, že napísať kvalitný server v Jave nie je až tak ťažké, ako by sa mohlo zdať. V prvej polovici kurze implementujeme základnej časti, ktoré budú použiteľné pre akúkoľvek aplikáciu servera, od chatu po jednoduchý herný server. Druhá polovica sa zameria na samotný chat.

Funkcie servera

Server bude poskytovať nasledujúce funkcie:

  • správa klientov zahájenie priamej komunikácie

    vloženie do čakacej fronty

  • zahájenie priamej komunikácie
  • vloženie do čakacej fronty
  • čakacej front pre prípad, že je na serveri príliš veľa klientov
  • ľahké nájdenie servera v lokálnej sieti
  • jednoduchá rozšíriteľnosť pomocou pluginov
  • interaktívnej komunikácie so správcom servera

Výsledná podoba

Nižšie môžete vidieť výsledného chat klienta. U kontaktov sa zobrazuje počet neprečítaných správ. Ďalej indikátor písania sa zobrazuje v tabu. Ak je konverzácia dlhší, zobrazí sa scrollbar.

Príklad konverzácie - Server pre klientskej aplikácie v Jave

Použité technológie

Pretože sa jedná o kurze v sekcii Java, tak celú aplikáciu napíšeme práve v Jave. O správu projektu a závislostí sa bude starať grádl a dependency injection nám zaistí Google Guice.

Založenie projektu

Začneme založením projektu. K programovaniu odporúčam používať rozumné IDE. Ja budem v celom kurze používať IntelliJ IDEA.

Klikneme teda v menu na tlačidlo File -> New -> Project ... Otvorí sa okno ako je na obrázku nižšie. V tomto okne zaškrtnite, že chcete, aby sa o projekt staral grádl. Ak grádl nie je v možnosti, je potrebné aktivovať plugin v nastavení: File -> Settings -> Plugins Otvorí sa okno s nastavením pluginov. Do vyhľadávacieho políčka zadáme názov pluginu "grádl", zaškrtneme checkbox, klikneme na tlačidlo apply a ok. Po reštarte prostredie už bude grádl aktívny. Jazyk vyberte Java (mal by byť vybraný v predvolenom nastavení). Pokračujte tlačidlom Next.

Založenie nového projektu v IntelliJ Idea s grádl - Server pre klientskej aplikácie v Jave

V ďalšom okne je potrebné vyplniť políčka GroupID a ArtifactId. GroupID predstavuje balík, ktorý zvyčajne reprezentuje firmu / inštitúcii / jedinca, ktorá stojí za aplikácií. Ja sem zvyčajne vyplňuji cz.stechy. ArtifactId je názov aplikácie, ktorú sa snažíme vytvoriť. V tomto prípade zadáme jednoducho chat. Je tu ešte políčko Version. To udáva verziu aplikácie. Políčko nechajte vyplnené východiskovými hodnotami a pokračujte tlačítkom Next.

Nastavenie GroupID a ArtifactID s IntelliJ IDEA - Server pre klientskej aplikácie v Jave

Ďalšie okno obsahuje nastavenia grádl. Všetko ponechajte vo východiskových hodnotách a zaškrtnite checkbox Use auto-import. Pokračujte ďalej tlačidlom Next.

Nastavenie grádl v IntelliJ IDEA - Server pre klientskej aplikácie v Jave

Nasleduje posledné okno, v ktorom si nastavíte koreňový adresár projektu. Až budete spokojní s umiestnením projektu, tlačidlom Finish dokončíte jeho zakladaní.

Nastavenie koreňového adresára projektu - Server pre klientskej aplikácie v Jave

Hneď po vytvorení projektu sa začne inicializovať grádl.

Štruktúra projektu

Štruktúra nášho projektu je vidieť na nasledujúcom obrázku.

Základná štruktúra projektu - Server pre klientskej aplikácie v Jave

V adresári projektu sa nachádzajú dve skryté zložky: .gradle/ a .idea/. V týchto zložkách sa nachádzajú konfiguračné súbory pre grádl a idea, nevšímajte si ich. Ďalej sa tu nachádza zložky:

  • gradle/, obsahujúci wrapper pre grádl.
  • src/, ktorá je prázdna.

Žiadnu z týchto zložiek nemažte ani needitujte. Zložku src/ nebudeme používať. Zo súborov sa tu nachádza:

  • build.gradle, konfiguračný súbor obsahujúci informácie o zostavení hlavného modulu chat.
  • Súbor settings.gradle obsahujúci informáciu o názve projektu.
  • Súbory gradlew a gradlew.bat, ktoré sú spúšťacími súbormi pre grádl.

S touto štruktúrou sa ale neuspokojíme, pretože chceme tvoriť klient-server aplikáciu. Vytvoríme si teda moduly reprezentujúce klienta, server a spoločnú časť. Klikneme pravým tlačidlom na koreňovú zložku (chat/) a vyberieme New -> Module. Zobrazí sa nám rovnaké okno ako pri zakladaní nového projektu. Opäť vyberieme, že chceme, aby sa o závislosti staral grádl. Ďalej vyberieme, že chceme jazyk Java a pokračujeme tlačidlom Next.

V ďalšom okne sa nachádza nastavenie GroupID a ArtifactId. GroupID je už predvyplnené a nebudeme ho meniť. Do ArtifactId napíšeme názov nového modulu. Najskôr založíme modul pre klienta, takže do políčka vyplníme client a pokračujeme tlačidlom Next.

Nastavenie ArtifactID nového modulu v IntelliJ IDEA - Server pre klientskej aplikácie v Jave

V poslednom okne sa zobrazí nastavenie umiestnenia modulu. Všetko necháme vo východiskových hodnotách a tlačidlom Finish dokončíme vytvorenie prvého modulu. Rovnako postupujte aj pre modul server a share.

Výsledná štruktúra projektu je k dispozícii na nasledujúcom obrázku.

Výsledná štruktúra projektu s vytvorenými modulmi v IntelliJ IDEA - Server pre klientskej aplikácie v Jave

Každý modul disponuje zložkou src/main/java/, do ktorej budeme písať zdrojový kód. Zložka resources/ slúži pre prípadné doplňujúce súbory ako sú obrázky, preklady a pod. Zložka test/ obsahuje rovnaké zložky ako main/, ale je určená na testovanie aplikácie.

Nastavenia závislostí

Teraz si nastavíme závislosti medzi modulmi. Modul share bude obsahovať triedy, ktoré budú spoločné ako pre klienta, tak pre server.

V module client otvoríme súbor build.gradle a doplníme závislosť na module share príkazom compile project(':share') do miesta nastavenia závislostí dependencies. Ten istý príkaz vložíme aj do modulu server.

Jednotlivé moduly možno skompilovať príkazom:

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

Príkazy sa spúšťa v príkazovom riadku. V IntelliJ existuje plugin terminal, ktorý sprístupní príkazový riadok priamo v prostredí. Ak máte plugin aktívny, môžete terminál zobraziť kliknutím na záložku terminal v spodnej časti IDE. V opačnom prípade je potreba plugin povoliť v nastaveniach pluginov: File -> Settings -> Plugins. V okne zadáte do vyhľadávacieho poľa názov pluginu terminal a zaškrtnete checkbox. Po potvrdení zmien a reštarte IDE bude terminál aktívny a pripravený na použitie.

Teraz, ak spustíte kompiláciu klienta, tak sa najskôr skompiluje modul share a až potom modul client.

Ešte chvíľku zostaneme pri module client a súboru build.gradle. Aby sme mohli klienta ľahko spúšťať, je potrebné pridať plugin, ktorý sa o to postará. Na začiatku súboru do definície pluginov pridajte plugin application:

plugins {
    id 'java'
    id 'application'
}

Tento plugin ešte potrebuje zadefinovať názov hlavnej triedy a to so všetkými balíčky, v ktorých sa trieda nachádza. Vytvoríme preto novú premennú, ktorá nebude v žiadnom bloku a nazveme ju mainClassName:

mainClassName = 'cz.stechy.chat.SimpleClient'

Presunieme sa do modulu server, opäť do súboru build.gradle. Server budeme v budúcnosti spúšťať s parametrami. Aby sme tieto parametre ľahko odovzdali JVM, je potreba vytvoriť 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
}

Spúšťanie klienta a servera bude nasledujúce:

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

To by bolo z úvodnej lekcie všetko. Nabudúce, v lekcii Java server - Parametre servera , začneme tvoriť serverovú časť chatu.


 

Mal si s čímkoľvek problém? Stiahni si vzorovú aplikáciu nižšie a porovnaj ju so svojím projektom, chybu tak ľahko nájdeš.

Stiahnuť

Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami

Stiahnuté 48x (110.59 kB)
Aplikácia je vrátane zdrojových kódov v jazyku Java

 

Všetky články v sekcii
Server pre klientskej aplikácie v Jave
Preskočiť článok
(neodporúčame)
Java server - Parametre servera
Článok pre vás napísal Petr Štechmüller
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Autor se věnuje primárně programování v Javě, ale nebojí se ani webových technologií.
Aktivity