Multiplatformní osobní organizér v jazyce Java

Rozměr: px
Začít zobrazení ze stránky:

Download "Multiplatformní osobní organizér v jazyce Java"

Transkript

1 Mendelova zemědělská a lesnická univerzita v Brně Provozně ekonomická fakulta Multiplatformní osobní organizér v jazyce Java Bakalářská práce Vedoucí práce: Ing. Petr Jedlička, Ph.D Petr Gola Brno 2009

2 Rád bych touto cestou poděkoval Ing. Petru Jedličkovi, Ph.D. za veškerou trpělivost, projevenou důvěru, rady a připomínky, které mi poskytl při zpracování bakalářské práce.

3 Prohlašuji, že jsem tuto bakalářskou práci včetně vyvíjeného programu, který je její neoddělitelnou součástí, zpracoval samostatně s použitím uvedené literatury a pod odborným vedením Ing. Petra Jedličky, Ph.D. V Brně 26. května

4 4 Abstract Gola, P. Multiplatform personal manager in Java. Bc. Dissertation. Brno, 2009 This dissertation deals with features of current software personal management organizers (PIM). A new one is designed on the basis of identified deficiencies. The aim of this dissertation is creation maximum accessible personal information management in space and time on the Java platform. Abstrakt Gola, P. Multiplatformní osobní organizér v jazyce Java. Bakalářská práce. Brno, 2009 Tato práce se zabývá možnostmi současnými softwarových osobních organizérů (PIM). Na základě analýzy zjištěných nedostatků je navržen nový softwarový osobní organizér. Cílem práce je vytvoření maximálně dostupného osobního organizéru v čase a prostoru realizovaného na platformě Java.

5 OBSAH 5 Obsah 1 Úvod 8 2 Cíl a metodika práce Cíl práce Metodika práce Současná situace Popis funkcí Zjištěné nedostatky Osobní organizér Laura Návrh řešení zjištěných nedostatků Vhodné funkce Java jako multiplatforma Multiplatformní aplikace J2SE, J2EE, J2ME Implementace Výběr vhodných technologií Maven Hibernate Spring framework Substance JSF a RichFaces Laura - Architektura LauraCommons - Společný základ LauraBase - Virtuální databáze Laura - Aplikace Role Úkoly Kalendář Peněženka Poznámky LauraDesktop - J2SE LauraWeb - J2EE LauraMobile - J2ME Synchronizace Diskuse 39 8 Závěr 40

6 OBSAH 6 9 Literatura 41 Přílohy 42 A Elektronická příloha 43 B Náhledy aplikace 44

7 PŘEHLED POUŽITÝCH ZKRATEK 7 Přehled použitých zkratek AJAX AWT GPL HBM HTML HQL J2EE J2ME J2SE JSF JSP JVM LGPL ORM PIM SQL SWT XHTML XML Asynchronous JavaScript and XML Abstract Window Toolkit General Public Licence Hibernate Mapping HyperText Markup Language Hibernate Query Language Java 2 Enterprise Edition Java 2 Micro Edition Java 2 Standard Edition Java Server Faces Java Server Pages Java Virtual Machine Lesser General Public Licence Object-Relational Mapping Personal Information Management Structured Query Language Standard Widget Toolkit Extensible HyperText Markup Language Extended Markup Language

8 1 ÚVOD 8 1 Úvod Osobní organizer je nástroj člověka, kterému by měl usnadnit jeho každodenní život po všech možných stránkách. Okolní svět, zvlášť ten současný, nás denně zasypává ohromným množstvím informací, s kterými potřebujeme dále pracovat. Osobní organizér vynalezl člověk za účelem ukládání, organizování a používání informací. Myšlenkou i cílem osobního organizéru je mít správnou informaci ve správné chvíli, na správném místě, ve správné formě a v dostatečné kvalitě k uskutečnění aktuální potřeby. Jedním ze stěžejních pilířů osobního organizéru je plánování a řízení času. Myšlení ve sféře osobního řízení se vyvíjelo obdobně jako v mnoha jiných oblastech lidského snažení. Stěžejní myšlenky, neboli hlavní vývojové proudy přicházely postupně, každá přinesla něco nového. Ve společenském rozvoji po agrární revoluci přišla revoluce průmyslová a po ní revoluce informační. Každý další vlna je zdrojem pokroku. Obdobně i ve sféře řízení času každá další následující generace vychází z předchozí, staví na ní a je dalším krokem na cestě k lepšímu řízení našeho života. Lidská společnost již zaznamenala 4 generace řízení času. Pro první generaci byla typická snaha vtisknout našemu životu řád. Prostředky byly zejména seznam úkolů a poznámky. Druhá generace byla dobou plánovacích kalendářů a diářů. Projevila se tedy snaha plánovat, dívat se dopředu. Třetí generace zavádí priority za účelem co nejlepšího využití času. Ukázalo se ale, že snaha o co nejúspornější využití času je často kontraproduktivní, Mnoho lidí díky tomuto plánování zanevřelo na různé metody plánování, protože rychle nabyli pocit, že je jejich život do posledního okamžiku naplánovaný. Dnes se prosazuje čtvrtá generace řízení času. Vychází z toho, že už samotný pojem řízení času je chybný. Cílem není řídit nebo plánovat čas, ale řídit sami sebe. 1 Dnešní osobní organizéry můžeme mimo používané generace dělit ještě taky podle formy realizace na papírové a na softwarové. S příchodem moderní IT přicházejí do světa osobních organizérů dosud nevídané možnosti. Oproti papírovým předchůdcům mají mnohé výhody. Prakticky neomezenou zaznamenávající kapacitu, bohaté možnosti organizace, silné zabezpečení či velmi užitečné vyhledávání. Přesto se stále setkáme i s těmi papírovými. A to nejen u starší generace, která už příchod počítačové éry nechce dohánět. Mnoho manažerů, často velmi mladých lidí, používá papírové osobní organizéry. Také jej na některé z činností osobního managementu denně používám. Po několika diskuzích s ostatními a vlastním zamyšlení je důvod 1 COVEY, Stephen R. 7 návyků skutečně efektivních lidí (3)

9 1 ÚVOD 9 překvapivě jednoduchý. Dostupnost informací. Počítač není tolik spolehlivý, je závislý na elektrické energii. Nevezeme si jej sebou v dopravním prostředku, nejde s námi do kina ani do obchodu. A i kdybychom si ho sebou nosili, často nebudeme mít příliš chuť jej vytahovat např. kvůli pár informacím, co nakoupit.

10 2 CÍL A METODIKA PRÁCE 10 2 Cíl a metodika práce 2.1 Cíl práce Cílem této práce je navrhnout a realizovat vlastní softwarový osobní organizér se zaměřením na největším možnou míru dostupnosti uživateli s využitím jazyka Java. Dostupností budeme rozumět dostupnost jednou zaznamenaných informací do osobního organizéru jeho uživateli. S výhodou bude k tomuto účelu využit právě jazyk Java, který v současné době poskytuje neuvěřitelné možnosti přenositelnosti sestaveného řešení i programového kódu. V dnešní době již není počítač jen ta velká krabice pod stolem, ale jeho funkci může nahradit i dnes populárnější notebook či dokonce mobilní telefon. A právě mobilní zařízení (nejen mobilní telefon) mohou velkou mírou přispět k větší dostupnosti aplikace. Tato jednotlivá cílová zařízení můžeme označit jako platformy. Další možností řešení zmiňované dostupnosti je internet. Všudypřítomnost internetu je čím dál větší samozřejmostí a pokud se nám podaří zpřístupnit náš osobní organizér přes internet, umožníme tak uživateli přístup k informacím i skrz vypůjčené zařízení. Uživatel se pak nemusí tolik obávat poruchy jeho zařízení. Cílem této práce je tedy realizace maximálně přístupného multiplatformního osobního organizéru v jazyce Java. 2.2 Metodika práce K dosažení cíle bude nejprve analyzována současná nabídka softwarových osobních organizérů a jejich nabízených funkcí. Z těch budou vybrány vhodné funkce pro návrh řešení vlastního multiplatformního osobního organizéru. Následně bude tento návrh implementován pro jednotlivé platformy či skupiny platforem. Jazyk Java poskytuje řešení na bázi edicí, které jsou vždy zaměřeny na určitou skupinu platforem. Implementace řešení tedy proběhne postupně ve všech třech aktuálně dostupných edicích jazyka Java - J2SE, J2EE a J2ME. Pro každou edici budou před implementací vybrány vhodné technologie (nástroje, knihovny nebo frameworky) a výsledná řešení budou porovnávána v oblastech náročnosti implementace, uživatelské přívětivosti a celkové přístupnosti výsledku.

11 3 SOUČASNÁ SITUACE 11 3 Současná situace Vymezení pojmu osobní organizér (PIM) je poměrně široké, proto nemusí být vždy úplně jednoznačné, zda produkt spadá do kategorie PIM nebo ne. Prohlídkou nejméně stovky různých softwarů, které by mohly vyhovovat tomuto pojmu jsem dospěl k názoru, že za PIM je možno považovat jakýkoliv software, který se věnuje oblasti řízení času (time management), řízení úkolů (task management) nebo řízení znalostí (knowledge management). Pokud vymezíme definici PIM takto široce, zjistíme, že na softwarovém trhu je neuvěřitelně rozsáhlá nabídka. Po internetu vzniká mnoho různých míst 2, kde je vidět snaha udržovat seznam dostupných organizérů. Počty zde uvedených softwarů jdou do stovek. Bohužel, tyto seznamy trpí velkým množstvím neaktuálních záznamů. Navíc kvalita jednotlivých uvedených PIM je natolik rozdílná, že průchod tímto seznam se stává velmi neatraktivním a případného zájemce o hledání vhodného PIM pro osobní použití spolehlivě velmi rychle odradí. Také proto většina potenciální uživatelů PIM zůstává u softwarů, které jsou předinstalovány v dnešních operačních systémech. 3.1 Popis funkcí Analýzou nabídky softwarových organizátorů byly pro jednotlivé oblasti zjištěny následující nejpočetněji zastoupené funkce: Oblast řízení času Kalendář Připomínkovač Oblast řízení úkolů Úkoly Oblast řízení znalostí Deník Poznámky Adresář kontaktů Archiv komunikace Peněženka 2 Tato místa mají většinou podobu veřejných seznamů s možností editace i pro návštěvníky. (8) (9) (10)

12 3 SOUČASNÁ SITUACE 12 RSS/Atom čtečka Kalendář umožňuje plánování událostí - schůzky, narozeniny, výročí. Často je umožněno několik pohledů s rozdílným intervalem plánování - denní, týdenní, a měsíční. Připomínkovač je doplňková funkce většinou navázaná na kalendář, která připomíná uživateli blížící události nebo termíny plnění úkolů. Může upozorňovat i na nesplněné události po termínu. Úkoly slouží ke správě aktuálních úkolů uživatele. Často bohužel postrádají nějaké rozumnější členění a uživatel se musí v lepším případě spokojit s určením priorit. Takto jsou ovšem zamíchány úkoly související s rodinným životem spolu s pracovními záležitostmi. Uživatel je pak většinou nucen používat softwarový PIM pouze pro pracovní záležitosti, protože je nemyslitelné, aby na poradě vedení vytáhl seznam úkolů spolu osobními. Dalšími možnostmi jsou nesdílet informace s ostatními nebo používat dva různé nástroje či jen databáze. Deník je zápisník denních událostí tak, jak je známý v původní papírové podobě. Poznámky je možno využít k rychlému zaznamenání myšlenek či jiných zajímavých informací. Adresář kontaktů umožňuje správu kontaktů a dalších detailů k nim (telefonní číslo, adresa, ,...). Vhodnou funkcí je vyhledávání. Archiv komunikace slouží k archivaci komunikace uživatele ( y, zprávy). Může být napojen k ovém klientovi nebo také k instant messaging klientovi (ICQ, MSN, Jabber). Vhodnou funkcí je vyhledávání. Peněženka je nástroj pro uchování důležitých citlivých informací (přístupových údajů, hesel, pinů). RSS/Atom čtečka je integrovaná čtečka RSS/Atom kanálů, slouží k odběru uživatelem vybraných novinek z webu. 3.2 Zjištěné nedostatky Pokud se podíváme na nabídku softwarových organízátorů podrobněji, zjistíme dva hlavní nedostatky. 1. Nedostatečná dostupnost aplikace. PIM jsou pouze výjimečně multiplatformní, často jsou určeny pouze pro jeden operační systém nebo jsou naopak pouze internetové a pak postrádají možnost přístupu k informacím bez internetového připojení.

13 3 SOUČASNÁ SITUACE Chybí možnost oddělené organizace a prezentace informací. Současné PIM postrádají možnost rozdělení spravovaných informací do několika kategorií a následnou možnost spravovat či prezentovat jen filtrované informace. První z nich byl předpokládán a je důvodem vzniku této bakalářské práce. Je pravdou, že nové aplikace se již snaží tento problém řešit, nicméně stále vždy něco chybí. Pokud vznikne řešení pro desktop se synchronizací pro mobilní telefon, chybí zase možnost svobodného výběru operačních systémů pro tyto platformy. Druhý z nich může být zdánlivým překvapením. Ovšem je nutno si uvědomit, že většina současných PIM vychází ještě z 3. generace osobního řízení, kdy snahou bylo zejména řízení vedoucí k úspoře času. Teprve současná 4. generace přichází se zaměřením se na cíl veškerého snažení. Řešení tohoto nedostatku by významně přispělo k použitelnosti výsledného PIM.

14 4 OSOBNÍ ORGANIZÉR LAURA 14 4 Osobní organizér Laura 4.1 Návrh řešení zjištěných nedostatků Nově navrhovaný osobní organízér bude řešit oba zjištěné nedostatky. Naprosto zásadní je řešení prvního nedostatku, kterým je nedostatečná dostupnost aplikace. Stěžejním prostředkem bude vlastní implementace PIM v jazyce Java s výhodným využitím všech možností, které tento jazyk v dnešní době nabízí. Jedná se zejména o jeho rozšířenost a podpora na mnoha různých platformách. Dalším krokem bude zpřístupnění informací přes internetový prohlížeč, který dnes už také možno považovat za platformu. Pro účel řešení druhého nedostatku, kterým je chybějící možnost oddělené organizace a prezentace informací, zavedeme do programu novou funkci - správu rolí. Člověk jako jedinec naplňuje v životě mnoho různých rolí - člen rodiny, zaměstnanec, podnikatel, student a další. Vše co vykonává a plánuje by měl vztahovat k naplnění cílů v rámci těchto rolí. Nejen že mu to umožní oddělenou organizaci i prezentaci informací, ale hlavně jej toto členění povede ve smyslu 4. generace osobního řízení k uvědomění si cíle svých činností. 4.2 Vhodné funkce Pro takto orientovaný osobní organizér definujeme novou oblast funkcí - oblast osobního řízení. Její vznik vyplývá ze 4. generace osobního řízení, kdy se upouští od řízení a plánování času a prosazuje se snaha řízení sebe. Bude do ní zařazena právě nově definovaná funkce správy rolí. Z dalších používaných funkcí budou vzhledem k rozsahu práce vybrány jen ty klíčové. Oblast osobního řízení Role Oblast řízení úkolů Úkoly Oblast řízení času Kalendář Oblast řízení znalostí Peněženka Poznámky Tyto funkce by měly být dostupné na všech cílových platformách.

15 5 JAVA JAKO MULTIPLATFORMA 15 5 Java jako multiplatforma 5.1 Multiplatformní aplikace Platforma je skupina technických prostředků v informatice a výpočetní technice, které mluvčí (obecně producent softwarových řešení) používá nebo nabízí jako základ pro další vývoj. 3 Pojem multiplatformní aplikace je tedy možno chápat v různě širokém pojetí. Význam je většinou stejný - abstrakce od konkrétního technického vybavení, uživatel platformy se spoléhá na dostupnost všech prostředků, které platforma definuje. Poměrně zažitým vnímáním platformy je operační systém. Různými platformami se pak v tomto případě rozumí různé operační systémy - Microsoft Windows, Linux, Mac a další. Platformou ovšem můžeme stejně tak rozumět i cílové zařízení - desktop, notebook, mobilní telefon. Platformou se v poslední době stal i webový prohlížeč. Nakonec i samotná Java je jako jazyk s podporou mnoha různých platforem také považována za platformu. V tomto případě chápeme Javu jako sjednocující základnu pro vývoj multiplatformních aplikací. Přispívá k tomu mimo jiné architektura Javy, protože tento jazyk je na cílovém zařízení vykonáván pomocí virtuálního stroje (JVM), který musí být na tomto zařízení nainstalovaný. Java program, který je vykonávaný pomocí JVM, je překládán do tzv. bytecode. Samotné JVM se v poslední době prosazuje nejen jako virtuální stroj pro běh programů napsaných v Javě. Některé moderní dynamické jazyky jsou také překládány do bytecode a pro svůj běh JVM s výhodou využívají J2SE, J2EE, J2ME Java je podle cílových zařízení vydávána ve třech edicích. Jelikož každé zařízení disponuje jinými možnostmi, je takto vhodně definován pro každou skupinu zařízení společný základ. Vývojář aplikace pak vyvíjí pro jednu z těchto edicí s předpokladem, že cílové zařízení bude podporovat celou množinu definovaných funkcí. J2SE (Java 2 Standard Edition) je edice Javy pro použití na osobním počítači. Je vydávána pro různé operační systémy, ale vždy podporuje shodnou množinu funkcí. J2SE je standard, který je pak pro různé operační systémy implementován 3 Takto obecně je tento pojem popsán na české Wikipedii. (11) 4 Příkladem je JRuby -

16 5 JAVA JAKO MULTIPLATFORMA 16 zvlášť. Přímo jsou podporovány operační systémy Microsoft Windows, Linux, Mac OS a Solaris. Další operační systémy jsou podporovány nepřímo - existuje komunita, která dodává vlastní implementaci Javy - např. pro operační systém FreeBSD 5. J2EE (Java 2 Enterprise Edition) je edice Javy zaměřená na webové aplikace. Je postavena nad J2SE a navíc přidává mnohé vlastní webové standardy. Ty jsou pak implementovány aplikačními servery od různých dodavatelů. J2ME (Java 2 Micro Edition) je edice Javy pro mobilní telefony a další zařízení s omezenými technickými prostředky (PDA, TV set-top boxy, tiskárny). Je podmnožinou J2SE. 5 Projekt FreeBSD Java -

17 6 IMPLEMENTACE 17 6 Implementace Implementace multiplatformního osobního organizéru proběhne v jazyce Java. Jednou z výhod tohoto řešení je dostupnost volně přístupného vývojového prostředí. Není třeba za něj platit ani korunu, je poskytováno zcela zdarma. Dokonce i v případě, že by byl výsledek naší činnosti předmětem komerčního záměru. Takto volně přístupná vývojová prostředí jsou dvě. NetBeans IDE, za kterým stojí společnost Sun Microsystems a Eclipse IDE, které podporuje společnost IBM. Obě prostředí mají svoje specifika a z nich vyplývající výhody i nevýhody. Eclipse IDE je postaveno na technologii SWT, která umožňuje řádově rychlejší běh prostředí - vývojové prostředí lépe využívá systémové rostředky operačního systému - přistupuje přímo k nativním knihovnám pro vykreslování grafických komponent. Nevýhodou může být nejednotný vzhled mezi operačními systémy. Nativní vzhled aplikace ovšem může být považován stejně tak i za výhodu. Zde je důležité upozornit, že se jedná pouze o technologii samotného vývojového prostředí, pro vyvíjenou aplikaci si programátor vybírá vlastní řešení. NetBeans IDE je od začátku pojato více v multiplatformní duchu a se zaměřením na J2EE. Celé IDE je napsáno přímo v čisté Javě. Množina nabízených funkcí více odpovídá vývoji pro různé platformy. Zejména již zmíněná podpora J2EE je zde historicky výraznější než v případě Eclipse IDE. V poslední době ovšem dochází k výraznému přibližování nabízených funkcí obou IDE. Pro vývoj osobního organizéru bylo nakonec vybráno vývojové prostředí Net- Beans, a to právě z důvodu výraznější podpory vývoje pro více platforem, což odpovídá motivaci našeho projektu. Všechny další potřebné technologie byly vybrány s ohledem na nabízenou licenci. Ve většině případů se jedná o licenci LGPL či Apache Licence. Tedy licence, které jsou velmi svobodné. Nejen, že poskytují otevřené zdrojové kódy, ale také nezakazují komerční využití vyvíjeného programu, pokud v něm technologie využijeme. Tímto zákazem je opatřena například licence GNU GPL, která byla dříve vůbec nejpopulárnější svobodnou licencí. 6.1 Výběr vhodných technologií Java platforma je denně zásobena příspěvky rozsáhlé komunity, která kolem ní za poslední roky vyrostla. Existuje zde nepřeberné množství různých nástrojů a frameworků, které mohou vývojářům usnadnit vývoj. Většina z nich je volně pou-

18 6 IMPLEMENTACE 18 žitelná, čímž se tato platforma odlišuje od konkurenčních (.NET od společnosti Microsoft). Vhodné využítí existujících řešení může výslednému produktu zajistit snadný další rozvoj do budoucna. Platforma Java nabízí řešení téměř pro každou myslitelnou problematiku, ovšem při výběru je třeba vzít v úvahu náš požadavek na multiplatformní řešení. Znovupoužitelnost částí vyvíjené aplikace v rámci edicí je možné zejména mezi J2SE a J2EE. J2ME je tak výraznou podmnožinou J2SE, že ji většina standardních frameworků nepodporuje. V tomto případě je proto často třeba jít vlastní cestou. Následuje popis využitých technologií Maven Maven spadá nejvíce do kategorie nástrojů pro vývoj. Není obsažen ve výsledném programu. Je přístupný pod licencí Apache Licence 2.0. Maven slouží k deklarativnímu popisu projektu s návazností na vývojové prostředí. Základem je konfigurační soubor projektu - pom.xml. V tomto souboru je popsána struktura a konfigurace projektu - informace o názvu projektu, stránkách produktu, cestě k verzovacímu systému, použitých knihovnách a jiných závislostech, zúčastněných vývojářích a mnoho dalšího. Výhodou tohoto nástroje je neuvěřitelně snadné zapojení programátora do vývoje. Zájemci stačí poskytnout soubor pom.xml s definicí projektu spolu se zdrojovými kódy a ten je následně schopen začít na projektu pracovat. Jednoduchým příkazem jsou z internetu automaticky staženy potřebné knihovny, které projekt využívá a projekt může být sestaven (maven build). Poté může být stejně jednoduchým způsobem spuštěn (maven run). Dalším často používaným příkazem je sestaven distribuční balík aplikace (maven package). Příklad deklarativní konfigurace projektu - pom.xml: <project...> <modelversion>4.0.0</modelversion> <groupid>cz.gola.laura</groupid> <artifactid>laura</artifactid> <packaging>pom</packaging> <version>1.0-snapshot</version> <name>laura</name> <dependencies>...

19 6 IMPLEMENTACE 19 </dependencies> <modules> <module>lauradesktop</module> <module>laurabase</module> <module>lauracommons</module> <module>lauraweb</module> </modules>... </project> } Maven je velmi mocný a sofistikovaný nástroj, jehož podrobný popis by byl úkolem na samostatnou práci Hibernate Hibernate je ORM framework. Je vydáván pod svobodnou licencí LGPL. Jeho úkolem je mapování objektů aplikace do relačních tabulek databáze. Umožňuje tak transparentní práci s objekty, jako by se přímo ukládaly do databáze. Tato vrstva abstrakce navíc přidává významnou užitnou hodnotnu v podobě praktické nezávislosti na použité databázi. Hibernate zavádí vlastní dotazovací jazyk HQL. Ten je objektovou obdobou známého SQL a navíc není závislý na cílové databází (SQL teoreticky také ne, ale prakticky ano). Aplikace tedy nepracuje přímo s databází pomocí SQL, ale komunikuje s Hibernate pomocí HQL. Hibernate podle nastaveného dialektu překládá potřebné dotazy na SQL dle potřeby konkrétní databáze. Dialekt musí být pro každou databázi jiný a Hibernate jich v současné době podporuje asi 20. Přitom všechny majoritní databáze jsou zastoupeny (Oracle, MS SQL, PostgreSQL, MySQL, Fire- Bird, Apache Derby, H2 Database,...). Použití tohoto frameworku neuvěřitelným způsobem usnadňuje vývoj datové vrstvy. Po správném namapování objektů do relačních struktur je další používání jednoduché a přímočaré. S využitím objektové dědičnosti je pak jednoduché napsat společné dotazy pro rozdílné objekty. Je tak významným způsobem podpořena znovupoužitelnost kódu. Příklad mapování abstraktní třídy Entity: public abstract class Entity implements Serializable { protected Long id;

20 6 IMPLEMENTACE } protected Long version; protected String name; protected Date datecreated; protected Date datemodified; protected Long rank; protected Boolean active; Prakticky je nutno popsat mapování třídy v HBM souboru: <hibernate-mapping package="cz.gola.laura.module.core.bo"> <class lazy="false" name="entity" table="cor_entity"> <id column="id" name="id" type="java.lang.long"> <generator class="native"/> </id>... <property name="userid" not-null="true" unique="true" /> <property name="name" not-null="true" /> <property name="datecreated" not-null="true" /> <property name="datemodified" not-null="true" /> <property name="rank" not-null="true" /> <property name="active" not-null="true" /> <property name="type" not-null="true" /> </class> </hibernate-mapping> } Každá vlastnost třídy Entity je zde jednoduchým způsobem mapována do tabulky COR ENTITY. Hibernate automaticky pozná typ property a vytvoří v databázové tabulce sloupec odpovídajícího typu. Následuje konkrétní používaná a ukládaná třída Task: public class Task extends Entity { private Role parentrole; private TaskPriority priority; private Date datecompleted;

21 6 IMPLEMENTACE 21 } private Date datedeadline; Její mapování je pak realizováno takto: <hibernate-mapping package="cz.gola.laura.module.task.bo"> <joined-subclass name="task" table="tsk_task" extends="entity"> <key column="id"/> <many-to-one name="parentrole" not-null="true" lazy="false" /> <property name="priority" not-null="true"> <type name="enumusertype"> <param name="enumclassname">taskpriority</param> </type> </property> <property name="prioritynumber" not-null="true" /> <property name="datecompleted" /> <property name="datedeadline" /> </joined-subclass> </hibernate-mapping> Jak je vidět, u každé vlastnosti objektu je možno jednoduchým způsobem nastavit další atributy mapování vlastností na sloupce tabulky. Ty jsou pak součástí integritních omezení databáze - sloupce s povinnou hodnotou (not-null=true), jedinečnými hodnotami (unique=true) a cizími klíči (vazby many-to-one a další). Mimo HBM soubory je mapování možno definovat pomocí java anotací nebo Xdoclet komentářů. Tyto způsoby sice umožňují udržování zdrojového kódu spolu s mapováním na jednom místě, nicméně nemají tak bohaté možnosti konfigurace. Ne všechno, co je možno nastavit v HBM souborech, je umožněno i v konfiguraci java anotacemi nebo Xdoclet komentáři. Oddělená správa HBM souborů také umožňuje více různých mapování pro jednu třídu. Výsledkem předchozího ukázkového mapování třídy Task je vytvoření dvou tabulek v databázi - COR ENTITY a TSK TASK. Pokud za pomocí Hibernate uložíme instanci třídy Task do databáze, bude SQL příkazem uložen jeden řádek do tabulky COR ENTITY (vlastnosti společné všem instancím třídy Entity) a druhý řádek do tabulky TSK TASK (specifické vlastnosti objektů Task). Přitom pro ukládání všech potomků třídy Entity do databáze je využívána jedna společná funkce:

22 6 IMPLEMENTACE 22 public void saveentity(entity entity, boolean quiet) {... Session s~= getsessionfactory().opensession(); s.saveorupdate(entity); s.flush(); s.close(); } Tato funkce slouží jak pro vytvoření nového tak i pro uložení změn záznamu. Hibernate automaticky rozpozná, zde je třeba do databázové tabulky uložit nový řádek nebo provést update existujícího. Tento framework ovšem není možno využít v J2ME, proto tuto edici je nutno realizovat vlastní způsob persistence. Hibernate je velmi mocný nástroj pro zjednodušení práce s databází. Pro jednoduché případy použití je jeho používání radostné. Pro složitější používání je ovšem nutná velmi dobrá odborná znalost tohoto frameworku, protože vnitřně je Hibernate velmi složitý. Jedná se o jeden z nejobsáhlejších frameworků pro Javu Spring framework Tento framework je pravděpodobně vůbec nejznámějším, nejpopulárnějším, nejrozšířenějším a nejrozsáhlejším v jazyce Java. Je vydáván pod licencí Apache Licence 2.0. Dělí se do mnoha samostatných modulů řešící různé problémové oblasti. V počátku jej proslavila zejména implementace revolučního návrhového vzoru Inversion of Control (IOC), realizovaná jako Dependency Injection (vkládání závislostí). IOC výrazným způsobem napomáhá udržet kvalitu návrhu aplikace. Tento návrhový vzor je možno zjednodušeně popsat jako obrácené řízení, kdy vytvářené objekty nejsou odpovědné za vytváření svých závislostí, ale závislosti jsou jim nastaveny z vnějšku. Právě toto plnění závislostí z vnějšku bylo primární a klíčovou úlohou Springu. Dnes je již působnost tohoto frameworku výrazně širší a Spring pomáhá vývojářům v mnoha dalších oblastech. Realizace IOC probíhá skrz konfigurační xml soubor, kde každý spravovaný objekt (v terminologii Springu tzv. beana ), má nastaveno několik klíčových vlastností - typ (odpovídá konkrétní třídě v jazyce Java), scope (rozsah platnosti - platný po celou dobu aplikace, pro http session, jen v rámci jednoho requestu atd.) a další vlastnosti (definované buď konkrétní hodnotou nebo závislostí na jinou beanu).

23 6 IMPLEMENTACE 23 <bean id="sessionfactory" class="org...localsessionfactorybean"> <property name="datasource" ref="datasource"/> <property name="mappinglocations"> <list> <value>classpath*:cz/gola/laura/**/bo/**/*.hbm.xml</value> </list> </property> <property name="hibernateproperties" ref="hibernateproperties" /> </bean> <bean name="entityservice" class="cz...entityservicehibernate"> <property name="sessionfactory" ref="sessionfactory" /> </bean> Podle této konfigurace Spring vytvoří ve svém ApplicationContext objekty s názvy sessionfactory a entityservice jako instance tříd udaných atributem class. Protože není atributem definován scope, implicitně jsou objekty platné po celou dobu běhu aplikace. Ukázkou přiřazení závislosti (IOC) je řádek s nastavením sessionfactory, kdy se do objektu entityservice nastaví stejnojmenná beana definovaná o pár řádků výše. Konfiguraci Springu je mimo XML soubor možné provádět ještě programově nebo pomocí java anotací přímo v kódu. Od verze 2.5 jsou ve Springu dostupné následující moduly: Spring-core - tento modul je základem Springu. Bez něj není možno Spring používat, obsahuje základní prvky Springu. Spring-context - tento modul umoňuje používání XML konfiguračních souborů pro vytvoření tzv. ApplicationContext. Ten slouží pro uchování Springem spravovaných objektů a následně pro přístup k nim. ApplicationContext poskytuje také abstrakci nad skutečným místem uchování objektů. Proto v desktopové aplikaci můžeme přistupovat k objektům stejně, jako ve webové apliaci. Spring-aop - modul pro podporu aspektově orientovaného programování. Spring často využívá techniky AOP pro podporu dalších modulů (transakcí, logování). AOP je programovací technika, kdy jsou často opakované části kódu přidávány do kódu deklarativním způsobem. Vhodné například pro logování (například je možno definovat, že před každou metodou, jejíž název začíná slovy delete se provede zalogování této činnosti).

24 6 IMPLEMENTACE 24 Spring-orm - modul pro podporu ORM frameworků. Obsahuje zejména podporu pro Hibernate, kdy významným způsobem zjednodušuje jeho konfiguraci i používání. Nabízí vhodné šablony používání Hibernate pro desktopové i webové využití (HibernateTemplate, OpenSessionInViewFilter). Spring-jdbc - tento modul přidává podporu pro přímé používání databáze přes JDBC ovladač. Doplňuje prosté volání SQL dotazů o tzv. mappery, které umějí převádět result sety z databáze na seznamy objektů. Spring-tx - jeden z nejmocnějších a nejužitečnějších modulů Springu pro produkční nasazení aplikací. Poskytuje velmi jednoduše použitelné řešení pro řízení transakcí v aplikaci. To vše je možno nakonfigurovat deklarativním způsobem na několika řádcích. Spring-web - obecná podpora integrace Springu a webových aplikací podle standardů J2EE. Umožňuje přístup k ApplicationContext ze kontextů webových frameworků (podpora pro JSP, JSF). Ukázka deklarativní konfigurace transakcí: <tx:advice id="txadvice" transaction-manager="mytxmanager"> <tx:attributes> <tx:method name="create*" propagation="required"/> <tx:method name="save*" propagation="required"/> <tx:method name="update*" propagation="required"/> <tx:method name="delete*" propagation="required"/> <tx:method name="insert*" propagation="required"/> <tx:method name="move*" propagation="required"/> <tx:method name="recalculate*" propagation="required"/> <tx:method name="load*" propagation="required" read-only="true"/> <tx:method name="list*" propagation="required" read-only="true"/> <tx:method name="check*" propagation="required" read-only="true"/> </tx:attributes> </tx:advice> Zavedení Springu se liší pro desktopovou a webovou aplikaci. Zavedení v desktopové aplikaci: ApplicationContex ctx = new ClassPathXmlApplicationContext("cesta"); Zavedení ve webové aplikaci se realizuje v souvislosti se specifikací J2EE speciálním Servletem nebo Listenerem, v obou případech je nutno konfiguraci provést

25 6 IMPLEMENTACE 25 do konfiguračního souboru webové aplikace - web.xml (příklad zavedení přes Listener). <context-param> <param-name>contextconfiglocation</param-name> <param-value> classpath*:cz/gola/**/spring-*.xml </param-value> </context-param> <listener> <listener-class>org...contextloaderlistener</listener-class> </listener> V obou případech je pak možno přistupovat ke všem objektům spravovaným Springem takto (příklad pro vytažení objektu entityservice). EntityService service = (EntityService) ctx.getbean("entityservice"); Správné používání Springu v rámci projektu významně přispívá k udržení čistoty návrhu a vhodné architektury. Spring přímo vede k používání objektových principů, které by jinak líný programátor mohl opomenout - příkladem může být programování s využitím interface a jeho implementací. Stejně jako v případě Hibernate i tento framework je třeba v případě J2ME nahradit vlastním řešením Substance Tato knihovna je určena výhradně pro J2SE. Je licencována pod LGPL. Přináší moderní Look and Feel určený pro desktopové aplikace. Upravuje pouze vzhled aplikace, nepřidává žádné funkce. Ovšem je zřejmé, že dnešní náročný uživatel od aplikace očekává i příjemný a moderní vzhled. A s tímto dnes Java na desktopu ve svém standardním provedení mírně pokulhává. Přitom nastavení moderního vzhledu je s touto knihovnou opravdu jednoduché, většinu potřeb je možno zvládnout na jednom jediném řádku: UIManager.setLookAndFeel(new SubstanceBusinessBlackSteelLookAndFeel()); Pro další používání v aplikaci je potřeba ještě dodržet několik postupu, které jinak standardní řešení Javy nevyžaduje.

26 6 IMPLEMENTACE 26 V první řadě je třeba provádět změny, které způsobí překreslení uživatelského rozhraní jen ve vláknech řazených v AWT frontě uživatelského rozhraní. Druhým vyžadovaným postupem je rozšiřování Substance rendererů při implementaci vlastního způsobu vykreslování komponent. Příkladem může být rozšíření vykreslování buněk tabulky. public class LauraTableCellRenderer extends SubstanceTableCellRenderer public Component gettablecellrenderercomponent(..) { Component c = super.gettablecellrenderercomponent(..);... vlastní rozšíření... } Ukázka rozdílu vzhledu aplikace s touto knihovnou a součástí přílohy B (Obr. 1: Standardní look and feel, Obr. 2: Substance look and feel) JSF a RichFaces JSF je moderní webový framework. Lépe řečeno jde o specifikaci webového standardu, který je pak různými subjekty implementován. Referenční implementace je přímo od Sun Microsystems. V této práci je použita implementace MyFaces, která je zaštítěna organizací Apache Software Foundation. Licencováno pod Apache Licence 2.0. JSF je postaveno na principu komponent. Do xhtml stránky jsou vkládány značky představující JSF komponenty spolu s okolním HTML kódem. <div class="detailcontainerhalf"> <rich:panel id="detailpanel" style="height:100%;">... <br/> <div class="detailpanel"> <pre> #{walletlist.detailitem!= null? walletlist.detailitem.content : } </pre> </div> </rich:panel> </div>...

27 6 IMPLEMENTACE 27 Při běhu aplikace se pak JSF komponenty renderují do HTML kódu. V předchozím případě se do HTML kódu převede komponenta rich:panel, která v sobě bude obsahovat detail vybrané položky z modulu Peněženka. Původní JSF byly stránkově orientované, ale s příchodem AJAXu byly JSF rozšířeny dalšími frameworky právě o podporu AJAXu. Jedním z takových rozšiřujících frameworků jsou právě RichFaces od společnosti JBoss. JBoss je poskytuje pod licencí LGPL. Má-li se webový klient uživatelským ovládání blížit desktopové verzi, je třeba využít některého z AJAXových frameworků, bez kterého by se na webové stránce těžko dosahovalo podobné interaktivity prostředí. RichFaces se ukázaly jako vhodná volba. Stěžejní komponentou,kterou RichFaces původní sadu komponent obohacují, je AjaxSupport. <h:selectonemenu id="menusorting" value="#{rolelist.activesorting}">... <a4j:support event="onchange" action="#{rolelist.reloaditems}" rerender="itemstable"/> </h:selectonemenu> Tato komponenta umožňuje : asynchronní obsluhu událostí (atribut event= onchange ), zpracování na serveru (atribut action= rolelist.reloaditems ), promítnutí výsledku do části stránky (atribut rerender= itemstable ). 6.2 Laura - Architektura Architektura navrženého projektu je třívrstvá. Zastoupeny jsou: datová vrstva, logická vrstva, prezentační vrstva. Jednotlivé vrstvy je možno na různých platformách nahrazovat, některé mohou zůstat společné. Mezi těmito všemi vrstvami jsou vyměňovány společné objekty - tzv. business objekty. Je možno je považovat za krev aplikace - proudí mezi vrstvami a přitom přenáší informace.

28 6 IMPLEMENTACE 28 Celý osobní organizér je podle řešených funkcí rozdělen do modulů. Architektura navrženého projektu je třívrstvá. Zastoupeny jsou: Modul Core - jádro aplikace a společné třídy Modul Role - modul správy rolí Modul Calendar - modul kalendáře Modul Task - modul úkolů Modul Wallet - modul peněženky Modul Note - modul poznámek Modul Desktop - modul obsahující desktopového klienta Modul Web - modul obsahující webovou aplikaci Modul Mobile - modul obsahující mobilního klienta Modul Resources - společné obrázky, ikony, překlady textů V projektu je udržována organizační struktura, která je připravena umožnit snadné další rozšiřování - přidáváním dalších modulů. Organizace java balíčků odpovídá tomuto předpisu: cz.gola.laura.<název modulu>.<funkční část>.<třída> Moduly odpovídající přímo jednotlivým funkcím osobního organizéru jsou navíc zařazeny do sjednocujícího balíčku module. cz.gola.laura.module.<název modulu>.<funkční část>.<třída> Je tomu tak pro případ přidávání dalších rozšíření s možností zavádět moduly uživatelem. Pro tyto účely by bylo vhodné rozlišovat moduly systému a moduly funkcí. Části jednotlivých modulů jsou pak spojovány v rámci maven projektů do knihoven či aplikací pro konkrétní platformy. Laura knihovny: LauraCommons - knihovna společného základu LauraBase - knihovna jednotné databáze Laura aplikace: LauraDesktop - aplikace pro desktop LauraWeb - aplikace pro web LauraMobile - aplikace pro mobilní telefon 6.3 LauraCommons - Společný základ LauraCommons je knihovna sloužící jako společný základ pro všechny Laura aplikace. Jsou v ní zahrnuty společné:

29 6 IMPLEMENTACE 29 business objekty, interfacy služeb, překlady textů, obrázky a ikony. Výhodou takového společného základu je správa, rozšiřování i případné opravy základu Laura aplikací na jednom místě. Úprava se promítne do všech aplikací. 6.4 LauraBase - Virtuální databáze LauraBase je knihovna jednotného používání databáze. Navazuje na datovou vrstvu Hibernate logickou vrstvou aplikace. Obsahuje: mapování objektů pro Hibernate - HBM soubory implementaci logické vrstvy v HQL - služba EntityService LauraBase je díky abstrakci Hibernate nezávislá na konkrétní použité databázi. Konkrétní databáze se nastavuje až v cílové Laura aplikaci. Podporovány jsou všechny, ke kterým existuje pro Hibernate třída dialektu. Všechny známější databáze jsou podporovány (Oracle, MS SQL, MySQL, PostgreSQL, Apache Derby a další). Výhodou takového oddělení je opět používání stejného celku v jednotlivých Laura aplikacích - LauraDesktop i LauraWeb používají tento stejný základ. 6.5 Laura - Aplikace Sestavené aplikace odpovídají jednotlivým edicím Javy (J2SE, J2EE a J2ME) a tedy cílovým platformám desktop, web a mobilní zařízení. Snahou bylo jednotlivé aplikace co možná nejvíce přiblížit a to jak množinou dostupných funkcí (zpřístupněny všechny moduly, funkce řazení a filtrování) tak i způsobem ovládání (zejména mezi J2SE a J2EE). Edice J2ME je od předchozích ovšem tolik vzdálená, že to nebylo vždy technicky možné. Zajímavou vlastností osobního organizéru Laura je omezené využívání funkce mazání. V aplikacích je upřednostňována funkce pro archivaci. Archivováním se záznam vyřadí z aktivních záznamů a není tedy standardně dostupný. Nicméně LauraDesktop a LauraWeb umožňují zapnout režim se zobrazováním archivovaných záznamů. v aplikaci LauraMobile je archivace z důvodu omezených prostředků pouze jednosměrná. Záznam se po archivaci stane na mobilním zařízení nedostupný, ovšem při synchronizaci s LauraWeb je přenesen a může být znovu obnoven. Z mobilního zařízení je při přenosu odstraněn.

30 6 IMPLEMENTACE 30 Dále popisované funkce jsou v plném rozsahu implementovány v aplikacích LauraDesktop a LauraWeb. Rozdíly v implementaci aplikace LauraMobile jsou popsány dále v kapitole o LauraMobile Role Modul správy rolí je klíčový. Je novinkou, kterou se odlišuje od ostatních softwarových organizérů. Slouží jako rozcestník pro další práci s osobním organizérem. Uživatel by si zde měl pečlivě poskládat životní role, v kterých působí a na kterých mu záleží. Předpokládá se, že budou 2-4, příklady mohou být: Člen rodiny, Manažer, Sportovec Student, Podnikatel, Hokejista Člen rodiny, Ředitel závodu, Domácí kutil Jednotlivé role je umožněno seřadit podle uživatelových preferencí - uživatel si uspořádáním ujasní vlastní priority Úkoly Klíčovou úlohou osobního řízení je zaznamenávání, sledování a plnění úkolů. Tyto úkoly jsou vždy plněny v rámci nějaké uživatelovy životní role. Proto je uživatel nucen při zadávání úkolu určit také pod kterou roli úkol spadá. Volitelnou možností je uvedení termínu pro dokončení. Modul umožňuje oddělenou organizaci i prezentaci poznamenaných úkolů na základě filtrování podle rolí. Úkoly je také možno řadit podle role, priority, názvu, termínu nebo času dokončení Kalendář Funkcí spadající do časového řízení je kalendář. Za nejčastěji používaný a z hlediska plánování nejvhodnější je v současné generaci řízení času považován týdenní kalendář 6. Proto je zde implementován právě tento typ plánovacího kalendáře. Modul umožňuje filtrování a řazení obdobným způsobem jako předchozí modul Úkoly. Navíc obsahuje výběr data pro určení týdne pro zobrazení. 6 Této problematice se věnuje Stephen R. Covey ve svojí slavné knize 7 návyků skutečně efektivních lidí. (3)

31 6 IMPLEMENTACE Peněženka Tento modul slouží k uchování citlivých údajů. Tyto údaje jsou organizovány do přístupů. Každý přístup má svůj název a obsahovou část, do které je možno vložit údaje jako uživatelské jméno, heslo, pin Poznámky Tento modul slouží k rychlému poznamenání myšlenek, postřehů a jiných informací. Poznámky jsou standardně řazeny podle data a času vložení. Uživatel má možnost zadat název vkládané poznámky, ale není to vyžadováno. Pokud není název vložen, je místo něj zobrazována část obsahu. 6.6 LauraDesktop - J2SE LauraDesktop je aplikace Laura klienta pro desktop. LauraDesktop běží všude tam, kde je nainstalováno JRE, které je standardní součástí J2SE. Tuto aplikaci je tedy možno spustit na většině dnešních operačních systémech (Window, Linux, Mac, Solaris, FreeBSD). Pro uchování informací je využita knihovna LauraBase napojená k databázi Apache Derby. Jedná se o jednoduchou embedded databázi, která nevyžaduje zvláštní instalaci. Nainstaluje se automaticky při spuštění aplikace do pracovního adresáře aplikace. Pracovní adresář aplikace vznikne automaticky v domovském adresáři uživatele, pod kterým je aplikace spuštěna. Pokud již databáze existuje, aplikace nevytváří novou, ale pouze se k existující připojí. Vývoj této aplikace byl relativně nejméně problémový. Bylo v největší možné míře využito principů objektově orientovaného programování, jednotlivé záložky modulů tedy mají svého abstraktního předka. Stejně tak editační dialogy. Z implementačního hlediska je ještě zásadní využití možností jazyka Java od verze tzv. generických tříd. Ty umožnily ještě ve větší míře aplikovat znovupoužitelnost kódu, jsou zachovány všechny obecné principy objektového programování. public abstract class LauraPanel<T extends Entity> extends JPanel { } Vzhled uživatelského prostředí je oproti standardní Javě významně vylepšen využitím knihovny Substance. Funkce aplikace jsou rozděleny do záložek podle pří-

