Ověřování nahraditelnosti EJB komponent. Pavel Stuna

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

Download "Ověřování nahraditelnosti EJB komponent. Pavel Stuna"

Transkript

1 Ověřování nahraditelnosti EJB komponent Pavel Stuna 17. května 2005

2 Abstract Verification of EJB components substitutability The aim of this diploma thesis is to compare two Enterprise JavaBeans components (version 2.1) from the client-side view. It is assumed, that one of the components is to be replaced with the second one, so two versions of one component are compared. EJB component is thought to be some kind of software package, which provides some functionality and also has some requirements. This view of components is defined in ENT component meta-model. There is given a big emphasis on comparing Java classes, which are the main part of EJB components. Theory of subtyping is mentioned here, because it is connected with substitutability. The created program loads the components from JAR-files, compares them and generates a value, from which can be decided the possibility of substitutability. A XML document with detailed descriptions of differences is also generated as a secondary output.

3 Obsah 1 Úvod 1 2 Enterprise JavaBeans Softwarové komponenty J2EE Distribuované vícevrstvé aplikace J2EE komponenty JavaBeans Enterprise JavaBeans Kontejnery v J2EE Architektura EJB (verze 2.1) EJB kontejner Druhy EJB komponent Struktura EJB komponenty Deployment Descriptor Session beans Entity beans Container Managed Persistence Bean Managed Persistence Message-driven beans ENT meta-model Podobnosti v současných komponentních modelech Klasifikační systém Traits (charakteristické rysy) Kategorie rysů ENT meta model EJB komponent Typy komponent Tags (značky) Traits (rysy) Příklad jednoduché EJB komponenty Nahraditelnost komponent Druhy rozdílů Striktní nahraditelnost Podtypování Rozšíření funkčnosti Podtypování funkcí Podtypování atributů

4 5 Použité technologie Programovací jazyk Vývojové prostředí Načtení komponenty Třída JarFile Document Object Model Introspekce Třída ClassLoader Třída Class Třída Field Třída Method Třída Constructor J2EE server Implementace Podtypové relace tříd v Javě Primitivní datové typy Klíčové slovo void Pole Třídy Podtypové relace v ENT meta-modelu Tagy Rysy (traits) Důležité algoritmy Porovnání tříd Operace nad množinou rozdílů Načtení EJB komponent Porovnání EJB komponent Výsledek porovnání EJB komponent Příklad výsledku porovnání Technické nároky programu Ověření funkčnosti Struktura programu cz.zcu.stuna.beancmp cz.zcu.stuna.beancmp.classcmp cz.zcu.stuna.beancmp.entejb cz.zcu.stuna.beancmp.utilities Závěr 47 Literatura Přílohy III IV

5 Prohlášení Prohlašuji, že jsem diplomovou práci vypracoval samostatně a výhradně s použitím citovaných pramenů. V Plzni dne Pavel Stuna,

6 1 Kapitola 1 Úvod Podnikovou softwarovou aplikaci můžeme rozložit do tří vrstev. Nejnižší vrstva zajišťuje úschovu dat (například do databáze nebo souboru). Nejvyšší vrstvou je prezentační logika, která slouží k zobrazování uživatelského rozhraní. Mezi těmito dvěma vrstvami se nachází aplikační logika, která představuje výkonný kód, provádějící převod dat z databázové vrstvy do prezentační logiky. Enterprise JavaBeans (EJB) je komponentní architektura, tvořící aplikační logiku. V této práci se budu zabývat EJB architekturou verze 2.1 (v současnosti je nejnovější verze 3.0). Softwarová komponenta je programový balík, který poskytuje sadu funkcí k řešení společného problému. Zapouzdřuje softwarovou funkcionalitu, umožňuje vícenásobné použití a lze ji použít s více komponentami, čímž se vytvoří softwarová aplikace. Jedna aplikace obsahuje zpravidla několik komponent, které mezi sebou komunikují přes daná rozhraní. Cílem práce je navrhnout a vytvořit program, který porovná dvě EJB komponenty. Z výsledků porovnání by mělo být mimo jiné jasné, zda jedna z komponent může nahradit druhou, aniž by se změnila funkcionalita celé aplikace, jejíž součástí je první z komponent. Nejčastěji se toto porovnání vyžaduje při pořízení novější verze komponenty. V úvodních kapitolách se budu snažit seznámit čtenáře s architekturou EJB. Poté se budu věnovat popisu ENT komponentního meta-modelu, který rozlišuje součásti komponenty podle toho, zda něco poskytují nebo vyžadují. V další kapitole se zmíním o teorii podtypových relací (podtypování, anglicky subtyping), která silně souvisí s nahraditelností. Dále popíši technologie použité na vývoj programu a poslední kapitoly budou patřit popisu implementace programu na porovnávání EJB komponent. V této práci se vyskytují různé anglické technické výrazy, které jsem se pokud to nepůsobí nezvykle rozhodl přeložit. U těchto slov ale vždy při prvním výskytu uvedu i jeho anglický tvar. Nicméně existují termíny, které jsem se rozhodl nepřekládat vůbec, protože jejich anglické názvy jsou v oboru vžité a jejich překlad do češtiny by mohl způsobit nedorozumění (v lepším případě pobavení čtenáře). Jsou to například termíny Enterprise JavaBeans nebo deployment descriptor.

7 2 Kapitola 2 Enterprise JavaBeans Enterprise JavaBeans je komponentní architektura, vyvíjená firmou Sun Microsystems. 2.1 Softwarové komponenty Softwarová komponenta je programový balík, který poskytuje množinu služeb, přístupných přes jedno nebo více rozhraní a je navrhována, implementovaná a testovaná zvlášť před začleněním do softwarové aplikace. Softwarové komponenty musí umět mezi sebou komunikovat, aby mohly být použitelné v jedné aplikaci. Existuje několik standardů pro vývoj softwarových komponent. Jedním z nich je například CORBA (Common Object Request Broker Architecture), který vyvinulo sdružení OMG (Object Management Group). CORBA je otevřená, platformově nezávislá architektura a infrastruktura, kterou počítačové aplikace používají ke spolupráci v síťovém prostředí. Ke komunikaci se využívá protokol IIOP (Internet Inter-Orb Protocol). Více informací najdete v [OMG]. Další z komponentových architektur je COM 1 (Component Object Model). Přestože byla implementována na několika platformách, nejvíce se používá v operačních systémech Microsoft Windows. Další informace viz [COM]. Třetí komponentovou technologií je EJB (Enterprise JavaBeans) firmy Sun. Touto technologií se budu dále zabývat více podrobněji. 2.2 J2EE Protože Enterprise JavaBeans komponenty jsou součástí architektury J2EE, pokusím se zde krátce tuto architekturu představit. V dnešní době se vytváří mnoho distribuovaných podnikových aplikací, a proto je důležité zvýšit rychlost, bezpečnost a spolehlivost tzv. server-side technologií, na nichž jsou většinou tyto aplikace založeny. Samozřejmou snahou je vyvíjet je rychleji, jednodušeji a za méně peněz. Proto se používají technologie, založené na tří-vrstvém modelu například Java 2 Platform, Enterprise Edition (J2EE). 1 Předchůdcem této technologie bylo OLE (Object Linking and Embedding) a COM bude pravděpodobně nahrazen technologií Microsoft.NET.

8 Distribuované vícevrstvé aplikace 3 Tato platforma rozšiřuje standardní Javu (J2SE Java 2 Platform, Standard Edition) o nástroje pro práci s vícevrstevnými aplikacemi třídy a rozhraní pro vývoj aplikace, aplikační server, webový server a databázový server pro běh těchto aplikací. J2EE poskytuje komponentový přístup k návrhu, vývoji a nasazení enterprise (podnikových) aplikací, což vede ke snížení nákladů na návrh a vývoj aplikace. J2EE nabízí vícevrstevný model distribuovaných aplikací, znovupoužitelných komponent, jednotný bezpečnostní model, flexibilní správu transakcí a podporu webových služeb. J2EE je navíc nezávislá na platformě (stejně jako Java samotná). 2.3 Distribuované vícevrstvé aplikace Platforma J2EE používá model distribuovaných mnohovrstevnatých aplikací. Aplikační logika je rozdělena podle funkcí na komponenty, různé komponenty tvořící aplikaci jsou instalovány na různých strojích (počítačích) podle toho, do které vrstvy komponenta patří. Na obrázku 2.1 jsou znázorněny dvě aplikace rozdělené do tří nebo čtyř vrstev. Obrázek 2.1: Vícevrstvé aplikace Klientská vrstva komponenty této vrstvy běží na klientském počítači. Webová vrstva komponenty běží na J2EE serveru. Business vrstva komponenty běží na J2EE serveru. Vrstva podnikového informačního systému (Enterprise IS - EIS) běh na EIS serveru. Tento tří- nebo čtyř-vrstevný model rozšiřuje klasický model klient/server, když vkládá více-vláknový aplikační server mezi klientskou aplikaci a úložiště dat.

