Mendelova univerzita v Brně Provozně ekonomická fakulta Dostupné komponenty pro vývoj webových aplikací v J2EE Bakalářská práce Vedoucí práce: Ondřej Svoboda Ing. Jan Kryštof, Ph.D. Brno 2011 2 Zadání práce Děkuji svému vedoucímu bakalářské práce Ing. Janu Kryštofovi, Ph.D. za cenné rady a čas věnovaný konzultacím. Prohlašuji, že jsem závěrečnou práci vykonal samostatně a za použití literatury, kterou uvádím v seznamu Brno, 27. května 2011 .................................................... 5 Abstract Svoboda,O.AvailablecomponentsfordevelopingJ2EEapplications.Bachelor’sfinal project. Brno, 2011 This thesis deals with creating Java web applications and explores available components which can be integrated into those applications. The theoretical part deals with the general problems of web applications development in Java and then focuses on Rich Internet Applications framework Google Web Toolkit. In the practical part were established criteria for evaluation of freely available web application components and was created overwiew of freely available file managers, web forums, photo galleries and WYSIWYG editors. Practical part continues with analysis, draft and implementation of new server file manager component. Abstrakt Svoboda, O. Dostupné komponenty pro vývoj aplikací v J2EE. Bakalářská práce. Brno, 2011 Tato bakalářská práce se zabývá problematikou tvorby webových aplikací v ja- zyce Java a dostupnými komponentami, které lze do webových aplikací integrovat. Teoretická část se zabývá obecným vývojem webových aplikací v jazyku Java a dále se zaměřuje na rámec Google Web Toolkit, který slouží k vývoji RIA aplikací. V praktické části jsou vytvořena kritéria pro hodnocení dostupných komponent webových aplikací a sestaven přehled volně dostupných souborových manažerů, webových fór, fotogalerií a WYSIWYG editorů. Praktická část pokračuje analýzou, návrhem a tvorbou vlastní komponenty pro správu souborů na serveru. OBSAH 6 Obsah 1 Úvod a cíl práce 8 1.1 Úvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.2 Cíl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2 Webové technologie 9 2.1 Architektura Java EE . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.2 Java EE specifikace . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.3 AJAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.4 Webové kontejnery . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.4.1 Apache Tomcat . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.4.2 Instalace JVM a Apache Tomcat Windows a Linux . . . . . . 16 2.4.3 Struktura a konfigurace aplikace . . . . . . . . . . . . . . . . . 16 2.4.4 Základní konfigurace Tomcatu . . . . . . . . . . . . . . . . . . 17 2.4.5 Spuštění vlastní aplikace . . . . . . . . . . . . . . . . . . . . . 17 3 Google Web Toolkit 18 3.1 SmartGWT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.1.1 Tvorba GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.1.2 Kompilace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.1.3 Remote Procedure Call (RPC) . . . . . . . . . . . . . . . . . . 19 3.1.4 Google App Engine . . . . . . . . . . . . . . . . . . . . . . . . 21 4 Přehled dostupných komponent 23 4.1 Kritéria hodnocení . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 4.2 Online WYSIWYG editory . . . . . . . . . . . . . . . . . . . . . . . . 23 4.2.1 TinyMCE 4.3.2 . . . . . . . . . . . . . . . . . . . . . . . . . . 24 4.2.2 Open WYSIWYG . . . . . . . . . . . . . . . . . . . . . . . . . 25 4.2.3 CK Editor 3.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 4.2.4 Xinha 0.96.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 4.3 Online souborové manažery . . . . . . . . . . . . . . . . . . . . . . . 27 4.3.1 JSP File Browser 1.2 . . . . . . . . . . . . . . . . . . . . . . . 27 4.3.2 FileManager servlet 4.0 . . . . . . . . . . . . . . . . . . . . . . 28 4.3.3 WebFileSys 2.6.0 . . . . . . . . . . . . . . . . . . . . . . . . . 29 4.3.4 JEExplorer 1.15 . . . . . . . . . . . . . . . . . . . . . . . . . . 30 4.4 Webová fóra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 4.4.1 Forum servlet 3.0 . . . . . . . . . . . . . . . . . . . . . . . . . 31 4.4.2 Message Board Servlet 2.6 . . . . . . . . . . . . . . . . . . . . 32 4.4.3 WWWboard servlet 5.0 . . . . . . . . . . . . . . . . . . . . . 33 4.5 Fotogalerie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 4.5.1 JGallery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 4.5.2 Pictures publishing ver. 1.9 . . . . . . . . . . . . . . . . . . . 34 4.6 Zhodnocení shromážděných komponent . . . . . . . . . . . . . . . . . 35 OBSAH 7 5 Vlastní aplikace 37 5.1 Analýza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 5.2 Návrh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 5.3 Implementace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 6 Diskuze 48 7 Závěr 49 8 Literatura 50 9 Přílohy 52 1 ÚVOD A CÍL PRÁCE 8 1 Úvod a cíl práce 1.1 Úvod Oborinformačníchtechnologiísekaždýmrokemohromněvyvíjíarukuvrucestímto vývojem přichází i změny v požadavcích uživatelů a vývojářů na přístup k aplika- cím. Ještě před pár lety, v dobách pomalého, drahého a ne všude dostupného inter- netového připojení, bylo téměř nemyslitelné provozovat složitější webové aplikace. Veškerý výpočetní výkon a datová úložiště se sdružovala v lokálních systémech a ven putovala maximálně elektronická komunikace. Avšak trendem dnešní doby se stávají cloudové aplikace, díky nimž není nutné řešit opakované instalace na množství kli- entských stanic, odpadají potíže s kompatibilitou jednotlivých systémů a pro chod aplikací postačí pouze internetový prohlížeč s několika základními doplňky. Uživatelé chtějí mít svá data dostupná kdykoliv a odkudkoliv. Při výběru způ- sobu předání digitálních fotografií z dovolené spousta lidí raději zvolí jednu z on- line foto galerií, než aby musela zdlouhavě vyměňovat přenosná média. Cloudovým směrem se ubírá i velké množství dalších typů dříve zásadně desktopových aplikací. Příklademmůžoubýtmultimediálnípřehrávačeaeditorydokumentů.Hudbuivideo není nutné kopírovat na vlastní disk a uživatel ji streamuje přímo z daného serveru, online editory dokumentů poskytují téměř totožné funkce co jejich desktopové verze, ale uživatel má přistup k těmto dokumentům z libovolného zařízení. Velkým průkopníkem v tomto segmentu je společnost Google, která ve svém portfoliu nabízí široké množství webových aplikací, mezi nimiž jsou nejen online foto galerie, email, editor dokumentů, ale v brzké době i kompletní cloudový operační systém Chrome OS. 1.2 Cíl Cílemtétobakalářsképrácejezlepšitstavvoblastivolnědostupnýchkomponentpro vývoj webových aplikací v jazyce Java. Řešení práce bude rozděleno do následujících kroků: • Představení problematiky vývoje webových aplikací v jazyce Java. • Sestavení přehledu volně dostupných komponent webových fór, foto galerií, WYSIWYG editorů a souborových správců. • Stanovení kritérií pro hodnocení komponent a zjištění nedostatků. • Navrhnutí vlastního řešení pro vybranou komponentu a řešení implementovat. 2 WEBOVÉ TECHNOLOGIE 9 2 Webové technologie 2.1 Architektura Java EE Počátky programovacího jazyku Java spadají do roku 1991, kdy skupina vývojářů společnosti Sun Microsystems vedená Jamesem Goslingem začala pracovat na no- vém programovacím jazyku. První verze byla zveřejněna v roce 1995. Dnes tato technologie spadá pod vlastnictví společnosti Oracle. Velkou výhodou Javy je mul- tiplatformnost. Její zastoupení není jen v prostředí webu a počítačů, ale z velké části i v segmentu mobilních zařízení, herních konzolí, Blu-Ray přehrávačů, tele- vizí a podobně. Java se dělí podle funkčnosti a zaměření na jednotlivé edice: Java Standard Edition, Java Mobile Edition, Java FX a Java Enterprise Edition. Každá z těchto platforem poskytuje Virtual Machine a vlastní API. Java Virtual Machine je program, který umožňuje vlastní běh Java aplikace. API je kolekce softwarových komponent, které mohou být použity při vývoji nových komponent nebo aplikací. (ORACLE, 2011) S vývojem J2EE bylo započato v roce 1998, první verze pak byla vydána v roce 1999. Prvotní název této platformy byl ve formátu Java 2 Enterprise Edition 1.2 (J2EE 1.2). Pro zjednodušení značení se od verze 5 zavedlo pojmenování ve formátu Java Enterprise Edition 5 (Java EE 5). Java EE můžeme chápat jako množinu specifikací implementovaných různými kontejnery. Tyto kontejnery vyjadřují jednotlivá Java EE runtime prostředí, která poskytují určité služby hostujícím komponentám. Starají se o řízení životního cyklu komponenty, vkládání závislostí atd. Tyto komponenty se při komunikaci s in- frastrukturou Java EE a jinými komponentami řídí přesně stanovenými pravidly. Java EE je rozšířením Java SE pro tvorbu robustních vícevrstvých podnikových aplikací. Jakékoliv API z Java SE může být tedy použito v Java EE aplikaci či komponentě. Applet kontejner zajišťuje bezpečnost při spouštění appletových komponent. Tyto komponenty jsou spouštěny uvnitř sandboxu a nemohou tedy zasahovat vně kontejneru. Aplikační klientský kontejner (ACC) obsahuje množství Java tříd, knihoven a dalších souborů potřebných k zajištění řízení závislostí, bezpečnosti a jmen- ných služeb. ACC komunikuje s EJB kontejnerem za užití RMI-IIOP, s webo- vým kontejnerem potom přes protokol http. Webový kontejner poskytuje základní služby pro řízení a spouštění komponent (servlety, JSP, JSF, posluchače událostí). Kontejner je zodpovědný za vytváření instancí, inicializaci a volání servletů za podpory http a https protokolu. Tento kontejner je dále zodpovědný za předání požadovaného obsahu do webového prohlížeče klienta. 2 WEBOVÉ TECHNOLOGIE 10 EJB kontejner jezodpovědnýzařízeníspouštěníEJB.VytvářínovéinstanceEJB, řídí jejich životní cyklus a poskytuje služby jako jsou například transakce, bez- pečnost, souběžnost, distribuce, jmenné služby nebo možnost asynchronního užití. (GONCALVES, 2010) Obr. 1: Grafické znázornění rozvržení služeb podle jednotlivých kontejnerů (GON- CALVES, 2010) 2.2 Java EE specifikace Z dostupných dokumentů se specifikacemi byl sestaven přehled vývoje a změn jed- notlivých verzí Java EE. Tento přehled je zobrazen v tabulce číslo 11 v příloze práce. V následující sekci jsou stručně popsány nejvýznamnější technologie Java EE. Servlety jsou odpovědí technologie Java na programování pomocí CGI (Common Gateway Interface). Jedná se o program, který běží na webovém serveru a působí jako střední vrstva mezi požadavkem přicházejícím z webového prohlížeče nebo od jiného HTTP klienta a databází či aplikací na webovém serveru (HALL, 2008). Jelikož servlety běží čistě na serveru uvnitř Java Virtual Machine, není potřeba řešit problémy s kompatibilitou jednotlivých webových prohlížečů. Základem servletu je balíkjavax.servlet obsahujícízákladnírozhraníatřídyimplementovanéarozšiřované všemi servlety. Jádrem této architektury je rozhraní javax.servlet.Servlet, které je vždy potřeba implementovat, ať už přímo nebo formou dědění. Toto rozhraní má definováno pět metod:
Description: