IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

1. diel - Java RMI - Nastavenie prostredia

Vitajte v seriáli o RMI (Remote Method Invocation), čo je Java implementácia techniky známej všeobecne pod skratkou RPC (Remote Procedure Call). Čo to je? Ak si to preložíme do slovenčiny, tak sa jedná o "vzdialené volanie metód". Prakticky sa jedná o vlastnosť JRE, virtuálneho stroja Javy, ktorý umožňuje volať metódy (čiže spustiť kód) na iných vzdialených strojoch (na LAN / na MAN / alebo WAN). Princíp je veľmi podobný socketovú komunikáciu vo verzii klient / server. Samotné volanie metód je možné vykonávať z klienta na server alebo zo servera volať klienta či klientov.

V niektorých literatúrach sa o RMI hovorí ako o distribuovaných systémoch. Prečo? Pretože cez RMI možno vcelku jednoducho naprogramovať výpočty, či požadované postupy pre viac počítačov, tzv. Distribuovať systém riešenia (aj DOS, DDOS útoky) čiže rozdeliť prácu na viac strojov. Pretože je Java prenositeľná, nie je problém ani ak je server Linux, Linux ARM, Mac OS X, Solaris a klient Windows a samozrejme aj naopak.

Využitie v desktopové aplikácii je takmer mizivé, ale cez sieť je možné spojiť sa s iným Java programom bežiacom na JRE a zavolať na ňom vopred naprogramované metódy. Ako som vyššie uviedol, je to podobné princípu socketov, ale v niečom oveľa lepšie. Socket vám neumožňuje vyberať si priamo volanie metód ako chcete, slúži len na prenos dát (primitívne dátové typy, objekty, prúdy). Samozrejme aj RMI vie prenášať dáta. RMI funkčnosť sa dá využiť pri rôznych činnostiach, napr. Ovládanie trójskeho koňa, rozložiť matematický výpočet na viac klientov alebo klastrov, navrhnúť softvérové riešenie, kde je frontend ako desktop a backend využiť cez RMI na cloude a pod.

Samozrejme distribuované výpočty existovali už pred vznikom Javy a stále existujú na konkurenčných platformách, napr. CORBA (Common Object Request Broker Architecture), DCOM (Distributed Component Object Model) a všeobecné RPC.

RMI je čisto riešenie Java SE a to je tiež aj jej nevýhodou. Nie je kompatibilný s inými jazykmi. Avšak samozrejme, že beží aj v Java EE, kde má veľmi identický koncept známy ako EJB (Enterprise Java Beans). V skratke povedané, RMI je taká jednoduchšia verzia EJB, u ktorého nepotrebujete žiadny aplikačný server. Keď človek pochopí ako funguje RMI, potom EJB už nie je zas taký problém. Tento kurz o RMI je o zoznámenie s danou technológiou a ukážkami. V žiadnom prípade neukazuje komplexnosť a možnosti celej problematiky.

Nastavenie prostredia

Takže začneme. Kurz je spracovaný na Java 8 update 81, Windows 10 Pre 64bit a celkovo pre 64bit prostredie. Pretože je to Java, všetko by malo byť kompatibilné a malo by bežať aj na 32bit prostredie. Samozrejme ak už máte niečo z toho nainštalované, možno jednotlivé kroky preskočiť. V tejto lekcii nás čaká iba nastavenie prostredia:

  • Nainštaluje Javu (JDK a JRE) - toto je povinná časť
  • Nainštaluje IDE (Eclipse, NetBeans, IntelliJ IDEA, BlueJ, alebo možno aj bez IDE a pod.) - Pre riešenie v kurze bude využité Eclipse IDE
  • Zoznámime sa s RMI registrami a nastavíme je
  • Spustíme RMI registre - cez cmd, Eclipse IDE

Inštalácia Javy

Nainštalujeme Java SE z Oracle webu alebo z OpenJDK. Inštalácia je ukázaná v tomto článku pre NetBeans alebo tu pre Eclipse. Samozrejme nesmieme zabudnúť nastaviť systémovú premennú PATH. Na záver je vhodné reštartovať počítač.

Inštalácia IDE

Vyberieme a stiahneme si IDE, ktoré nám vyhovuje, môže to byť NetBeans, Eclipse, IntelliJ IDEA alebo BlueJ. Ako som už raz napísal, seriál je riešený v Eclipse, ale je úplne nepodstatné aké IDE využijete.

Zoznámenie sa, nastavenie a spustenie RMI registre

RMI registre, čo je to? Jedná sa o * .exe súbor (v prípade Windows), ktorý je nutné spustiť s určitými parametrami (viď. Oracle dokumentácia). Jeho spustením aktivujete službu rmiregistry, ktorá vám umožní spustenie a vykonávanie RMI na JRE. RMI registre sa spúšťa iba na serveri. Ak všetky stroje v projekte disponujú funkciou servera aj klienta, je nutné, aby všetky mali spustené rmiregistry. Program sa nachádza v adresári " adresář instalace Java\bin\ ".

Spustenie RMI registre možné vykonať cez príkazový riadok (v prípade Windows - CMD) alebo cez IDE. V každom prípade je nutné definovať port, na ktorom bude služba RMI registre načúvať. V skratke povedané, port je identifikátor služby v TCP hlavičke paketov a je to prakticky číslo od 2 0 = 1 do 2 16 = 65556. Defaultný port pre RMI registre je 1099, ale samozrejme si možno vybrať port na ktorom služba pobeží. Je zvykom podporným službám dávať port vyššia ako 1024. Hodnoty portu od 1 od 1024 sú vyhradené systémovým službám.