9 Kontejnery v J2EE J2EE komponenty J2EE aplikace je tvořena z komponent. Komponenta obsahuje potřebné třídy, rozhraní a další soubory; každá komponenta komunikuje s ostatními v dané aplikaci. Specifikace J2EE určuje 3 druhy komponent: Klient aplikace nebo applet běžící na klientském počítači. Java Servlet nebo JavaServer Pages (JSP) tyto komponenty běží na webovém serveru. Enterprise JavaBeans (EJB, enterprise beans) business komponenty, běží na serveru. J2EE komponenty jsou naprogramovány v jazyku Java a jsou překládány stejným způsobem jako jakýkoliv jiný program v Javě. Rozdíl mezi komponentami a normálními třídami je ten, že J2EE komponenty jsou sestaveny do aplikace, je ověřena jejich správnost podle J2EE specifikace a nakonec jsou nasazeny do výroby, kde jsou spouštěny a řízeny J2EE serverem. 2.5 JavaBeans Enterprise JavaBeans Existuje ještě technologie JavaBeans [JB], která ale s Enterprise JavaBeans nemá mnoho společného. JavaBeans je sice také komponentový architektura, ale komponenty zde hrají roli pouze při vývoji desktopové aplikace, nejsou instalovatelné do aplikačního serveru. Nejčastěji se JavaBeans používají při tvorbě grafického uživatelského rozhraní. JavaBeans komponenty jsou součástí prezentační vrstvy, zatímco EJB komponenty tvoří aplikační (business) vrstvu. 2.6 Kontejnery v J2EE Kontejner (jako součást J2EE) je rozhraní mezi komponentou a samotnou implementací aplikačního serveru (která se výrobce od výrobce liší). Předtím než může být komponenta spuštěna, musí být vložena (instalována) do kontejneru. Před vložením do kontejneru se nastaví pro každou komponentu její specifické vlastnosti i vlastnosti celé aplikace. Do těchto vlastností patří například nastavení zabezpečení a správy transakcí, nastavení jmenných a adresářových služeb (Java Naming and Directory Interface JNDI, viz [JNDI]) a nastavení vzdáleného připojení. Pro každý druh komponentové technologie (webová, EJB, klientská komponenta) existuje jeden kontejner. Na obrázku 2.2 je znázorněna architektura J2EE z pohledu kontejnerů. J2EE se skládá z těchto částí: J2EE server běhové prostředí J2EE. J2EE server se skládá z EJB a webového kontejneru. EJB kontejner má na starosti spouštění a běh EJB komponent J2EE aplikace. Webový kontejner řídí spouštění a běh JSP skriptů a servletů J2EE aplikace.

10 Architektura EJB (verze 2.1) 5 Kontejner aplikačního klienta řídí spouštění a běh komponent aplikačního klienta. Aplikační klienti a jejich kontejner běží na straně klientského počítače. Appletový kontejner Má na starosti spouštění a běh appletů. Skládá se z webového prohlížeče a z Java Plugin, obojí běží spolu na straně klientského počítače. Obrázek 2.2: Kontejnery v J2EE Kontejnery mají na starost i další (neovlivnitelné) vlastnosti. Je to například životní cyklus komponenty, sdílení připojení k databázi, perzistenci (stálost) dat a přístup k aplikačnímu rozhraní J2EE. 2.7 Architektura EJB (verze 2.1) EJB specifikace je jedno z aplikačních programových rozhraní (API) definovaných v J2EE. EJB komponenty poskytují funkce pro: Vzdálenou komunikaci s CORBA Perzistenci dat Transakční zpracování Souběžný přístup Práce s událostmi Jmenné a adresářové služby (JNDI) Bezpečnost EJB komponenty lze charakterizovat: EJB komponenta typicky obsahuje business (aplikační) logiku, která pracuje s nějakými (podnikovými enterprise) daty.

11 Architektura EJB (verze 2.1) 6 Instance EJB komponenty jsou vytvářeny a spravovány v době běhu (runtime) kontejnerem. EJB komponenta může být upravena v době tzv. nasazení (instalace do kontejneru) editací atributů prostředí. Atributy pro správu transakcí a bezpečnostní atributy jsou odděleny od zdrojového kódu třídy komponenty (ejb-class). To umožňuje tyto atributy upravovat ještě před nasazením komponenty do kontejneru. Přístup klienta ke komponentě je zprostředkován kontejnerem, ve kterém je komponenta nasazena. Mohou se vyskytovat specializované EJB kontejnery, poskytující nějaké nové služby navíc. EJB komponenta může být vložena do aplikace, aniž by bylo potřeba jejího zdrojového kódu nebo rekompilace. Obrázek 2.3: RMI - Remote Method Invocation Každá EJB komponenta obsahuje tzv. ejb-třídu (ejb-class), což je samotná implementace funkčnosti komponenty. Kontejner ji použije při vytvoření instance této komponenty. Dále EJB komponenty 2 obsahují dvě rozhraní home a remote. Rozhraní home slouží k vytváření, rušení a vyhledávání komponenty. Rozhraní remote je používáno klientem (klientskou aplikací, servletem nebo jinou EJB komponentou) pro přístup k business metodám. Tato rozhraní slouží jako zástupce (spojka) skutečné implementace. Klient volá metody zástupce, který pošle parametry serveru a ten pošle výsledek volání metody zpět klientovi. Toto se odehrává v rozhraní RMI (Remote Method Invocation), které slouží ke vzdálenému volání metod [RMI]. Na obrázku 2.3 je v levém obdélníku znázorněn klient, v pravém je server (zde představovaný kontejnerem viz. dále). Komunikace mezi nimi probíhá přes rozhraní RMI a JMS [JMS]. JMS (Java Message Service) je rozhraní asynchronní komunikace pomocí zpráv. 2 Kromě komponent typu message-driven beans. Ty jsou řízené zasíláním zpráv, proto tato rozhraní nepotřebují.

12 Architektura EJB (verze 2.1) 7 EJB komponenta může obsahovat tzv. lokální rozhraní. Ta jsou dvě a odpovídají rozhraním home a remote. Označují se local-home a local. Tyto rozhraní slouží k urychlení práce. Používají se od verze EJB 2.0 a jsou nepovinná (volitelná). Pokud klient (tím může být i jiná komponenta) běží ve stejném virtuálním stroji jako aplikační server, může se použít pro vytvoření instance komponenty rozhraní local-home. Poté se pro volání metod komponenty využívá rozhraní local. Při tomto volání se nevytváří spojky (stubs) a při volání metod se parametry předávají odkazem (při použití remote rozhraní se parametry předávají hodnotou posíláním zpráv, viz. obrázek 2.3) EJB kontejner Do EJB kontejneru se vkládají EJB komponenty. Do jednoho kontejneru může být vloženo více komponent, tyto komponenty jsou v kontejneru spravovány spouštěny a řízeny. EJB kontejner může komponentu pasivovat (odložit do perzistentního úložiště) nebo naopak aktivovat. Kontejner může také spravovat perzistenci entitních komponent (viz dále) nebo řídit transakční zpracování. Kontejner je odpovědný za zpřístupnění home rozhraní skrz JNDI rozhraní. Díky tomu může klient vyhledat určitou komponentu pomocí jejího JNDI názvu. Na obrázku 2.4 je zobrazen EJB kontejner z pohledu klientské aplikace. EJB objekty jsou jednotlivé instance jedné komponenty. Obrázek 2.4: Pohled klienta na EJB kontejner Druhy EJB komponent V EJB architektuře existují 3 druhy komponent. Session Beans (dočasné komponenty) mají relativně krátkou dobu života (proto dočasné) a představují nějakou akci. Entity Beans (entitní komponenty) poskytují objektový pohled na data (entity) z databáze. Message-Driven Beans (událostmi řízené komponenty) se spouští na základě přijetí zprávy od klienta. Stejně jako session beans představují nějakou akci.

