4.13k likes | 4.26k Views
JAT – Java Technologie. KA. David Ježek david.jezek @ vsb.cz Tel: 597 32 5 874 Místnost: EA406. 1. Přednáška. Úvod Podmínky udělení zápočtu Komponentní technologie JavaBeans. 1. 1. Úvod 1/3. Seznámení s obsahem Nabídka Sun certifikátu Podmínky k udělení zápočtu
E N D
JAT – Java Technologie KA David Ježek david.jezek@vsb.cz Tel: 597 325 874 Místnost: EA406
1. Přednáška Úvod Podmínky udělení zápočtu Komponentní technologie JavaBeans JAT – Java Technologie
1. 1. Úvod 1/3 • Seznámení s obsahem • Nabídka Sun certifikátu • Podmínky k udělení zápočtu • Téma a rozsah projektu • Závěrečný test • Užitečné odkazy • Java Beans • Java GUI • Swing, AWT • JNDI • JDBC • Architektura IS • Protokol HTTP • Aplikační servery • JavaEE aplikační model • Java Servlet JAT – Java Technologie
1. 1. Úvod 2/3 • JSP JavaServerPages • JSF Java Server Faces • EnterpriseJavaBeans • Java Transaction • Perzistence objektů • Java Persistenc API • Hibernate • Návrhové vzory JavaEE • DAO • Aplikační rámce MVC • Struts 2 • Portlety • JMS – JavaMessageServices • Webové služby • Java Web Services • JAXB JAT – Java Technologie
1. 1. Úvod 3/3 • RMI • CORBA • IDL JAT – Java Technologie
1. 2. Certifikáty společnosti SUN • Společnost SUN nabízí slevu 25% na vybrané certifikační zkoušky pro účastníky programu „Sun AcademicInitiative“. • VŠB je členem „Sun AcademicInitiative“ a studenti VŠB mohou využít nabízenou slevu na certifikační zkoušky. • http://www.sun.com/solutions/landing/industry/education/sai/index.jsp JAT – Java Technologie
1. 3. Podmínky udělení zápočtu • Odevzdání projetu v termínu. • Absolvování závěrečného testu. • Získání minimálně 15 bodů na cvičeních • Projekt bude hodnocen maximálně 40, minimálně je nutno získat 20. • Na cvičeních v 2. až 12. týdnu bude rozděleno 36 bodů přičemž maximálně lze započítat do celkových výsledků 30 bodů a minimálně je nutno získat 15 bodů • Závěrečný test bude hodnocen maximálně 30 minimálně je nutno získat 15. • Celkový součet bodů za projekt a závěrečný test musí být minimálně 51 bodů. JAT – Java Technologie
1.4. Projekt • Webový informační systém • JSF, EJB, JPA • Rozsah • Celý systém se bude skládat alespoň ze 7 tabulek s využitím vazeb (1-N) a dědičnosti (mapování JPA) JAT – Java Technologie
Něco z historie… • 500 před n. l. – Pythagoras založil bratrstvo vyznávající reinkarnaci, vegetariánství, mystický význam čísel a odmítání fazolí (beans) jako potravy (obsahují duše zemřelých) • 850 n. l. – arabský pasák koz Kaldi zjistil, že se jeho stádo chová divně a objevil kávu a účinky kofeinu. • Konec 17. století – pěstování kávových zrn na ostrově Java, spojení názvu s kávou obecně • 1995 – jazyk Oak firmy Sun má problémy s názvem, zvolen název Java a spojení produktů s kávou JAT – Java technologie
Java Platforms • Standard Edition (Java SE) • Java Applet, Java WebStart • Java FX • JavaFX 2.1 - desktop, browser and mobile phones. • Planed: TV set-top boxes, gaming consoles, Blu-ray players and other • Enterprise Edition (Java EE) • Servlets, JavaServerFaces, JavaServerPages • Micro Edition (Java ME) • Mobile phone, Java TV, Java Card, other devices JAT – Java Technology
Java SE Platform JAT – Java Technology
JavaFX Platform • Designed for RIA • Variety of devices • Media support • Scene graph • CSS styles JAT – Java Technology
Java EE Platform • Multi-tier architecture • Java EE API • Servlets • Java Server Faces • Java Server Pages • Persistence API • … • Runtime environment JAT – Java Technology
Java ME Platform • Designed to run java application on devices with limited resources • Java ME API is subset of Java SE API with some extra special class libraries • Define profiles and configuration for different types of devices JAT – Java Technology
3. Komponentní technologie – Motivace • Vývoj • Opakovaná použitelnost • Snadnost testování • Možnost specializace výrobců • Distribuce • Rychle uvedení na trh • Nezávislost na dodavateli • Údržba • Snížení nákladů na údržbu • Zaměnitelnost –tlak odběratelů na standardizaci JAT – Java Technologie
3.1. Aplikace v IT • Technické vybavení • Paměť, procesory, základní desky • Periferní zařízení – PnP, ovladače • Komunikační prvky • Programové vybavení • Grafické uživatelské rozhraní – Swing • Distribuované aplikace –CORBA, EJB, .NET,… • Databáze • Informační systémy JAT – Java Technologie
3.2. Co je to komponenta? 1/3 • Stavební jednotka se smluvně definovanými: • rozhraními; • explicitními kontextovými vazbami Napájení Mobilní telefon IKeyboard IBluetooth GSM Modul JAT – Java Technologie
Co je to komponenta? 2/3 • Může být použita nezávisle na • prostředí, pro které byla vytvořena, • prostředí, ve kterém byla vytvořena. MS Office Print MyApp MPEG Player (C++) Home Video (Java) Movie Library (PHP) JAT – Java Technologie
Co je to komponenta? 3/3 • Je určena pro integraci třetí stranou • Autor komponenty • Neví, kdo a k čemu bude jeho komponenty využívat • Musí dodržet stanovené rozhraní • Autor aplikace • Neví, kdo bude dodávat komponenty • Komunikuje přes stanovené rozhraní • Integrátor • Propojí aplikaci s vhodnými komponentami JAT – Java Technologie
Požadavky na komponenty • Úplná dokumentace • Důkladné testování • Robustní kontrola platnosti vstupů • Vracení dostatečných informativních chybových zpráv • Vycházet s toho, že komponenta bude použita k předem nepředpokládaným účelům. JAT – Java Technologie
Specifikace komponenty • Stav • Vlastnosti – čtení, nastavení • Chování • Operace – volání, parametry, výsledek • Interakce s okolím • Události – registrace, oznámení JAT – Java Technologie
Životní cyklus komponenty 1/2 • Tvorba komponenty • Standardy – CORBA, COM+, EJB, .NET • Binární kompatibilita – nezávislost na jazyce • Publikace rozhraní • Dokumentace – pro člověka • Introspekce – součást komponenty, klientská aplikace může číst metadata JAT – Java Technologie
Životní cyklus komponenty 2/2 • Šíření komponenty • registrace komponenty, adresářové služby • LDAP, JNDI, UDDI • Vyhledávání komponenty • identifikace komponenty, pozdní vazba • Tvorba aplikace • Podpora IDE – přístup jako k interním objektům JAT – Java Technologie
Architektura komponentně orientovaných systémů Aplikační server 1 Aplikace 1 Komponenty Aplikace 2 Komponenty Aplikační server 2 JAT – Java Technologie
Aplikační server • Prostředí pro běh softwarových komponent a aplikací • Distribuované prostředí • Zdroje (Resources) • Zabezpečení • Transakce • Příklady • JBoss, Jakarta Tomcat, BEA Weblogic, Citrix, Meta Frame, IBM WebSphere, Oracle AS, Glassfish, Sun Java System AS, … JAT – Java Technologie
Příklad tvorby aplikací WSDL, IDL, Interface EAR, WAR, DLL komponenta popis rozhraní dynamická vazba zdrojový text aplikace Vývojové prostředí Java,C#, C++ JAR, WAR, EAR, EXE spustitelná aplikace JAT – Java Technologie
Hlavní komponentní technologie • JavaBeans, EJB • pouze jazyk Java • Enterprise Java Beans – pro rozsáhle systémy, distribuované • COM, COM+, DCOM, ActiveX • Binárně kompatibilní komponenty • Základní technologie pro Windows • .NET • Kompatibilita na jazykové úrovni – C++, C#, Jscript, VB.NET JAT – Java Technologie
2. JavaBeans Komponenta JavaBean je třída jazyka JAVA splňující přesně dané podmínky. • Zdroje • http://java.sun.com/docs/books/tutorial/javabeans/TOC.htm • http://java.sun.com/javase/technologies/desktop/javabeans/docs/spec.html • http://www.cs.vsb.cz/behalek/vyuka/pte/prednasky/index.php JAT – Java Technologie
JavaBeans - základy “A Java Bean is a reusable software component that can be manipulated visually in a buildertool.” • Granularita komponent • Malé stavební bloky • „celé aplikace“ • Přenositelnost • Jednotné, kvalitní API • Jednoduchost • JavaBeans vs. Knihovny • Design time vs. run-time • Bezpečnost • Internacionalizace • Perzistence komponent • SerializationorExternalization • Lokální komponenty • Multi-Threading JAT – Java Technologie
Java Beans – Typy komponent • Vizuální komponenty • Mají vizuální reprezentaci zabírající prostor v okně aplikace • Příklad: tlačítko, tabulka, rolovací seznamy • Podpora ve vizuálních nástrojích • Nevizuální komponenty (Invisible) • Příklad: časovač, databázové spojení, kontrola pravopisu, … • Podpora ve vizuálních nástrojích JAT – Java Technologie
Java Beans – Struktura komponenty • Vlastnosti (properties) • Přístup prostřednictvím přístupových metod (čtení, zápis hodnoty), ne přímo • Metody (methods) • Operace nad komponentami • Události (events) • Komunikační vazby mezi komponentami JAT – Java Technologie
Java Beans – Události (1) • Zdroj událostí • Objekt, který generuje události • Spravuje seznam registrovaných posluchačů • Posluchač (listener) • Objekt, který chce být o události informován • Musí být registrován u zdroje událostí • Musí implementovat dohodnuté rozhraní JAT – Java Technologie
Java Beans – Události (2) Posluchač Registrovaní posluchači Posluchač Zdroj událostí registrace Posluchač addEventListener vznikudálosti nastala událost (e) Informace o události EventObject e JAT – Java Technologie
Java Beans – Zpracování událostí • Posluchač se zaregistruje u zdroje událostí (např. u tlačítka, na jehož stisknutí čeká) • Uživatel stiskne tlačítko – vznikne událost • Zdroj události (tlačítko) projde seznam registrovaných posluchačů a každému z nich oznámí vznik události: • Zavolá dohodnutou metodu rozhraní posluchače • Metodě předá informace o události (podtřída java.util.EventObject) JAT – Java Technologie
Events: Model Event – Listener Event handling MyListener somethingHappend Source addFooListener fireSomethingHappend FooEvent AddFooListener somethingHappend MyOther Listener JAT – Java Technology
Events: Model Event – Listener JAT – Java Technology
Události: Model Event – Listener • publicclassFooEventextendsjava.util.EventObject { • protectedStringmyInfo; • publicFooEvent(Object source,String something) { • super(source); • myInfo =something; • } • publicStringgetMyInfo() { • returnmyInfo; • } • }
Události: Model Event – Listener • publicinterfaceFooListenerextends java.util.EventListener { • publicvoid somethingHappend(FooEvent FooEventevt); • publicvoid somethingChanged(FooEvent FooEventevt); • publicvoid whatever(FooEvent FooEventevt); • }
Události: Model Event – Listener • import java.util.ArrayList; • private ArrayList<FooListener> listeners = new ArrayList<FooListener>(); • publicclass EventSource { • public FooListener[] getFooListeners() { • returnlisteners.toArray(new FooListener[listeners.size()]); • } • public synchronizedvoid removeFooListener(FooListener listener){ • listeners.remove(listener); • } • publicsynchronizedvoid addFooListener(FooListener listener){ • listeners.add(listener); • } • protectedsynchronizedvoid fireSomethingHapend() { • FooEvent e = new FooEvent(this, "something"); • for (FooListener l : listeners) { • l.somethingHapend(e); • } • } • }
JavaBeans – Události - Shrnutí • Objekt události • musí dědit z java.util.EventObject • Má se jmenovat <něco>Event • Musí mít konstruktor s alespoň jedním parametrem (zdroje událostí) • Rozhraní posluchače (ListenerType) • Musí dědit z java.util.EventListener • Má se jmenovat <něco>Listener • Jednotlivé metody by mněli mít jeden parametr (událost) • Mají vracet void • Zdroj událostí(JavaBean) musí mít metody public voidadd<ListenerType>(<ListenerType> listener) throwsjava.util.TooManyListenersException; public voidremove<ListenerType>(<ListenerType> listener) public <ListenerType>[] get<ListenerType>s(); JAT – Java Technologie
Java Beans – Adaptér (1) • Rozhraní EventListener pro konkrétní komponentu může obsahovat mnoho metod • Chceme-li reagovat jen na některé události: • Musíme buď implementovat prázdné reakce na ostatní události • Nebo použijeme adaptér jako bázovou třídu a implementujeme jen zvolené metody • Adaptér implementuje implicitní odezvu na všechny události JAT – Java Technologie
JavaBeans – Adapter(2) publicinterfaceCounterListener { publicvoidcounterReset(CounterEventevt); publicvoidvalueChanged(CounterEventevt); } publicclassCounterAdapterimplementsCounterListener{ publicvoidcounterReset(CounterEventevt){ } publicvoidvalueChanged(CounterEventevt){ } } JAT – Java Technology
Java Beans – Adaptér (3) Countercounter=newCounter(); // použití anonymní vnitřní třídy counter.AddCounterListener(newCounterAdapter(){ @Override publicvoidcounterReset(CounterEvent e){ System.out.println("Reset"); } }); JAT – Java Technologie
JavaBeans – Properties (vlastnosti) • Jednoduché vlastnosti • Getter metoda public <PropertyType> get<PropertyName>() public booleanis<PropertyName>() • Setter metoda public void set<PropertyName>(<PropertyType> value) JAT – Java Technologie
Java BeansProperties • Properties s názvem counter publicclassCounter { privateintcounter; publicintgetCouner() { returnthis.counter; } publicvoidsetCounter(int i) { this.counter = i; } } publicintgetCouner() privateintcounter; publicvoidsetCounter(int i) JAT – Java Technologie
JavaBeans – Properties (vlastnosti) • Indexované vlastnosti (indexedproperties) • indexedsetter void set<PropertyName>(int index, <PropertyType> value) • indexedgetter public <PropertyType> get<PropertyName> (int index) • arraysetter public void set<PropertyName> (PropertyTypevalues[]) • arraygetter public <PropertyType>[] get<PropertyName> () JAT – Java Technologie
JavaBeans – Properties (vlastnosti) protectedVector<JButton> buttons; voidsetButtons(int index, JButton b){ buttons.setElementAt(b, index); } publicJButtongetButtons(int index){ returnbuttons.elementAt(index); } publicvoidsetButtons(JButtonvalues[]){ buttons.clear(); for(JButton b : values){ buttons.add(b); } } publicJButton[] getButtons(){ returnbuttons.toArray(newJButton[buttons.size()]); } JAT – Java Technologie
Java Beans – Speciální vlastnosti • Vázané vlastnosti (boundproprties) • Generují událost PropertyChange, pokud se mění jejich hodnota • Vlastnosti s omezením (constrainedprop.) • Generují událost VetoableChange, pokud se mění jejich hodnota • Změna může být zakázaná JAT – Java Technologie
JavaBeans – Properties (vlastnosti) • Boundproperties (obalené) publicvoidaddPropertyChangeListener(PropertyChangeListener x); publicvoidremovePropertyChangeListener(PropertyChangeListener x); publicinterfacePropertyChangeListenerextendsjava.util.EventListener { voidpropertyChange(PropertyChangeEventevt); } publicclassPropertyChangeEventextendsjava.util.EventObject { publicPropertyChangeEvent(Objectsource, StringpropertyName, ObjectoldValue, ObjectnewValue); publicStringgetPropertyName(); publicObjectgetNewValue(); publicObjectgetOldValue(); JAT – Java Technologie
JavaBeans – Properties (vlastnosti) • Boundproperties (obalené) public voidaddPropertyChangeListener(StringpropertyName, PropertyChangeListenerlistener); public voidremovePropertyChangeListener(StringpropertyName, PropertyChangeListenerlistener); public voidadd<PropertyName>Listener( PropertyChangeListener p); public voidremove<PropertyName>Listener( PropertyChangeListener p); JAT – Java Technologie