APLIKACE V JAZYCE JAVA OVLÁDANÉ PŘES WWW
|
|
- Pavla Mašková
- před 6 lety
- Počet zobrazení:
Transkript
1 VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV INFORMAČNÍCH SYSTÉMŮ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INFORMATION SYSTEMS APLIKACE V JAZYCE JAVA OVLÁDANÉ PŘES WWW DIPLOMOVÁ PRÁCE MASTER S THESIS AUTOR PRÁCE AUTHOR Bc. TOMÁŠ HOMOLA BRNO 2007
2 VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV INFORMAČNÍCH SYSTÉMŮ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INFORMATION SYSTEMS APLIKACE V JAZYCE JAVA OVLÁDANÉ PŘES WWW JAVA APPLICATIONS CONTROLLED OVER WWW DIPLOMOVÁ PRÁCE MASTER S THESIS AUTOR PRÁCE AUTHOR VEDOUCÍ PRÁCE SUPERVISOR Bc. TOMÁŠ HOMOLA Ing. RADEK BURGET, Ph.D. BRNO 2007
3 Zadání diplomové práce Řešitel Obor Téma Kategorie Homola Tomáš, Bc. Informační systémy Aplikace v jazyce Java ovládaná přes WWW Web Pokyny: 1. Seznamte se se způsobem tvorby grafického uživatelského rozhraní a appletů v jazyce Java 2. Prostudujte možnosti využití jazyka XML pro komunikaci mezi aplikacemi 3. Navrhněte způsob komunikace aplikace běžící na serveru a aplikací zajišt ující GUI 4. Implementujte serverovou část komunikace jako knihovnu kompatibilní s knihovnami AWT nebo Swing 5. Implementujte klientskou část jako applet 6. Zhodnot te možná omezení a navrhněte pokračování projektu Literatura: Spell, B.: Java programujeme profesionálně. Computer Press, Praha, 2002 Při obhajobě semestrální části diplomového projektu je požadováno: Body 1 až 3 Podrobné závazné pokyny pro vypracování diplomové práce naleznete na adrese Technická zpráva diplomové práce musí obsahovat formulaci cíle, charakteristiku současného stavu, teoretická a odborná východiska řešených problémů a specifikaci etap, které byly vyřešeny v rámci ročníkového a semestrálního projektu (30 až 40% celkového rozsahu technické zprávy). Student odevzdá v jednom výtisku technickou zprávu a v elektronické podobě zdrojový text technické zprávy, úplnou programovou dokumentaci a zdrojové texty programů. Informace v elektronické podobě budou uloženy na standardním pamět ovém médiu (disketa, CD-ROM), které bude vloženo do písemné zprávy tak, aby nemohlo dojít k jeho ztrátě při běžné manipulaci. Vedoucí Burget Radek, Ing., Ph.D., UIFS FIT VUT Datum zadání 28. února 2006 Datum odevzdání 22. května 2007
4 Licenční smlouva Licenční smlouva v kompletním znění je uložena v archivu Fakulty informačních technologíı Vysokého učení technického v Brně.
5 Abstrakt Cílem je navržení a implemetace knihovny pro tvorbu aplikací, které bude možné ovládat vzdáleně přes WWW. Tato knihovna bude poskytovat virtualní grafické uživatelské rozhraní a bude zajišt ovat komunikaci se skutečným vzdáleným grafickým uživatelským rozhraním, které bude navrženo jako applet aplikace v jazyce Java a se kterým bude možné ovládat vzdálenou aplikaci. Návrh řešení je založen na vzdáleném volání metod (RMI), které bude zajišt ovat komunikaci mezi appletem a aplikací běžíci na serveru. Klíčová slova applet, RMI, tvorba GUI v Javě, Swing, webová aplikace Abstract The goal is to design and to implement a library for developing Java applications controlled over WWW. This library provides a virtual graphical user interface and it implements the network communication with a real remote graphical user interface. The remote graphical user interface is implemented as a Java applet. The proposed solution is based on the Remote Method Invocation (RMI) framework that provides the communication between the applet and the application running on the server. Keywords applet, RMI, GUI creation in JAVA, Swing, web application Citace Tomáš Homola: Aplikace v jazyce Java ovládané přes WWW, diplomová práce, Brno, FIT VUT v Brně, 2007
6 Aplikace v jazyce Java ovládané přes WWW Prohlášení Prohlašuji, že jsem tuto bakalářskou práci vypracoval samostatně pod vedením pana Ing. Radka Burgeta, Ph.D. Uvedl jsem všechny literární prameny a publikace, ze kterých jsem čerpal Tomáš Homola 22. května 2007 c Tomáš Homola, Tato práce vznikla jako školní dílo na Vysokém učení technickém v Brně, Fakultě informačních technologií. Práce je chráněna autorským zákonem a její užití bez udělení oprávnění autorem je nezákonné, s výjimkou zákonem definovaných případů.
7 Obsah 1 Úvod 3 2 Tvorba GUI a appletů v jazyce Java Kontejnery Správci rozvržení CardLayout FlowLayout GridLayout BorderLayout GridBagLayout BoxLayout Grafické komponenty Události Applet Remote Method Invokation (RMI) Architektura Architektura s firewall RMI protokol Výstupní proud Vstupní proud Typy hodnot použitých v RMI protokolu Přenos parametrů Návrh architektury pro vzdálené ovládání aplikací Komunikace klient-server Reprezentace vzdálených objektů Popis klienta Popis serveru Realizace Klient Server Stavba server knihovny Interaktivní editor aplikace ovládané přes WWW Možnosti editoru Části editoru
8 6.3 Popis obsluhy editoru Závěr 29 A Přílohy 31 A.1 Rozdělení do balíků A.2 Popis knihovny komponent B Ukázka použití knihovny 35 2
9 Kapitola 1 Úvod Při tvorbě softwarových aplikací s grafickým uživatelským rozhraní se v současnosti používají dva základní přístupy k realizaci tohoto rozhraní. U lokálně instalovaných aplikací se jedná desktopovou aplikaci a u aplikací typu klient server se používá převážně webové rozhraní. Výhoda desktopové aplikace je, že její uživatelské rozhraní, i složitější rozhraní, lze navrhnout a implementovat jednoduše. Výsledná aplikace zpravidla nemívá žádná omezení pro vykonávání svého programu na počítači, kde byla instalovaná. Naproti má nevýhody, protože má problém s přenositelností a se sdílením mezi více uživateli. Webové aplikace s WWW rozhraním nemají problém s přenositelností ani se sdílením mezi uživateli. Ale návrh uživatelského rozhraní pro tento typ aplikací je složité a výsledné uživatelské rozhraní nenabízí takové možnosti a takovou přívětivost prostředí, jako nabízí běžné desktopové aplikace. Je to dáno tím, že HTML nenabízí takové grafické uživatelské komponenty, které mají běžné deskotopové aplikace standardně. Mezi takové komponenty patří Menu, PopupMenu, vícesloupcové seznamy, editovatelné tabulky, zobrazení stromových struktur, záložky, komponenta pro výběr datumu a další. Tyto pokročilé komponenty je si nutné, dosti složitě, pomocí prostředků HTML/Javascript/CSS implementovat a navíc nám zde kladou omezení i některé internetové prohlížeče, protože mají různou podporu pro některé vlastnosti a také chování některých vlastností. Ale je i problém s prvky uživatelské rozhraní, které HTML nabízí, a to v případě pokud chceme přes tyto prvky zobrazit v HTML vytvořené popumenu, tak se nám tyto prvky zobrazí i v tomto popupmenu. Pokud si vybereme pozitivní vlastnosti z obou typů předchozích aplikací, jako je vzhled a jednoduchý návrh uživatelského rozhraní u běžných deskotopových aplikací a přenositelnost, jednoduché možnosti sdílení aplikace mezi více uživateli u webových aplikací, tak nám vznikne vzdáleně ovládaná aplikace přes WWW. Implementace aplikace zůstane na serveru. Uživatelské rozhraní bude ve formě appletu, který bude spuštěn v prostředí internetového prohlížeče. Navíc nám applet umožňuje vytvořit uživatelské rozhraní, které bude nezávislé na platformě ani na internetovém prohlížeči. A navíc vzhled celého uživatelského rozhraní bude stejné na jaké jsme zvyklí v daném prostředí (MS Windows, Mac OS, Linux). A implementace takového typu aplikace bude probíhat tak, jako by to byla běžná desktopová aplikace. Jenom budu mít k dispozici ekvivalentní knihovnu ke knihovně AWT/Swing, takže bude možné použít i stávající desktopovou aplikaci a pouhou změnou importované knihovny, lze vytvořit aplikaci, která bude ovládaná vzdáleně přes WWW. Cílem práce je navrhnout a implementovat knihovnu, která umožní tvorbu vzdáleně ovládaných aplikací. Návrh je založen na aplikačním rozhraní standardní Javovské knihovny AWT/Swing (kapitola 2), komunikace mezi klientskou a serverovou částí využívá prostředky RMI (popsané v kapitole 3). Navržená architektura je popsána v kapitole 4 a 3
10 implementační detaily jsou dále rozebrány v kapitole 5. V kapitole 6 je popsána aplikace pro demonstrování funkčnosti systému vzdáleně ovládaných aplikací. V přílohách je popis komponent pro tvorbu aplikací ovládaných přes WWW a ukázka srovnání kódu aplikace napsané jako běžná deskotopová aplikace s použitím standardní javovské knihovny AWT/Swing a kódu té stejné aplikace zapsané jako vzdáleně ovládaná aplikace. 4
11 Kapitola 2 Tvorba GUI a appletů v jazyce Java V Javě je možné vytvořit grafické uživatelské rozhraní pomocí knihovny java.awt nebo javax.swing. Přičemž třídy, které jsou v knihovně Swing, jsou odvozeny od tříd z knihovny Awt. Dále se budu věnovat komponentám z knihovny Swing. 2.1 Kontejnery Kontejner je správce komponent, které chceme, aby se zobrazili na nějaké jiné komponentě. Nejčastěji se používají: JFrame, JDialog, JApplet, JPanel. Přičemž každá komponenta má svoje specifické použití: JFrame Obvykle se používá pro vytvoření hlavního okna aplikace. Součástí je JRootPane (obrázek 2.1), který je tvořen glasspane (Component) a layeredpane (JLayeredPane). layeredpane je ještě tvořen contentpane (Component) a volitelným menubar (JMenuBar). layeredpane je rodič všech komponent, které jsou zde umístěny. JDialog Využívá se pro tvorbu modálních nebo nemodálních dialogových oken. Součástí je JRootPane. JApplet Je vhodný pro vložení do jiné aplikace (př. webová stránka). Nemůže být použit jako samostatný program. Součástí je JRootPane. Více o appletech je nápsáno dále. JPanel Je vhodný pro umist ování souvisejících komponent na JFrame, JDialog či na jiný JPanel. 2.2 Správci rozvržení Pokud si chceme zjednodušit návrh a rozmist ování komponent, které jsou vloženy do kontejneru, tak můžeme využít některého ze správců rozvržení, který se bude starat o umístění a velikost komponenty. Tím je možné vytvářet flexibilní uživatelské rozhraní, jinak si takové chování musíme sami pracně naprogramovat. Java poskytuje několik správců rozvržení, každý z nich má jiné chování a jinak se i používá. Pokud nechceme využít služeb od žádného ze správců rozvržení, můžeme nastavit 5
12 Obrázek 2.1: Vrstvy JRootPane jako správce rozvržení null, potom jednotlivé komponenty jsou umístěny staticky podle zadaných parametrů (velikost, pozice). Také máme možnost si další správce rozvržení doprogramovat, aby vyhovovali podle našich představ. Dále představím několik základních správců rozvržení: CardLayout, FlowLayout, Grid- Layout, BorderLayout, GridBagLayout, BoxLayout CardLayout Jedná se o nejjednoduší správce rozvržení. Umožňuje zobrazit v jednom okamžiku pouze jednu komponentu. Velikost komponenty je určena podle dostupné zobrazovací plochy kontejneru. Která komponenta bude zobrazena, můžeme určit pomocí metod třídy CardLayout next(), previous(), first(), last() a show(). Metoda first() zobrazí komponentu, která je první v seznamu. Metoda last() zobrazí komponentu, která je poslední v seznamu. Metody next(), previous() umožňují průchod seznamu dopředu nebo dozadu. Metoda show() zobrazí konkretní komponentu. Každá komponenta musí mít přiřazený jedinečný název FlowLayout Tento správce rozvržení uspořádává komponenty podle toho v jakém jsou pořadí vkládány do kontejneru. Uspořádává je postupně zleva doprava a shora dolů. Velikosti jednotlivých komponent nemění, ponechává je tak, jak byly nastaveny. Kolik komponent umístí na jediném řádku, záleží podle toho, jaká je šířka řádku. Umožňuje nastavit, jak se mají řádky s komponentami zarovnávat pomocí konstant třídy FlowLayout LEFT, CENTER, RIGHT GridLayout Tento správce rozvržení rozdělí prostor na mřížku rovnoměrných buněk. Do každé buňky lze umístit jednu komponentu. Jak má být prostor rozdělen, lze určit parametry třídy GridLayout a to počtem řádků a sloupců. Velikost každé komponenty je upravena tak, aby se vešla do buňky. 6
13 2.2.4 BorderLayout Tento správce rozvržení rozdělí plochu na pět oblastí, kam lze vkládat komponenty (sever, jih, východ, západ a střed). Kam bude jednotlivá komponenta umístěna, je určeno konstantou třídy BorderLayout NORTH, SOUTH, EAST, WEST, CENTER. Do každé oblasti lze vložit pouze jednu komponentu. Velikost komponenty bude upravena podle velikosti jednotlivé oblasti GridBagLayout Tento správce rozvržení je nejflexibilnější pro návrh uživatelského rozhraní, také je nejsložitější na použití. Podle názvu, tak jako GridLayout, rozděluje plochu na mřížku buněk. Ale zde není vyžadováno, aby každá komponenta měla stejnou velikost, čímž se velikost každého řádku a sloupce může lišit. Také podporuje nastavování omezení GridBagConstraints, které určí, do které buňky se komponenta vloží, a jak se bude komponenta v rámci buňky chovat. Možné je třeba zarovnaní, velikost, případně jestli bude i jedna komponenta zobrazena i přes sousední buňky. Velikost komponent je většinou určena upřednostňovanými rozměry, pokud je prostor dostatečně velký, jinak nastaví rozměry, které budou vyhovovat. Ale nikdy nestaví velikost menší, než jaká je minimální velikost komponenty BoxLayout Tento správce rozvržení je zjednodušenou verzí GridBagLayout. Umožňuje zobrazovat komponenty pouze na jediném řádku nebo sloupci. Oproti ostatním správcům rozvržení, správce rozvržení BoxLayout využívá více i určitých vlastností komponent, jako je minimální a maximální velikost komponenty. Dále využívá odsazení na ose X a Y. Velikost komponent nastavuje podle dostupné velikosti zobrazované plochy, ale také přihlíží k minimální a maximální velikosti komponent, takže nenastaví velikost menší, než jaká je udána minimální velikostí. A naopak nenastaví velikost větší, než jakou udává maximální velikost. 2.3 Grafické komponenty Pro tvorbu grafického uživatelského rozhraní máme k dispozici celou řadu prvků grafického uživatelského rozhraní. Různé typy tlačítek ( JCheckbox, JToggleButton, JRadioButton, JButton...), editační pole (JTextField, JTextArea...), statické objekty (JLabel...), prvky pro tvorbu menu a popupmenu (JMenu, JMenuItem, JPopupMenu...), složitější prvky pro zobrazení různých seznamů (JComboBox, JList, JTable, JTree...) a spoustu dalších prvků. Prvky umíst ujeme na nějakou zobrazovanou plochu (JFrame, JPanel...). Nastavujeme jim, jaké události budeme zpracovávat. 2.4 Události Pro zpracování událostí je možné použít dva modely: model pozorovatele (nebo také vydavatel/odběratel) a model dotazování. Model dotazování není příliš efektivní, protože je nutné se opakovaně dotazovat, zdali už nějaká událost nastala a jestli se tedy má provést její obsluha. Model pozorovatele je mnohem lepší. Pokud nějaká událost nastane, tak je možné okamžitě provést zpracování události. V programovacích jazycích se model pozorovatele 7
14 nazývá událostmi řízené programování. V jazyce Java je tento model také použit. Tudíž jen programujeme, co se bude dít, když nějaká událost nastane. Není potřeba reagovat na všechny události, které nastanou. Máme možnost si vybrat na jakou událost budeme reagovat. Stačí si jen vytvořit posluchače (listener, objekt implementující rozhraní EventListener) a přiřadit ho komponentě, u které chceme reagovat na danou událost. V Javě existují rozšíření k obecnému rozhraní EventListener, dělí se podle toho, na jaké typy události se specializují. Pro události generované myší se použije rozhraní MouseListener, pro událostí generované nějakou akcí se použije ActionListener, pro události generované stisknutím nějaké klávesy se použije KeyListener a mnohé další. Pokud implementujeme nějaké požadované rozhraní posluchače, pak už stačí předat tento posluchač komponentě použitím metody addxxxlistener(), kde XXX značí název implementovaného rozhraní (pro MouseListener to bude addmouselistener()). Protože každé rozhraní posluchače nabízí mnoho metod (každá je na obsluhu jiné událost), které je nutné implementovat, i když chceme reagovat pouze jen na jednu událost, máme k dispozici adaptéry (př. MouseAdapter), které implementují rozhraní posluchače, tak že na událost nijak nereagují. Tím je dán prostor k odvození a překrytí jen metody, která nás zajímá. Každé metodě pro zpracování události je samozřejmě předána informace o vzniklé události a to která komponenta ji generuje. Bázová třída pro všechny typy události je java.util.eventobject, ostatní třídy událostí jsou od ní odvozeny, podle toho o jaký typ události se jedná. Například pro události generované stisknutím klávesnice je předán objekt třídy KeyEvent, kde se dozvíme, které klávesa byla stisknuta a zdali nebylo zároveň stisknuta kombinace kláves (př. CTRL+S). 2.5 Applet Applet je speciální kontejner pro prvky grafického uživatelského rozhraní, který může být vložen jako součást webové stránky, protože poskytuje rozhraní pro komunikaci mezi appletem a prostředím, ve kterém je spuštěn. Protože applet si je možné stáhnout jako součást nedůvěryhodných webových stránek, a pak je kód appletu spuštěn na klientském počítači, je nutné aby měl definované omezení, co může provádět a co ne. Proto je applet spuštěn v uzavřeném prostředí pískoviště (sandbox), které mu odmítne vykonávat nějakou podezřelou činnost. Toto prostředí zajišt uje virtuální stroj jazyka Java. Výhody appletu je rozšíření statického obsahu webových stránek. Umožňuje tvořit složitější dynamický obsah oproti Javascriptu a navíc kód appletu je už zkompilován do byte-kódu, takže je mnohem rychlejší na interpretaci než Javascript. Bezpečnostní politika pro applety se liší podle toho, jestli se jedná o důvěryhodný nebo nedůvěryhodný kód. Za důvěryhodný applet se považuje ten, který je digitálně podepsán, a potom má větší pískoviště na hraní. Může třeba přistupovat k lokálním souborům. Seznam omezení pro nedůvěryhodné applety: Nelze číst soubory na klientském souborovém systému. Nelze zapisovat do souborů na klientském souborovém systému. Nelze mazat soubory na klientském souborovém systému a to bud metodou File.delete() nebo voláním systémového příkazu rm nebo del. Nelze přejmenovávat soubory na klientském souborovém systému a to bud metodou File.renameTo() nebo voláním systémového příkazu mv nebo rename. 8
15 Nelze vytvářet adresáře na klientském souborovém systému a to bud metodou File.mkdirs() nebo voláním systémového příkazu mkdir. Nelze prohlížet obsah adresářů. Nelze testovat, zdali nějaký soubor existuje či ne. Nelze získávat informace o nějakém souboru jako je velikost, typ, datum a čas poslední modifikace. Nelze vytvářet sít ové spojení k jakémukoli jinému počítači, kromě toho odkud byl applet stažen. Nelze poslouchat a přijímat sít ové spojení na libovolném portu na klientském systému. Nelze vytvořit okno na nejvyšší úrovni bez zobrazeného upozornění, že okno bylo vytvořeno nedůvěryhodným appletem. Nelze jakýmkoli způsobem získávat jméno uživatele nebo jméno jeho domovského adresáře přes systémové proměnné user.name, user.home, user.dir, java.home a java.class.path. Nelze definovat jakoukoli systémovou proměnou. Nelze spustit jakýkoli program použitím metody Runtime.exec(). Nelze ukončit interpret Javy použitím System.exit() nebo Runtime.exit(). Nelze načítat dynamické knihovny na klientském systému použitím metod load() nebo loadlibrary() z tříd Runtime nebo System. Nelze vytvářet nebo jinak manipulovat s vlákny, které nejsou ve stejné skupině vláken (ThreadGroup) jako applet. Nelze vytvářet ClassLoader. Nelze vytvářet SecurityManager. Nelze specifikovat funkce pro sít ovou kontrolu pomocí ContentHandlerFactory, SocketImplFactory nebo URLStreamHandlerFactory. Nelze definovat třídy, které jsou součástí balíků na klientském systému. 9
16 Kapitola 3 Remote Method Invokation (RMI) Jedná se o distribuovanou technologii, která umožňuje vzdálené volání metod objektů. Podobný systém je vzdálené volání procedur (RPC). 3.1 Architektura Distribuovaný systém je tvořen registrem, který uchovává odkazy na vzdálené objekty. Server aplikace, která nabízí objekty pro vzdálený přístup, musí odkaz na tyto objekty, pro vzdálené volání, zaregistrovat v registru. Klient, který chce získat odkaz na vzdálený objekt, se nejdříve dotáže registru, zdali požadovaný objekt je registrován, a pokud je registrován, tak mu vrátí odkaz na požadovaný objekt. Komunikace mezi jednotlivými částmi je zajištěn pomocí RMI protokolu. Na obrázku 3.1 je ještě web server, který zde vystupuje jako způsob distribuce kódu pro klienta pomocí URL protokolu (HTTP, FTP,...). Obrázek 3.1: RMI architektura 3.2 Architektura s firewall Standardně se RMI snaží navázat přímé spojení přes internet ke vzdálenému počítači, jenže takové pokusy mohou blokovat firewally. Ale RMI poskytuje ještě dva alternativní způsoby 10
17 spojení pomocí HTTP mechanizmu, což umožní klientovi za firewallem volat vzdálené metody. RMI volání je posláno v těle HTTP POST požadavku, a potom výsledek je vrácen v HTTP odpovědi. Požadavek je možné poslat dvěma způsoby, záleží co umožní firewall. První možnost je, že HTTP dotaz bude poslán hostiteli na libovolný port, na kterém RMI server poslouchá. Nebo firewall umožňuje poslat HTTP požadavky jen na známé HTTP porty, pak je HTTP dotaz poslán hostiteli na port 80, kde poslouchá HTTP server a zde bude spuštěn skript, který tento požadavek zpracuje tím, že se spojí s RMI serverem a předá RMI volání ke zpracování. Po zpracovaní RMI serverem je výsledek předán zpět skriptu a ten vytvoří HTTP odpověd. Obrázek 3.2: RMI architektura přes firewall Vzdálené volání metod objektu přes HTTP požadavky je pomalejší než, kdyby byly posílány přes přímé spojení. 3.3 RMI protokol Přenos zpráv se provádí pomocí dvou proudů (výstupní a vstupní). Význam proudů je ve vztahu ke klientovi. Výstupní proud se používá pro odchozí zprávy a vstupní proud pro příjem příchozích zpráv Výstupní proud Proud je tvořen hlavičkou a pak následuje seznam zpráv. Specifikace formátu výstupního proudu je přebrána z dokumentu [1, Java T M Remote Method Invocation Specification]. Out: 11
18 Header Messages HttpMessage Header: 0x4a 0x52 0x4d 0x49 Version Protocol Version: 0x00 0x01 Protocol: StreamProtocol SingleOpProtocol MultiplexProtocol StreamProtocol: 0x4b SingleOpProtocol: 0x4c MultiplexProtocol: 0x4d Messages: Message Messages Message Jsou definovány tři typy odchozích zpráv: Call volání metody Ping testování zdali vzdálený počítač je připraven DgcAck potvrzení, že klient přijal vzdálené objekty v návratové hodnotě Message: Call Ping DgcAck Call: 0x50 CallData Ping: 0x52 DgcAck: 0x54 UniqueIdentifier CallData: ObjectIdentifier Operation Hash Argumentsopt ObjectIdentifier: ObjectNumber UniqueIdentifier UniqueIdentifier: Number Time Count Arguments: Value Arguments Value Value: Object Primitive 12
19 HttpMessage: HttpPostHeader Header Message HttpReturn: HttpResponseHeader Return Vstupní proud Specifikace formátu zpráv pro vstupní proud je přebrána z dokumentu [1, Java T M Remote Method Invocation Specification]. Jsou definovány tři typy příchozích zpráv: ReturnData výsledek volání metody HttpReturn výsledek v HTTP protokolu PingAck odpověd na Ping In: ProtocolAck Returns ProtocolNotSupported HttpReturn ProtocolAck: 0x4e ProtocolNotSupported: 0x4f Returns: Return Returns Return Return: ReturnData PingAck ReturnData: 0x51 ReturnValue PingAck: 0x53 ReturnValue: 0x01 UniqueIdentifier Valueopt 0x02 UniqueIdentifier Exception 13
20 3.3.3 Typy hodnot použitých v RMI protokolu Použitý typ Count Exception Hash Hostname Number Object ObjectNumber Operation PortNumber Primitive Time Typ v Javě short java.lang.exception long UTF int java.lang.object long int int byte, int, short, long... long 3.4 Přenos parametrů Aby bylo možné přenášet parametry pro volání vzdálené metody nebo návratové hodnoty, musí tyto parametry implementovat rozhraní java.io.serializable. Parametry, které nejsou poskytovány pro vzdálený přístup, jsou předány jako kopie. Tedy nejsou předány referencí, jak to bývá obvyklé v Javě. Proto před voláním vzdálené metody jsou pro tyto parametry a návratovou hodnoty vytvořeny kopie, které jsou pak serializované. 14
21 Kapitola 4 Návrh architektury pro vzdálené ovládání aplikací Architektura bude navržena jako klient-server architektura, kde klienta bude představovat applet spuštěný v prostředí internetového prohlížeče a server bude aplikace s virtuálním grafickým uživatelským rozhraním. Navržená architektura je na obrázku 4.1. Obrázek 4.1: Architektura 15
22 Klient bude tvořen z: appletu periodického dotazování RMI Server bude tvořen z: vlastní aplikace virtuálního grafického uživatelské rozhraní fronty příkazů fronty zpráv RMI 4.1 Komunikace klient-server Komunikaci mezi klientem a serverem bude zajišt ovat RMI (Remote Method Invocation), které zajistí přenos zpráv právě voláním vzdálené metody. Komunikační rozhraní přes RMI, které bude poskytovat server, umožní získat seznam příkazů a signalizovat vzniklou událost na klientovi. Rozhraní poskytované serverem: interface ServerAppInterface extends Remote List<Command> getcommands() throws RemoteException; void event(event e) throws RemoteException; Protože RMI umožňuje jen volat metody server aplikace, je nutné, aby se applet aktivně dotazoval (polling) server aplikace, zdali má obdržet zprávu. Tato funkčnost bude zajištěna částí appletu pro periodické volání getcommands() a poté pokud jsou nějaké příkazy obdrženy, bude informovat applet. 4.2 Reprezentace vzdálených objektů Vytvoření vzdálených objektů se bude provádět obecným mechanismem pomocí objektu Class, který umožní vytvořit instanci třídy, kterou objekt třídy Class popisuje. Podobně se bude postupovat při volání metod vzdálených objektů. Použije se objekt třídy Method, který popisuje metodu třídy. Zavolání popisované metody se provede metodou invoke(). Takže pro zavolání vzdálené metody nám bude stačit popis třídy, textový název metody, popis parametrů metody a hodnoty parametrů. Příklad vytvoření instance a volání metody 16
23 // vyvtoření instance Class jbutton = javax.swing.jbutton.class; javax.swing.jbutton obj = (javax.swing.jbutton)jbutton.newinstance(); // volání metody Class[] parametertype = String.class ; Object[] args = Hello World! jbutton.getmethod( settext, parametertype).invoke(obj, args); Protože nelze použít přímou referenci na vzdálený objekt, musíme si pomoct řetězcovou identifikací, která bude stejná pro klientský i serverový objekt. A na obou částech se bude tato identifikace převádět na kontrétní objekt. 4.3 Popis klienta Applet bude vykonávat příkazy, které mu pošle server, jako třeba vytvoř tlačítko na pozici x,y a nastav popis na abc. Bude se tedy jednat o příkazy pro vytvoření a úpravu vzhledu grafického uživatelského rozhraní, ale také zde budou příkazy pro nastavení událostí, které mají být posílány zpět na server. Budou to události vznikající při nějaké akci uživatele, jako je kliknutí na tlačítko či jiné akci. Poslání události zpět na server bude provedeno prostřednictvým voláním vzdálené metody serveru event(). V parametru funkce bude předána událost Event. Formát události: class Event String srcobjid; // identifikace zdrojového objektu String evid; // identifikace události Class evdispclass; // typ objektu (doručovatele), který bude // obsluhovat tuto událost Object[] evdata; // hodnoty událostí List<UpdateCommand> updcommands; // synchronizační příkazy Součástí události jsou i synchronizační příkazy, které generuje klient, aby během obsluhy události měl server k dispozici aktuální stav uživatelského rozhraní, jaký byl v době vzniku události na klientovi. Formát synchronizačního příkazu: class UpdateCommand String objid; // identifikace objektu String method; // název volané metody (jedno parametrová) Class valclass; // typ hodnoty Object val; // hodnota 17
24 4.4 Popis serveru Server přijímá zprávy od klienta prostřednictvím RMI a zařazuje si je do fronty zpráv, kde čekají na zpracování. Z fronty zpráv si zprávu vyzvedne virtuální grafické rozhraní a předá ji ke zpracování vlastní aplikaci. Aplikace během zpracování zprávy může prostřednictvím virtuálního grafického rozhraní generovat příkazy, které budou měnit uživatelské rozhraní. Tyto příkazy jsou vkládány do fronty příkazů. Seznam těchto příkazů je poslán přes RMI klientovi. Základ pro tvorbu příkazů. Identifikuje objekt, kterému je příkaz určen. class Command String objid; // identifikace objektu Příkazy, které generuje server jsou: CreateComponent Vytvoří komponentu podle zadaného typu. class CreateComponentCommand extends Command Class<?> objclass; // typ objektu, který má být vytvořen AssociateComponent Vytvoří vazbu mezi dvěma komponentami. Většinou se jedná o umístění jedné komponenty do jiné. Například JButton do JPanel. Ještě obsahuje popis metody, kterou má použít, například u JPanel má použít add() a JScrollPane má použít setviewportview(). class AssociateComponentCommand extends Command String methodname; // název volané metody Class<?>[] parametertype; // typy parametrů volané metody Object[] parameters; // hodnoty parametrů volané metody String assocobjid; // identifikace nadřazené komponenty SetAttributeComponent Příkaz pro zavolání nějaké metody komponenty, obvykle se jedná o nastavení nějaké vlastnosti. Příkaz obsahuje identifikaci komponenty a popis metody, kterou chceme zavolat. Popis metody se skládá z názvu metody, typy parametrů metody a hodnoty parametrů, které chceme nastavit. class SetAttributeComponentCommand extends Command String methodname; // název volané metody Class<?>[] parametertype; // typy parametrů volané metody Object[] parameters; // hodnoty parametrů volané metody 18
25 CreateModel Vytvoří model, který využívají některé komponenty (JComboBox List- Model, JTable TableModel), podle zadaného typu. class CreateModelCommand extends Command Class<?> objclass; // typ objektu, který má být vytvořen AssociateModel Vytvoří vazbu mezi komponentou a modelem. Obsahuje identifikaci komponenty a identifikaci modelu a popis metody komponenty, která se má použít. class AssociateModelCommand extends Command String methodname; // název volané metody Class<?>[] parametertype; // typy parametrů volané metody Object[] parameters; // hodnoty parametrů volané metody String assocobjid; // identifikace nadřazené komponenty SetAttributeModel Příkaz pro zavolání nějaké metody komponenty, obvykle se jedná o nastavení nějaké vlastnosti. Příkaz obsahuje identifikaci modelu a popis metody, kterou chceme zavolat. Popis metody se skládá z názvu metody, typy parametrů metody a hodnoty parametrů, které chceme nastavit. class SetAttributeModelCommand extends Command String methodname; // název volané metody Class<?>[] parametertype; // typy parametrů volané metody Object[] parameters; // hodnoty parametrů volané metody SetEvent Slouží pro nastavení odebírání některé události, která nastane nad zadanou komponentou. Příkaz obsahuje identifikaci komponenty, identifikaci EventHandler, který se má použít, a popis metody, která se má zavolat. class SetEventCommand extends Command String methodname; // název volané metody Class<?>[] parametertype; // parametry volané metody String evobjid; // identifikace obsluhy události Class evobjclass; // typ obsluhy události (pro vytvoření instance) RegisterEvent Slouží pro registraci událostí, které se mají posílat ke zpracování na server. Příkaz obsahuje identifikaci komponenty a identifikaci EventHandler. class RegisterEventCommand extends Command String evobjid; // identifikace obsluhy události 19
26 ConfirmEvent Slouží pro potvrzení, že událost, která byla poslána na server ke zpracování, už byla zpracována. Příkaz obsahuje identifikaci události, která byla zpracována. class ConfirmEventCommand extends Command String evobjid; // identifikace obsloužené události Ve výčtu generovaných příkazů jsou příkazy pro komponenty a pro modely, protože pro identifikaci komponent z knihovny AWT/Swing lze využít vlastnost name, kterou nabízí základní třída Component, od které jsou pak odvozeny veškeré prvky uživatelského rozhraní. Modely nemají žádnou vhodnou výchozí třídu, takže je nutné si odvodit vlastní třídy a sjednotit je implementací rozhraní Identifiable. interface Identifiable String getid(); void setid(string objid); 20
27 Kapitola 5 Realizace Celková architektura navrženého systému je znázorněna na obrázku 5.1. Celý systém lze rozdělit na serverovou a klientskou část. V této kapitole se budeme věnovat podrobnějšímu popisu obou těchto částí. Obrázek 5.1: Jádro sytému 21
28 5.1 Klient Pomocí časovače si klient zajistí, aby periodicky prováděl získávání příkazů pomocí vzdáleného volání getcommnads(). Získané příkazy jsou vykonány (CommandHandler). Události, které vzniknou nad uživatelským rozhraní, zpracovávají posluchači, kteří signalizují, že došlo ke změně uživatelského rozhraní a tuto změnu předají správci změn (ModificationManager). Také kontrolují zdali tato událost je registrována serverovou aplikací a pokud ano, tak generují událost, která bude prostřednictvím odesílatele událostí (EventSender) poslána na server. Odesílatel události k dané události ještě přiloží synchronizační příkazy od správce změn a pak ji odešle na server vzdáleným volání event(). Identifikaci odeslané události předá správci odeslaných událostí (SentEventManager) a on provede zablokování uživatelského rozhraní, aby uživatel nemohl vytvářet další události dokud tato událost nebude serverovou aplikací zpracována. Zpracování události je od serveru signalizováno potvrzovacím příkazem (ConfirmEvent). RMI Slouží pro volání vzdálených metod. ServerApp Poskytuje rozhraní serveru, přes toto rozhraní se provádí volání event() a getcommands(). CommandHandler Provádí zpracování příkazů, které obdrží od server aplikace. Typy příkazů, které zpracovává jsou: CreateComponent Vytvoří komponentu podle zadané Class a přiřadí ji identifikaci, která je stejná jak u klientské komponenty tak i u serverové komponenty. AssociateComponent Vytvoří vazbu mezi dvěma komponentami. Většinou se jedná o umístění jedné komponenty do jiné. Například JButton do JPanel. Ještě obsahuje popis metody, kterou má použít, například u JPanel má použít add() a JScrollPane má použít setviewportview(). SetAttributeComponent Příkaz pro zavolání nějaké metody komponenty, obvykle se jedná o nastavení nějaké vlastnosti. Příkaz obsahuje identifikaci komponenty a popis metody, kterou chceme zavolat. Popis metody se skládá z názvu metody, typy parametrů metody a hodnoty parametrů, které chceme nastavit. CreateModel Vytvoří model, který využívají některé komponenty (JComboBox ListModel, JTable TableModel), podle zadané Class a přiřadí ji identifikaci, která je stejná jak u klientského modelu tak i u serverového modelu. AssociateModel Vytvoří vazbu mezi komponentou a modelem. Obsahuje identifikaci komponenty a identifikaci modelu a popis metody komponenty, která se má požít. SetAttributeModel Příkaz pro zavolání nějaké metody komponenty, obvykle se jedná o nastavení nějaké vlastnosti. Příkaz obsahuje identifikaci modelu a popis metody, kterou chceme zavolat. Popis metody se skládá z názvu metody, typy parametrů metody a hodnoty parametrů, které chceme nastavit. SetComponentEvent Slouží pro nastavení odebírání některé události, která nastane nad zadanou komponentou. Příkaz obsahuje identifikaci komponenty, identifikaci EventHandler, který se má použít, a popis metody, která se má zavolat. RegisterEvent Slouží pro registraci událostí, které se mají posílat ke zpracování na server. Příkaz obsahuje identifikaci komponenty a identifikaci EventHandler. 22
29 ConfirmEvent Slouží pro potvrzení, že událost, která byla poslána na server ke zpracování, už byla zpracována. Příkaz obsahuje identifikaci události, která byla zpracována. Součástí zpracování tohoto příkazu je odblokování uživatelské rozhraní, které bylo zablokováno před odesláním události na sever ke zpracování. ComponentManager Správce komponent uchovává seznam vytvořených klientských komponent a poskytuje převod identifikace na konkretní komponentu. ModelManager Správce modelů uchovává seznam vytvořených klientských modelů a poskytuje převod identifikace na konkretní model. EventManager Správce obsluh událostí uchovává seznam vytvořených obsluh událostí a poskytuje převod identifikace na konkretní obsluhu události. EventHandlerManager Správce registrovaných událostí obsahuje seznam registrovaných událostí, které mají být poslány na server ke zpracování. SentEventManager Správce odeslaných událostí obsahuje seznam odeslaných událostí na server ke zpracování, a které ještě nebyli potvrzeny, že jsou zpracovány. Timer Časovač slouží pro zajištění pravidelného opakovaní volaní získání a zpracování příkazů ze serveru. Applet Na appletu jsou umíst ovány prvky uživatelského rozhraní, které jsou viditelné uživateli a se kterými může pracovat. EventHandler Obsluha vzniklé události. Pokud je tato událost registrovaná, tak se pošle ke zpracování na server. Pokud je to událost, která vnikla uživatelskou změnou některé komponenty, tak se tato změna uloží k pozdějšímu odeslání na server. Nejlépe jako součást nějaké události, která je poslána na server ke zpracování. ModificationManager Správce uživatelských změn některých komponent. Následně pak generuje příkazy pro synchronizaci stavu klientských a serverových komponent. EventSender Součást pro odesílání události na server. K události přiloží změny k synchronizaci, aby serverová aplikace měla k dispozici aktuální data ke zpracování události. Například vyplněný text v nějakém editovatelném textovém poli. Před odesláním události provede zablokování uživatelského rozhraní dokud nebude událost zpracována. 5.2 Server Důležitá část je zde smyčka zpráv (EventLoop), která umožňuje tvořit událostmi řízenou aplikaci. Smyčka zpráv čeká na příchozí událost a až je nějaká událost signalizovaná, vyzvedne si ji u správce událostí (EventManager) a provede její zpracování tím, že nejdřív provede synchronizaci pomocí synchronizačních příkazů, které jsou součásti události, a pak událost předá zadanému doručovateli událostí. Který doručovatel událostí má být použit, je předáno ve struktuře Event. Přes doručovatele je událost předána cílovému objektu a jeho posluchačům. Během zpracování událostí aplikací můžou být generovány příkazy pro změnu uživatelského rozhraní. Příkazy jsou předávány správci příkazů (CommandManager), který je pak předá klientovi, až si o ně požádá vzdálením voláním getcommands(). Po ukončení obsluhy události musí smyčka zpráv poslat potvrzovací příkaz (ConfirmEvent), kterým informuje klienta, že tato událost byla zpracována. 23
30 RMI Slouží pro příjem vzdálených volání z klienta. ServerAppListener Implementace rozhraní serveru. CommandManager Správce příkazů, které mají být odeslány na klienta. ComponentManager Správce komponent a modelů, které jsou vytvořeny. Poskytuje převod identifikace na konkretní komponentu či model. EventManager Správce událostí, které poslal klient ke zpracování. EventLoop Smyčka zpráv, která zajišt uje odebíraní příchozích událostí a předává je aplikaci ke zpracování. Před tím než předá událost aplikaci ke zpracování, tak provede synchronizaci podle přiložených příkazů. EventDispatcher Doručení události registrovaným posluchačům. Zajišt uje převod formátu doručené události na událost, která je pak předána posluchačům. Application Implementace libovolné aplikace, která využívá vzdáleně ovládané uživatelské rozhraní. 5.3 Stavba server knihovny Knihovna pro tvorbu vzdáleně ovládaných aplikací je vytvořena tak, aby odpovídala knihovně AWT/Swing, takže je možné změnit pouze importované balíky z AWT/Swing na balíky se vzdáleně ovládanými komponentami. A tím bude převedena desktopová aplikace na vzdáleně ovládanou aplikaci. Hierarchie vzdáleně ovládaných komponent je v příloze na obrázku A.1. Původně bylo myšleno, že pro reprezentaci událostí budou využity typy z knihovny AWT/Swing, ale protože některé typy událostí se omezují jen na zdrojový typ komponenty java.awt.component, tak je nutné si tyto události implementovat a změnit typ zdrojové komponenty na obecný typ Object. Samozřejmě pokud jsou změněny typy událostí, je nutné implementovat pro tyto události i rozhraní posluchačů a adaptérů. 24
31 Kapitola 6 Interaktivní editor aplikace ovládané přes WWW Pro demonstrování funkčnosti systému vzdáleného ovládání aplikace přes WWW je vytvořena aplikace (Interaktivní editor aplikace ovládané přes WWW), která bude demonstrovat funkčnost této knihovny. Vytvořená aplikace je interaktivní a veškeré změny nad uživatelském rozhraní se projeví v appletu na klientovi a naopak změny v appletu se také projeví v editoru (ve formuláři i v seznamu vlastností). Obrázek 6.1: Interaktivní editor 6.1 Možnosti editoru Lze vytvářet prvky uživatelského rozhraní, které mají být zobrazeny v appletu na klientovi. Lze nastavovat jednotlivé atributy u každého prvku uživatelského rozhraní. Lze registrovat události, o kterých má klientský applet informovat editor. 25
32 Obrázek 6.2: Vytvořené vzdálené uživatelské rozhraní Veškeré uživatelské změny v appletu na klientovi se projeví i v editoru. 6.2 Části editoru Panel komponent uživatelského rozhraní Jednotlivé komponenty, které lze umístit do výsledného formuláře. Tabulka s vlastnostmi a událostmi Vlastnosti, které lze nastavit, a události, které si lze zaregistrovat. Změna atributu komponety se projeví i ve vzdálené komponentě. Seznam signalizovaných událostí Výpis zaregistrovaných událostí, které nastaly. Panel pro umíst ování prvků uživatelského rozhraní Zde je vidět uživatelské rozhraní, které se zobrazuje u klienta. K dispozici máme sadu komponent uživatelského rozhraní, které lze umístit do vytvářeného formuláře. U každého prvku uživatelského rozhraní máme možnost nastavovat některé jeho atributy a také registrovat události, o kterých chceme být informováni. Seznam dostupných prvků uživatelského rozhraní: JButton běžné tlačítko JRadioButton přepínač, automaticky je umístěn do ButtonGroup JCheckBox zaškrtávací tlačítko 26
33 JToggleButton stavové tlačítko (zmáčknuté, nezmáčknuté) JTextField vstupní jednořádkové textové pole JTextArea vstupní víceřádkové textové pole JScrollPane panel, který umožní zobrazit posuvníky a řídit tak vloženou komponentu JPanel kontejner na prvky uživatelského rozhraní JLabel statický textový popisek 6.3 Popis obsluhy editoru Spuštění editoru Editor lze spustit bez parametrů a poté bude poslouchat na všech sít ových rozhraní a bude poslouchat na výchozím portu Editoru lze vnutit adresu a port, na kterém má poslouchat, stačí do parametru na příkazové řádce napsat třeba: java remoteguibuilder.main Spuštění appletu Applet si je nutné přes internetový prohlížeč stáhnout právě z takové adresy, na které poslouchá i editor. Je to dáno bezpečnostním omezením appletu, který pak může navázat sít ové spojení jen s počítačem, odkud byl tento applet stažen. Adresa, na kterou se má applet připojit, je předána jako parametr appletu. Tyto parametry jsou napsány v HTML stránce, ve které je umístěn i applet. Příklad: <applet code= remotegui/client/clientapplet.class width=400 height=300> <!-- nastavit vhodne parametry --> <param name= host value= /> <param name= port value= 3232 /> </applet> Výběr prvku pro umístění na formulář V panelu prvků si vybereme prvek, který chceme umístit na formulář a poté levým kliknutím ve formuláři se nám na zvolené pozici objeví vybraný prvek. Pokud chceme umístit některé komponenty do jiné komponenty jako třeba do JPanel nebo JScrollPane, tak to můžeme provést tak, že na komponentě, kam chceme prvek umístit, klikneme levým tlačítkem na myši. 27
34 Nastavení vlastností, událostí V panelu prvků vybereme možnost Select a pravým kliknutím na požadovaný prvek se zobrazí v záložkách tabulka se seznamem vlastností, které lze změnit, a s událostmi, které si lze zaregistrovat, a pak editor bude o těchto událostech informován. Úprava libovolné vlastnosti se okamžitě projeví jak na formuláři tak i na vzdáleném uživatelském rozhraní. Formát některých typů vlastností Boolean : true/false Barva : r,g,b,a (jednotlivé barvy se zadávají číslem od 0 do 255) Pozice : x,y,w,h (jednotlivé údaje jsou celočíselné kladné hodnoty) Interakce nad appletem Vytvořené uživatelské rozhraní si lze ihned vyzkoušet v appletu na klientovi. Uživatelské změny se projeví zpět i v editoru, ale až pokud nastane nějaká registrovaná událost. 28
35 Kapitola 7 Závěr Navržený a vytvořený systém pro tvorbu vzdáleně ovládaných aplikací je schopen fungovat jako webová aplikace s uživatelským rozhraním jako má běžná deskotopová aplikace. Protože struktura a formát knihovny komponent pro tvorbu vzdáleně ovládaných aplikací odpovídá standardní javovské knihovně AWT/Swing, lze použít kód již hotové aplikace s uživatelským rozhraním, vytvořeným pomocí AWT/Swing, a změnit pouze importované balíky. A máme hotovou vzdáleně ovládanou aplikaci. V příloze B je příklad implementace aplikace pomocí AWT/Swing a knihovny pro tvorbu vzdáleně ovládaných aplikací (RemoteGUI), který demonstruje jednoduchost převodu. Systém je použitelný i tam, kde je komunikace omezována firewall, protože komunikaci zprostředkovává RMI, které je schopno komunikaci zabalit do HTTP protokolu. Stávající knihovna komponent zatím nabízí pouze základní komponety, ze kterých nelze vytvořit plnohodnotné uživatelské rozhraní, takže bude potřeba tuto knihovnu rozšířit o další komponenty (JDialog, JComboBox, JList, JMenu,..) a přidat podporu pro správce rozvržení. Dálší možností rozšíření je vyřešení možnosti víceuživatelského přístupu k aplikaci (možné řešení je pro každého uživatele vytvořit jednu instanci programu nebo v rámci jednoho programu spustit další vlákno). Dále je potřeba testovat aktivitu klienta a serveru, v případě klienta jestli už aplikaci neukončil (potřeba posílat zprávy, že je klient stále aktivní), v případě serveru pokud není už k dispozici (nezdaří se stáhnout seznam příkazů). V obou případech je nutné danou aplikaci ukončit. Dále je potřeba rozšířit systém a další typy příkazů (RemoveAssociateComponent zrušení vazby mezi komponentama, UnregisterEvent zrušení registrace odebíraných událostí, DeleteComponent smazání komponenty). 29
36 Literatura [1] WWW dokument. Java(tm) remote method invocation specification. [2] Brett Spell. Java Programujeme profesionálně. Computer Press, ISBN [3] WWW stránky. Html wikipedia, the free encyclopedia. [4] WWW stránky. Html 4.01 specification. [5] WWW stránky. Jdk(tm) 5.0 documentation. [6] WWW stránky. A swing architecture overview. [7] WWW stránky. Web application wikipedia, the free encyclopedia. application&oldid=
37 Dodatek A Přílohy A.1 Rozdělení do balíků Jednotlivé části celého systému jsou děleny do balíků. remotegui.common Obsahuje definice typu objektů, které jsou společné pro obě části jak klientskou tak serverovou (příkazy, události, rozhraní serveru). remotegui.client Obsahuje implementaci klientské části jádra systému pro vzdálené ovládání komponent. remotegui.client.components Obsahuje implementaci upravených komponent a implementaci posluchačů pro zpracování událostí. remotegui.server Obsahuje implementaci serverové části jádra systému pro vzdálené ovládání komponent. remotegui.server.components Obsahuje implementaci knihovny vzdáleně ovládaných komponent. Odpovídá balíku java.awt a javax.swing. remotegui.server.components.text Obsahuje komponenty pro tvorbu komponent pracujících s textem. Odpovídá balíku javax.swing.text. remotegui.server.components.event Obsahuje implementace událostí, posluchačů a adaptérů. Odpovídá balíku java.awt.event a javax.swing.event. remotegui.server.components.dispatch Obsahuje implementaci doručovatelů událostí. A.2 Popis knihovny komponent Balík remotegui.server.components obsahuje komponenty pro tvorbu vzdáleně ovládaného uživatelského rozhraní. RemoteComponent Základ pro tvorbu vzdáleně ovládaných komponent. Poskytuje identifikaci a prostředky pro generovaní příkazů. Nemá ekvivalent na klientovi. Component Základní třída pro tvorbu komponent. Odpovídá java.awt.component. Container Základní třída pro tvorbu komponent, které mohou obsahovat další komponenty. Odpovídá java.awt.contanier. 31
38 Obrázek A.1: Hierarchie JComponent Základ pro tvorbu komponent, které mají odpovídat komponentám z knihovny Swing. Odpovídá javax.swing.jcomponent. AbstractButton Základ pro tvorbu tlačítek. Odpovídá javax.swing.abstractbutton. JButton Běžné tlačítko. Odpovídá javax.swing.jbutton. JToggleButton Tlačítko reprezentující stav zapnuto/vypnuto. Odpovídá komponentě javax.swing.jtogglebutton. JRadioButton Tlačítko se stavem zapnuto/vypnuto. Vhodné pro tvorbu přepínačů. Odpovídá javax.swing.jradiobutton. JCheckBox Tlačítko se stavem zapnuto/vypnuto zobrazené jako zatrhávací rámeček. Odpovídá javax.swing.jcheckbox. JLabel Komponenta pro zobrazení statického textu. Odpovídá javax.swing.jlabel. 32
39 JPanel Komponenta, do které je možné vkládat jiné komponenty a dělit tak uživatelské rozhraní do logických celků. Odpovídá javax.swing.jpanel. JScrollPane Komponenta pro zobrazení vertikálních a horizontálních posuvníků. Lze jimi ovládat jinou komponentu, která byla do této komponenty vložena. Používá se třeba v kombinaci s JTextArea. Odpovídá javax.swing.jscrollpane. JTextComponent Základní komponenta pro zobrazení editovatelného textu. Odpovídá javax.swing.text.jtextcomponent. JTextArea Komponenta pro zobrazení víceřádkového editovatelného textu. Odpovídá javax.swing.jtextarea. JTextField Komponenta pro zobrazení jednořádkového editovatelného textu. Odpovídá javax.swing.jtextfield. MainFrame Komponenta, která reprezentuje hlavní okno aplikace. Snaží se tvářit, že odpovídá javax.swing.jframe, ale ve skutečnosti se převádí na objekt třídy javax.swing.japplet, který na klientovi tvoří hlavní okno. ButtonGroup Komponenta pro tvorbu přepínačů. Odpovídá javax.swing.buttongroup. Balík remotegui.server.components.event obsahuje třídy pro zpracování událostí ze vzdáleně ovládaného uživatelského rozhraní. ActionEvent Reprezentace události, která vznikla nějakou akcí (např. stisk tlačítka). Odpovídá java.awt.event.actionevent. ActionListener Rozhraní, které přijímá události ActionEvent ke zpracování. Odpovídá rozhraní java.awt.event.actionlistener. CaretEvent Reprezentace události, která vznikla změnou textového kurzoru. Odpovídá javax.swing.event.caretevent. CaretListener Rozhraní, které přijímá události CaretEvent ke zpracování. Odpovídá rozhraní javax.swing.event.caretlistener. FocusEvent Reprezentace události, která vznikla změnou aktivní komponenty. Odpovídá třídě javax.swing.event.focusevent. FocusListener Rozhraní, které přijímá události FocusEvent ke zpracování. Odpovídá rozhraní java.awt.event.focuslistener. FocusAdapter Implementace rozhraní FocusListener. Implementace odpovídá standardní třídě java.awt.event.focusadapter. InputEvent Reprezentace události, která vznikla nějakou vstupní akcí (stisk myši, stisk klávesy). Odpovídá java.awt.event.inputevent. KeyEvent Obsahuje informace o události, která vznikla stiskem klávesy. Odpovídá java.awt.event.keyevent. KeyListener Rozhraní, které přijímá události KeyEvent ke zpracování. Odpovídá rozhraní java.awt.event.keylistener. 33
40 KeyAdapter Implementace rozhraní KeyListener. Implementace odpovídá standardní třídě java.awt.event.keyadapter. MouseEvent Obsahuje informace o události, která vznikla stiskem myši. Odpovídá java.awt.event.mouseevent. MouseListener Rozhraní, které přijímá události MouseEvent ke zpracování. Odpovídá rozhraní java.awt.event.mouselistener. MouseAdapter Implementace rozhraní MouseListener. Implementace odpovídá standardní třídě java.awt.event.mouseadapter. 34
41 Dodatek B Ukázka použití knihovny Ukázka aplikace s použitím knihovny AWT/Swing. Aplikace má zadaný text převést na text psaný velkými písmeny. import java.awt.event.*; import javax.swing.*; public class AWTSwingApp public static void main(string[] args) (new AppForm()).setVisible(true); import java.awt.event.*; import javax.swing.*; public class AppForm extends JFrame private JTextField text1; private JTextField text2; private JButton btn; public AppForm() text1 = new JTextField(); text2 = new JTextField(); btn = new JButton(); text1.setbounds(5, 5, 150, 20); text1.settext( hello world! ); text2.setbounds(5, 60, 150, 20); btn.setbounds(30, 30, 100, 25); btn.settext( Convert ); btn.addactionlistener(new ActionListener() 35
42 ); public void actionperformed(actionevent evt) text2.settext( text1.gettext().touppercase() ); this.setlayout(null); this.add(text1); this.add(btn); this.add(text2); Obrázek B.1: Aplikace vytvořená pomocí AWT/Swing Ta samá aplikace zapsaná pomocí knihovny RemoteGUI. import java.net.inetaddress; import remotegui.server.serverapplistener; public class RemoteGUIApp public static void main(string[] args) String thisaddress = ; try thisaddress = (InetAddress.getLocalHost()).toString(); catch(exception e) int thisport = 3232; ServerAppListener.create(thisPort); (new AppForm()).setVisible(true); 36
43 import remotegui.server.components.event.*; import remotegui.server.components.*; public class AppForm extends MainFrame private JTextField text1; private JTextField text2; private JButton btn; public AppForm() text1 = new JTextField(); text2 = new JTextField(); btn = new JButton(); text1.setbounds(5, 5, 150, 20); text1.settext( hello world! ); text2.setbounds(5, 60, 150, 20); btn.setbounds(30, 30, 100, 25); btn.settext( Convert ); btn.addactionlistener(new ActionListener() public void actionperformed(actionevent evt) text2.settext( text1.gettext().touppercase() ); ); this.add(text1); this.add(btn); this.add(text2); Rozdíly jsou minimální, postačí jen změnit importované balíky a z deskotopové aplikace je aplikace ovládaná přes WWW. 37
44 Obrázek B.2: Vzdáleně ovládaná aplikace 38
Při studiu tohoto bloku se předpokládá, že student je zvládá základy programování v jazyce Java s využitím vývojového prostředí NetBeans.
1 Grafické rozhraní Studijní cíl Tento blok je věnován vytváření programů s využitím grafického rozhraní (GUI). Vysvětlen bude základní filozofie pro vytváření aplikací s GUI ve srovnání s konzolovými
Aplikace s grafickým uživatelským rozhraním
Aplikace s grafickým uživatelským rozhraním doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz 1 Typy aplikací Konzolová
RMI - Distribuované objekty v Javě
Vysoká škola báňská - Technická univerzita Ostrava 30. března 2009 Osnova Co je to RMI? 1 Co je to RMI? 2 Vnější pohled Vrstvy RMI Stub & Skeletons Layer Remote Reference Layer Transport Layer Pojemnování
Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
Java GUI události. Událostmi řízené programování. Zpracování = obsluha událostí
Java GUI události Cílem kapitoly je přiblížit hlavní princip událostmi řízeného programování a ukázat na příkladu způsob řešení pro konkrétní případ. Soubor obsahuje také tabulku s přehledem nejčastěji
TÉMATICKÝ OKRUH Softwarové inženýrství
TÉMATICKÝ OKRUH Softwarové inženýrství Číslo otázky : 29. Otázka : Zpracování událostí: mechanismus událostí a jejich zpracování (Event/Listener), nepřímá invokace (Observer/Observable). Obsah : 1. Mechanisums
Semináˇr Java X J2EE Semináˇr Java X p.1/23
Seminář Java X J2EE Seminář Java X p.1/23 J2EE Složitost obchodních aplikací robusní, distribuované, spolehlivé aplikace s transakcemi na straně serveru, klientské aplikace co nejjednodušší Snaha : Návrh,
GUI - úvod. V této kapitole si ukážeme návod, jak vytvořit jednoduchou grafickou aplikaci a umístit do ní některé další grafické prvky.
GUI - úvod V této kapitole si ukážeme návod, jak vytvořit jednoduchou grafickou aplikaci a umístit do ní některé další grafické prvky. Klíčové pojmy: Grafické uživatelské rozhraní, grafické komponenty,
Úvod do počítačových sítí
Úvod do počítačových sítí Jméno a příjmení: Jan Tichava Osobní číslo: Studijní skupina: středa, 3 4 Obor: INIB INF E-mail: jtichava@students.zcu.cz Datum odevzdání: 19.12.06 Základní charakteristika Jednoduchá
Grafické uživatelské rozhraní v Javě. A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické
Grafické uživatelské rozhraní v Javě A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické Grafický návrh - příklad určíme základní rozvržení určíme chování okna při zvětšování
Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky. PORTÁL KUDY KAM. Manuál pro administrátory. Verze 1.
Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky. PORTÁL KUDY KAM Manuál pro administrátory Verze 1.0 2012 AutoCont CZ a.s. Veškerá práva vyhrazena. Tento
MATLABLINK - VZDÁLENÉ OVLÁDÁNÍ A MONITOROVÁNÍ TECHNOLOGICKÝCH PROCESŮ
MATLABLINK - VZDÁLENÉ OVLÁDÁNÍ A MONITOROVÁNÍ TECHNOLOGICKÝCH PROCESŮ M. Sysel, I. Pomykacz Univerzita Tomáše Bati ve Zlíně, Fakulta aplikované informatiky Nad Stráněmi 4511, 760 05 Zlín, Česká republika
2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena.
2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena. GEOVAP, spol. s r. o. Čechovo nábřeží 1790 530 03 Pardubice Česká republika +420 466 024 618 http://www.geovap.cz V dokumentu použité názvy programových
TÉMATICKÝ OKRUH Softwarové inženýrství
TÉMATICKÝ OKRUH Softwarové inženýrství Číslo otázky : 25. Otázka : Komponentní technologie - základní pojmy a principy, metody specifikace komponent. Obsah : 1. Základní pojmy 1.1 Komponenta Komponenta
Reliance 3 design OBSAH
Reliance 3 design Obsah OBSAH 1. První kroky... 3 1.1 Úvod... 3 1.2 Založení nového projektu... 4 1.3 Tvorba projektu... 6 1.3.1 Správce stanic definice stanic, proměnných, stavových hlášení a komunikačních
Návod k ovládání aplikace
Návod k ovládání aplikace Tento návod se zabývá ovládáním aplikace PDF Annotation 1, která je založena na aplikaci AVP PDF Viewer a umožňuje nejen PDF dokumenty prohlížet, ale také do těchto dokumentů
Software pro vzdálenou laboratoř
Software pro vzdálenou laboratoř Autor: Vladimír Hamada, Petr Sadovský Typ: Software Rok: 2012 Samostatnou část vzdálených laboratoří tvoří programové vybavené, které je oživuje HW část vzdáleného experimentu
Internet Information Services (IIS) 6.0
Internet Information Services (IIS) 6.0 V operačním systému Windows Server 2003 je obsažena i služba IIS v 6.0. Služba IIS poskytuje jak www server tak i některé další služby (FTP, NNTP,...). Jedná se
Osnova. GIOP a IIOP IDL IOR POA. IDL Klient Server. 2 Historie. 3 Princip a základní pojmy. 4 Implementace. 5 Aplikace CORBA
Common Object Request Broker Architecture FJFI ČVUT 9. 12. 2010 Osnova 1 2 3 4 5 Standard umožňující propojení aplikací psaných v různých jazycích a běžících na různých strojích a architekturách. Definuje
Uživatelský manuál aplikace. Dental MAXweb
Uživatelský manuál aplikace Dental MAXweb Obsah Obsah... 2 1. Základní operace... 3 1.1. Přihlášení do aplikace... 3 1.2. Odhlášení z aplikace... 3 1.3. Náhled aplikace v jiné úrovni... 3 1.4. Změna barevné
02. HODINA. 2.1 Typy souborů a objektů. 2.2 Ovládací prvky Label a TextBox
02. HODINA Obsah: 1. Typy souborů a objektů 2. Ovládací prvky Label a TextBox 3. Základní příkazy a vlastnosti ovládacích prvků 4. Práce s objekty (ovládací prvky a jejich vlastnosti) 2.1 Typy souborů
GUI v Javě. Jiří Vokřínek. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze. Přednáška 5 B0B36PJV Programování v JAVA
GUI v Javě Jiří Vokřínek Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 5 B0B36PJV Programování v JAVA Jan Faigl, Jiří Vokřínek, 2017 B0B36PJV Přednáška 5: GUI
java remote method invocation Kateřina Fricková, Matouš Jandek
java remote method invocation Kateřina Fricková, Matouš Jandek Distribuovaný systém počítačový systém, ve kterém jsou jednotlivé komponenty propojeny počítačovou síťí komponenty systému sdílí cíl, kterého
GUI v Javě. GUI v Javě GUI komponenty a kontejnery Dialogová okna Události a obsluha událostí z GUI
GUI v Javě GUI v Javě Jiří Vokřínek Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 5 B0B36PJV Programování v JAVA GUI v Javě GUI komponenty a kontejnery Dialogová
Bc. Martin Majer, AiP Beroun s.r.o.
REGISTR DIGITALIZACE HISTORICKÝCH FONDŮ (RDHF) A DIGITÁLNÍCH KONKORDANCÍ (DK) Návrh uživatelského rozhraní klientských aplikací verze 1.0 Bc. Martin Majer, AiP Beroun s.r.o. 28.11.2016-1 - Obsah 1 Seznam
Nový způsob práce s průběžnou klasifikací lze nastavit pouze tehdy, je-li průběžná klasifikace v evidenčním pololetí a školním roce prázdná.
Průběžná klasifikace Nová verze modulu Klasifikace žáků přináší novinky především v práci s průběžnou klasifikací. Pro zadání průběžné klasifikace ve třídě doposud existovaly 3 funkce Průběžná klasifikace,
Instalace a konfigurace web serveru. WA1 Martin Klíma
Instalace a konfigurace web serveru WA1 Martin Klíma Instalace a konfigurace Apache 1. Instalace stáhnout z http://httpd.apache.org/ nebo nějaký balíček předkonfigurovaného apache, např. WinLamp http://sourceforge.net/projects/winlamp/
Nápověda k aplikaci EA Script Engine
Nápověda k aplikaci EA Script Engine Object Consulting s.r.o. 2006 Obsah Nápověda k aplikaci EA Script Engine...1 1. Co je EA Script Engine...2 2. Důležité upozornění pro uživatele aplikace EA Script Engine...3
Bridge. Známý jako. Účel. Použitelnost. Handle/Body
Bridge Bridge Známý jako Handle/Body Účel odděluje abstrakci (rozhraní a jeho sémantiku) od její konkrétní implementace předchází zbytečnému nárůstu počtu tříd při přidávání implementací používá se v době
Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU 8.6.2011
Technologie Java Enterprise Edition Přemek Brada, KIV ZČU 8.6.2011 Přehled tématu Motivace a úvod Infrastruktura pro velké Java aplikace (Java základní přehled) Části třívrstvé struktury servlety, JSP
Google Web Toolkit. Martin Šurkovský, SUR března Katedra informatiky
Google Web Toolkit Martin Šurkovský, SUR096 Vysoká škola Báňská - Technická univerzita Ostrava Katedra informatiky 29. března 2010 Martin Šurkovský, SUR096 (VŠB - TUO) Google Web Toolkit 29. března 2010
1. Webové služby. K čemu slouží? 2. RPC Web Service. 3. SOA Web Service. 4. RESTful Web services
13. Webové služby. K čemu slouží? Popis a vyhledávání služeb. Co je a k čemu slouží orchestrace a choreografie služeb. Technologie pro implementaci služeb 1. Webové služby. K čemu slouží? Definice WS -
Informační systém Národní soustavy kvalifikací (IS NSK) Návod na obsluhu interního webu - tvorba kvalifikačního a hodnoticího standardu
Informační systém Národní soustavy kvalifikací (IS NSK) Návod na obsluhu interního webu - tvorba kvalifikačního a hodnoticího standardu 28.5.2013 Obsah Interní web IS NSK tvorba standardu Obsah... 2 Návod
MBI - technologická realizace modelu
MBI - technologická realizace modelu 22.1.2015 MBI, Management byznys informatiky Snímek 1 Agenda Technická realizace portálu MBI. Cíle a principy technického řešení. 1.Obsah portálu - objekty v hierarchiích,
1 Webový server, instalace PHP a MySQL 13
Úvod 11 1 Webový server, instalace PHP a MySQL 13 Princip funkce webové aplikace 13 PHP 14 Principy tvorby a správy webového serveru a vývojářského počítače 14 Co je nezbytné k instalaci místního vývojářského
Grafické uživatelské rozhraní v Javě. A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické
Grafické uživatelské rozhraní v Javě A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické Grafický návrh - příklad ToolBar Menu soubor nový, otevřít, uložit, exportovat, konec...
1 Uživatelská dokumentace
1 Uživatelská dokumentace Systém pro závodění aut řízených umělou inteligencí je zaměřen na závodění aut v prostředí internetu. Kromě toho umožňuje testovat jednotlivé řidiče bez nutnosti vytvářet závod
Průvodce aplikací GTS Webový portál pro správce
Průvodce aplikací GTS Webový portál pro správce www.centrex.gts.cz Strana 1 z 14 Obsah 1 Přihlášení do portálu Centrex... 3 2 Hlavní stránka aplikace základní popis... 3 3 Použití interaktivní nápovědy...
PHP PHP je skriptovací programovací jazyk dynamických internetových stránek PHP je nezávislý na platformě
PHP PHP původně znamenalo Personal Home Page a vzniklo v roce 1996, od té doby prošlo velkými změnami a nyní tato zkratka znamená Hypertext Preprocessor. PHP je skriptovací programovací jazyk, určený především
DUM 06 téma: Tvorba makra pomocí VBA
DUM 06 téma: Tvorba makra pomocí VBA ze sady: 03 tematický okruh sady: Tvorba skript a maker ze šablony: 10 Algoritmizace a programování určeno pro: 4. ročník vzdělávací obor: 18-20-M/01 Informační technologie
Faxový server společnosti PODA s.r.o.
Faxový server společnosti PODA s.r.o. Vážení zákazníci, jako doplněk k poskytovaným službám VoIP jsme pro vás zprovoznili službu faxového serveru. Tento server vám umožní pohodlně odesílat a přijímat faxy
Aplikace BSMS. Uživatelská příručka - 1 -
Aplikace BSMS Uživatelská příručka - 1 - Obsah 1. O aplikaci BSMS... 3 2. Základní předpoklady pro používání BSMS... 3 3. Instalace aplikace... 3 3.1. Samotná instalace... 3 3.2. Možné problémy při instalaci...
TECHNOLOGIE ELASTICKÉ KONFORMNÍ TRANSFORMACE RASTROVÝCH OBRAZŮ
TECHNOLOGIE ELASTICKÉ KONFORMNÍ TRANSFORMACE RASTROVÝCH OBRAZŮ ÚVOD Technologie elastické konformní transformace rastrových obrazů je realizována v rámci webové aplikace NKT. Tato webová aplikace provádí
Artlingua Translation API
Artlingua Translation API Dokumentace Jan Šváb, Artlingua, a.s. 2015 Revize: 2015-09-22 - verze API : v1 Obsah Obsah... 2 Předávání dokumentů k překladu... 3 Implementace klientské aplikace pro Translation
Nastavení DCOM. Uživatelský manuál
Nastavení DCOM Uživatelský manuál Obsah Úvod... 2 Nastavení DCOM pro počítač Hostitel... 3 Operační systém Windows XP... 3 Nastavení vlastností DCOM na Windows XP... 3 Rozšířená nastavení DCOM na Windows
4D Mobile! Úvod! Achitektura 4D Mobile!
4D Mobile Úvod Wakanda, publikovaná 4D SAS, je platforma pro vývoj a publikování webových aplikací vnitřně založena na standardních technologiích: jako je JavaScript a HTML5. Můžete použít "4D Mobile",
Uživatelská příručka MWA Modul Podpora vzdálených kalibrací dle ILAC
Uživatelská příručka MWA Modul Podpora vzdálených kalibrací dle ILAC Český metrologický institut sídlem Okružní 31, 638 00 Brno IČ: 00177016 Verze dokumentu: 1.0 Jazyk dokumentu: český Status: testovací
Databázové aplikace pro internetové prostředí. 01 - PHP úvod, základní princip, vkládání skriptu, komentáře, výpis na obrazovku
Databázové aplikace pro internetové prostředí 01 - PHP úvod, základní princip, vkládání skriptu, komentáře, výpis na obrazovku Projekt: Inovace výuky prostřednictvím ICT Registrační číslo: CZ.1.07/1.5.00/34.250
STŘEDNÍ ŠKOLA INFORMAČNÍCH TECHNOLOGIÍ A SOCIÁLNÍ PÉČE
STŘEDNÍ ŠKOLA INFORMAČNÍCH TECHNOLOGIÍ A SOCIÁLNÍ PÉČE WEBOWÉ STRÁNKY TŘÍD KAMIL POPELKA ZÁVĚREČNÁ MATURITNÍ PRÁCE BRNO 2011 Prohlášení Prohlašuji, že maturitní práce je mým původním autorským dílem, které
Pravidla a plánování
Administrátorský manuál TTC TELEKOMUNIKACE, s.r.o. Třebohostická 987/5 100 00 Praha 10 tel.: 234 052 111 fax.: 234 052 999 e-mail: ttc@ttc.cz http://www.ttc-telekomunikace.cz Datum vydání: 7. května 2013
1 Administrace systému 3. 1.3 Moduly... 3 1.4 Skupiny atributů... 4 1.5 Atributy... 4 1.6 Hodnoty atributů... 4
CRM SYSTÉM KORMORÁN PŘÍRUČKA ADMINISTRÁTORA Obsah 1 Administrace systému 3 1.1 Uživatelské účty.................................. 3 1.2 Přístupová práva................................. 3 1.3 Moduly.......................................
ZSF web a intranet manuál
ZSF web a intranet manuál Verze pro školení 11.7.2013. Návody - Jak udělat...? WYSIWYG editor TinyMCE Takto vypadá prostředí WYSIWYG editoru TinyMCE Jak formátovat strukturu stránky? Nadpis, podnadpis,
Návod pro práci s aplikací
Návod pro práci s aplikací NASTAVENÍ FAKTURACÍ...1 NASTAVENÍ FAKTURAČNÍCH ÚDA JŮ...1 Texty - doklady...1 Fakturační řady Ostatní volby...1 Logo Razítko dokladu...2 NASTAVENÍ DALŠÍCH ÚDA JŮ (SEZNAMŮ HODNOT)...2
OBSAH. 1. Úvod Požadavky na SW vybavení... 3
Obsah OBSAH 1. Úvod... 3 1.1 Požadavky na SW vybavení... 3 2. Popis Reliance J... 4 2.1 Start vizualizace... 4 2.2 Hlavní okno... 5 2.2.1 Menu Služby... 6 2.2.2 Menu Nápověda... 8 2.3 Nastavení hodnoty...
Příručka pro aplikaci KSnapshot
Richard J. Moore Robert L. McCormick Brad Hards Kontrolor: Lauri Watts Vývojář: Richard J Moore Vývojář: Matthias Ettrich Překlad: Lukáš Vlček 2 Obsah 1 Úvod 5 2 Použití KSnapshot 6 2.1 Spuštění KSnapshot.....................................
Diplomová práce Plugin do Eclipse pro tvorbu GUI s konfigurovatelným generováním zdrojového kódu
Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra informatiky a výpočetní techniky Diplomová práce Plugin do Eclipse pro tvorbu GUI s konfigurovatelným generováním zdrojového kódu Plzeň,
Architektura rodiny operačních systémů Windows NT Mgr. Josef Horálek
Architektura rodiny operačních systémů Windows NT Mgr. Josef Horálek = Velmi malé jádro = implementuje jen vybrané základní mechanismy: = virtuální paměť; = plánování vláken; = obsluha výjimek; = zasílání
TÉMATICKÝ OKRUH Softwarové inženýrství
TÉMATICKÝ OKRUH Softwarové inženýrství Číslo otázky : 24. Otázka : Implementační fáze. Postupy při specifikaci organizace softwarových komponent pomocí UML. Mapování modelů na struktury programovacího
01. HODINA. 1.1 Spuštění programu VB 2010. 1.2 Prvky integrovaného vývojového prostředí. - pomocí ikony, z menu Start.
01. HODINA 1.1 Spuštění programu VB 2010 - pomocí ikony, z menu Start. - po spuštění si můžeme vybrat, zda chceme vytvořit nový Projekt a jaký nebo zda chceme otevřít již existující Projekt. 1.2 Prvky
SRSW4IT Inventarizační SW. Prezentace aplikace. Vedoucí DP: ing. Lukáš Macura Autor: Bc. Petr Mrůzek
Prezentace aplikace Vedoucí DP: ing. Lukáš Macura Autor: Bc. Petr Mrůzek Osnova Úvod Programovací jazyk - PHP Etapy vývoje Funkce aplikace Co SW umí Na čem se pracuje Vize do budoucna Úvod Úvod Inspirováno
(Enterprise) JavaBeans. Lekce 7
(Enterprise) JavaBeans Lekce 7 JavaBeans vs. Enterprise JavaBeans (EJB) JavaBeans technologie: jedná se o tzv. komponentní architekturu určenou pro JSE platformu určená pro tvorbu JSE GUI programů pomocí
PRACUJEME S TSRM. Modul Samoobsluha
PRACUJEME S TSRM Modul Samoobsluha V této kapitole Tato kapitola obsahuje následující témata: Téma Na straně Přehled kapitoly 6-1 Užití modulu Samoobsluha 6-2 Přihlášení k systému 6-3 Hlavní nabídka TSRM
VComNet uživatelská příručka. VComNet. Uživatelská příručka Úvod. Vlastnosti aplikace. Blokové schéma. «library» MetelCom LAN
VComNet Uživatelská příručka Úvod Aplikace VComNet je určena pro realizaci komunikace aplikací běžících na operačním systému Windows se zařízeními, které jsou připojeny pomocí datové sběrnice RS485 (RS422/RS232)
Národní elektronický nástroj. Import profilu zadavatele do NEN
Národní elektronický nástroj Import profilu zadavatele do NEN V 1.2 2014 Obsah 1 Cíl...... 2 2 Nutné podmínky k umožnění importu profilu zadavatele...... 2 3 Povinnosti zadavatele dle metodiky k vyhlášce
Střední odborná škola a Střední odborné učiliště, Hořovice
Kód DUM : VY_32_INOVACE_DYN.1.15 Název materiálu: Anotace Autor Jazyk Očekávaný výstup 15 PHP- funkce mail() v PHP odesílání e-mailu pomocí dynamické stránky DUM je námětem k řešení jednoduché mailové
GUI v Javě. Jiří Vokřínek. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze. Přednáška 5 B0B36PJV Programování v JAVA
GUI v Javě Jiří Vokřínek Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 5 B0B36PJV Programování v JAVA Jan Faigl, Jiří Vokřínek, 2017 B0B36PJV Přednáška 5: GUI
IntraVUE 2.0.3 Co je nového
IntraVUE 2.0.3 Co je nového Michal Tauchman Pantek (CS) s.r.o. Červen 2008 Strana 2/8 Úvod IntraVUE je diagnostický a podpůrný softwarový nástroj pro řešení komunikačních problémů, vizualizaci a dokumentaci
Remote Method Invocation RMI
Remote Method Invocation RMI Java TM Remote Method Invocation (RMI) umožňuje objektu na jedné Java Virtual Mashine(JVM) jednoduše spustit metodu jiného objektu na vzdálené JVM. Při volání vzdálené metody
GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER. váš partner na cestě od dat k informacím
GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER váš partner na cestě od dat k informacím globtech spol. s r.o. karlovo náměstí 17 c, praha 2 tel.: +420 221 986 390 info@globtech.cz
2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena.
2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena. GEOVAP, spol. s r. o. Čechovo nábřeží 1790 530 03 Pardubice Česká republika +420 466 024 618 http://www.geovap.cz V dokumentu použité názvy programových
TACHOTel manuál 2015 AURIS CZ
TACHOTel manuál 2 TACHOTel Obsah Foreword I Úvod 0 3 1 Popis systému... 3 2 Systémové... požadavky 4 3 Přihlášení... do aplikace 5 II Nastavení aplikace 6 1 Instalace... a konfigurace služby ATR 6 2 Vytvoření...
Nastavení klientských stanic pro webové aplikace PilsCom s.r.o.
Nastavení klientských stanic pro webové aplikace PilsCom s.r.o. Obsah 1. Obecné informace...1 2. Internetový prohlížeč...1 3. Nastavení kompatibilního zobrazení...1 4. Nastavení důvěryhodných serverů...2
CS OTE. Dokumentace pro externí uživatele
CS OTE OTE-COM Launcher Manager aplikace vnitrodenního trhu s plynem 1/19 Obsah Použité zkratky... 2 1 Úvod... 3 2 Nastavení systému uživatele... 3 2.1 Konfigurace stanice... 3 2.2 Distribuce aplikace
Dokumentace k produktu IceWarp Notifikační nástroj
Dokumentace k produktu IceWarp Notifikační nástroj Notifikační nástroj umožňuje propojit pracovní stanicí s aplikací IceWarp Web klient. Kromě funkcí pro upozorňování na nové události je pomocí ní možné
Postupy práce se šablonami IS MPP
Postupy práce se šablonami IS MPP Modul plánování a přezkoumávání, verze 1.20 vypracovala společnost ASD Software, s.r.o. dokument ze dne 27. 3. 2013, verze 1.01 Postupy práce se šablonami IS MPP Modul
Komponenty v.net. Obsah přednášky
doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Obsah přednášky Rozdíl mezi COM a.net Distribuce komponent Programování
Typy souborů ve STATISTICA. Tento článek poslouží jako přehled hlavních typů souborů v programu
StatSoft Typy souborů ve STATISTICA Tento článek poslouží jako přehled hlavních typů souborů v programu STATISTICA, ukáže Vám jejich možnosti a tím Vám dovolí využívat program efektivněji. Jistě jste již
Studijní informační systém KOS ikos přístup pro referenty
Studijní informační systém KOS ikos přístup pro referenty Pro práci se studijním informačním systémem AMU se používají dvě různé aplikace, které však pracují se společnými daty. Studenti a učitelé pracují
Tvorba informačních systémů
Tvorba informačních systémů Michal Krátký 1, Miroslav Beneš 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Tvorba informačních systémů, 2005/2006 c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních
Úvod. Program ZK KASA EET. Základní vlastnosti programu. Co program vyžaduje. Určení programu. Jak program spustit. Uživatelská dokumentace programu
sq Program ZK KASA EET verze 1.00 Uživatelská dokumentace programu Úvod Základní vlastnosti programu Jednoduchost ovládání - umožňuje obsluhu i málo zkušeným uživatelům bez nutnosti většího zaškolování.
Obsah. 1) Rozšířené zadání 2) Teorie zásuvných modulů a) Druhy aplikací používajících zásuvné moduly b) Knihovny c) Architektura aplikace d) Výhody
Obsah 1) Rozšířené zadání 2) Teorie zásuvných modulů a) Druhy aplikací používajících zásuvné moduly b) Knihovny c) Architektura aplikace d) Výhody 3) 4) Mantichora Mantichora je moderní aplikace, který
Nápověda pro aplikaci Manuscriptorium Kandidátů (M-Can) http:://candidates.manuscriptorium.com
Nápověda pro aplikaci Manuscriptorium Kandidátů (M-Can) http:://candidates.manuscriptorium.com Hlavní funkce aplikace Uživatelům autorům Otázky a odpovědi Jaké dokumenty lze do Manuscriptoria nabízet pomocí
mbank.cz mtransfer Okamžitá notifikace o mtransferu Dokumentace pro externího partnera
mtransfer Okamžitá notifikace o mtransferu Dokumentace pro externího partnera 1/6 Obsah 1 SLOVNÍK POJMŮ... 3 2 ÚVOD... 4 3 POPIS ŘEŠENÍ NPM... 4 4 ZPŮSOB KOMUNIKACE EXTERNÍHO PARTNERA S MBANK - SPECIFIKACE
8 Třídy, objekty, metody, předávání argumentů metod
8 Třídy, objekty, metody, předávání argumentů metod Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost třídám a objektům, instančním
Už ivatelska dokumentace
Už ivatelska dokumentace Aplikace Portál úspěšných projektů je určena k publikování informací o projektech realizovaných za přispění některého z Operačních programů v gesci Ministerstva vnitra České republiky.
Možnosti tisku v MarushkaDesignu
0 Možnosti tisku v MarushkaDesignu OBSAH 1 CÍL PŘÍKLADU...2 2 PRÁCE S PŘÍKLADEM...2 3 UKÁZKA DIALOGOVÉHO OKNA...3 4 STRUČNÝ POPIS PŘÍKLADU V MARUSHKADESIGNU...5-1 - 1 Cíl příkladu V tomto příkladu si ukážeme
Návod pro podání nabídky v elektronické podobě
Návod pro podání nabídky v elektronické podobě Pro podání nabídky v elektronické podobě je nutné být zaregistrován jako dodavatel v elektronickém nástroji E-ZAK na adrese https://zakazky.cenakhk.cz. Podrobné
ESPI9 - export zařízení do MA ISOH
ESPI9 - export zařízení do MA ISOH Téma: Přenos evidence zařízení a navázaných spisů z ESPI9 do systému MA ISOH Program: ESPI9 Vypracoval: Mgr. Tomáš Čejchan (oddělení technické podpory) Revize: 7.3.2012
1 Správce licencí Správce licencí Správce licencí Start > Všechny programy > IDEA StatiCa > Správce licencí Soubor > Správce licencí Licence
1 Správce licencí Programy IDEA jsou chráněny proti neoprávněnému použití. Pro běh programu je vyžadována platná licence. Upozornění: Lokální licence na pracovní stanici a síťová licence Eleckey jsou softwarové
Platforma.NET 11.NET Framework 11 Visual Basic.NET Základní principy a syntaxe 13
Obsah Úvod 11 Platforma.NET 11.NET Framework 11 Visual Basic.NET 12 1 Základní principy a syntaxe 13 Typový systém 13 Hodnotové typy 13 Struktury 15 Výčtové typy 15 Referenční typy 15 Konstanty 16 Deklarace
Počítačová Podpora Studia. Přednáška 5 Úvod do html a některých souvisejících IT. Web jako platforma pro vývoj aplikací.
Přednáška 5 1. Stručný přehled vývoje html H T m l (HTML...XML... html5), (Web API, JSON, REST,AJAX) 2. Některé související IT IP adresa, doménová adresa, name servery JavaScritp, Jquery, Angular PHP vs
Zpravodaj. Uživatelská příručka. Verze
Zpravodaj Uživatelská příručka Verze 02.01.02 1. Úvod... 3 2. Jak číst tuto příručku... 4 3. Funkčnost... 5 3.1. Seznam zpráv... 5 4. Ovládání programu... 6 4.1. Hlavní okno serveru... 6 4.2. Seznam zpráv...
ABRA POS PRINT SERVER
ABRA Software a.s. Jeremiášova 1422/7b 15500 Praha 13 IČO 25097563 DIČ: CZ2597563 Zapsal Městský soud v Praze OR odd. B, vložka 4475 ABRA POS PRINT SERVER Dokumentace Aktualizace dokumentu: 15.3.2017 1
NetBeans platforma. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti
NetBeans platforma Aplikační programování v Javě (BI-APJ) - 7 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha Evropský sociální fond Praha & EU: Investujeme
WR Reality. Web Revolution. Uživatelský manuál administračního rozhraní
WR Reality Web Revolution Uživatelský manuál administračního rozhraní Web Revolution s. r. o. 2010 WR Reality Administrace uživatelský manuál Praktický průvodce administrací webové aplikace WR Reality
Integrace OpenOffice.org a Javy. CZJUG, , Robert Vojta
Integrace OpenOffice.org a Javy CZJUG, 15.12.2008, Robert Vojta Obsah Část 1 - Teorie Úvodní informace, definice pojmů Dokumentace, Java Language Binding Pomocné nástroje Část 2 - Praktické ukázky Lokální
Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných
Tematický celek 03 3.1 Proměnné Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace. 3.1.1 Deklarace proměnných Dim jméno_proměnné [As typ] - deklarace uvnitř procedury platí pouze pro