13 Session beans Struktura EJB komponenty EJB komponenta je distribuována v Java archívu. Uvnitř archívu jsou třídy komponenty (rozhraní home, remote, ejb-class,... ) a adresář META-INF, který musí obsahovat manifest (soubor MANIFEST.MF) a soubor ejb-jar.xml, neboli deployment descriptor. Tento soubor obsahuje informace o komponentě a lze díky němu upravit specifické vlastnosti komponenty bez nutnosti rekompilace tříd komponenty. Takto uložená komponenta může být nasazena na jakýkoliv aplikační server, který podporuje technologii EJB. Informace nutné pro běh na konkrétním aplikačním serveru se uloží do adresáře META-INF. Například pro kontejner serveru JBoss je to jboss.xml, pro server firmy Sun je to sun-ejb-jar.xml. Tyto soubory většinou obsahují názvy komponent, které jsou uloženy v archívu a jejich JNDI názvy Deployment Descriptor Deployment Descriptor je soubor, ve kterém jsou v XML formátu uloženy informace o EJB komponentě. Některé z těchto informací se mohou měnit a tím se částečně mění i funkčnost komponenty. Lze například změnit práva pro přístup ke komponentě nebo jejím metodám. Ostatní informace mají informativní charakter. Z deployment descriptoru lze zjistit typ komponenty, jaké další komponenty jsou vyžadovány nebo jakým způsobem je řešeno spojení s databází (u entitních komponent). 2.9 Session beans Tyto komponenty slouží k zapouzdření aplikační (business) logiky. Třída této komponenty musí implementovat rozhraní javax.ejb.sessionbean. Pro správu instancí SB (session beans) kontejnerem je velmi důležité, zda si instance udržuje vlastní stav zpracování nebo ne. Tato informace je uložena v deployment descriptoru. V zásadě platí, že stavové komponenty jsou skutečně vytvářeny pro každého klienta zvlášť (vztah 1:1), zatímco bezstavové komponenty mohou být sdíleny více klienty (tzv. pooling), jedna bezstavová komponenta může tedy obsluhovat několik klientů. Stavové komponenty mohou být v určitém stavu uloženy do perzistentního úložiště, odkud mohou být opět načteny. Pokud je instance session bean komponenty využívána delší dobu, může být pasivována, tj. dočasně uložena do perzistentního úložiště. Tím může kontejner ušetřit paměť. Jestliže přijde do kontejneru požadavek na uloženou komponentu, kontjener ji aktivuje (obnoví). Před těmito činnostmi jsou volány metody komponenty ejbpassivate() a ejbactivate(). Do těchto metod lze napsat ošetření dat, která nemohou být uložena (například připojení k databázi). Obě metody jsou součástí i entitních komponent.

14 Message-driven beans Entity beans Entitní komponenta reprezentuje objektově orientovaný pohled na libovolnou entitu uloženou v perzistentním (trvalém) úložišti (v relační databázi) nebo na entitu implementovanou v existující podnikové aplikaci. Doba života těchto komponent je dána existencí odpovídajících záznamů (entit) v databázi. Po celou dobu své existence se tyto komponenty nachází v prostředí kontejneru, který pro ně zajišťuje bezpečnost, řízení souběžného přístupu, transakcí, perzistence a další služby. Třída entitní komponenty musí implementovat rozhraní javax.ejb.entitybean. V této třídě musí být implementovány metody ejbcreate (vytvoří novou instanci), ejbpostcreate (zde se určí další vlastnosti instance, například primární a cizí klíč), ejbactivate, ejbpassivate, ejbremove (odstranění dat z databáze), ejbload a ejbstore (synchronizace instance s její perzistentní podobou), ejbfind (vyhledání instance) Container Managed Persistence Perzistence dat entitních komponent může být zajištěna buď kontejnerem nebo vývojářem komponenty (ve zdrojovém kódu komponenty). Pokud je perzistence řízena kontejnerem, vývojář komponenty se nemusí starat o připojení k databázi, pouze se v deployment descriptoru určí namapování dat z databáze do entitní komponenty a o ostatní se postará EJB kontejner. Dále se u tohoto druhu komponent vytváří tzv. abstraktní schéma perzistence, které určuje vztahy s ostatními entitními komponentami. Abstraktní schéma je také uloženo v deployment descriptoru Bean Managed Persistence Perzistence těchto komponent je zajištěna autorem komponenty ve zdrojovém kódu komponenty (ve třídě ejb-class). Vývojář je tedy plně odpovědný za připojení k databázi (například použitím JDBC) a přístup k datům, který implementuje v metodách ejbcreate, ejbremove, ejbfind, ejbload a ejbstore a případně i v business metodách třídy komponenty Message-driven beans Tyto komponenty jsou novinkou v EJB architektuře od verze 2.0. Jsou to komponenty řízené (aktivované) zprávami. Proto tyto beany nemají vzdálené ani home rozhraní, veškerá komunikace probíhá díky JMS systému pro zasílání zpráv. Message-driven komponenta je konzumentem zpráv, klient jí zprávy zasílá. Všechny instance jedné message-driven komponenty jsou ekvivalentní, a proto příchozí požadavek klienta může být zpracován libovolnou instancí. Třída messagedriven komponenty musí implementovat rozhraní javax.ejb.messagedrivenbean.

15 10 Kapitola 3 ENT meta-model ENT meta-model je komponentní model, který definoval P.Brada v [BR03] ([BR04]). Komponentní model [BR04] definuje, mimo jiné, druhy struktur, které jsou viditelné na rozhraní komponenty a jejich konkrétní syntaxi. Komponentní modely jsou implementovány v komponentních rámcích (frameworks); příkladem takového rámce je třeba CORBA nebo EJB. Komponentní meta-model definuje slovník a struktury, ze kterých jsou odvozeny schopnosti konkrétního komponentního modelu. Některé meta-modely jsou tvořeny na zelené louce, jiné vznikly odvozením z běžných částí už existujících komponentních modelů. 3.1 Podobnosti v současných komponentních modelech Jak už bylo zmíněno, existuje více komponentních modelů (CORBA, COM, EJB). A každý z těchto modelů používá jiná pojmenování pro víceméně stejné (nebo podobné) pojmy. Specifikace daného rozhraní komponenty se skládá z prvků (elementů), které definují schopnosti komponenty přístupné zvenku. Většina těchto prvků je jednoznačně pojmenována (v rozsahu rozhraní komponenty) a mohou být rozlišeny podle mnoha charakteristik (vlastností). Elementy můžeme rozlišovat například podle toho, zda reprezentují data nebo funkcionalitu, zda je element ve formě jedné položky nebo struktury nebo zda je element konstantou, instancí nebo typem. Elementy lze také rozlišit podle toho, v jaké části životního cyklu komponenty jsou používány. 3.2 Klasifikační systém Nalezené charakteristiky můžeme formalizovat do klasifikačního systému. Objekt se klasifikuje tzv. ENT klasifikátorem, což je uspořádaná osmice (nature,

16 Kategorie rysů 11 kind, role, granularity, construct, presence, arity, lifecycle), kde každý prvek reprezentuje podmnožinu (většinou jedno-prvkovou) jemu odpovídající množiny. Tyto množiny jsou vytvořeny z nalezených charakteristik: N ature = {syntax, semantics, nonf unctional}, Kind = {operational, data}, Role = {provided, required, neutral}, Granularity = {item, structure, compound}, Construct = {constant, instance, type}, P resence = {mandatory, permanent, optional}, Arity = {single, multiple}, Lif ecycle = {development, assembly, deployment, setup, runtime} Z klasifikátoru lze tedy celkem jasně poznat význam a postavení klasifikovaného prvku v rozhraní komponenty. Tento klasifikační systém postačuje na většinu komponentních modelů, je však možné ho pro určitý model rozšířit nebo zúžit. Více v [BR03] a [BR04]. 3.3 Traits (charakteristické rysy) Aby mohl být komponentní model bližší lidskému vnímání, zavedeme tzv. charakteristické rysy komponenty (traits [BR04]). Rys je definován uspořádanou čtveřicí (název, metatyp, klasifikátor, množina hodnot), kde název je názvem charakteristického rysu (traitu), metatyp je nadtyp všech prvků tohoto rysu (traitu), klasifikátor je uspořádaná n-tice, tvořená prvky množin z charakteristik definovaných v předcházející části. Množina hodnot je množina všech povolených hodnot rysu. Informace o meta-typu a o klasifikátoru jsou zjištěny z dřívější analýzy nebo z návrhu konkrétního komponentního modelu. Účelem je vytvořit kompletní, ale minimální množinu meta-typů a klasifikátorů, která může spolehlivě rozlišit požadované charakteristické rysy prvků. 3.4 Kategorie rysů Různé rysy lze dále třídit do kategorií (category sets). Tímto tříděním lze ještě lépe zpřehlednit komponentní model. Můžeme například vytvořit dvě kategorie, kde do jedné kategorie se zařadí prvky s nějakou funkcionalitou a do druhé kategorie se zařadí prvky s datovým významem. ENT meta model je založen na roztřídění částí komponentního modelu do těchto tří kategorií podle charakteristiky Role. Komponenta obsahuje elementy, které komponenta: Poskytuje (Exports, role ={provided}), Vyžaduje (Needs, role ={required})

