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

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

RMI Remote Method Invocation

Parametrizované třídy Generics generické třídy. JDK zavádí mimo jiné tzv. parametrizované třídy - generics

Generické typy. Podrobněji: The Java Language Specification ( Third Edition ) , 18

UJO Framework. revoluční architektura beans. verze

Úvod do programovacích jazyků (Java)

KIV/PIA 2013 Jan Tichava

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

Návrhové vzory Tvorba objektů

Java. Generické typy

Tvorba informačních systémů

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

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

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

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

Enterprise Java Beans 3.0

8. přednáška: Soubory a proudy

Java Enum Java, zimní semestr ,2017 1

Algoritmizace a programování

typová konverze typová inference

Abstraktní datové typy: zásobník

Technologie JavaBeans

Programování v Javě I. Únor 2009

Soubor jako posloupnost bytů

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

Obsah přednášky 9. Skrývání informací. Skrývání informací. Zapouzdření. Skrývání informací. Základy programování (IZAPR, IZKPR) Přednáška 9

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

Programování v Javě I. Leden 2008

Úvod do programovacích jazyků (Java)

Teoretické minimum z PJV

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

WPA - Konfigurace Java EE aplikace (Maven, struktura war arch. kontejnerem Tomcat 8

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

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Typický prvek kolekce pro české řazení

Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU

JAVA Unit testing Java, zimní semestr

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

RMI - Distribuované objekty v Javě

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

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

(Enterprise) JavaBeans. Lekce 7

Spring framework 2.0. Roman Pichlík CZJUG

JAVA JavaBeans Java, letní semestr

JAVA V Assertions Java, zimní semestr

20. Projekt Domácí mediotéka

JAVA. Zdrojové soubory

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

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

Lambda funkce Novinky v interfaces Streamy Optional - aneb zbavujeme se null. Java 8. Ondřej Hrstka

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

Generické programování v jazyce Java Generics programming in Java

Vytváření a použití knihoven tříd

1. Téma 12 - Textové soubory a výjimky

1. Programování proti rozhraní

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

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

Technologie Java. Jaroslav Žáček

4. ZÁKLADNÍ POJMY Z OBJEKTOVĚ ORIENTOVANÉHO PROGRAMOVÁNÍ

Seminář Java IV p.1/38

Abstraktní třída a rozhraní

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

Remote Method Invocation RMI

Reflexe RTTI Runtime Type Identification

Jazyk C# a platforma.net

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

Softwarové komponenty a Internet

Java a XML. 10/26/09 1/7 Java a XML

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

Java Výjimky Java, zimní semestr

Zapouzdření. Tomáš Pitner, upravil Marek Šabo

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

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

SOUBORY, VSTUPY A VÝSTUPY POKRAČOVÁNÍ

Návrh softwarových systém. Návrh softwarových systémů

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

Výčtový typ strana 67

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

Stromy. Příklady. Rekurzivní datové struktury. Základní pojmy

JavaServer Faces Zdeněk Troníček

Seminář Java II p.1/43

Generické programování

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

Pokročilé programování na platformě Java. Úvod

Jini (pronounced GEE-nee) Cvičení 8 - DS 2006

JAVA. Reflection API

Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí

Z. Kotala, P. Toman: Java ( Obsah )

Java Managenent Extension JMX

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

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

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

Design time - vytváří se program - metadata - vytváří se např. třída. Run time - běh programu - ukládá se do paměti počítače - vytváří se např.

JAVA JavaBeans Java, letní semestr 2018

Tabulka symbolů. Vazba (binding) Vazba - příklad. Deklarace a definice. Miroslav Beneš Dušan Kolář

Java - řazení objektů

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní

Web Services na SOAP

Programování v jazyce Java. Tomáš Pitner, upravil Marek Šabo

Transkript:

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 (BI-EJA) Technologie programování v jazyku Java (X36TJV) Katedra softwarového inženýrství Fakulta informačních technologií ČVUT v Praze Letní semestr 2010/2011, přednáška č. 1 Zdeněk Troníček, 2011

Cíle předmětu Seznámit se s principy používanými při tvorbě podnikových aplikací Získat přehled o technologiích v Java Enterprise Edition 6 Naučit se rozvrhnout si práci a dodržovat termíny 2

Program přednášek 14.2. Generické typy, anotace, RMI 21.2. JEE, servlety, JSP 28.2. JSF 7.3. JPA, EJB 14.3. Transakce, security 21.3. JMS, MDB, JWS 28.3. JAX-WS, JAX-RS 4.4. JavaFX 11.4. JMX, monitorování 18.4. Aplikační server, clustering 25.4. - 2.5. Spring Framework 9.5. Performance 3

Hodnocení 12 testů na cvičení: 24 bodů Kontrolní body semestrální práce: 6 bodů Semestrální práce: 30 bodů Zkouška (min. 20) Písemka: 20 bodů Program: 20 bodů Hodnocení: 90 a více... A 80 89... B 70 79... C 60 69... D 50 59... E 4

Generické typy (generics) 1.4: List slova = new ArrayList(); 5.0: List<Integer> cisla = new ArrayList<Integer>(); List<String> slova = new ArrayList<String>(); slova.add( "prvni" ); slova.add( "druhy" ); String s = slova.get( 0 ); 5

Terminologie java.util.list<e> - generický typ E - typová proměnná List<String> - parametrizovaný typ Generický typ používá jednu nebo více typových proměnných. 6

java.util.list public interface List<E> extends Collection<E> { boolean add( E o ); E get( int index ); List<E> sublist( int fromindex, int toindex );... 7

Type erasure (1) List<String> slova = new ArrayList<String>(); slova.add( "java" ); String s = slova.get( 0 ); po překladu: List slova = new ArrayList(); slova.add( "java" ); String s = (String) slova.get( 0 ); 8

Type erasure (2) class Box<T> { T value; Box( T value ) {... po překladu: class Box { Object value; Box( Object value ) {... 9

Hierarchie typů Collection<Integer> List<Object> X List<Integer> List<Integer> List<Integer> cisla1 = ; Collection<Integer> cisla2 = cisla1; // není možné toto: List<Object> objekty = cisla1; 10

Pole v Javě // typ String[] je potomkem Object[] String[] jmena = new String[10]; Object[] objekty = jmena; Object[] // ArrayStoreException: objekty[0] = new Integer( 1 ); String[] proměnná objekty: compile-time type: Object[] používá překladač run-time type: String[] používá JVM 11

Pole parametrizovaného typu // hypotetický příklad: List<Integer> cisla = new ArrayList<Integer>(); cisla.add( 1 ); // boxing List<String>[] pole = new ArrayList<String>[10]; Object[] objekty = pole; objekty[0] = cisla; String s = pole[0].get( 0 ); // ClassCastException Pole parametrizovaného typu není povoleno! 12

Wildcards (1) metoda, která vytiskne prvky seznamu Java 1.4: static void printlist( List s ) { for( int i=0; i < s.size(); i++ ) { Object p = s.get( i ); System.out.println( i + ": " + p ); 13

Wildcards (2) Java 1.5: static void printlist( List<Object> s ) { // stejné jako v 1.4 S jakým parametrem můžeme zavolat tuto metodu? List<Object> List<Integer> List<String> 14

Wildcards (3)? = neznámý typ List<?> = seznam něčeho static void printlist( List<?> s ) { // s.get() vrací Object Object o = s.get( 0 ); s.add( null ); // s.add() není povoleno 15

Bounded wildcards (1) metoda, která vrátí součet prvků v seznamu static double sumlist( List<?> s ) { double total = 0.0; for( Object o : s ) { Number n = (Number) o; total += n.doublevalue(); return total; 16

Bounded wildcards (2)? extends Number = typ Number nebo libovolný potomek static double sumlist( List<? extends Number> s ) { // s.get() vrací Number // s.add() není povoleno 17

Type erasure (ještě jednou) class Box<T extends Number> { T value; Box( T value ) {... po překladu: class Box { Number value; Box( Number value ) {... 18

Příklad n-ární strom: public class Tree<V> { private V value; private List<Tree<V>> p = new ArrayList<Tree<V>>(); public Tree( V value ) { this.value = value; public V getvalue() { return value; public void setvalue( V value ) { this.value = value; public void addchild( Tree<V> child ) { p.add( child ); 19

Omezení typového parametru shora public class Tree<V extends Comparable<V>> { private V value; public void join( Tree<V> t ) { int i = value.compareto( t.value );... 20

Generická metoda public class Util { public static <T> T[] fill( T[] p, T v ) { for( int i = 0; i < p.length; i++ ) { p[i] = v; return p; 21

Volání generické metody (1) Překladač dokáže hodnotu typového parametru odvodit (tento proces se jmenuje type inference) Boolean[] bools = Util.fill( new Boolean[10], Boolean.TRUE ); Object o = Util.fill( new Number[5], Integer.valueOf( 42 ) ); 22

Volání generické metody (2) Set<String> empty = Collections.<String>emptySet(); Set<String> empty = Collections.emptySet(); print( Collections.<String>emptySet() ); 23

Omezení typového parametru zdola? super T = typ T nebo libovolný předek Collections.addAll(): public static <T> boolean addall ( Collection<? super T> c, T... elements ) { Do jaké kolekce lze přidat hodnotu typu T? 24

Anotace Metadata = informace o informacích Standardní anotace (v balíku java.lang): Override, Deprecated, SuppressWarnings @Override public String tostring() {... @Deprecated public class OldList {... @SuppressWarnings( "unchecked" ) public void nongenericsmethod() {... 25

Target & Retention policy Target: ANNOTATION_TYPE CONSTRUCTOR FIELD LOCAL_VARIABLE METHOD PACKAGE PARAMETER TYPE Retention policy: SOURCE jsou odstraněny překladačem CLASS jsou vloženy do souboru.class, ale JVM je nemusí načíst RUNTIME musí být načteny za běhu, takže jsou přístupné přes reflection 26

Deklarace anotace Deklarace: @Retention( RetentionPolicy.CLASS ) @Target( ElementType.METHOD ) public @interface Approved { public String msg() default ""; Použití: @Approved( msg = "v1.2" ) public void print() { 27

Serializace převod objektu na posloupnost bajtů objekt posloupnost bajtů objekt serializace deserializace 28

ObjectOutputStream & ObjectInputStream ObjectOutputStream oos = new ObjectOutputStream( new FileOutputStream( "x.out" )); oos.writeobject( new Date() ); oos.close(); ObjectInputStream ois = new ObjectInputStream( new FileInputStream( "x.out" )); Date d = (Date) ois.readobject(); ois.close(); 29

java.io.serializable public class Point implements Serializable { private int x; private int y; hlavička deskriptor třídy hodnoty atributů (součástí není byte-kód) 30

Klíčové slovo transient public class Point implements Serializable { private int x; private int y; private transient Thread t; 31

Atribut serialpersistencefields public class Point implements Serializable { private int x; private int y; private Thread t; private static final ObjectStreamField[] serialpersistentfields = { new ObjectStreamField( "x", int.class ), new ObjectStreamField( "y", int.class ) ; 32

Metody writeobject a readobject public class Point implements Serializable { private void writeobject( ObjectOutputStream oos ) throws IOException {... private void readobject( ObjectInputStream ois ) throws IOException, ClassNotFoundException {... 33

Verze třídy (serialversionuid) public class Point implements Serializable { private static final long serialversionuid = 1L; 34

Remote method invocation (RMI) umožňuje zavolat metodu na objektu v jiné JVM pro přenos parametrů a návratové hodnoty se používá serializace klient server síť stub skeleton 35

Vzdálené volání RMI 2 3 name service 1 rmi client 4 5 RMI rmi server 36

Předávání parametrů p client p server 1 2 přenos přes síť 1 2 p.move( 1, 1 ); změna objektu p není automaticky viditelná na klientovi p 2 3 37

Java Beans Java Bean = znovupoužitelná softwarová komponenta, se kterou lze vizuálně manipulovat ve vývojovém nástroji property = vlastnost beany; ovlivňuje vzhled nebo chování Př.: property name typu String čtení: public String getname() změna: public void setname( String value ) 38

Accessor & mutator getter = metoda getx(), příp. isx() setter = metoda setx( ) property může být pro čtení (má getter) pro zápis (má setter) pro čtení i zápis (má getter i setter) 39

Otázky & odpovědi Znáte NetBeans API a chcete pracovat na zajímavém projektu? Napište mi! 40