32 6 IMPLEMENTACE 32 slušných modulů, ovládání je standardní jak je na dnešních desktopových aplikacích očekáváno. Aplikace je plně lokalizovaná, všechny texty jsou dostupné v češtině a angličtině. Podle jazykového nastavení operačního systému jsou pak automaticky zobrazovány české případně anglické popisky. Je k tomu využita podpora J2SE - tzv. ResourceBundle. Pro přístup ke konkrétnímu popisku byla vytvořena pomocná třída LocHelper se statickou metodou getstring(key). public class LocHelper { private static final ResourceBundle bundle = ResourceBundle.getBundle( DesktopSettings.RESOURCE_MESSAGES, Locale.getDefault() ); public static String getstring(string key) { return bundle.getstring(key); } } Použití v aplikaci je následující: public String getcolumnname(int column) { switch (column) { case 0: return LocHelper.getString("time"); case 1: return LocHelper.getString("monday"); } Pokud v aplikaci existuje odpovídající překlad pro klíč time a monday vrací jej metoda getstring() - pro češtinu je zobrazeno Čas a Pondělí, v anglickém prostředí se zobrazí Time a Monday. Aplikace LauraDesktop je distribuována jako adresář se spustitelným jar souborem (LauraDesktop.jar) a potřebnými knihovnami. Sestavená distribuce je elektronickou přílohou této práce - příloha A. Screenshoty z aplikace jsou pak součástí přílohy B.

33 6 IMPLEMENTACE LauraWeb - J2EE LaureWeb je webový server, který zpřístupňuje Lauru přes webové rozhraní. Pro přístup tedy stačí pouhý webový prohlížeč. Podporovány jsou oba nejrozšířenější webové prohlížeče - Internet Explorer a Mozilla Firefox. Stejně jako v případě LauraDesktop je pro uchovávání informací využita LauraBase s připojením na embedded Apache Derby databázi. Tato aplikace je postavena nad standardy J2EE, proto potřebuje ke svému běhu aplikační server, který bude tyto standardy implementovat. Jednoduchým volně dostupným vyhovujícím aplikačním serverem je Apache Tomcat. Implementace této aplikace již byla o něco problémovější, ladění webových částí je podstatně náročnější. V xhtml šablonách, které jsou využívány JSF frameworkem chybí typová kontrola. Také není možno tyto šablony dědit a upravovat jen rozdílné části. Vznikají tak tedy opakované části, které jsou podstatně hůře spravovatelné. Za xhtml šablonami jsou na pozadí tzv. ManagedBeany, což jsou java objekty, které se starají o plnění a řízení zobrazované stránky. Použitý JSF framework má širokou základnu uživatelů, ale také čelí poměrně velké kritice. Ne všichni jeho uživatelé jsou přesvědčeni o jeho kvalitě. Za dalšími problémy, které se při vývoji vyskytly, stála nadstavba v podobě RichFaces. Ne vždy se chovají korektně, existuje spousta nepopsaných slepých uliček v používání. Příkladem za všechny je omezení zákazu vnořování formulářů do sebe, který ve Firefoxu nepůsobí žádné problémy zatímco v Internet Exploreru způsobí tichou nefunkčnost všech AJAXových akcí. Přitom není vůbec patrné, proč se tak děje. Podobné problémy někdy působí míchání AJAXových spolu s původními JSF komponentami. Zvlášť pokud některé optimalizace původního JSF nepočítají s tím, že se komponenta na stejné stránce může znovu použít. Přesto bylo vyvinuto nemalé úsilí při snaze zachovat v co největší míře principy objektového programování. Konkrétní ManagedBeany žijící na pozadí webových stránek jsou již správně objektově děděny z abstraktních předků podobně jako je tomu v případě aplikace LauraDesktop. Klíčovou funkcí aplikace LauraWeb je vystavení služby pro synchronizaci. Ta je zpřístupněna na definované adrese na stejném webovém serveru, jako běží webová prezentace. Vystavení služby pro vzdálené volání je díky Spring Frameworku velice jednoduché. Nejprve je třeba zaregistrovat Servlet, který bude vyřizovat případné požadavky odeslané na vystavenou službu.

34 6 IMPLEMENTACE 34 <servlet> <servlet-name>ws</servlet-name> <servlet-class>org...dispatcherservlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>ws</servlet-name> <url-pattern>/ws/*</url-pattern> </servlet-mapping> Dále je třeba ve Spring konfiguračním souboru definovat proxy na původní službu. <bean name="entityserviceproxy" class="org...proxyfactorybean"> <property name="target" ref="entityservice" /> </bean> Posledním krokem je konfigurace vlastního vystavení služby. <bean name="/lauraservice" class="org...httpinvokerserviceexporter" > <property name="service" ref="entityserviceproxy" /> <property name="serviceinterface" value="cz...entityservice" /> </bean> Výsledkem je vystavení služby na adrese /LauraWeb/ws/LauraService. Pro potřebu synchronizace s mobilním zařízením bylo třeba vystavit ještě jednu službu, která bude fungovat vlastním primitivním způsobem. J2ME nemá žádnou podporu pro vzdálené volání metod. Proto bylo nutné v aplikaci LauraWeb vystavit TCP/IP server socket, který po připojení klienta čeká na jednoduché řetězcové příkazy. na tyto příkazy pak reaguje odesíláním informací, případně příjmem informací k uložení. Implementace je ve třídě MobileSynchronizationThread. Tato služba se automaticky nastartuje při startu webové aplikace a naslouchá na portu Poslouchání na portu pro příjem nových klientů: final ServerSocket serversocket = new ServerSocket(7666); while (true) { Socket client = serversocket.accept(); final DataInputStream datainputstream

35 6 IMPLEMENTACE 35 } = new DataInputStream(client.getInputStream()); final DataOutputStream dataoutputstream = new DataOutputStream(client.getOutputStream()); processcommand(datainputstream, dataoutputstream); Ukázka primitivního odeslání seznamu všech rolí v aplikaci: String command = datainputstream.readutf(); if ("LIST-ROLES".equals(command)) { List result = entityservice.listentityactiveoftype( Role.TYPE_ROLE, null, null); dataoutputstream.writeint(result.size()); for (Entity entity : result) { byte[] data = entity.savebytes(); dataoutputstream.writeint(data.length); dataoutputstream.write(data); } } Vlastní proces synchronizace společně s jejím účelem bude podrobněji rozebrána v kapitole o synchronizaci. Aplikace LauraWeb je distribuována jako WAR soubor, který je třeba nasadit na webový server Apache Tomcat. Sestavená distribuce je elektronickou přílohou této práce - příloha A. Screenshoty z aplikace jsou pak součástí přílohy B. 6.8 LauraMobile - J2ME Poslední aplikací je mobilní klient. Tento klient vychází z edice J2ME. Java 2 Micro Edition je výrazně omezenou edicí Javy. Tato cílová platforma se ještě podle dostupných prostředků dělí na podporované profily konfigurace zařízení (CDC a CLDC) a profily mobilního zařízení (MIDP). Většina dnešních telefonů podporuje CLDC 1.1 a MIDP 2.0. Proto bude tento klient vyvíjen pro tyty profily. Při programování pro J2ME je třeba rychle zapomenout na všechny vymoženosti známé z J2SE. J2ME nezná jazykové prvky jako generické šablony nebo výčtové typy. Velmi výrazným způsobem je také okleštěna množina podporovaného API.

36 6 IMPLEMENTACE 36 Celé původní API pro práci s kolekcemi je minimalizováno na jedinou, zastaralou a mezi vlákny nesynchronizovanou kolekci - Vector. Neexistuje zde podporovaná databáze, je třeba se omezit na technologii RMS. RMS umožňuje pouze primitivní ukládání polí bytů pod aplikací definované identifikátory, tedy těžko zde lze využívat nějaký dotazovací jazyk. Uživatelské prostředí se zde buduje specifickým způsobem. Vývojář nemůže určit, jak bude výsledná aplikace vypadat. Může pouze řict, že se v aplikaci má zobrazit nějaká komponenta umožňující výběr z několika možností. Jak tuto komponentu zobrazí konkrétní telefon je už mimo jeho vliv. Není zde podpora pro tzv. reflexi. Jedná se o nástroj jazyka, kterým je možno dynamicky přistupovat k vlastnostem a metodám tříd na základě jména. Tato zdánlivě nevyužívaná funkcionalita je rychle postrádána v momentě snahy o realizaci AOP. AOP zde není možné. S předchozím bodem souvisí i chybějící podpora serializace objektů. Serializace je metoda uložení objektů do pole bytů a obráceně zpětné získání objektů z polí bytů. Využívá se např. pro různé cache, kdy se objekty odkládají z paměti na disk. Také je klíčovým mechanizmem pro mnohé metody vzdáleného volání metod. Z výše uvedených překážek J2ME vyplynuly mnohé nutné ústupky oproti jednotnosti implementace jednotlivých vrstev rámci celého projektu Laura. LauraMobile je tak víceméně samostatnou aplikací bez návaznosti na knihovny LauraCommons a LauraBase. Interface pro integraci s ostatními aplikacemi je tvořen pouze pomocí obyčejné TCP/IP protokolové komunikace sloužící k synchronizaci. Vyšší integraci ve smyslu používání stejných knihoven brání technická omezení této platformy. Pro ukládání informací primitivním způsobem do RMS musela být dopsána podpora vlastní serializace objektů do pole bytů. Příklad uložení a obnovení objektu Event (události z kalendáře). protected void store(dataoutputstream os) { try { super.store(os); os.writeint(eventroleid.intvalue()); os.writelong(getdatebegin().gettime()); os.writeutf(location); os.writeutf(content); } catch (IOException ex) { ex.printstacktrace();

37 6 IMPLEMENTACE 37 } } protected void unstore(datainputstream is) { try { super.unstore(is); eventroleid = new Integer(is.readInt()); setdatebegin(new Date(is.readLong())); location = is.readutf(); content = is.readutf(); } catch (IOException ex) { ex.printstacktrace(); } } Aplikace obsahuje všechny moduly - Role, Úkoly, Kalendář, Peněženku i Poznámky. Z důvodu primitivního ukládání informací ovšem není umožněno filtrování, řazení a zobrazování archivních položek. Modul kalendáře je omezen na zobrazování pouze denního kalendáře. Týdenní interval není možno na malém display přehledným způsobem prezentovat. Implementace této aplikace se ukázala jako časově nejnáročnější. Programování pro tuto platformu je často až nepříjemné. Operace, které by ve standardní Javě znamenaly dva řádky kódu, se zde vydají na celou stránku. LauraMobile je určen pro omezené využití v případě potřeby přístupu k informacím v terénu. Pro tento účel jsou nabízené funkce dostačující. Aplikace LauraMobile je distribuována jako JAR soubor, který je třeba nainstalovat na cílovém mobilním telefonu (s podporou CLCD 1.1 a MIDP 2.0). Sestavená distribuce je elektronickou přílohou této práce - příloha A. Screenshoty z aplikace jsou pak součástí přílohy B. 6.9 Synchronizace Aby bylo možné využívat současně všechny klienty podle aktuální potřeby, je třeba zajistit, aby uživatel vždy pracoval pokud možno se stejnými daty. Není myslitelné, aby nové úkoly zanášel 3x do tří různých databází. Také je třeba počítat s tím, že ne vždy je dostupné internetové spojení, proto bylo sdílení jedné společné databáze jen částečným řešením.

38 6 IMPLEMENTACE 38 S ohledem na jmenované skutečnosti bylo navrženo řešení založené na synchronizaci mezi lokálními databázemi. Pokud chce uživatel synchronizace využívat, musí si někde nainstalovat aplikaci LauraWeb, která obsahuje vystavené služby pro synchronizaci s LauraDesktop i s LauraMobile. Uživatel pak může před každým použitím aplikace spustit synchronizaci s primární databází (databáze LauraWeb). Výhodu je, že dokud uživatel synchronizaci nepožaduje, může využívat pouze lokálních databází klientů - ať už si vybere LauraDesktop nebo LauraMobile. V momentě, kdy pocítí potřebu větší přístupnosti, nainstaluje si LauraWeb a provede synchronizaci stejným způsobem, jak ji potom bude provádět pravidelně. Synchronizace funguje na následujícím principu. 1. Pro každý modul je zjištěno datum poslední úpravy lokální a vzdálené databáze. 2. Všechny informace, které se změnily (byly vytvořeny, upraveny nebo archivovány) mezi těmito časy je třeba synchronizovat. 3. Vlastní realizace synchronizace je velmi jednoduchá, za aktuální záznam je považován ten s novějším datem a časem úpravy. V případě LauraDesktop umožňuje Spring velmi jednoduchou konfiguraci napojení na vzdálenou službu. <bean name="remoteservice" class="httpinvokerproxyfactorybean"> <property name="serviceinterface" value="cz...entityservice" /> <property name="serviceurl" value=" /> </bean> V kódu již je tato vzdálená služba používána jako by se jednalo o lokální volání metod. EntityService remoteservice = (EntityService) ContextHelper.getContext().getBean("remoteService"); vysledekvzdalenehovlani = remoteservice.nazevvolanemetody();

39 7 DISKUSE 39 7 Diskuse Po úspěšné implementaci multiplatformního osobního organizéru s balíkem základních funkcí se logicky nabízí otázka jeho další budoucnosti. na trhu je v současné době neuvěřitelné množství různých osobních organizérů. Některé jsou distribuovány přímo s operačními systémy, jiné spolu s kancelářskými balíky, což je v obou případech velká výhoda. Jestli by sebelepší výsledek snažení o vyřešení dvou zjištěných nedostatků dokázal prosadit tento software i na tak hustém trhu je těžké odhadovat. Výsledná realizace softwarového osobního organizéru sice prověřila současné možnosti jazyka Java jako multiplatformního řešení, ale asi by nebylo spravedlivé ji srovnávat co se týče funkcí se softwarovými osobními organizéry vyvíjenými již mnoho let, případně dokonce komerčním způsobem. Zde by tato implementace v některých případech těžko obstávala, minimálně co se týče bezpečnosti uložených dat, šifrování komunikace, funkcí vyhledávání, případně integrací s dalšími softwary jako je Microsoft Outlook, Mozilla Thunderbird a další. Další překážkou masivního rozšíření, kterou by bylo nutné vyřešit, je náročnost nasazení aplikace LauraWeb. Instalaci vlastního aplikačního serveru běžného uživatele odradí. Zde by bylo zajímavé nabídnout LauraWeb jako veřejnou službu. Nicméně, jedna možnost prosazení se přece jen nabízí - vydání pod svobodnou licencí. Vhodnou licencí by mohla být licence GPL, která by umožňovala dalším uživatelům volné používání i přispívání do zdrojových kódů. Přitom by chránila případný zájem autora na komerčním využití.

40 8 ZÁVĚR 40 8 Závěr V souladu se zadáním této práce byl nejprve navržen a poté i úspěšně implementován multiplatformní osobní organizér v jazyce Java. Analýzou současných softwarových osobních organizérů byly nejprve zjištěny dva hlavní aktuální nedostatky - nedostatečná dostupnost aplikace a chybějící možnost rozdělení spravovaných informací do různých oblastí. Na základě prvního z těchto poznatků bylo navrhnuto řešení v podobě jazyka Java jako virtuální superplatformy. Jako reakce na druhý z poznatků byla navržena nová vhodná funkce osobního organizéru - správa uživatelských rolí. Nově jsou informace v osobním organizéru udržovány pod definovanými rolemi, na základě kterých je volitelně umožněna jejich oddělená správa i prezentace (funkce filtrování). Dále byly představeny jednotlivé edice jazyka Java (J2SE, J2EE a J2ME), jejich zaměření na cílová zařízení, vzájemné souvislosti a rozdíly. Java byla vyhodnocena jako rozsáhlá platforma vhodná pro vývoj opravdových multiplatformních aplikací. Tím byla zakončena fáze návrhu. Při vlastní implementaci došlo ke skutečné konfrontaci teorie s reálnou praxí. Vývoj pro J2SE probíhal relativně hladce, výsledek je nejlépe ovladatelný, nejlépe vypadá, ale také je nejméně dostupný - uživatel si jej může pustit pouze na osobním počítači, kde má tuto aplikaci nainstalovanou. V případě vývoje pro J2EE se ukázaly některé mouchy webové platformy - zejména nedostatek typové kontroly, nemožnost objektové práce s XHTML šablonamy a často těžko laditelné chování aplikace. Celkově je ovšem možno J2EE díky dnešním AJAXovým možnostem označit za vhodný a příjemný kompromis mezi komfortem ovládání, náročností vývoje a dostupností výsledné aplikace (stačí pouze webový prohlížeč). Po všech strastech spojených s vývojem pro J2ME se tato edice stala velkým zklamáním. Vývojář si často připadá oproti zbytku programátorského světa opravdu pozadu. Téměř vše je zde nutno psát úplně od začátku, navíc bez moderních prostředků jazyka. To vede k náročnému a především zdlouhavému vývoji. Výsledkem jsou navíc velmi omezené možnosti ovládání. Tak velká je cena nejpřístupnější aplikaci. Kdybych byl znovu postaven před podobný úkol, Javu bych neváhal doporučit jako multiplatformní řešení aplikace pro osobní počítač či web (J2SE a J2EE). Nedoporučil bych její využití pro mobilní telefony. V tomto případě bych se podíval po Symbianu či Google Android.

41 9 LITERATURA 41 9 Literatura BAUER, C. KING, G. Hibernate in Action. USA: Manning Publications Co s. ISBN X. BREIDENBACH, R. WALLS, C. Spring in Action, Second Edition. USA: Manning Publications Co s. ISBN COVEY, Stephen R. 7 návyků skutečně efektivních lidí : Zásady osobního rozvoje, které změní váš život Aleš Lisa. 1. vyd. Praha: Management Press, s.r.o., s. ISBN HEROUT, P. Java - bohatství knihoven. České Budějovice: KOOP, s. ISBN KEOGH, J. E. J2ME: The Complete Reference. : McGraw-Hill/OsborneMedia s. ISBN SUN MICROSYSTEMS, I. The Java EE 5 Tutorial. [online] [cit ] Dostupný z WWW: < http : //java.sun.com/javaee/5/docs/tutorial/doc/>. TEIXEIRA, S. Java 2 ME Developer s Guide. : Wordware Publishing s. ISBN Free PIMs [online] [cit ] Dostupný z WWW: < http : // reepims.com/navigatef reepims.html/>. List of personal information managers [online] [cit ] Dostupný z WWW: < http : //en.wikipedia.org/wiki/list of personal inf ormation managers/. Open Directory - Home: Personal Organization [online] [cit ] Dostupný z WWW: < http : // ersonal Organization/>. Platforma [online] [cit ] Dostupný z WWW: < http : //cs.wikipedia.org/wiki/p latf orma/>.

42 Přílohy

43 A ELEKTRONICKÁ PŘÍLOHA 43 A Elektronická příloha Přílohou této práce je CD s elektronickým obsahem. /LauraDesktop.bat - spouštěcí skript aplikace LauraDesktop pro Windows. /LauraDesktop.sh - spouštěcí skript aplikace LauraDesktop pro Linux. /LauraDesktop.jar - vlastní aplikace LauraDesktop. /LauraDeksktop/lib - knihovny, které potřebuje LauraDesktop ke svému běhu. /LauraWeb/LauraWeb.war - vlastní aplikace LauraWeb (je třeba ji nasadit na Apache Tomcat). /LauraWeb/Apache Tomcat - instalační soubor Apache Tomcat pro Windows (v Linux je lépe jej nainstalovat přes balíčkovací systém). /LauraMobile/LauraMobile.jar - instalační soubor LauraMobile - je třeba přenést na mobilní telefon a nainstalovat. /bp.pdf - elektronická verze bakalářské práce.

44 B NÁHLEDY APLIKACE 44 B Náhledy aplikace Obr. 1: Standardní look and feel Obr. 2: Substance look and feel

45 B NÁHLEDY APLIKACE 45 Obr. 3: LauraDesktop - Zavádění Obr. 4: LauraDesktop - Správa úkolů

46 B NÁHLEDY APLIKACE 46 Obr. 5: LauraDesktop - Poznámky Obr. 6: LauraDesktop - Synchronizace

47 B NÁHLEDY APLIKACE 47 Obr. 7: LauraWeb - Úkoly Obr. 8: LauraWeb - Kalendář

48 B NÁHLEDY APLIKACE 48 Obr. 9: LauraWeb - Peněženka Obr. 10: LauraMobile - Aplikace v emulátoru

Nástroje a frameworky pro automatizovaný vývoj. Jaroslav Žáček jaroslav.zacek@osu.cz http://www1.osu.cz/~zacek/

Nástroje a frameworky pro automatizovaný vývoj. Jaroslav Žáček jaroslav.zacek@osu.cz http://www1.osu.cz/~zacek/ Nástroje a frameworky pro automatizovaný vývoj Jaroslav Žáček jaroslav.zacek@osu.cz http://www1.osu.cz/~zacek/ Proces vývoje webové aplikace Předepsaná adresářová struktura. Kompilace zdrojových kódů.

Více

KIV/PIA 2013 Jan Tichava

KIV/PIA 2013 Jan Tichava KIV/PIA 2013 Jan Tichava Java EE JSF, PrimeFaces Spring JPA, EclipseLink Java Platform, Enterprise Edition Persistence Zobrazovací vrstva Interakce aplikací Deployment Java Persistence API Enterprise

Více

Technology Entry form Entry up-to-date? Internal links Faulty internal Possible internal links

Technology Entry form Entry up-to-date? Internal links Faulty internal Possible internal links Technology Entry form Entry up-to-date? Internal links Faulty internal Possible internal links links Apache Struts Article with examples JSTL a EL (into JSP) MVC, webové aplikace, JSP Bezpečnost ve webových

Více

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV) Příprava studijního programu Informatika je podporována projektem financovaným z Evropského sociálního fondu a rozpočtu hlavního města Prahy. Praha & EU: Investujeme do vaší budoucnosti Enterprise Java

Více

Spring framework 2.0. Roman Pichlík http://sweb.cz/pichlik/ CZJUG http://java.cz/jug

Spring framework 2.0. Roman Pichlík http://sweb.cz/pichlik/ CZJUG http://java.cz/jug Spring framework 2.0 Spring framework 2.0 Roman Pichlík http://sweb.cz/pichlik/ Nejdůležitejší slide http://springframework.org/ http://www.springframework.org/documen Historie 2002 - Rod Johnson kniha

Více

VYUŽITÍ REGIONÁLNÍCH FUNKCÍ A WWW ROZHRANÍ V INTEGROVANÉM KNIHOVNÍM SYSTÉMU KPWINSQL

VYUŽITÍ REGIONÁLNÍCH FUNKCÍ A WWW ROZHRANÍ V INTEGROVANÉM KNIHOVNÍM SYSTÉMU KPWINSQL VYUŽITÍ REGIONÁLNÍCH FUNKCÍ A WWW ROZHRANÍ V INTEGROVANÉM KNIHOVNÍM SYSTÉMU KPWINSQL Petr Štefan Václav Trunec, KP-sys, Čacké 155, Pardubice 1 Úvod Firma KP-SYS spol. s r. o. dodává na náš trh integrované

Více

public static void main(string[] args) { System.out.println(new Main().getClass().getAnnotation(Greet.class).text());

public static void main(string[] args) { System.out.println(new Main().getClass().getAnnotation(Greet.class).text()); Anotace a Hibernate Aleš Nosek, Ondřej Vadinský, Daniel Krátký Anotace v Javě Anotace jsou novinkou v Javy verze 5. Anotace umožňují doplnit kód Javy o dodatečné informace. Zapisují se přímo do zdrojového

Více

Systém evidence knih v obecní

Systém evidence knih v obecní Mendelova zemědělská a lesnická univerzita v Brně Provozně ekonomická fakulta Systém evidence knih v obecní knihovně Bakalářská práce Vedoucí práce: Ing. Petr Jedlička, Ph.D Radek Majer Brno 2009 Rád bych

Více

Servlety a JSP. Petr Adámek, petr.adamek@ibacz.eu

Servlety a JSP. Petr Adámek, petr.adamek@ibacz.eu Servlety a JSP Petr Adámek, petr.adamek@ibacz.eu Úvod Rekapitulace vstupních znalostí Standardy Nástroje (Běhové prostředí, nástroje pro vývoj) Servlety JSP JSP značky EL (Expression Language) Internacionalizace

Více

Úvod. Petr Aubrecht (CA) Martin Ptáček (Wincor Nixdorf) Je 10 typů lidí: ti, kteří znají binární kód, a ti, kteří ne.

Úvod. Petr Aubrecht (CA) Martin Ptáček (Wincor Nixdorf) Je 10 typů lidí: ti, kteří znají binární kód, a ti, kteří ne. Úvod Petr Aubrecht (CA) Martin Ptáček (Wincor Nixdorf) Je 10 typů lidí: ti, kteří znají binární kód, a ti, kteří ne. Organizace předmětu Materiály k předmětu -Web stránky: http://cw.felk.cvut.cz/doku.php/courses/x33eja/start

Více

IMPLEMENTACE SYSTÉMU GROUPWISE NA PEF ČZU V PRAZE IMPLEMENTATION OF THE SYSTEM GROUPWISE ON THE PEF ČZU PRAGUE. Jiří Vaněk, Jan Jarolímek

IMPLEMENTACE SYSTÉMU GROUPWISE NA PEF ČZU V PRAZE IMPLEMENTATION OF THE SYSTEM GROUPWISE ON THE PEF ČZU PRAGUE. Jiří Vaněk, Jan Jarolímek IMPLEMENTACE SYSTÉMU GROUPWISE NA PEF ČZU V PRAZE IMPLEMENTATION OF THE SYSTEM GROUPWISE ON THE PEF ČZU PRAGUE Jiří Vaněk, Jan Jarolímek Anotace: Příspěvek se zabývá hlavními trendy rozvoje programů pro

Více

KAPITOLA 3. Architektura aplikací na frameworku Rails. V této kapitole: modely, pohledy, řadiče.

KAPITOLA 3. Architektura aplikací na frameworku Rails. V této kapitole: modely, pohledy, řadiče. KAPITOLA 3 Architektura aplikací na frameworku Rails V této kapitole: modely, pohledy, řadiče. 58 Část I: Začínáme Jedna ze zajímavých vlastností frameworku Rails spočívá v tom, že klade docela závažná

Více

Tvorba informačních systémů

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

Více

POLOPROVOZ ZNALOSTNÍ DATABÁZE INTERPI DOKUMENTACE

POLOPROVOZ ZNALOSTNÍ DATABÁZE INTERPI DOKUMENTACE POLOPROVOZ ZNALOSTNÍ DATABÁZE INTERPI DOKUMENTACE INTERPI Interoperabilita v paměťových institucích Program aplikovaného výzkumu a vývoje národní kulturní identity (NAKI) (DF11P01OVV023) Zpracovali: Marie

Více

Další vlastnosti Springu Moduly Springu. Spring Framework. Pavel Mička. Pavel Mička Spring Framework 1/18

Další vlastnosti Springu Moduly Springu. Spring Framework. Pavel Mička. Pavel Mička Spring Framework 1/18 Spring Framework Pavel Mička Pavel Mička Spring Framework 1/18 Obsah Úvod 1 Úvod 2 Service locator Dependency injection Rozsah platnosti bean 3 4 Pavel Mička Spring Framework 2/18 Co je to Spring framework

Více

Tvorba podnikových aplikací v jazyce JAVA. Josef Pavlíček KII PEF CZU

Tvorba podnikových aplikací v jazyce JAVA. Josef Pavlíček KII PEF CZU Tvorba podnikových aplikací v jazyce JAVA Josef Pavlíček KII PEF CZU J2EE Jedná se o přístup: sadu pravidel, technologií, metod, doporučení jak provádět design, vývoj, nasazení a provozování vícevrstvých

Více

Připravil: Ing. Vít Ondroušek, Ph.D. Technologie.Net Framework

Připravil: Ing. Vít Ondroušek, Ph.D. Technologie.Net Framework Připravil: Ing. Vít Ondroušek, Ph.D. Technologie.Net Framework úvod, historie, základy.net framework, programovací jazyky, vývojové prostředky Úvod strana 2 Cíl předmětu Seznámit se s vývojem aplikací

Více

NOVINKY V JEE EJB 3.1. Zdeněk Troníček Fakulta informačních technologií ČVUT v Praze

NOVINKY V JEE EJB 3.1. Zdeněk Troníček Fakulta informačních technologií ČVUT v Praze NOVINKY V JEE EJB 3.1 Zdeněk Troníček Fakulta informačních technologií ČVUT v Praze PROGRAM Seznámení s Java Enterprise Edition (JEE) Enterprise Java Beans (EJB) Novinky v EJB 3.1 2 JAVA EDITIONS Java

Více

Semináˇr Java X J2EE Semináˇr Java X p.1/23

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,

Více

(Enterprise) JavaBeans. Lekce 7

(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í

Více

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework Web Jaroslav Nečas Obsah přednášky Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework Co to je web HTTP protokol bezstavový GET POST HEAD Cookies Session HTTPS

Více

ROZVOJ ICT A PDA ZAŘÍZENÍ THE DEVELOPMENT OF ICT AND PDA DEVICES Jiří Vaněk

ROZVOJ ICT A PDA ZAŘÍZENÍ THE DEVELOPMENT OF ICT AND PDA DEVICES Jiří Vaněk ROZVOJ ICT A PDA ZAŘÍZENÍ THE DEVELOPMENT OF ICT AND PDA DEVICES Jiří Vaněk Anotace: Příspěvek se zabývá rozvojem informačních a komunikačních technologií se zaměřením na trendy technického a programového

Více

Platformy / technologie. Jaroslav Žáček jaroslav.zacek@osu.cz

Platformy / technologie. Jaroslav Žáček jaroslav.zacek@osu.cz Platformy / technologie Jaroslav Žáček jaroslav.zacek@osu.cz Které platformy / technologie znáte Java Java Java EE 5 Java EE 6 Pruning, Extensibility Ease of Dev, CDI, JAX-RS Java EE 7! JMS 2, Batch, Concurrency,

Více

Databázové a informační systémy

Databázové a informační systémy Databázové a informační systémy 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 Jak ukládat a efektivně zpracovávat

Více

Technologie Java. Jaroslav Žáček jaroslav.zacek@osu.cz http://www1.osu.cz/~zacek/

Technologie Java. Jaroslav Žáček jaroslav.zacek@osu.cz http://www1.osu.cz/~zacek/ Technologie Java Jaroslav Žáček jaroslav.zacek@osu.cz http://www1.osu.cz/~zacek/ Trocha historie Java vznikla v roce 1995 jak minimalistický programovací jazyk (211 tříd). Syntaxe vycházela z C/C++. V

Více

George J. Klir. State University of New York (SUNY) Binghamton, New York 13902, USA gklir@binghamton.edu

George J. Klir. State University of New York (SUNY) Binghamton, New York 13902, USA gklir@binghamton.edu A Tutorial Advances in query languages for similarity-based databases George J. Klir Petr Krajča State University of New York (SUNY) Binghamton, New York 13902, USA gklir@binghamton.edu Palacky University,

Více

PA165: Úvod do Java EE. Petr Adámek

PA165: Úvod do Java EE. Petr Adámek PA165: Úvod do Java EE Petr Adámek Obsah přednášky Organizace předmětu Formy výuky Hodnocení Osnova Java EE aplikace Architektury Java EE aplikací Technologie Java EE Základní koncepty PA165: Úvod do Java

Více

GWT pro pokročilé. MoroSystems, s.r.o. Pavel Klobása. Senior Java Developer.

GWT pro pokročilé. MoroSystems, s.r.o. Pavel Klobása. Senior Java Developer. GWT pro pokročilé MoroSystems, s.r.o. Pavel Klobása Senior Java Developer pavel.klobasa@morosystems.cz Obsah Co je to GWT? Návrhové vzory a užitečné knihovny Komunikace klient - server ExtGWT GWT+Spring

Více

X33EJA Enterprise Java

X33EJA Enterprise Java X33EJA Enterprise Java Petr Šlechta Sun Microsystems petr.slechta@sun.com Petr Aubrecht CA (Computer Associates) petr.aubrecht@ca.com X33EJA (2+2) Cvičení Formou samostatné práce na projektu témata budou

Více

Softwarové komponenty a Internet

Softwarové komponenty a Internet Softwarové komponenty a Internet Doc. Dr. Ing. Miroslav Beneš Katedra informatiky FEI VŠB-TU Ostrava Miroslav.Benes@vsb.cz Obsah přednášky Motivace Vývoj přístupů k tvorbě programů Definice komponenty

Více

1. Distribuce Javy. 2. Vlastnosti J2EE aplikace. 3. Fyzická architektura J2EE aplikace. Distribuce Javy se liší podle jejího zamýšleného použití:

1. Distribuce Javy. 2. Vlastnosti J2EE aplikace. 3. Fyzická architektura J2EE aplikace. Distribuce Javy se liší podle jejího zamýšleného použití: Architektura webové aplikace, funkce jednotlivých vrstev, životní cyklus standardizovaných komponent Java EE, Servlety, JSP, frameworky, návrhové vzory 1. Distribuce Javy Distribuce Javy se liší podle

Více

Jalapeño: pekelně ostrá Java persistence v Caché. Daniel Kutáč Senior Sales Engineer

Jalapeño: pekelně ostrá Java persistence v Caché. Daniel Kutáč Senior Sales Engineer Jalapeño: pekelně ostrá Java persistence v Caché Daniel Kutáč Senior Sales Engineer Co je Jalapeño Pár slov ředitele vývoje software Klikni! Tak tedy, o čem dnes budeme mluvit Architektura Instalace Anotace

Více

Databázové systémy trocha teorie

Databázové systémy trocha teorie Databázové systémy trocha teorie Základní pojmy Historie vývoje zpracování dat: 50. Léta vše v programu nevýhody poměrně jasné Aplikace1 alg.1 Aplikace2 alg.2 typy1 data1 typy2 data2 vytvoření systémů

Více

Vybrané partie z jazyka Java Spring a Enterprise JavaBeans (EJB)

Vybrané partie z jazyka Java Spring a Enterprise JavaBeans (EJB) Vybrané partie z jazyka Java Spring a Enterprise JavaBeans (EJB) Michal Papež Spring & EJB Program: K čemu je to dobré, historie, odlišnosti Spring 2.5 EJB 3.0 K čemu jsou? 1 Vývoj velkých podnikových

Více

Vhodnost nasazení jednotlivých webových architektur, sdílení dat, perzistence, webové služby a REST, asynchronnost, messaging

Vhodnost nasazení jednotlivých webových architektur, sdílení dat, perzistence, webové služby a REST, asynchronnost, messaging Vhodnost nasazení jednotlivých webových architektur, sdílení dat, perzistence, webové služby a REST, asynchronnost, messaging 1. Vhodnost nasazení jednotlivých webových architektur - toto je podle Klímy

Více

Web Services na SOAP

Web Services na SOAP Web Services Používají HTTP Existují dvě varianty: Služby postavené na protokolu SOAP Java standard pro vytváření : JAX-WS RESTfull služby Java standard pro vytváření : JAX-RS Web Services na SOAP Žádost

Více

XML Š ABLONY A JEJICH INTEGRACE V LCMS XML TEMPLATES AND THEIN INTEGRATION IN LCMS

XML Š ABLONY A JEJICH INTEGRACE V LCMS XML TEMPLATES AND THEIN INTEGRATION IN LCMS XML Š ABLONY A JEJICH INTEGRACE V LCMS XML TEMPLATES AND THEIN INTEGRATION IN LCMS Roman MALO - Arnošt MOTYČKA This paper is oriented to discussion about using markup language XML and its features in LCMS

Více

Java a Caché IV: Manipulace s objekty

Java a Caché IV: Manipulace s objekty 1 z 6 11.1.2007 11:13 přihlašovací jméno heslo Registrace Přihlásit články odkazy aktuality CZJUG konference o portálu přidejte se o nás Vyhledávání Text: najdi Oborový filtr J2ME J2SE J2EE Enterprise

Více

Statistica, kdo je kdo?

Statistica, kdo je kdo? Statistica, kdo je kdo? Newsletter Statistica ACADEMY Téma: Typy instalací Typ článku: Teorie Někteří z vás používají univerzitní licence, někteří síťové, podnikové atd. V tomto článku Vám představíme,

Více

Anotace a Hibernate. Aleš Nosek Ondřej Vadinský Daniel Krátký

Anotace a Hibernate. Aleš Nosek Ondřej Vadinský Daniel Krátký Anotace a Hibernate Aleš Nosek Ondřej Vadinský Daniel Krátký Anotace v Javě novinka Javy 5 umožňují k Java kódu přidávat dodatečné informace (podobně jako JavaDoc) za předchůdce anotací je možné považovat

Více

MYBIZ - Řešení pro zpřístupnění dat ze stávajících aplikací na mobilních zařízeních (Mobilize your business!) Požadavky zákazníka.

MYBIZ - Řešení pro zpřístupnění dat ze stávajících aplikací na mobilních zařízeních (Mobilize your business!) Požadavky zákazníka. MYBIZ - Řešení pro zpřístupnění dat ze stávajících aplikací na mobilních zařízeních (Mobilize your business!) IT SYSTEMS a.s. Mnoho společností má implementovány aplikace, které byly vyvíjeny (případně

Více

Společnost Xerox vytváří škálovatelné, hostované řešení pro optimalizaci globální správy tiskových aktiv

Společnost Xerox vytváří škálovatelné, hostované řešení pro optimalizaci globální správy tiskových aktiv Microsoft Visual Studio 2005 a Microsoft SQL Server 2005 Případová studie zákaznického řešení Společnost Xerox vytváří škálovatelné, hostované řešení pro optimalizaci globální správy tiskových aktiv Přehled

Více

UNIVERZITA PARDUBICE DOPRAVNÍ FAKULTA JANA PERNERA

UNIVERZITA PARDUBICE DOPRAVNÍ FAKULTA JANA PERNERA UNIVERZITA PARDUBICE DOPRAVNÍ FAKULTA JANA PERNERA SOFTWAROVÁ PODPORA PRO TECHNICKOU PŘÍPRAVU PROJEKTU V ELEKTRIZACI ŽELEZNIC PRAHA A.S. BC. LUKÁŠ HRON DIPLOMOVÁ PRÁCE 2008 Souhrn Tato práce si klade

Více

Komponentní technologie

Komponentní technologie Komponentní technologie 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 Motivace Aplikace v IT Vývoj přístupů

Více

UJO Framework. revoluční architektura beans. verze 0.80 http://ujoframework.org/

UJO Framework. revoluční architektura beans. verze 0.80 http://ujoframework.org/ UJO Framework revoluční architektura beans verze 0.80 http://ujoframework.org/ Pavel Pone(c), září 2008 Historie rok 2004 upravené objekty z frameworku Cayenne nevýhodou byla špatná typová kontrola rok

Více

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 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

Více

Sem vložte zadání Vaší práce.

Sem vložte zadání Vaší práce. Sem vložte zadání Vaší práce. České vysoké učení technické v Praze Fakulta informačních technologií Katedra softwarového inženýrství Bakalářská práce Rezervační komponenta pro informační systém sportovního

Více

Systémová administrace portálu Liferay

Systémová administrace portálu Liferay 02 Systémová administrace portálu Liferay 1 Agenda Administrace Instalace lokálního a serverového prostředí Základní práce s uživateli Role a oprávnění Konfigurace portálu 2014 IBA CZ, s. r. o. 2 Portálová

Více

- 1 - Smlouva o dílo. uzavřená podle 536 a násl. obchodního zákoníku v účinném znění

- 1 - Smlouva o dílo. uzavřená podle 536 a násl. obchodního zákoníku v účinném znění - 1 - Smlouva o dílo uzavřená podle 536 a násl. obchodního zákoníku v účinném znění Přílohy : A Technická dokumentace a popis díla B Kalkulace ceny díla 1. Účastníci smlouvy Smluvní strany této smlouvy,

Více

InTouch 8.0 Subsystém distribuovaných alarmů

InTouch 8.0 Subsystém distribuovaných alarmů InTouch 8.0 Subsystém distribuovaných alarmů Pavel Průša Pantek (CS) s.r.o. Strana 2 Obsah Úvod Úvod Subsystém distribuovaných alarmů Ukládání alarmů do relační databáze Zobrazování, potvrzování a potlačování

Více

Vladimír Mach. @vladimirmach 2. 1. 2013

Vladimír Mach. @vladimirmach 2. 1. 2013 Vladimír Mach @vladimirmach 2. 1. 2013 SQL Server Compact Edition Jednoduchá relační databáze Použití i v malých zařízeních s omezenými zdroji Dříve pod názvem SQL Server Mobile Časté využití při programování

Více

Maven. Aplikační programování v Javě (BI-APJ) - 2 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha

Maven. Aplikační programování v Javě (BI-APJ) - 2 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha Maven Aplikační programování v Javě (BI-APJ) - 2 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Více

ŠKOLENÍ PROGRAMOVACÍHO JAZYKA JAVA JAVA - ZÁKLADY

ŠKOLENÍ PROGRAMOVACÍHO JAZYKA JAVA JAVA - ZÁKLADY JAVA - ZÁKLADY PROGRAMOVACÍHO JAZYKA ZÁKLADY PROGRAMOVACÍHO JAZYKA Komplexní školení zaměřené na získání znalostí uplatnitelných při vývoji aplikací v programovacím jazyce JAVA. Účastník získá ucelené

Více

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML Obsah přednášky Webové služby a XML Miroslav Beneš Co jsou to webové služby Architektura webových služeb SOAP SOAP a Java SOAP a PHP SOAP a C# Webové služby a XML 2 Co jsou to webové služby rozhraní k

Více

Projekt 7006/2014 SDAT - Sběr dat pro potřeby ČNB. Návrh realizace řešení

Projekt 7006/2014 SDAT - Sběr dat pro potřeby ČNB. Návrh realizace řešení Projekt 7006/2014 SDAT - Sběr dat pro potřeby ČNB Návrh realizace řešení Tento dokument obsahuje informace důvěrného charakteru a informace v něm obsažené jsou vlastnictvím České národní banky. Žádná část

Více

Co by měl umět dobrý vývojář. Petr Adámek Home Credit International a.s.

Co by měl umět dobrý vývojář. Petr Adámek Home Credit International a.s. Co by měl umět dobrý vývojář Petr Adámek Home Credit International a.s. 2 Vývoj software je Kreativní činnost Umění Věda Řemeslo Co je vlastně vývoj software? Vývoj software je průmyslová disciplína prováděná

Více

OPERAČNÍ SYSTÉM ZLÍNSKÝ KRAJ. Obchodní akademie, Vyšší odborná škola a Jazyková škola s právem státní jazykové zkoušky Uherské Hradiště

OPERAČNÍ SYSTÉM ZLÍNSKÝ KRAJ. Obchodní akademie, Vyšší odborná škola a Jazyková škola s právem státní jazykové zkoušky Uherské Hradiště OPERAČNÍ SYSTÉM Název školy Obchodní akademie, Vyšší odborná škola a Jazyková škola s právem státní jazykové zkoušky Uherské Hradiště Název DUMu Operační systém Autor Martin Šimůnek Datum 13. 2. 2013 Stupeň

Více

Sem vložte zadání Vaší práce.

Sem vložte zadání Vaší práce. Sem vložte zadání Vaší práce. České vysoké učení technické v Praze Fakulta informačních technologií Katedra softwarového inženýrství Bakalářská práce Tvorba formulářů z popisu v XML s použitím knihovny

Více

Infrastruktura UML. Modelování struktury v UML. Superstruktura UML. Notace objektů. Diagramy objektů

Infrastruktura UML. Modelování struktury v UML. Superstruktura UML. Notace objektů. Diagramy objektů Infrastruktura UML v UML Karel Richta listopad 2011 Richta: B101TMM - v UML 2 Superstruktura UML Směr pohledu na systém dle UML Diagramy popisující strukturu diagramy tříd, objektů, kompozitní struktury,

Více

Teoretické minimum z PJV

Teoretické minimum z PJV Teoretické minimum z PJV Pozn.: následující text popisuje vlastnosti jazyka Java zjednodušeně pouze pro potřeby výuky. Třída Zavádí se v programu deklarací třídy což je část programu od klíčových slov

Více

Tvorba informačních systémů

Tvorba informačních systémů Tvorba informačních systémů Michal Krátký, Miroslav Beneš Katedra informatiky VŠB Technická univerzita Ostrava Tvorba informačních systémů, 2007/2008 c 2006 2008 Michal Krátký, Miroslav Beneš Tvorba informačních

Více

Platforma Java. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. Petr Krajča (UP) KMI/PJA: Seminář V. 27. říjen, / 15

Platforma Java. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. Petr Krajča (UP) KMI/PJA: Seminář V. 27. říjen, / 15 Platforma Java Objektově relační mapování II Petr Krajča Katedra informatiky Univerzita Palackého v Olomouci Petr Krajča (UP) KMI/PJA: Seminář V. 27. říjen, 2016 1 / 15 Dotazování vyhledání objektu podle

Více

Současný svět Projekt č. CZ.2.17/3.1.00/32038, podpořený Evropským sociálním fondem v rámci Operačního programu Praha adaptabilita

Současný svět Projekt č. CZ.2.17/3.1.00/32038, podpořený Evropským sociálním fondem v rámci Operačního programu Praha adaptabilita Aktivní webové stránky Úvod: - statické webové stránky: pevně vytvořený kód HTML uložený na serveru, ke kterému se přistupuje obvykle pomocí protokolu HTTP (HTTPS - zabezpečený). Je možno používat i různé

Více

UNIVERZITA PARDUBICE Fakulta elektrotechniky a informatiky. Databázová aplikace pro evidenci mechatronických stavebnic Michal Grof

UNIVERZITA PARDUBICE Fakulta elektrotechniky a informatiky. Databázová aplikace pro evidenci mechatronických stavebnic Michal Grof UNIVERZITA PARDUBICE Fakulta elektrotechniky a informatiky Databázová aplikace pro evidenci mechatronických stavebnic Michal Grof Bakalářská práce 2011 Prohlášení autora Prohlašuji, že jsem tuto práci

Více

Databázový systém Matylda

Databázový systém Matylda Databázový systém Matylda Návrh softwarového projektu Vývojový tým Předpokládaný počet řešitelů: 5 Vedoucí: Mgr. Martin Nečaský Ph.D. Motivace V současné době se mnoho nákupů odehrává v internetových obchodech.

Více

DODATEČNÉ INFORMACE Č. 1 K ZADÁVACÍM PODMÍNKÁM PŘESHRANIČNÍ INFORMAČNÍ SYSTÉM PRO PŘEDCHÁZENÍ A ŘEŠENÍ POVODNÍ A DALŠÍCH KRIZOVÝCH SITUACÍ

DODATEČNÉ INFORMACE Č. 1 K ZADÁVACÍM PODMÍNKÁM PŘESHRANIČNÍ INFORMAČNÍ SYSTÉM PRO PŘEDCHÁZENÍ A ŘEŠENÍ POVODNÍ A DALŠÍCH KRIZOVÝCH SITUACÍ DODATEČNÉ INFORMACE Č. 1 K ZADÁVACÍM PODMÍNKÁM dle 49 zákona č. 137/2006 Sb., o veřejných zakázkách, ve znění pozdějších předpisů (dále jen zákon) v rámci veřejné zakázky 10/OR/2013 evidenční č. 344875

Více

Enterprise Java Beans 3.0

Enterprise Java Beans 3.0 Enterprise Java Beans 3.0 Lukáš Zapletal liberix.cz EJB 3.0 a JPA 1.0 JavaBean - vysvětlení pojmu Java třída s get/is a set metodami má tedy vlastnosti žádné další podmínky nejsou kladeny JavaBean je tedy

Více

Obchodní podmínky technické podpory programu ESRI Developer Network (EDN)

Obchodní podmínky technické podpory programu ESRI Developer Network (EDN) Obchodní podmínky technické podpory programu ESRI Developer Network (EDN) Technická podpora EDN programu je poskytována ve formě balíčku 10 předplacených konzultačních hodin za cenu 15.000,- Kč. 1) V rámci

Více

Databázové systémy I. 1. přednáška

Databázové systémy I. 1. přednáška Databázové systémy I. 1. přednáška Vyučující a cvičení St 13:00 15:50 Q09 Pavel Turčínek St 16:00 18:50 Q09 Oldřich Faldík Čt 10:00 12:50 Q09 Jan Turčínek Pá 7:00 9:50 Q08 Pavel Turčínek Pá 10:00 12:50

Více

Bridge. Známý jako. Účel. Použitelnost. Handle/Body

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ě

Více

Tvorba informačních systémů

Tvorba informačních systémů Tvorba informačních systémů Michal Krátký, Miroslav Beneš Katedra informatiky VŠB Technická univerzita Ostrava Tvorba informačních systémů, 2007/2008 c 2005-2008 Michal Krátký, Miroslav Beneš Tvorba informačních

Více

IBM TRIRIGA Application Platform Verze 3 Vydání 4.2. Příručka instalace a implementace

IBM TRIRIGA Application Platform Verze 3 Vydání 4.2. Příručka instalace a implementace IBM TRIRIGA Application Platform Verze 3 Vydání 4.2 Příručka instalace a implementace Poznámka Před použitím těchto informací a produktu, který podporují, si přečtěte informace v části Upozornění na stránce

Více

20. Projekt Domácí mediotéka

20. Projekt Domácí mediotéka Projekt Domácí mediotéka strana 211 20. Projekt Domácí mediotéka 20.1. Základní popis, zadání úkolu V projektu Domácí mediotéka (Dome) se jednoduchým způsobem evidují CD a videa. Projekt je velmi jednoduchý

Více

Návrh programu v Black Box Component Builderu s využitím architektury Model View Controller

Návrh programu v Black Box Component Builderu s využitím architektury Model View Controller Návrh programu v Black Box Component Builderu s využitím architektury Model View Controller Gustav Hrudka Katedra měřicí a řídicí techniky, VŠB Technická univerzita v Ostravě, tř. 17. listopadu, 708 33

Více

Michal Krátký, Miroslav Beneš

Michal Krátký, Miroslav Beneš Tvorba informačních systémů 1/32 Tvorba informačních systémů Michal Krátký, Miroslav Beneš Katedra informatiky VŠB Technická univerzita Ostrava Tvorba informačních systémů, 2008/2009 Tvorba informačních

Více

Manuál administrátora FMS...2

Manuál administrátora FMS...2 Manuál administrátora Manuál administrátora FMS...2 Úvod... 2 Schéma aplikace Form Management System... 2 Úvod do správy FMS... 3 Správa uživatelů... 3 Práva uživatelů a skupin... 3 Zástupci... 4 Avíza

Více

PŘÍRODOVĚDECKÁ FAKULTA UNIVERZITY PALACKÉHO KATEDRA INFORMATIKY BAKALÁŘSKÁ PRÁCE. Vytváření a evidence smluv. 2012 Petr Čulík

PŘÍRODOVĚDECKÁ FAKULTA UNIVERZITY PALACKÉHO KATEDRA INFORMATIKY BAKALÁŘSKÁ PRÁCE. Vytváření a evidence smluv. 2012 Petr Čulík PŘÍRODOVĚDECKÁ FAKULTA UNIVERZITY PALACKÉHO KATEDRA INFORMATIKY BAKALÁŘSKÁ PRÁCE Vytváření a evidence smluv 2012 Petr Čulík Anotace Aplikace slouží uživateli jako nástroj pro vytváření a evidenci jednorázových,

Více

Google Web Toolkit. Martin Šurkovský, SUR března Katedra informatiky

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

Více

1 - Úvod do platformy.net. IW5 - Programování v.net a C#

1 - Úvod do platformy.net. IW5 - Programování v.net a C# 1 - Úvod do platformy.net IW5 - Programování v.net a C# Strana 1 Obsah přednášky Objektově orientované paradigma.net Framework Základní rysy jazyka C# Strana 2 Objektová orientace C# implementuje základní

Více

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové aplikace

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové aplikace Připravil: Ing. Jiří Lýsek, Ph.D. Verze: 26. 2. 2019 Webové aplikace PHP OOP, PHP a databáze, migrace DB, ORM, šablony, MVC/MVP, PHP frameworky strana 2 PHP skriptovací jazyk dynamicky typovaný interpret

Více

Delphi podstata, koncepce a metody MDI aplikace

Delphi podstata, koncepce a metody MDI aplikace Delphi podstata, koncepce a metody MDI aplikace Bc. Tomáš Selucký, Ústav statistiky a operačního výzkumu, Provozně ekonomická fakulta, Mendelova zemědělská a lesnická univerzita v Brně, selucky@selucky.com

Více

Programovací jazyky Přehled a vývoj

Programovací jazyky Přehled a vývoj Programovací jazyky Přehled a vývoj 1 Programování a programovací jazyk Historie a současnost programovacích jazyků Objektově orientované a vizuální programování Značkovací a skriptovací jazyky 2 Programování

Více

DELTA - STŘEDNÍ ŠKOLA INFORMATIKY A EKONOMIE, s.r.o. Obor informační technologie AJAX ESHOP. Maturitní projekt. Třída:

DELTA - STŘEDNÍ ŠKOLA INFORMATIKY A EKONOMIE, s.r.o. Obor informační technologie AJAX ESHOP. Maturitní projekt. Třída: DELTA - STŘEDNÍ ŠKOLA INFORMATIKY A EKONOMIE, s.r.o. Obor informační technologie AJAX ESHOP Maturitní projekt Vypracoval: Denis Ptáček Třída: 4B Rok: 2014/2015 Obsah 1. Použité nástroje... 3 1.1 NetBeans

Více

(JME) Vybrané partie z jazyka Java (NPRG021) Jiří Tomeš

(JME) Vybrané partie z jazyka Java (NPRG021) Jiří Tomeš Java Micro Edition (JME) Vybrané partie z jazyka Java (NPRG021) Jiří Tomeš O čem se dnes budeme bavit O platformě JME Základní rozdělení JME CLDC MIDP MIDlet(y) a MIDLet suite Ukázky 2 programů IMP CDC

Více

Ant aneb Ferda Mravenec, práce všeho druhu

Ant aneb Ferda Mravenec, práce všeho druhu Ant aneb Ferda Mravenec, práce všeho druhu Nástroj na sestavování projektů (aplikací) podobný programu make, který se používá u programů v C či C++. Program Ant je volně k dispozici (tzv. The Apache Software

Více

Java Server-side. Štěpán Kuchař. stepan.kuchar@vsb.cz. VŠB-TUO FEI Katedra informatiky

Java Server-side. Štěpán Kuchař. stepan.kuchar@vsb.cz. VŠB-TUO FEI Katedra informatiky Java Server-side Štěpán Kuchař stepan.kuchar@vsb.cz VŠB-TUO FEI Katedra informatiky Trocha historie 500 před n. l. Pythagoras založil bratrstvo vyznávající reinkarnaci, vegetariánství, mystický význam

Více

Platforma průmyslové spolupráce

Platforma průmyslové spolupráce Platforma průmyslové spolupráce CZ.1.07/2.4.00/17.0041 Název JBoss Teiid konektor pro NoSQL databázi Apache Cassandra Popis a využití demonstrace převodu z NoSQL do SQL světa výuka: pokročilá Java Jazyk

Více

SYSTÉM PRO KONFIGURACI KOMUNIKAČNÍCH TERMINÁLŮ A VIZUALIZACI STAVOVÝCH DAT Z KOLEJOVÝCH VOZIDEL

SYSTÉM PRO KONFIGURACI KOMUNIKAČNÍCH TERMINÁLŮ A VIZUALIZACI STAVOVÝCH DAT Z KOLEJOVÝCH VOZIDEL SYSTÉM PRO KONFIGURACI KOMUNIKAČNÍCH TERMINÁLŮ A VIZUALIZACI STAVOVÝCH DAT Z KOLEJOVÝCH VOZIDEL SYSTEM FOR CONFIGURATION OF COMMUNICATION TERMINALS AND VISUALIZATION OF STATE INFORMATION FROM RAIL VEHICLES

Více

Úvod. Únor Fakulta informačních technologií VUT. Radek Kočí Seminář Java Úvod 1/ 23

Úvod. Únor Fakulta informačních technologií VUT. Radek Kočí Seminář Java Úvod 1/ 23 Seminář Java Úvod Radek Kočí Fakulta informačních technologií VUT Únor 2010 Radek Kočí Seminář Java Úvod 1/ 23 Téma přednášky Organizace semináře Java úvod, distribuce Radek Kočí Seminář Java Úvod 2/ 23

Více

USI - 102 - Projekt klíčenka"

USI - 102 - Projekt klíčenka USI - 102 - Projekt klíčenka" Předmět A7B36USI paralelka 102 Pondělí 14:30 cvičící Martin Komárek ČVUT FEL Tomáš Záruba, Gulnara Abilova, Martin Karban, Levan Bachukuri Termín odevzdání: 6.října 2013 Link

Více

E-EDUCATION NEBOLI VYUŽITÍ ICT VE ŠKOLÁCH

E-EDUCATION NEBOLI VYUŽITÍ ICT VE ŠKOLÁCH E-EDUCATION NEBOLI VYUŽITÍ ICT VE ŠKOLÁCH ANDREA BAREŠOVÁ A KOL. Hewlett-Packard Abstrakt: e-education je název znamenající zapojení informačních technologií do výuky. S tímto pojmenováním přišla společnost

Více

Platformy / technologie. Jaroslav Žáček

Platformy / technologie. Jaroslav Žáček Platformy / technologie Jaroslav Žáček jaroslav.zacek@osu.cz Které platformy / technologie znáte Java Trocha historie Java EE Java EE 5 Java EE 6 Pruning, Extensibility Ease of Dev, CDI, JAX-RS Java EE

Více

M I S Y S - W E B. Intranet řešení systému MISYS. Verze 9.00. Příručka uživatele

M I S Y S - W E B. Intranet řešení systému MISYS. Verze 9.00. Příručka uživatele M I S Y S - W E B Intranet řešení systému MISYS Verze 9.00 Příručka uživatele GEPRO s.r.o. Září 2008 Copyright GEPRO s.r.o. 2008 Ochranné známky GEPRO spol. s r.o. KOKEŠ, MISYS Ochranné známky Microsoft

Více

Integrace OpenOffice.org a Javy. CZJUG, , Robert Vojta

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í

Více

Platforma J2EE. Lukáš Zapletal liberix.cz. Platforma Java 2 Enterprise Edition

Platforma J2EE. Lukáš Zapletal liberix.cz. Platforma Java 2 Enterprise Edition Platforma J2EE Lukáš Zapletal liberix.cz Platforma Java 2 Enterprise Edition Co je J2EE J2EE je standard pro vývoj robustních, škálovatelných a bezpečných serverových systémů v Javě. Poskytuje business

Více

Sísyfos Systém evidence činností

Sísyfos Systém evidence činností Sísyfos Systém evidence Sísyfos : Evidence pracovních Systém Sísyfos je firemní aplikace zaměřená na sledování pracovních úkonů jednotlivých zaměstnanců firmy. Umožňuje sledovat pracovní činnosti na různých

Více

Maturitní otázka webové stránky (technologie tvorby webu) Co znamená pojem Web? Web, www stránky, celým názvem World Wide Web,

Maturitní otázka webové stránky (technologie tvorby webu) Co znamená pojem Web? Web, www stránky, celým názvem World Wide Web, Maturitní otázka webové stránky (technologie tvorby webu) Co znamená pojem Web? Web, www stránky, celým názvem World Wide Web, v doslovném překladu "světová rozsáhlá síť neboli celosvětová síť, je označení

Více

BankKlient. FAQs. verze 9.50

BankKlient. FAQs. verze 9.50 BankKlient FAQs verze 9.50 2 BankKlient Obsah: Úvod... 3 Instalace BankKlient možné problémy... 3 1. Nejsou instalovány požadované aktualizace systému Windows... 3 2. Instalační program hlásí, že nemáte

Více

PLATFORMY / TECHNOLOGIE JAROSLAV ŽÁČEK

PLATFORMY / TECHNOLOGIE JAROSLAV ŽÁČEK PLATFORMY / TECHNOLOGIE JAROSLAV ŽÁČEK JAROSLAV.ZACEK@OSU.CZ KTERÉ PLATFORMY / TECHNOLOGIE ZNÁTE JAVA TROCHA HISTORIE JAVA EE Java EE 7! Java EE 6 Java EE 5 J2EE 1.4 J2EE 1.3 J2EE 1.2 Servlet, JSP, EJB,

Více

RELAČNÍ DATABÁZOVÉ SYSTÉMY

RELAČNÍ DATABÁZOVÉ SYSTÉMY RELAČNÍ DATABÁZOVÉ SYSTÉMY VÝPIS KONTROLNÍCH OTÁZEK S ODPOVĚDMI: Základní pojmy databázové technologie: 1. Uveďte základní aspekty pro vymezení jednotlivých přístupů ke zpracování hromadných dat: Pro vymezení

Více