17 ENT meta model EJB komponent 12 Vyžaduje i poskytuje (Ties, role ={provided, required}) A právě z počátečních písmen anglických názvů těchto kategorií je složen název ENT meta modelu (Exports-Needs-Ties). Analogii tohoto dělení lze vidět ve funkcích v programovacích jazycích funkce poskytuje nějaký výstup (Exports), požaduje nějaké parametry (Needs) a některé parametry mohou být současně výstupními parametry (Ties, například ukládání výsledků do parametrů typu ukazatel). Díky tomuto rozdělení se tedy lze dívat na komponenty jako na funkce, což může být užitečné právě při porovnávání komponent. 3.5 ENT meta model EJB komponent V této části bude specifikován komponentní model Enterprise JavaBeans na základě dělení do kategorií Exports, Needs a Ties (ENT). Podrobnější informace o tomto modelu viz [BR04]. Tagy (tags) jsou určeny názvem a množinou povolených hodnot, odkazy na zdroje odkazují na zdrojový kód komponenty (deployment descriptor nebo třídu), kde je trait nebo tag definován Typy komponent Meta-model Enterprise JavaBeans definuje tři typy komponent: SessionBean, EntityBean a MessageDrivenBean. Pro stručnost jejich definicí se deklarují následující dvě množiny definic tagů a traitů, společných všem typům: tagset common = security id traitset common = T provided T required, kde T provided = { business interfaces, home interfaces, security roles} a T required = { business references, msg destination references, web service ref erences, home ref erences, env entries, resource managers, resource env ref erences, timer service} SessionBean tags: tagset common {state, transaction} definice množiny rysů: traitset common { web service endpoint} EntityBean tags: tagset common {persistence, reentrancy, schema} definice množiny rysů: traitset common {attributes} MessageDrivenBean tags: tagset common {transaction, msg type} definice množiny rysů: traitset common { message consumed, msg activation}

18 ENT meta model EJB komponent Tags (značky) msg type= Identif iers, standardně javax.jms.messagelistener Java rozhraní (interface) pro příjem zpráv. Zdroj: deployment descriptor (element message type). persistence = {container, bean}, standardně ɛ (pouze u entitních komponent) Zdroj: deployment descriptor (element persistence). reentrancy = {reentrant, non reentrant}, standardně reentrant Mód reentrance (znovu-vstoupení). Zdroj: deployment descriptor (element reentrant). schema = Identif iers, standardně ɛ Název abstraktního schématu. Užívá se pouze, když persistence = container. Zdroj: deployment descriptor (element abstract-schema-name). security id = {use caller, run as}, standardně use caller Jakou totožnost použít pro ověření. Zdroj: deployment descriptor (element security-identity). state = {statef ul, stateless}, standardně ɛ Způsob chování Session Bean komponenty (stavová nebo bezstavová). Zdroj: deployment descriptor (element session-type). transaction = {container, bean}, standardně ɛ Správce transakcí (kontejner nebo komponenta). Zdroj: deployment descriptor (element transaction-type) Traits (rysy) attributes perzistentní data entitní komponenty. meta-typ = attribute klasifikátor = ({syntax}, {data}, {provided}, {item}, {instance}, {permanent}, {multiple}, Lifecycle) tags: status = {normal, primary key} Pozn.: Zdroj: deployment descriptor pro CMP entitní komponenty (elementy cmp field a primkey field). business interfaces základní funkcionalita komponenty. meta-typ = interf ace klasifikátor = ({syntax}, {operational}, {provided}, {structure}, {type}, {mandatory}, {multiple}, {development, assembly, deployment, runtime}) tags: locality = {local, remote} Pozn.: Zdroj: deployment descriptor (elementy remote a local), zdrojový kód. business references rozhraní použitých komponent v dané komponentě. meta-typ = interf ace klasifikátor = ({syntax}, {operational}, {required}, {structure}, {instance},

19 ENT meta model EJB komponent 14 {permanent}, {single}, Lifecycle) tags: locality = {local, remote} Pozn.: Zdroj: deployment descriptor (části elementů ejb-ref a ejb-local-ref). env entries proměnné prostředí, které komponenta vyžaduje. meta-typ = structure env entry type klasifikátor = ({syntax}, {data}, {required}, {item}, {instance}, {permanent}, {single}, Lifecycle) tags: Pozn.: Zdroj: deployment descriptor (element env-entry), typem proměnné musí být primitivní datový typ (například java.lang.integer). home interfaces správa životního cyklu komponenty. meta-typ = interf ace klasifikátor = ({syntax}, {operational}, {provided}, {structure}, {type}, {mandatory}, {multiple}, {development, assembly, deployment, setup}) tags: locality = {local, remote} Pozn.: Zdroj: deployment descriptor (elementy home a local-home). Přestože rozhraní typu home mohou být použity v době běhu programu (run-time), jejich nejdůležitější role je v době nastavení (set-up). home references přístup ke komponentám, které komponenta používá. meta-typ = interf ace klasifikátor = ({syntax}, {operational}, {required}, {structure}, {instance}, {permanent}, {single}, {development, assembly, deployment, setup}) tags: locality = {local, remote} bean = Identifiers Pozn.: Zdroj: deployment descriptor (elementy ejb-ref a ejb-local-ref). msg activation komunikační aktivační vlastnosti komponent typu messagedriven. meta-typ = map klasifikátor = ({syntax}, {data}, {provided}, {item}, {instance}, {permanent}, {multiple}, {development, deployment}) tags: Pozn.: Zdroj: deployment descriptor (element activation-config-property). msg consumed názvy tříd zpráv, které komponenta přijímá. meta-typ = class klasifikátor = ({syntax}, {operational}, {provided}, {item}, {instance}, {permanent}, {multiple}, {development, assembly, runtime}) tags: Pozn.: Zdroj: Zdrojový kód (implementace metody onmessage()). msg destination references cíle komunikace pomocí zpráv. meta-typ = structure msg destination ref type klasifikátor = ({syntax}, {data}, {required}, {item}, {instance}, {permanent}, {single}, Lifecycle}) tags: Pozn.: Zdroj: deployment descriptor (element message-destination-ref).

20 ENT meta model EJB komponent 15 resource env references odkazy na potřebné zdroje. meta-typ = map klasifikátor = ({syntax}, {data}, {required}, {item}, {instance}, {permanent}, {single}, {development, deployment, setup, runtime}) tags: Pozn.: Zdroj: deployment descriptor (element resource-env-ref). resource managers správci zdrojových prostředků. meta-typ = map klasifikátor = ({syntax}, {operational}, {required}, {structure}, {instance}, {permanent}, {single}, {development, deployment, setup, runtime}) tags: sharing = {shareable, unshareable} authentication = {application, container} Pozn.: Zdroj: deployment descriptor (element env-entry), typem proměnné musí být primitivní datový typ (například java.lang.integer). security roles bezpečnostní role spojené s business rozhraními. meta-typ = Identif iers klasifikátor = ({nonfunctional}, {operational}, {provided}, {item}, {constant}, {permanent}, {na}, {assembly, deployment}) tags: Pozn.: Zdroj: deployment descriptor (element security-role-ref). timer service reakce na časové události. meta-typ = interf ace klasifikátor = ({syntax}, {operational}, {required}, {structure}, {type}, {permanent}, {single}, {development, setup, runtime}) tags: Pozn.: Zdroj: Zdrojový kód. web service endpoint přístup k funkcionalitě pomocí webových služeb. meta-typ = interface sei klasifikátor = ({syntax}, {operational}, {provided}, {structure}, {type}, {permanent}, {multiple}, {development, assembly, deployment, runtime}) tags: Pozn.: Zdroj: deployment descriptor (element service-endpoint), pouze u bezstavových (stateless) komponent typu session bean. web service references odkazy na používané webové služby. meta-typ = structure service ref group klasifikátor = ({syntax}, {operational}, {required}, {structure}, {instance}, {permanent}, {multiple}, {development, deployment, setup, runtime}) tags: Pozn.: Zdroj: deployment descriptor (element service-ref) Příklad jednoduché EJB komponenty Následuje příklad jednoduché session komponenty. Zde je uveden deployment descriptor komponenty Fyzika2, která používá další komponentu Matematika2

21 ENT meta model EJB komponent 16 (viz element ejb-ref): <enterprise-beans> <session> <ejb-name>fyzika2</ejb-name> <home>fyzika2.interfaces.fyzika2home</home> <remote>fyzika2.interfaces.fyzika2</remote> <ejb-class>fyzika2.ejb.fyzika2session</ejb-class> <session-type>stateless</session-type> <transaction-type>container</transaction-type> <ejb-ref> <ejb-ref-name>matematika2</ejb-ref-name> <ejb-ref-type>session</ejb-ref-type> <home>matematika2.interfaces.matematika2home</home> <remote>matematika2.interfaces.matematika2</remote> <ejb-link>matematika2</ejb-link> </ejb-ref> </session>... </enterprise-beans> Značky (tags): state = stateless, transaction = container Rysy (traits): business interfaces = {(ɛ, f yzika2.interf aces.f yzika2, {(locality, remote)}, ;)} home interfaces = {(ɛ, f yzika2.interf aces.f yzika2home, {(locality, remote)}, ;)} business references = {(M atematika2, matematika2.interf aces. Matematika2, {(locality, remote)}, ;)} home references = {(M atematika2, matematika2.interf aces. Matematika2Home, {(locality, remote)}, ;)}

