Petr Aubrecht. Gerstner Laboratory,

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

Algoritmizace a programování

Úvod do programovacích jazyků (Java)

RMI Remote Method Invocation

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

Java - výjimky. private void vstup() throws IOException {... }

Úvod do programovacích jazyků (Java)

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

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

UJO Framework. revoluční architektura beans. verze

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

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

Programování v Javě I. Leden 2008

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

Java Výjimky Java, zimní semestr

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

Teoretické minimum z PJV

Soubor jako posloupnost bytů

Vlákno odlehčený proces kód vlákna, zásobník privátní ostatní sdíleno s dalšími vlákny téhož procesu

Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/

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

Úvod do Javy, JDBC a multimediální databáze

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

O autorovi O odborném korektorovi Úvod 17 Vývoj jazyka Java Java SE 8 Struktura této knihy Předchozí zkušenosti s programováním nejsou potřebné

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

Programátorská příručka

Programové konvence, dokumentace a ladění. Programování II 2. přednáška Alena Buchalcevová

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

Předmluva k aktuálnímu vydání Úvod k prvnímu vydání z roku Typografické a syntaktické konvence... 20

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

Střední průmyslová škola elektrotechnická Praha 10, V Úžlabině 320 M A T U R I T N Í T É M A T A P Ř E D M Ě T U

Při studiu tohoto bloku se předpokládá, že student je zvládá základy programování v jazyce Java s využitím vývojového prostředí NetBeans.

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

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

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

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

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5);

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

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd

Úvod do Javy, JDBC a multimediální databáze

Seminář Java II p.1/43

KTE / ZPE Informační technologie

Java a Caché IV: Manipulace s objekty

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

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

Java pro programátory.net

Tvorba informačních systémů

Java aplety. Předávání parametrů z HTML

JSR tutorial 2 Transformace v JSR-184

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

Java Řetězce Java, zimní semestr

8 Třídy, objekty, metody, předávání argumentů metod

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

Vláknové programování část V

Tvorba informačních systémů

Remote Method Invocation RMI

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

Vaše jistota na trhu IT. Balíčky. Rudolf Pecinovský

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

Principy objektově orientovaného programování

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

Technologie JavaBeans

Datové abstrakce v programovacích jazycích

Java pro programátory.net

Střední průmyslová škola elektrotechnická Praha 10, V Úžlabině 320

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

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 JavaBeans Java, letní semestr

Class loader. každá třída (java.lang.class) obsahuje referenci na svůj class loader. Implementace class loaderu

6. PRÁCE S DATOVÝMI PROUDY

Úvod do programování v jazyce Java

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

KIV/PIA 2013 Jan Tichava

Jazyk C# (seminář 6)

Distribuované systémy a výpočty

3. Základy programovacího jazyka Java

GUI. Systémová integrace pro desktopové aplikace

Semin aˇr Java V yjimky Radek Ko ˇc ı Fakulta informaˇcn ıch technologi ı VUT Unor 2008 Radek Koˇc ı Semin aˇr Java V yjimky 1/ 25

Obsah. Předmluva Začínáme: překlad, spuštění a ladění 27

Obsah přednášky. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace UML. Co je diagram tříd. Ing. Ondřej Guth

RMI - Distribuované objekty v Javě

Výčtový typ strana 67

Úvodní informace. Petr Hnětynka 2/2 Zk/Z

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

GUI - úvod. V této kapitole si ukážeme návod, jak vytvořit jednoduchou grafickou aplikaci a umístit do ní některé další grafické prvky.

Jazyk C++ II. Šablony a implementace

Softwarové komponenty a Internet

Abstraktní datové typy: zásobník

Studijní zdroje. Studijní zdroje. Studijní zdroje. Podmínky ukončení předmětu. Vlastnosti a použití jazyka Java. Semestrální projekt

Úvodní informace. Petr Hnětynka 2/2 Zk/Z

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech

Práce se soubory v Javě

Programování v C++ 1, 5. cvičení

František Hudek. únor ročník

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

Tvorba informačních systémů

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

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

Transkript:

1 Petr Aubrecht Gerstner Laboratory, 19. 4. 2004

slušn ě napsaná aplikace vynucuje správné návyky (třídy, výjimky, dokumentace, správa thread ů, coding standard, pojmenovávání...) multithreading zdědit od Thread/Process nebo použít interface Runnable síťová aplikace podpora TCP/IP, RMI, CORBA, HTTP, HTML servlety a JSP, applety, EJB, Jini práce s databází (JDBC) GUI (AWT, Swing, příp. další napojení: gtk, qt, win32) 2

podpora standardů obrázky PNG, JPG, čtení GIF + JAI: BMP, FlashPix, PNM, TIFF, WBMP, JPEG 2000, EXIF zvuky ( Java Media Framework) AIFF, AU, AVI, GSM, MIDI, MP2, MP3*, QT, RMF, WAV video AVI, MPEG-1, QT, H.261, H.263 XML, XSL-T zip, gzip java.util.zip (přístup k souboru, streamy) (a)symetrická encrypce (a správa klí čů) Java3D OpenGL, DirectX, (VRML) 3

~90.000 rectangles 45 fps Java->OpenGL VRML 4

"! mutliplatformní vývoj (Linux, Win) použití cizích knihoven, sdílení výsledk ů! režimy běhu: standalone, applet, web-start, serverové aplikace (servlety, JSP, JEE, Corba ap.), J2ME (mobily, PDA) integrace systémů v Jav ě je snadný přístup k objektům jiné aplikace za běhu můžete prozkoumat data a použité typy 5

% ' # + + + + (*) $&% Zdrojový text se přeloží do bytecode. Bytecode se interpretuje. Pokud se daný kód vyhodnocuje vícekrát, přeloží se do strojového kódu. Pokud se přeložený kód vykonává často, přeloží se znovu na základ ě dynamické informace může být i rychlejší než C++. 6

/ 2 1 0,. -, http://www.osnews.com/story.php?news_id=5602 The value of sine for the floating-point number Math.PI is around 1.2246467991473532E-16 while the computed value for the algorithm used in java 1.3.1 is 1.2246063538223773E-16 7

6 ; 8 7 5 3 4 < < < < < 6:9 Preprocesor Ukazatelová aritm. Násobná dědičnost Šablony tříd (STL) Oddělení deklarace a definice nemá vůbec žádná interface! collections of Objects, nov ě v 1.5 všechno se píše do jednoho souboru 8

D@? C C B = > = = = = E @*A Projekt Seznam použitých souborů binární výstup (exe) public/prot./priv. members Pole (statické, dynamické) Stringy Balíčky (packages) Adresářová struktura tříd JAR archiv (ZIP) Každá metoda je popsána zvlášť I pole je objekt (má nap ř. metodu length) Pracuje v Unicode (pozor při ukládání do souboru) 9

N LH M G K K J F F F O H*I new/delete, zodpovědný je autor výjimky (můžou propagovat až k GPF) jenom new (garbage collector) musí se VŽDYCKY ošetřit F F streamy (nepoužívané) F F nekompatibilita mezi kompilátory (C++) i na úrovni src destruktor ~name opravdu se používají možnost použít libovolné knihovny i zkompilované finalize (nepoužívat) 10

P Q U U U U U RTS int, double, boolean klasické char pozor, UNICODE! String trošku nečekan ě je abc objekt typu java.lang.string! pole int[12], také objekt! jsou-li potřeba objekty (nap ř. v kontejnerech), nelze použít int, ale Integer (ap.), obsahují i převody String<->typ 11

V W W X ZY Základ třída, musí být ve stejnojmenném souboru case sensitive, extends znamená dědičnost public class Abc extends Def { protected String greeting = "Hello!"; }; public void sayhello() { } System.out.println(greeting); konečn ě zaveden super! (nadřízená třída) 12

d _ c[ `_ [ [ e e e ab ^ \] Java zná pouze jednoduché dědění! Vícenásobné dědění řeší pomocí interface. Interface je seznam metod: interface Lednicka { void zapnout(); void vypnout(); boolean iszapnuta(); int getteplota(); void otevritdvere(); } 13

l k n m f f g h i j i i j j o Soubory jsou v adresářích balících, package Standardn ě se adr. jmenují podle web. domény Filesystem cz beer pilsen praha Beer.java interface Beer { public double isgood{}; }; j Urquell.java Prazdroj.java class Prazdroj implements cz.beer.beer { }; Branik.java import cz.beer.*; class Branik implements Beer { }; 14

r u q q p q vxw s*t Jmenuje se import import java.io.file; // chci použít tuto třídu import javax.swing.*; // chci všechny třídy z tohoto balíku // nezahrunuje podadresáře! import javax.swing.filechooser.*; public class CustomFileFilter extends FileFilter { 15

y { z z } } } } } } Classpath definuje seznam adresá řů/archiv ů, které jsou prohledávány při vytváření instancí. Příklad: java -cp.;classes;demo.jar. aktuální adresář classes adresá ř classes demo.jar (zip) archiv new a.b.c(...) vede na hledání./a/b/c.class classes/a/b/c.class obsah demo.jar /a/b/c.class 16

ƒ ~ * Je důležité zvyknout si na coding standards Velkým písmenem začíná: definice třídy a interface (interface Beer) Malý písmenem začíná: metody, instance a proměnné (File soubor =...) package (cz.pilsen) Pokud se identifikátor skládá z více slov, je každé počáteční písmeno velké (mujoblibenysoubor) Závorky: for(int i=1; i<10; i++) { System.out.println(i); } 17

ˆ Š Š Š Š JavaBeans znovupoužitelné komponenty (podobn ě jako v Delphi) Nezavádí se ovšem zvláštní způsob tvorby, jsou to obyčejné třídy, pouze dodržují coding standards. Property size: int getsize() void setsize(int) Musí mít konstruktor bez argument ů. 18

Œ * Œ Ž Žx Pokud je k dispozici zdrojový kód přidat do classpath, javadoc se zobrazí automaticky Pokud je k dispozici pouze jar: přidat do classpath, případn ě přidat i javadoc Prozkoumat se dá i zkompilovaný soubor public a protected metody a data zobrazí jména. 19

dv ě možnosti vypořádání se s výjimkou 1. ošetřit ji try/catch/finally 2. předat zodpovědnost nahoru ad 1 může být i více catch za sebou, finally try { } catch(exception e) { System.err.println(e.getMessage()); // nepříliš užitečné e.printstacktrace(); // výpis zásobníku } 20

œ š ad 2 musí být ošetřena volající funkcí public void drink() throws Exception { } nebo lépe specializovaná výjimka public void drink() throws IOException { } 21

Ÿ ž Jedna z mnoha výhod Javy je standardizovaná dokumentace. IDE dnes zobrazují tuto nápovědu i přímo z vašich tříd! 22

Class.forName("org.firebirdsql.jdbc.FBDriver"); Connection conn = DriverManager.getConnection ("jdbc:firebirdsql:localhost:c:/data/test.gdb","username ","pass"); Statement st = conn.createstatement(); ResultSet rs = st.executequery("select * from PIS_ZBOZI"); while(rs.next()) { System.out.println("NAZEV: "+rs.getstring ("NAZEV")); } st.close(); conn.close(); 23

ª ª ª Při práci s knihovnou SWING se setkáme se dvěma nezvyklými pojmy: model a listener. Model: vizuální komponenta odkazuje na model, jehož data zobrazuje. Nap ř. JTable neobsahuje žádná data, dotazuje se modelu. Listener: protože Java nemá ukazatel na funkci, používá třídy, u kterých volá metody: button.addactionlistener(new ActionListener() { public void actionperformed(...) { System.out.println( Bylo zmáčknuto tlačítko! ); } }); 24

«2D grafy: JFreeChart (sf.net) Reporty: JFreeReport (sf.net) GIS: JUMP (http://www.vividsolutions.com/jump/) Matematika: Colt (hoschek.home.cern.ch/hoschek/colt/) Šifrování: BouncyCastle (.org) a mnoho dalších... 25

Vybavená IDE podpora všech možných použití Javy: grafický návrh SWING aplikací, ovládání SQL databáze, JSP, CVS, refaktorizace, další pluginy relativn ě náročné na paměť NetBeans(.org) Sun Eclipse(.org) IBM Idea IntelliJ, $500 JBuilder NE! Jednoduchá IDE rychlejší, mén ě náročná na paměť 26

µ ² ³ ² ± ± ± Bruce Eckel, Thinking in Java Sun pech.cz/thinking/ java.sun.com Česky java.cz Aubrecht Linux + Java + TeX 27