O IDE Eclipse toho písať moc nebudem. Jedná sa o IDE (Integrated Development Environment), slovensky povedané integrované vývojové prostredie pre programátorov. Je zadarmo a nemusia sa inštalovať, stačí ho nakopírovať. Ako sa to robí je ukázané tu pre verziu Eclipse Mars. V mojom prípade využívam Eclipse EE, ale to nie je povinné, stačí aj obyčajné Eclipse pre SE. Pre používanie RMI nie je potrebné inštalovať žiadne IDE balíčky. Všetko beží už v základnom JRE. RMI registre sa dajú spustiť viacerými spôsobmi, napr. Cez CMD, IDE, programovo, Windows registre, a pod.

Spustenie RMI registre cez CMD

Takže ideme do toho. Spustíme si RMI registre cez príkazový riadok CMD. V ľavom dolnom rohu obrazovky klikneme na ikonu Windows pravým tlačidlom myši, v menu si vyberieme Spustiť, zadáme cmd a potvrdíme Enter. A aby sme vedeli ako službu OS registruje, spustíme si aj správca úloh (CTRL + ALT + DEL - vyberieme správcu úloh) a prepneme na záložku procesy.

spustenie cmd - RMI - Remote Method Invocation

Pod Windows sa rmiregistry spúšťa príkazom:

start rmiregistry

na defaultný portu 1099, ale my si ich spustíme na našom zvolenom porte 2020 príkazom:

start rmiregistry 2020

A pod Linux alebo Solaris OS je príkaz:

rmiregistry 2020

Ako vidíte na výpise procesov, vznikol nám nový proces "Java (TM) Platform SE Binary", čo je označenie pre JVM a objavilo sa nové okno vyjadrujúce spustenie rmiregistrů. Ďalej si skontrolujeme výpis portov, na ktorých počúvame. Možno to riešiť cez programy (napr. Cports) alebo obyčajným systémovým príkazom "netstat -an". Ako vidíte, máme aktívnu načúvacie port 2020 pre TCP.

Spustenie RMI cez cmd - RMI - Remote Method Invocation

Ponúka sa logická otázka: Ako službu ukončíme? Cez správcu úloh je možné ukončiť celý proces JVM, ale my zvolíme štandardné riešenie a to že nové okno rmiregistrů ukončíme obyčajným kliknutím na krížik okna. Ako vidíte, zmizne nám JVM zo správcu úloh a keď si dáme opäť výpis portov, vidíme, že už na danom porte nepočúvame.

Vypnutie RMI cez cmd - RMI - Remote Method Invocation

Spustenie RMI registre cez Eclipse IDE

Najskôr vytvoríme Java SE projekt. Pretože som to už robil v inom seriáli, odkáže len na príslušnú lekciu. Teraz si vykonáme nastavenie RMI registrov pod Eclipse IDE. Vyberieme si v menu možnosť "Run -> External Tools -> External Tools Configurations".

Spustenie RMI v Eclipse - RMI - Remote Method Invocation

Objaví sa nám nový dialóg a vo stromu v ľavom okne si vyberieme "Program" a pravým tlačidlom myši vyvoláme kontextové menu a vyberieme "New". Tu začneme vykonávať konfiguráciu externého spúšťacieho programu. Samozrejme to možno urobiť aj pre iné spustiteľné programy (napr. Pod Windows typu * .exe).

Spusteni RMI Eclipse - RMI - Remote Method Invocation
  • Name: RmiRegistry2020 - Najskôr si danú konfiguráciu pomenujeme. Názov si môžete zvoliť ľubovoľný.
  • Location: C: \ Program Files \ JavaJDK \ bin \ rmiregistry.exe - Ako ďalšie je cesta k danému programu (rmiregistry.exe), ktorý sa nachádza v \ bin \ vašej inštalácie Javy.
  • Working Directory: F: \ Dokumenty \ Java \ ProjektRMI01 \ bin - Ďalšia je cesta k \ bin \ nášho projektu (pracovný adresár), ktorý sme si vytvorili. Ja mám daný projekt v "Dokumentoch" na disku "F", v adresári "Java". A pretože sa projekt volá "ProjektRMI01", tak u mňa cesta bude vyzerať takto. Cesta u vás teda iná.
  • Arguments: 2020 - Tvrdenia sú parametre programu. V našom prípade je to číslo portu, na ktorom rmiregistry budú bežať (načúvať).

Potom už len zvolíme Apply a Run. Týmto spustíme RMI registre pod Eclipse.

Spusteni RMI Eclipse - RMI - Remote Method Invocation

Ako vidíte, v konzole Eclipse (dolná časť obrázku) sú rmiregistry spustené. Pre istotu som urobil aj výpis portu cez "cmd", aby sme videli, že počúvame na porte 2020. Ukončenie rmiregistrů cez Eclipse je jednoduché. Ukončíme je rovnako ako bežiaci aplikáciu a to červeným štvorčekom vpravo dole. Potom je ešte nutné kliknúť na dvoj-krížik vpravo, vedľa toho červeného krížika. Tým dvoj-krížikom odstránite zastavený program zo spúšťača Eclipse.

Spusteni RMI Eclipse - RMI - Remote Method Invocation

V budúcej lekcii si vytvoríme prvú príklad a zavoláme prvý vzdialenú metódu.


 

Všetky články v sekcii
RMI - Remote Method Invocation
Preskočiť článok
(neodporúčame)
Java RMI - Volanie void metód
Článok pre vás napísal Robert Michalovič
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Programuji převážně v Javě SE,EE a trochu nativním C a CUDA. více viz.https://cz.linkedin.com/in/robert-michalovic
Aktivity