22 17 Kapitola 4 Nahraditelnost komponent Objekt je nahraditelný jiným objektem, pokud po nahrazení nedojde ke změně funkčnosti systému, ve kterém docházi k nahrazení. Na nový objekt, který má nahradit původní, můžeme klást různě přísná omezení. Podle toho rozlišujeme několik druhů nahraditelnosti striktní (podtypová), kontextová nebo částečná [BR03]. Definice nahraditelnosti, ve které jsou zahrnuty pouze komponenty, které se přímo účastní nahrazení [WZ88]: Nahrazující komponenta (která je podtypem původní) by měla být použitelná všude, kde je očekávaná původní komponenta (která je nadtypem nahrazující), bez toho, že si klient všimne změny. Úkolem této práce bylo porovnání pouze na základě znalostí obou komponent, bez jejich dalšího kontextu. K dispozici máme pouze obě komponenty a nic jiného. Budeme tedy vyžadovat pouze striktní (podtypovou) nahraditelnost, kde nás okolí (kontext) komponenty nezajímá. 4.1 Druhy rozdílů Pro zjištění možnosti nahraditelnosti musíme komponenty porovnat. Výsledkem porovnání (nejen komponent) je nalezený rozdíl (pokud nějaký je). V [BR03] byla vytvořena množina druhů rozdílů Dif f erences. Do této množiny jsem pro větší odlišení přidal navíc tři druhy Insertion, Deletion a U nknown. Differences = {None, Insertion, Specialization, Deletion, Generalization, Mutation, Unknown} Rozdílem dvou objektů je pak prvek množiny Dif f erencies, který je generován funkcí diff: diff(σ 1, σ 2 ) = none, pokud σ 1 = σ 2. (žádný rozdíl) diff(σ 1, σ 2 ) = insertion, pokud σ 1 není definován a σ 2 je. (vložení) diff(σ 1, σ 2 ) = specialization, pokud σ 2 rozšiřuje vlastnosti σ 1 (σ 2 je podtypem σ 1 ). (specializace)

23 Podtypování 18 diff(σ 1, σ 2 ) = deletion, pokud σ 2 není definován a σ 1 je (smazání). diff(σ 1, σ 2 ) = generalization, pokud σ 1 rozšiřuje vlastnosi σ 2 (σ 1 je podtypem σ 2 ). (generalizace) diff(σ 1, σ 2 ) = mutation, pokud porovnání obsahuje příznaky specializace (nebo vložení) i generalizace (nebo smazání). (mutace) diff(σ 1, σ 2 ) = unknown, pokud nelze objekty porovnat (například u rekurzivních datových typů (viz. dále). (neznámý rozdíl). 4.2 Striktní nahraditelnost Nahrazující komponenta (C r ) může nahradit stávající (původní) komponentu (C c ), pokud její rozhraní poskytuje stejnou nebou rozšířenou funkčnost a požaduje stejné nebo obecnější vstupy. Přesná definice striktní nahraditelnosti je v [BR03]. Striktní nahraditelnost můžeme vyjádřit pomocí ENT meta-modelu (podle [BR03], s přidáním nových druhů rozdílů): Nahrazující komponenta s reprezentací ENT C r = {E r, N r, T r } je striktní náhradou za současnou komponentu C c = {E c, N c, T c }, pokud diff(e c, E r ) = {none, insertion, specialization}, diff(n c, N r ) = {none, deletion, generalization} a diff(t c /A, T r /A) = {none, insertion, specialization}. 4.3 Podtypování Podtypování je nejčastěji definováno zákonem nahraditelnosti Barbary Liskovové (Liskov Substitutability Principle) [LI88]: To co je požadováno, je něco jako následující vlastnost nahrazení: jestliže pro každý objekt o 1 typu S existuje objekt o 2 typu T takový, že v každém programu P s výskytem typu T se chování P při nahrazení o 2 objektem o 1 nezmění, pak S je podtypem T. Relace podtypování se značí S <: T (S je podtypem T ). Tento vztah můžeme vyjádřit i pomocí funkce diff: diff(s, T ) = generalization. Toto je pouze jedna z mnoha definic podtypování. Většina však ztotožňuje podtypování s nahrazením, to znamená že pokud a je podtypem b, a může b také kdykoliv nahradit.

24 Podtypování Rozšíření funkčnosti Pokud máme dvě třídy (objektové typy) S a T, kdy S má všechny atributy i funkce stejné jako T a navíc obsahuje libovolný počet nových metod či atributů, pak S je podtypem T. Jinak řečeno S obsahuje novou funkčnost a zároveň poskytuje stejnou funkčnost jako třída T. Pokud tedy bude třída S použita v programu, který původně očekával na jejím místě původní třídu T, program bude bez problémů přeložen a navenek nepůjde poznat, že se jedná o novější třídu. Třída S tedy může nahradit třídu T Podtypování funkcí Mějme dvě funkce stejného jména (například foo). Původní (první) funkce měla předpis R 1 foo(p 1 ), nahrazující (druhá) funkce má předpis R 2 foo(p 2 ), kde R i je návratový typ funkce a P i je typ parametru funkce. Návratové typy Funkce foo je volána na nějakém místě v nějakém programu s parametry typu P 1 a poskytuje výsledek návratového typu R 1. Výsledek funkce se v programu ukládá do proměnné typu R 1. Aby tedy druhá funkce mohla nahradit funkci první, musí být z návratového typu druhé funkce možné odvodit objekt třídy R 1. A to lze jen tehdy, pokud R 2 <: R 1 (v objektových jazycích může potomek nahradit svého rodiče, ale opačně to nejde, proto R 2 je potomkem R 1 ). Kdyby například program očekával jako výsledek třídu se dvěma atributy (veřejnými, například souřadnice x, y) a nová funkce by poskytovala výsledek pouze s jedním atributem, který je stejný jako jeden ze dvou atributů původního návratového typu (například x), došlo by ke ztrátě informace (nemáme informace o očekávané souřadnici y), proto by nová funkce nemohla nahradit funkci původní. Pro návratové typy funkcí tedy platí, že nová funkce musí poskytovat buď výsledek stejného typu jako původní funkce nebo výsledek se stejnými informacemi a nějakými informacemi navíc (výsledek s přidanou hodnotou ). Této vlastnosti se říká kovariance. Návratové typy funkcí jsou tedy kovariantní. Argumenty Opačné je to ale u argumentů funkcí. Nová funkce nesmí mít větší nároky na argumenty (vstupy) než původní funkce. V místě volání jsou totiž funkci předávány argumenty původního typu. Pokud by nová funkce požadovala argument typu s přidanou hodnotou navíc, nešlo by nový typ změnit přetypováním. Této vlastnosti se říká kontravariance. Typy argumentů funkcí jsou kontravariantní Podtypování atributů Všechny společné veřejně přístupné atributy obou tříd (původní i nové) musí být stejných typů. Veřejné atributy totiž mohou být čteny (podobnost s návratovým typem funkce), zároveň však do nich může být zapisováno (podobnost s argumenty funkcí). Jedině stejné typy jsou svými nadtypy i podtypy. Jestliže typy atributů budou různé, není možné rozhodnout, zda mezi nimi platí relace

25 Podtypování 20 podtypování nebo nadtypování. Při porovnání těchto dvou atributů by funkce dif f vrátila hodnotu mutation (mutace). Atributy jsou tedy invariantní. Více o podtypování v [SI02] a v [SI03].

26 21 Kapitola 5 Použité technologie V této kapitole se budu věnovat technologiím, které jsem se rozhodl využít při psaní programu. Objasním důvody pro výběr programovacího jazyka a vývojového prostředí. 5.1 Programovací jazyk Protože komponenty se mají porovnávat přímo tak, jak jsou distribuovány (v tzv. Java archívu), nebudeme mít k dispozici zdrojový kód komponenty. K práci s přeloženým kódem Javy (tzv. byte-kód) existují v programovacím jazyku Java pomocné třídy, které tuto práci významně zjednodušují. Například pro načtení Java-archívu existuje třída JarFile, pro načtení informací o přeložené třídě existují třída ClassLoader a Class. Tyto třídy umožňují tzv. introspekci. Díky těmto okolnostem jsem pro implementaci porovnání EJB komponent zvolil programovací jazyk Java (J2SE verze a platformu J2EE 1.4). 5.2 Vývojové prostředí Program jsem vytvářel ve vývojovém prostředí Eclipse 3.0 [Ecl]. Toto prostředí jsem zvolil pro jeho výbornou správu zdrojových kódů (refactoring, doplňování kódu, atd.) a pro zabudovanou podporu nástroje pro kompilaci v Javě programu Apache Ant [ANT]. Tento program je obdobou programu make, používaného pro kompilaci programů v jazyce C. Místo souboru Makefile se vytvoří soubor build.xml (standardně) a do něj se zapisují ve formátu XML úkoly, které má Ant provádět. Pomocí tohoto nástroje lze jednoduše vytvářet adresáře, kopírovat soubory, vytvářet JAR-soubory a samozřejmě kompilovat. Následuje příklad cíle programu Ant, který přeloží všechny zdrojové soubory z adresáře daném proměnnou src, uloží je do adresáře build a při kompilaci se použijí externí třídy uložené v adresáři j2eedir. Tento cíl compile závisí na jiném cíli init, který se automaticky provede před provedením compile. Soubory typu buildfile jsou díky XML dobře čitelné, narozdíl od souborů typu Makefile.

27 Načtení komponenty 22 <target name="compile" depends="init" description="kompilace"> <javac srcdir="${src}" destdir="${build}" classpath="${j2eedir}"/> </target> 5.3 Načtení komponenty V následujících odstavcích stručně popíšu třídy nebo rozhraní, která jsem použil pro načtení EJB komponenty Třída JarFile EJB komponenty jsou distribuovány v jednom balíku, což je Java-archív, ve kterém jsou uloženy potřebné třídy, adresář META-INF a případně další potřebné soubory. K načtení Java-archívu (JAR) jsem využil třídu java.util.jar.jar- File Document Object Model Pro načtení deployment descriptoru, který je XML dokumentem, jsem použil třídy a rozhraní implementující Document Object Model. DocumentBuilder Třída javax.xml.parsers.documentbuilder poskytuje metody pro rozpoznání elementů v XML dokumentu (tzv. parsování). Instance této třídy se vytváří ve třídě javax.xml.parsers.documentbuilderfactory. Document Rozhraní org.w3c.document reprezentuje XML dokument, načtený (parsovaný) metodou parse() ve třídě DocumentBuilder. Document poskytuje metody pro přístup ke všem elementům XML dokumentu. Obsahuje metodu getdocument- Element(), která vrací kořenový element (rozhraní org.w3c.dom.element). Rozhraní Document i Element jsou potomky rozhraní Node. Toto rozhraní představuje jeden uzel stromu dokumentu. Následuje ukázka načtení XML souboru. V příkladu je cesta k souboru uložena v proměnné path. Třída DocumentBuilderFactory slouží k vytvoření instance třídy DocumentBuilder a je ze stejného balíku. File f = new File(path); Document doc = null; DocumentBuilderFactory factory=documentbuilderfactory.newinstance(); try { DocumentBuilder builder = factory.newdocumentbuilder(); doc = builder.parse(f); } catch (...

28 J2EE server Introspekce Programovací jazyk Java umožňuje tzv. introspekci. To znamená, že objekt může díky introspekci získat informace o sobě, třídě, ze které je vytvořen nebo o své rodičovské třídě. Následuje stručný popis tříd, poskytujících funkce pro introspekci Třída ClassLoader Objekt třídy java.lang.classloader slouží k načítání tříd. Umožňuje načíst třídu ze souboru nebo z jakéhokoliv proudu bytů (zdrojem může být například jiná aplikace nebo proud bytů přijatý z Internetu) Třída Class Výsledkem načtení třídy je instance třídy java.lang.class. Každý objekt v běžící Java aplikaci obsahuje odkaz na svou třídu (přesněji na instanci třídy Class, obsahující informace o dané třídě). Primitivní datové typy (boolean, byte, int,... ) a klíčové slovo void jsou také reprezentovány jako instance třídy Class. Z instance třídy Class lze zjistit veškeré informace všechny atributy (nejen globální (public)), metody, konstruktory, vnitřní třídy i instanci třídy ClassLoader, která danou třídu načetla Třída Field Tato třída (java.lang.field) poskytuje informace o atributu dané třídy to znamená lze zjistit jméno atributu a jeho typ (třídu) Třída Method Třída java.lang.method umožňuje získat informace o dané metodě. V instanci této třídy jsou uloženy informace o návratovém typu (třídě) metody, o všech argumentech (typech argumentů), o všech výjimkách, které metoda propaguje a samozřejmě také o názvu metody Třída Constructor Tato třída (java.lang.constructor) zapouzdřuje informace o daném konstruktoru. Z instance této třídy lze zjistit (podobně jako u třídy Method) typy argumentů a výjimky, které konstruktor propaguje. Třídy Field, Method a Constructor mají společného předka třídu java.lang.accessibleobject. Tato třída umožňuje nastavit přístupnost k danému objektu (atributu, metodě nebo konstruktoru). 5.5 J2EE server Pro vyzkoušení porovnávaných komponent jsem zvolil dva aplikační servery JBoss (verze 4.0) [JBOS] a server firmy Sun Sun Java TM System Application

29 J2EE server 24 Server Platform Edition 8. Oba dva používají J2EE verze 1.4. Servery jsem provozoval v prostředí operačního systému Windows XP. Tvorba komponent (vytvoření balíku s deployment descriptorem) pro server firmy Sun probíhá v grafickém uživatelském prostředí, čímž je na první pohled jednodušší. Komponenty pro server JBoss jsem vytvářel pomocí nástroje XDoclet [XDOC], který umožňuje automaticky vytvořit deployment descriptor (a další XML soubory) z informací (atributů), získaných ze zdrojového kódu třídy komponenty (rozhraní home a remote). Tyto informace se zapisují ve speciálním formátu do komentářů tříd (rozhraní), atributů a metod. Programátor se tedy může soustředit pouze na funkcionalitu komponenty. Navíc existuje plugin do prostředí Eclipse (JBoss Eclipse IDE), který umožňuje s pomocí XDoclet vytvářet komponenty pro aplikační server JBoss. Tento plugin navíc umožňuje vytvořit balík (JAR soubor), do kterého komponentu uloží ve správném formátu. J2EE servery jsou velmi náročné na operační paměť (ostatně jako většina Java aplikací). Můj počítač je bohužel vybaven pouhými 256 MB operační paměti, proto jsem se během spuštění aplikačního serveru setkal s častým odkládáním obsahu paměti na pevný disk (tzv. swapping). Jestliže jsem měl spuštěný navíc prostředí Eclipse, běh aplikací se zpomalil na neúnosnou míru.

30 25 Kapitola 6 Implementace Program, který jsem vytvořil, se nazývá BeanComparator. Může se používat buď z příkazového řádku nebo v jiném Javovském programu, pro který poskytuje potřebné aplikační rozhraní (výsledky porovnání se ukládají do instance třídy BeanDifferences). V následujících kapitolách popíšu jednotlivé kroky, vedoucí k dokončení implementace porovnání komponent. Nejdůležitějším z nich je nalezení podtypových relací mezi třídami v Javě a mezi rysy ENT meta-modelu. Dále jsem musel načíst informace o EJB komponentách do datových struktur (tříd) a na závěr jsem musel porovnat jednotlivé části (tagy a rysy) komponent. 6.1 Podtypové relace tříd v Javě Protože třídy (rozhraní) jsou nejdůležitější součástí EJB komponenty (home, remote rozhraní, reference na jiné komponenty, atd. (viz. ENT meta-model)), musel jsem vytvořit porovnávač tříd a datových typů. Datové typy v Javě se dělí na dva druhy primitivní datové typy a standardní Java třídy (potomci třídy Object) Primitivní datové typy V jazyku Java je definováno osm primitivních datových typů (tabulka 6.1). Ty se dělí na tři druhy celočíselné, s plovoucí desetinnou čárkou a typ boolean. Typ Počet bitů Znaménkový Druh boolean?? boolean byte 8 ano celočíselný short 16 ano celočíselný int 32 ano celočíselný long 64 ano celočíselný char 16 ne celočíselný float 32 ano desetinný double 64 ano desetinný Tabulka 6.1: Primitivní datové typy v Javě

31 Podtypové relace tříd v Javě 26 Typ boolean nabývá dvou hodnot true a false. Proměnné typu boolean lze přiřadit explicitním přetypováním jakoukoliv číselnou hodnotu. Pak nulová hodnota znamená hodnotu false a libovolné nenulové číslo odpovídá hodnotě true. Pokud bychom přetypovali instanci třídy Object (nebo jakéhokoli potomky této třídy), hodnota null by odpovídala hodnotě false a jakákoliv jiná hodnota než null by odpovídala hodnotě true. Typ boolean by tedy mohl být jakýmsi nadtypem všech ostatních typů. Jenže v Javě je povoleno pouze implicitní přetypování typu boolean na sebe sama, proto je typ boolean mimo hierarchii podtypování. (boolean : jiny typ) (jiny typ : boolean), kde jiny typ je jakýkoliv typ jiný než boolean. (Boolean není podtypem ani nadtypem žádného jiného typu. Nebo také diff( boolean, jiny typ) = mutation) Z celočíselných znaménkových typů (byte, short, int a long) už lze podtypovou hierarchii vytvořit. Pokud by program (klient) očekával na nějakém místě typ long, a my bychom chtěli tento typ nahradit jeho podtypem, klient nesmí poznat změnu. Nesmí dojít ke ztrátě informace (musí být povolená implicitní konverze), proto typ long může být nahrazen typem (podtypem) int (nebo short, byte). Tímto způsobem bychom mohli dále pokračovat pro hledání podtypu typu int a short. byte <: short <: int <: long Typ char je jediným neznaménkovým typem. Je šestnácti-bitový, tvoří tedy horní polovinu (čísla větší než 0) 32-bitového typu int. Konverze z typu int na typ char tedy proběhne bez ztráty informace (implicitní typová konverze je povolena). char <: int <: long Primitivní datové typy s plovoucí desetinnou čárkou (floating point) jsou v Javě dva float a double. Typ float je podtypem typu double. float <: double Protože při konverzi celočíselného typu na typ desetinný (s plovoucí desetinnou čárkou) může dojít ke ztrátě přesnosti, neexistuje žádná další podtypová relace mezi těmito a ostatními typy Klíčové slovo void Klíčové slovo void označuje prázdný nebo žádný datový typ. Používá se pouze pro označení metody, která nevrací žádnou hodnotu (obdoba tzv. procedury v jazyce Pascal). Při introspekci metody, která vrací typ void, příslušná metoda třídy Class vrátí instanci třídy Class, která má název void. Void lze tedy v těchto případech považovat za datový typ. Pro porovnání typu void jsem zavedl pravidla (druhy rozdílů): diff(void, jiny typ) = mutation, kde jiny typ je jakýkoliv jiný typ než void.

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

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

Obsah přednášky. Technologie. Enterprise Java Beans. Enterprise Java Beans. EJB kontejner. Enterprise Java Beans (EJB)

Obsah přednášky. Technologie. Enterprise Java Beans. Enterprise Java Beans. EJB kontejner. Enterprise Java Beans (EJB) Obsah přednášky Technologie Miroslav Beneš Popis technologie EJB J2EE aplikace Typy komponent Entity Beans Session Beans Message-Driven Beans Java Messaging Service (JMS) Závěr 2 (EJB) EJB kontejner Specifikace

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

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

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

X33EJA Enterprise Java. Petr Šlechta Sun Microsystems petr.slechta@sun.com

X33EJA Enterprise Java. Petr Šlechta Sun Microsystems petr.slechta@sun.com X33EJA Enterprise Java Petr Šlechta Sun Microsystems petr.slechta@sun.com Web Services (dodatek) Dynamické vyvolání WS Pomocí SAAJ (SOAP with Attachments API for Java) Dynamicky vytvořit SOAP zprávu (např.

Více

Architektura aplikace

Architektura aplikace Architektura aplikace MARBES-JIRA plugin Tým: GRSS Členové: František Schneider Jaroslav Ráb Lukáš Gemela Jaromír Staněk Upravil Verze dokumentu Datum F. Schneider 1.0 25.3.2012 F. Schneider 2.0 25.4.2012

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

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

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

Ú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

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

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

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

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

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

X33EJA Web Services. Martin Ptáček, KOMIX s.r.o.

X33EJA Web Services. Martin Ptáček, KOMIX s.r.o. X33EJA Web Services Martin Ptáček, KOMIX s.r.o. ptacek@komix.cz Copyright 2007 KOMIX Copyright s.r.o. 2007 KOMIX s.r.o. 1. Obsah Historie Co jsou Web Services? Co je to SOA? JAX-WS (Java API for XML Web

Více

Tvorba informačních systémů na platformě J2EE Petr Hetmánek Masarykova Univerzita, Fakulta Informatiky, Botanická 68a, Brno

Tvorba informačních systémů na platformě J2EE Petr Hetmánek Masarykova Univerzita, Fakulta Informatiky, Botanická 68a, Brno Tvorba informačních systémů na platformě J2EE Petr Hetmánek (xhetman@fi.muni.cz) Masarykova Univerzita, Fakulta Informatiky, Botanická 68a, Brno Abstrakt Rostoucí dostupnost internetu vede ke vzniku stále

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

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

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

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

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

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

TÉMATICKÝ OKRUH Softwarové inženýrství

TÉMATICKÝ OKRUH Softwarové inženýrství TÉMATICKÝ OKRUH Softwarové inženýrství Číslo otázky : 25. Otázka : Komponentní technologie - základní pojmy a principy, metody specifikace komponent. Obsah : 1. Základní pojmy 1.1 Komponenta Komponenta

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

VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu

VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632

Více

RMI - Distribuované objekty v Javě

RMI - Distribuované objekty v Javě Vysoká škola báňská - Technická univerzita Ostrava 30. března 2009 Osnova Co je to RMI? 1 Co je to RMI? 2 Vnější pohled Vrstvy RMI Stub & Skeletons Layer Remote Reference Layer Transport Layer Pojemnování

Více

KIV/PIA Semestrální práce

KIV/PIA Semestrální práce KIV/PIA Semestrální práce Diskuzní fórum Tomáš Časta(A10N0057P) casta@students.zcu.cz 1. Architektura aplikace 1.1 MVC Model-view-controller (MVC) je softwarová architektura, která rozděluje datový model

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

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

Architektury informačních systémů

Architektury informačních systémů Architektury informačních systémů doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes/vyuka/tis Miroslav.Benes@vsb.cz Obsah přednášky Co je to

Více

Architektury informačních systémů

Architektury informačních systémů Architektury informačních systémů doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes/vyuka/tis Miroslav.Benes@vsb.cz Obsah přednášky Co je to

Více

Modelování webových služeb v UML

Modelování webových služeb v UML Modelování webových služeb v UML Jaromír Šveřepa LBMS, s.r.o. Abstrakt: Tento příspěvek se zaměřuje na praktický postup pro identifikaci potřeby webové služby, modelování způsobu jejího použití, popřípadě

Více

Technologie Java. Jaroslav Žáček

Technologie Java. Jaroslav Žáček 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

Unifikovaný modelovací jazyk UML

Unifikovaný modelovací jazyk UML Unifikovaný modelovací jazyk UML Karel Richta katedra počíta tačů FEL ČVUT Praha richta@fel fel.cvut.czcz Motto: Komunikačním m prostředkem informační komunity se postupem času stala angličtina. Chcete-li

Více

Technologie JavaBeans

Technologie JavaBeans Technologie JavaBeans 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 Historie Komponentový model Typy komponent

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

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

ANT. Aplikační programování v Javě (BI-APJ) - 1 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha ANT Aplikační programování v Javě (BI-APJ) - 1 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

PREPROCESOR POKRAČOVÁNÍ

PREPROCESOR POKRAČOVÁNÍ PREPROCESOR POKRAČOVÁNÍ Chybová hlášení V C# podobně jako v C++ existuje direktiva #error, která způsobí vypsání chybového hlášení překladačem a zastavení překladu. jazyk C# navíc nabízí direktivu #warning,

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

Správa a sledování SOA systémů v Oracle SOA Suite

Správa a sledování SOA systémů v Oracle SOA Suite Správa a sledování SOA systémů v Oracle SOA Suite Marek Rychlý Vysoké učení technické v Brně Fakulta informačních technologií Ústav informačních systémů Přednáška pro IOA 7. října 2014 Marek Rychlý Správa

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

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

7 Jazyk UML (Unified Modeling Language)

7 Jazyk UML (Unified Modeling Language) 7 Jazyk UML (Unified Modeling Language) 7.1 Základní charakteristika jazyka Motivace - vznik řady OO metod a metodologií (konec 80. let a první polovina 90.let) podobné notace vyjadřující totéž, komplikující

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

7 Jazyk UML (Unified Modeling Language)

7 Jazyk UML (Unified Modeling Language) 7 Jazyk UML (Unified Modeling Language) 7.1 Základní charakteristika jazyka Motivace - vznik řady OO metod a metodologií (konec 80. let a první polovina 90.let) podobné notace vyjadřující totéž, komplikující

Více

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

OSGi. Aplikační programování v Javě (BI-APJ) - 6 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha OSGi Aplikační programování v Javě (BI-APJ) - 6 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

Distribuované systémy a výpočty

Distribuované systémy a výpočty Distribuované systémy a výpočty X36DSV Jan Janeček Peter Macejko CORBA Common Object Request Broker Architecture - konsorcium OMG (Object Management Group) - standard pro podporu komunikace v DS - pouze

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

Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra informatiky a výpočetní techniky DIPLOMOVÁ PRÁCE

Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra informatiky a výpočetní techniky DIPLOMOVÁ PRÁCE Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra informatiky a výpočetní techniky DIPLOMOVÁ PRÁCE Plzeň, 2007 Břetislav Wajtr Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra

Více

Co je nového v Java EE 6

Co je nového v Java EE 6 Co je nového v Java EE 6 Petr Adámek Disclaimer Ačkoliv jsem snažil tuto prezentaci připravit co nejpečlivěji, může obsahovat nepřesnosti nebo dokonce nepravdivé informace. S popisovanými novinkami nemám

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

Obrázek 6.14: Prohlížec nápovedy

Obrázek 6.14: Prohlížec nápovedy JavaHelp Základní popis systému JavaHelp Soucástí vetšiny interaktivních aplikací je nápoveda (help) aplikace v Jave nejsou výjimkou. Systém JavaHelp je napsaný v Jave a je urcený pro aplikace vytvárené

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

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

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

Session Beans. Petr Aubrecht CA. Vtipy budou tentokrát o krizi:

Session Beans. Petr Aubrecht CA. Vtipy budou tentokrát o krizi: Session Beans Petr Aubrecht CA Vtipy budou tentokrát o krizi: Resty z minula -2 slidy s anotacemi servletů -JPA, slide 42, kaskády Anotace v Servletech 3.0 - Netřeba zápis do web.xml @WebServlet(name="CalculatorServlet",

Více

POWERSHELL. Desired State Configuration (DSC) Lukáš Brázda MCT, MCSA, MCSE lukas@brazda.org

POWERSHELL. Desired State Configuration (DSC) Lukáš Brázda MCT, MCSA, MCSE lukas@brazda.org POWERSHELL Desired State Configuration (DSC) Lukáš Brázda MCT, MCSA, MCSE lukas@brazda.org Obsah přednášky Úvod Základní komponenty DSC Demo Úvod Desired State Configuration? S DSC se nestaráte o konfiguraci

Více

Návrh aplikace. Project Westpon. Inteligentní simulátor budov. Martin Mudra, Jan Smejkal, Onřej Macoszek, Marek Žehra, Jiří Slivárich

Návrh aplikace. Project Westpon. Inteligentní simulátor budov. Martin Mudra, Jan Smejkal, Onřej Macoszek, Marek Žehra, Jiří Slivárich Návrh aplikace Project Westpon Inteligentní simulátor budov Martin Mudra, Jan Smejkal, Onřej Macoszek, Marek Žehra, Jiří Slivárich . Úvod.. Účel dokumentu Tento dokument má za účel detailně popsat návrh

Více

Java a J2EE. Cleverlance. Lukáš Marek lukas.marek@cleverlance.com

Java a J2EE. Cleverlance. Lukáš Marek lukas.marek@cleverlance.com Java a J2EE Lukáš Marek lukas.marek@cleverlance.com Agenda: Java ve zkratce architektura aplikací aplikaèní servery a Enterprise Java DEMO enterprise aplikace zajímavé produkty vývojová IDE Java a J2EE

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

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

NetBeans platforma. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

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

Více

Projekty pro výuku programování v jazyce Java

Projekty pro výuku programování v jazyce Java JIHOČESKÁ UNIVERZITA V ČESKÝCH BUDĚJOVICÍCH Pedagogická fakulta Katedra informatiky Akademický rok: 2006/2007 TEZE BAKALÁŘSKÉ PRÁCE Projekty pro výuku programování v jazyce Java Jméno: František Přinosil

Více

Webové služby. Martin Sochor

Webové služby. Martin Sochor Webové služby Martin Sochor Webové služby způsob komunikace dvou aplikací přes Web binární zprávy (CORBA) blokovány proxy servery a firewally masivní využití XML protokol SOAP + jazyk pro popis služeb

Více

Server-side technologie pro webové aplikace

Server-side technologie pro webové aplikace Server-side technologie pro webové aplikace PIA 2011/2012 Téma 6 Copyright 2006 Přemysl Brada, Západočeská univerzita Server-side scriptování Cíl dynamické generování webového obsahu/rozhraní integrace

Více

Osnova. GIOP a IIOP IDL IOR POA. IDL Klient Server. 2 Historie. 3 Princip a základní pojmy. 4 Implementace. 5 Aplikace CORBA

Osnova. GIOP a IIOP IDL IOR POA. IDL Klient Server. 2 Historie. 3 Princip a základní pojmy. 4 Implementace. 5 Aplikace CORBA Common Object Request Broker Architecture FJFI ČVUT 9. 12. 2010 Osnova 1 2 3 4 5 Standard umožňující propojení aplikací psaných v různých jazycích a běžících na různých strojích a architekturách. Definuje

Více

1. Dědičnost a polymorfismus

1. Dědičnost a polymorfismus 1. Dědičnost a polymorfismus Cíl látky Cílem této kapitoly je představit klíčové pojmy dědičnosti a polymorfismu. Předtím však je nutné se seznámit se základními pojmy zobecnění neboli generalizace. Komentář

Více

RMI Remote Method Invocation

RMI Remote Method Invocation 2. cvičení RMI Remote Method Invocation 2007/09 ver.2.0 1 RMI co to je? vyvolání metody z jiné JVM lokalizace vzdáleného objektu komunikace se vzdálenými objekty přenos objektu v bytecode typicky klient

Více

Převod prostorových dat katastru nemovitostí do formátu shapefile

Převod prostorových dat katastru nemovitostí do formátu shapefile GIS Ostrava 2009 25. - 28. 1. 2009, Ostrava Převod prostorových dat katastru nemovitostí do formátu shapefile Karel Janečka1, Petr Souček2 1Katedra matematiky, Fakulta aplikovaných věd, ZČU v Plzni, Univerzitní

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

Čipové karty Lekařská informatika

Čipové karty Lekařská informatika Čipové karty Lekařská informatika Následující kód je jednoduchou aplikací pro čipové karty, která po překladu vytváří prostor na kartě, nad kterým jsou prováděny jednotlivé operace a do kterého jsou ukládány

Více

Kolaborativní aplikace

Kolaborativní aplikace Kolaborativní aplikace Michal Máčel Vema, a. s. Okružní 3a, 638 00 Brno - Lesná, macel@vema.cz Tomáš Hruška Fakulta informačních technologií Vysokého učení technického v Brně, Ústav informačních systémů,

Více

Microsoft Office 2003 Souhrnný technický dokument white paper

Microsoft Office 2003 Souhrnný technický dokument white paper Microsoft Office 2003 Souhrnný technický dokument white paper Přehled inteligentních klientských aplikací založených na sadě Microsoft Office 2003 System Publikováno: Duben 2003 Shrnutí: Inteligentní klienti

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

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

Jakub Čermák <jakub@jcermak.cz> http://www.jcermak.cz. Microsoft Student Partner

Jakub Čermák <jakub@jcermak.cz> http://www.jcermak.cz. Microsoft Student Partner Jakub Čermák http://www.jcermak.cz Microsoft Student Partner Úvod, příklady použití, trocha teorie Struktura aplikace Typy obecně, primitivní typy, speciální typy Podmínky, cykly, namespaces

Více

Reflexe RTTI Runtime Type Identification

Reflexe RTTI Runtime Type Identification Vaše jistota na trhu IT Reflexe RTTI Runtime Type Identification Rudolf PECINOVSKÝ rudolf@pecinovsky.cz Vaše jistota na trhu IT Opakování Shrnutí či téma Co je to reflexe/rtti Termínem Reflexe označujeme

Více

Viditelnost (práva přístupu) Tomáš Pitner, upravil Marek Šabo

Viditelnost (práva přístupu) Tomáš Pitner, upravil Marek Šabo Viditelnost (práva přístupu) Tomáš Pitner, upravil Marek Šabo Viditelnost Přístup ke třídám i jejim prvkům lze (podobně jako např. v C++) regulovat. Přístupem se rozumí jakékoli použití dané třídy, prvku

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

VŠB Technická univerzita Ostrava. Fakulta elektrotechniky a informatiky. Katedra informatiky. Enterprise Java Beans historie, současnost a budoucnost

VŠB Technická univerzita Ostrava. Fakulta elektrotechniky a informatiky. Katedra informatiky. Enterprise Java Beans historie, současnost a budoucnost VŠB Technická univerzita Ostrava Fakulta elektrotechniky a informatiky Katedra informatiky Enterprise Java Beans historie, současnost a budoucnost 2006 Roman Musialek Prohlášení: Prohlašuji, že jsem tuto

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

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

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

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007 Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků

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ů, 2006/2007 c 2005-2007 Michal Krátký, Miroslav Beneš Tvorba

Více

Úvod do Web Services

Úvod do Web Services Úvod do Web Services Základy webových služeb a jejich implementace na platformě OS/2 Jarda Kačer jarda@kacer.biz Český Warpstock 2008 Brno, 20.-21.9.2008 Co je to webová služba? Část business logiky přístupná

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

Problém identity instancí asociačních tříd

Problém identity instancí asociačních tříd Problém identity instancí asociačních tříd Autor RNDr. Ilja Kraval Ve školeních a také následně po jejich ukončení se stále častěji objevují dotazy, které se týkají tzv. identity instancí asociační třídy.

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

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

Tvorba informačních systémů

Tvorba informačních systémů 9. 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

Více

Komputerizace problémových domén

Komputerizace problémových domén Milan Mišovič (ČVUT FIT) Pokročilé informační systémy MI-PIS, 2011, Přednáška 03 1/19 Komputerizace problémových domén Prof. RNDr. Milan Mišovič, CSc. Katedra softwarového inženýrství Fakulta informačních

Více

java remote method invocation Kateřina Fricková, Matouš Jandek

java remote method invocation Kateřina Fricková, Matouš Jandek java remote method invocation Kateřina Fricková, Matouš Jandek Distribuovaný systém počítačový systém, ve kterém jsou jednotlivé komponenty propojeny počítačovou síťí komponenty systému sdílí cíl, kterého

Více

DPKOM_2. Technologie Enterprise JavaBeans Řízení zdrojů a primární služby

DPKOM_2. Technologie Enterprise JavaBeans Řízení zdrojů a primární služby DPKOM_2 Technologie Enterprise JavaBeans Řízení zdrojů a primární služby 1 Obsah přednášky Technologie Enterprise JavaBeans Distribuované zpracování základ EJB EJB služby middleware Řízení zdrojů Primární

Více