JAVA V jar Java, zimní semestr
|
|
- Jaromír Král
- před 4 lety
- Počet zobrazení:
Transkript
1 JAVA jar 1
2 Přehled vytváření souborů sdružujících.class soubory JAR ~ Java Archive soubor přípona.jar formát ZIP soubor META-INF/MANIFEST.MF popis obsahu použití distribuce softwaru do CLASSPATH lze psát.jar soubory lze přímo spouštět.jar soubory nemusí obsahovat jen.class soubory obrázky audio cokoliv 2
3 Použití vytvoření archivu jar cf soubor.jar *.class vytvoří soubor.jar se všemi.class soubory přidá do něj MANIFEST.MF soubor jar cmf manifest soubor.jar *.class vytvoří soubor.jar s daným MANIFEST souborem jar cf0 soubor.jar *.class nepoužije se komprese pro další parametry viz dokumentaci práce s jar archivy v programu java.util.jar, java.util.zip 3
4 MANIFEST.MF soubor seznam dvojic jméno : hodnota inspirováno standardem RFC822 dvojice lze seskupovat do skupin skupinu odděleny prázdným řádkem hlavní skupina (první) skupiny pro jednotlivé položky archivu délka řádků max konce řádků CR LF, LF, CR 4
5 MANIFEST.MF soubor hlavní sekce Manifest-Version Created-By Signature-Version Class-Path Main-Class aplikace lze spouštět java -jar archiv.jar vedlejší sekce první položka Name: cesta_k_položce_v_archivu 5
6 Jar a Ant task jar v Antu parametry destfile, basedir, includes, excludes, manifest vnořené elementy manifest příklady <jar destfile="${dist}/lib/app.jar" basedir="${build}/classes" excludes="**/test.class" /> <jar destfile="test.jar" basedir="."> <include name="build"/> <manifest> <attribute name="built-by" value="${user.name}"/> <section name="common/class1.class"> <attribute name="sealed" value="false"/> </section> </manifest> </jar> 6
7 JAVA Vlákna 7
8 Přehled (thread) podpora pro vícevláknové aplikace přímo v jazyce "hlavní" vlákno aplikace metoda main() v JVM je vždy několik vláken záleží na implementaci JVM skončí až skončí všechna vlákna (která nejsou nastavena jako daemon) vlákna a skupiny vláken (thread groups) podpora pro synchronizaci synchronized 8
9 Vytvoření vlákna implementace vlákna 1.dědění od třídy java.lang.thread 2.implementování interface java.lang.runnable potomek třídy Thread předefinování metody void run() vlákno se spustí zavoláním metody start() interface Runnable jediná metoda void run() objekt ji implementuje vytvoření vlákna new Thread(Runnable).start() 9
10 Příklad public class SimpleThread extends Thread { private int id; private static int cnt = 0; public SimpleThread() { id = cnt++; start(); } public void run() { for (int i=0; i<5; i++) System.out.println(id + " : "+i); } public static void main(string[] args) { for (int i=0; i<5; i++) { new SimpleThread(); } } } 10
11 yield metoda třídy Thread dočasné pozastavení vlákna, aby mohlo běžet jiné vlákno je to jen doporučení static metoda úprava předchozího příkladu public void run() { for (int i=0; i<5; i++) { System.out.println(id + " : "+i); yield(); } } 11
12 sleep dvě metody třídy Thread sleep(int milis) sleep(int milis, int nanos) nanos v rozsahu static metoda uspí vlákno na požadovanou dobu může být přerušeno (metodou interrupt()) vyhodí výjimku InterruptedException 12
13 join tři metody na třídě Thread join() čeká, dokud dané vlákno neskončí join(int milis) join(int milis, int nanos) čekají dokud dané vlákno neskončí, maximálně však zadanou dobu (0...jako join() bez parametrů) opět můžou být přerušeny výjimka InterruptedException 13
14 Priorita každé vlákno má prioritu void setpriority(int newpriority) int getpriority() 10 úrovní priority konstanty MAX_PRIORITY = 10 MIN_PRIORITY = 1 NORM_PRIORITY = 5 skupina vláken (ThreadGroup) getmaxpriority() setpriority vláknu nastaví maximálně prioritu povolenou pro skupinu vláken, do které vlákno náleží 14
15 Daemon vlákna "servisní" vlákna běží "na pozadí" nepatří přímo do aplikace např. vlákno pro garbage collector JVM skončí pokud skončila všechna ne-daemon vlákna metody void setdaemon(boolean daemon) lze volat jen na ještě nenastartovaném vláknu boolean isdaemon() 15
16 Synchronizace s každou instancí objektu je asociován jeden zámek s každou třídou je asociován jeden zámek příkaz/modifikátor synchronized příkaz synchronized (Výraz) Blok výraz se musí vyhodnotit na referenci na objekt než se začne Blok vykonávat, vlákno musí získat pro sebe zámek na objektu určeném pomocí Výrazu po skončení Bloku se zámek uvolní 16
17 Synchronizace modifikátor metody synchronized v hlavičce metody chová se stejně jako příkaz synchronized vlákno než začne vykonávat metodu musí získat zámek na objektu po skončení metodu se zámek uvolní static synchronized metody získává se zámek asociovaný se třídou vzájemně vyloučeny jsou jen synchronized metody a bloky nějaké vlákno má zámek na objektu ostatní vlákna mohou používat atributy objektu i volat ne-synchronized metody 17
18 wait & notify s každým objektem je asociována fronta čekajících vláken při vytvoření objektu je prázdná používají ji metody wait, notify a notifyall definovány na java.lang.object void wait() lze volat jen pokud volající vlákno drží zámek na daném objektu (tj. v synchronized sekci) jinak výjimka IllegalMonitorStateException vloží vlákno do fronty čekajících vláken uvolní zámek na objektu jiná vlákna mohou získat zámek, tj. začít provádět synchronized blok 18
19 wait & notify po wait je vlákno ve frontě čekajících vláken dokud někdo nezavolá notify nebo notifyall void notify() "probudí" jedno (nějaké) vlákno z fronty čekajících (pokud není prázdná) lze volat jen ze synchronized sekcí jinak výjimka IllegalMonitorStateException probuzené vlákno pokračuje ve výpočtu až získá zámek (tj. vlákno, co drželo zámek (a zavolalo notify) opustí synchonized sekci) void notifyall() probudí všechna vlákna ve frontě vlákna budou pokračovat, až získají zámek 19
20 wait & notify tři varianty wait void wait() void wait(int milis) void wait(int milis, int nanos) čekají ve frontě, dokud někdo neprobudí, maximálně však zadanou dobu čekání ve wait lze přerušit (metoda interrupt()) vyhodí InterruptedException wait, notify i notifyall jsou final metoda sleep() neuvolňuje zámek 20
21 Příklad Jednoduchý zámek public class SimpleLock { private boolean locked; public SimpleLock() { locked = false; } synchronized public boolean lock() { try { while (locked) wait(); locked = true; } catch (InterruptedException e) { return false; } return true; } } synchronized public void unlock() { locked = false; notify(); } Java, winter semester
22 Zastavení vlákna stop() suspend() resume() všechny jsou od JDK 1.2 deprecated nebezpečné mohly způsobovat nekonzistentní stav aplikace nebo způsobovat deadlock 22
23 Skupiny vláken vlákna patří do skupiny vláken třída ThreadGroup skupina vláken může obsahovat jak vlákna tak další skupiny vláken stromová hierarchie lze zjistit všechny vlákna ve skupině nadřazenou skupinu v hierarchii aktivní vlákna ve skupině lze je ignorovat 23
24 Jméno vlákna vlákno má jméno lze ho určit při vytváření vlákna konstruktory Thread(String name) Thread(Runnable obj, String name) za běhu setname(string name) zjištění jména String getname() pokud se jméno nezadá, vytvoří se automaticky "Thread-"+n n je pořadové číslo 24
25 Ostatní metody static Thread currentthread() vratí referenci na právě prováděné vlákno boolean isalive() test zda je vlákno prováděno false pokud vlákno není nastartováno, nebo pokud už skončilo boolean isinterrupted() test, zda má vlákno nastavený příznak interrupted boolean interrupted() jako isinterrupted(), ale zároveň zruší příznak interrupted String tostring() řetězcová reprezentace je složena z jméno priorita skupina 25
26 java.util.concurrent java.util.concurrent java.util.concurrent.atomic java.util.concurrent.locks balíky od JDK 5.0 obsahují třídy pro paralelní přístup k datům, zámky, semafory,... 26
27 JAVA java.lang.object 27
28 Metody clone equals finalize getclass hashcode notify notifyall tostring wait 28
29 Poznámka o equals boolean equals(object obj) pozor na signaturu metody definována s parametrem typu Object při předefinovávání je nutno zachovat typ Object příklad class Complex { long x,y; public boolean equals(object obj) { if (obj instanceof Complex) { Complex c = (Complex) obj; if (c.x == x && c.y == y) { return true; } } return false; } } 29
30 Poznámka o equals je vhodné definovat metodu public boolean equals(object obj) při definici s jiným typem je metoda přetížena, ale ne předefinována class Complex { long x,y; public boolean equals(complex obj) {... } } třída obsahuje 2 metody equals 30
31 hashcode int hashcode() hashovací kód objektu používá se např. v java.util.hashtable a dalších pro stejný objekt vrací stále stejnou hodnotu nemusí být stejná mezi různými běhy programu pokud jsou dva objekty stejné ve smyslu metody equals(), pak hashcode musí vracet u obou stejné číslo dva různé objekty nemusí mít nutně různý hashcode je to ale velmi vhodné 31
32 clone Object clone() throws CloneNotSupportedException vytvoří kopii objektu platí x.clone()!= x mělo by platit (ale nemusí) x.clone().equals(x) aby metoda fungovala, musí objekt implementovat interface Cloneable jinak vyhodí výjimku CloneNotSupportedException pole se berou jako by implementovali Cloneable "klonují" se jen objekty, ne jejich atributy mělká kopie pokud chcete jinak, je nutno metodu předefinovat 32
33 clone předefinování clone typická implementace ne nezbytně nutná protected Object clone() { Object clonedobj = super.clone();... return clonedobj; } při klonování by mělo platit a.clone()!= a a.clone().equals(a) 33
34 tostring vrací textovou reprezentaci objektu implicitně vrací getclass().getname() + '@' + Integer.toHexString(hashCode()) vhodné předefinovat class MyClass {... }... MyClass o = new MyClass(); System.out.println(o); // zavola se tostring() 34
35 JAVA java.lang.system 35
36 java.lang.system obsahuje jen statické elementy nelze od ní vytvářet instance atributy java.io.inputstream in standardní vstup java.io.printstream out standardní výstup java.io.printstream err standardní chybový výstup 36
37 Metody void arraycopy(object src, int srcpos, Object dest, int destpos, int length) kopíruje pole funguje i pokud src==dest long currenttimemillis() aktuální čas v milisekundách od přesnost záleží na OS long nanotime() hodnota systémového timeru v nanosekundách počet nanosekund od nějakého pevného času i v budoucnosti, tj. hodnota může být záporná pro počítaní nějaké doby od JDK 5 37
38 Metody void exit(int status) ukončí JVM void gc() doporučení pro JVM, ať pustí garbage collector void runfinalization() doporučení pro JVM, ať provede všechny dosud neprovedené a naplánované finalizátory void setin(inputstream s) void setout(printstream s) void seterr(printstream s) znovu nastaví daný vstup nebo výstup int identityhashcode(object x) vrátí implicitní hash kód objektu 38
39 Properties dvojice klíč hodnota String (klíč i hodnota) systémové i vlastní Properties getproperties() vrátí všechny nastavené properties java.util.properties potomek java.util.hashtable String getproperty(string key) vrátí hodnotu pokud klíč není nastaven, vrací null String getproperty(string key, String def) vrátí hodnotu pokud klíč není nastaven, vrací def 39
40 Properties void setproperties(properties props) nastaví properties v props String setproperty(string key, String val) nastaví danou property vrací původní hodnotu nebo null String clearproperty(string key) zruší danou property nastavení properties při startu JVM parametr -Dkey=value př. java -DdefaultDir=/usr Program typicky se jako klíče používají hierarchická jména oddělená tečkami 40
41 Vždy nastavené properties java.version java.home adresář, ve kterém je instalace JAVy java.class.path java.io.tmpdir kde se budou vytvářet dočasné soubory os.name, os.architecture, os.version identifikace operačního systému file.separator oddělovač souborů v cestě (unix "/", win "\") path.separator odděloač cest (unix ":", win ";") line.separator oddělovač řádků (unix "LF", win "CR LF") 41
42 Vždy nastavené properties user.name název učtu aktuálního uživatele user.home domovský adresář user.dir aktuální adresář dále několik properties identifikujích VM 42
43 Proměnné prostředí Map<String, String> getenv() všechny proměnné prostředí nemodifikovatelná kolekce String getenv(string name) proměnná s daným jménem nebo null 43
44 JAVA java.lang.runtime 44
45 Runtime vždy existuje jedna instance nelze vytvářet další instance Runtime getruntime() statická metoda vrátí instanci Runtime int availableprocessors() závisí na implementaci vrácená hodnota se může za běhu programu měnit long freememory() volná paměť dostupná pro JVM long maxmemory() maximální dostupná paměť pro JVM void halt(int status) ukončení JVM, na nic nečeká 45
46 Runtime void addshutdownhook(thread hook) nastaví vlákno, které se má provést při ukončování JVM hook vytvořené, ale nenastartované vlákno může být nastaveno více vláken začnou se provádět v "nějakém" pořadí daemon vlákna běží i během ukončování JVM nastavená vlákna se nevykonají, pokud JVM byla ukončena pomocí halt() boolean removeshutdownhook(thread hook) odstraní dříve nastavené vlákno vrací false, pokud dané vlákno nebylo nastaveno 46
47 Runtime Process exec(string command) spustí externí proces několik variant funkce (různé parametry) nemusí vždy spolehlivě fungovat třída Process reprezentuje externí proces metody void destroy() zabije proces int exitvalue() návratová hodnota int waitfor() čeká, dokud proces neskončí vrací návratovou hodnotu procesu může být přerušen 47
48 JAVA java.lang.math 48
49 java.lang.math statické atributy a metody pro základní matematické konstanty a operace atributy PI, E metody abs, ceil, floor, round, min, max,... pow, sqrt,... sin, cos, tan, asin, acos, atan,... todegrees, toradians,
50 Java, zimní semestr Verze prezentace 2015 J07.cz Tato prezentace podléhá licenci Creative Commons Uveďte autora-neužívejte komerčně 4.0 Mezinárodní License. 50
JAVA V Vlákna Java, zimní semestr
JAVA Vlákna 1 Přehled (thread) podpora pro vícevláknové aplikace přímo v jazyce "hlavní" vlákno aplikace metoda main() v JVM je vždy několik vláken záleží na implementaci JVM skončí až skončí všechna vlákna
VíceJAVA. java.lang.system
JAVA java.lang.system 1 java.lang.system obsahuje jen statické elementy nelze od ní vytvářet instance atributy java.io.inputstream in standardní vstup java.io.printstream out standardní výstup java.io.printstream
VíceJAVA. Krátce o Reflection API
JAVA Krátce o Reflection API 1 Přehled reflection, introspection umožňuje zjišťování informací o třídách, atributech, metodách vytváření objektů volání metod... balík java.lang.reflect třída java.lang.class
VíceDefinice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky
JAVA Třídy Definice třídy úplná definice [public] [abstract] [final] class Jmeno [extends Predek] [impelements SeznamInterfacu] {... // telo tridy public veřejná třída abstract nesmí být vytvářeny instance
VíceVlákna. První jednoduchý program s vlákny:
Vlákna Současné operační systémy jsou víceúlohové. Z uživatelského pohledu se zdá, že běží několik úloh zároveň. Je tedy možné napsat i jeden program tak, aby v něm běželo vedle sebe několik relativně
VíceVlákna. První jednoduchý program s vlákny:
Vlákna Současné operační systémy jsou víceúlohové. Z uživatelského pohledu se zdá, že běží několik úloh zároveň. Jednotlivé úlohy se nazývají procesy nebo také vlákna (tento termín používá i Java). Operační
VíceJAVA. Krátke poznámky:
JAVA Krátke poznámky: Vše je definováno ve třídách; Žádné funkce mimo třídy Skoro všetko je objekt, výnimka sú premenné (napr. int) Neexistuje operátor delete Rušenie objektov výlučne cez Garbage Collector
Více7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd
7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd Algoritmizace (Y36ALG), Šumperk - 7. přednáška 1 Třída jako zdroj funkcionality Třída v jazyku Java je programová jednotka tvořená
VíceMichal 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íceDefinice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky
JAVA Třídy Definice třídy úplná definice [public] [abstract] [final] class Jmeno [extends Predek] [impelements SeznamInterfacu] {... // telo tridy public veřejná třída abstract nesmí být vytvářeny instance
VíceDefinice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky
JAVA Třídy Definice třídy úplná definice [public] [abstract] [final] class Jmeno [extends Predek] [impelements SeznamInterfacu] {... // telo tridy public veřejná třída abstract nesmí být vytvářeny instance
Více30. Vlákna, jejich atributy, metody, organizace a stavy. Možnosti synchronizace. (A7B36PVJ)
30. Vlákna, jejich atributy, metody, organizace a stavy. Možnosti synchronizace. (A7B36PVJ) Procesy a vlákna Proces Každá aplikace je vlastně běžící proces. Pokud je aplikace spuštěna vícekrát, vytvoří
VícePrincipy objektově orientovaného programování
Principy objektově orientovaného programování Třídy a objekty 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 C E T
VíceVIII. Seminář Java VIII p.1/36
Seminář Java VIII Seminář Java VIII p1/36 Rekapitulace Grafické uživatelské rozhraní Swing vs AWT Aplety Aplikační rámec, JApplet spouštení v prohlížeči, Appletviewer Událostní model knihovny Swing události
VíceProgramování v Javě I. Leden 2008
Seminář Java Programování v Javě I Radek Kočí Fakulta informačních technologií VUT Leden 2008 Radek Kočí Seminář Java Programování v Javě (1) 1/ 45 Téma přednášky Datové typy Deklarace třídy Modifikátory
VíceProgramování v Javě I. Únor 2009
Seminář Java Programování v Javě I Radek Kočí Fakulta informačních technologií VUT Únor 2009 Radek Kočí Seminář Java Programování v Javě (1) 1/ 44 Téma přednášky Datové typy Deklarace třídy Modifikátory
VícePokročilé programování na platformě Java. Úvod
Pokročilé programování na platformě Java Úvod O předmětu Petr Hnětynka hnetynka@d3s.mff.cuni.cz http://d3s.mff.cuni.cz/teaching/vsjava/ pokračování "Javy (NPRG013)" předpokládá se základní znalost Javy
VíceJava Výjimky Java, zimní semestr
Java Výjimky 1 Výjimky (exceptions) hlášení a ošetření chyb výjimka signalizuje nějaký chybový stav výjimka = instance třídy java.lang.throwable dvě podtřídy java.lang.error a java.lang.exception konkrétní
VíceÚvod do programovacích jazyků (Java)
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích
VícePŘETĚŽOVÁNÍ OPERÁTORŮ
PŘETĚŽOVÁNÍ OPERÁTORŮ Jazyk C# podobně jako jazyk C++ umožňuje přetěžovat operátory, tj. rozšířit definice některých standardních operátorů na uživatelem definované typy (třídy a struktury). Stejně jako
VíceVlákno odlehčený proces kód vlákna, zásobník privátní ostatní sdíleno s dalšími vlákny téhož procesu
Procesy, vlákna 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 Implementace vláken one-to-one o implementace na úrovni jádra o každé vlákno je pro
Více14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.
Základy programování (IZAPR) Přednáška 7 Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 229, Náměstí Čs. legií Michael.Bazant@upce.cz Obsah přednášky 7 Parametry metod, předávání
VícePředmluva k aktuálnímu vydání Úvod k prvnímu vydání z roku Typografické a syntaktické konvence... 20
Obsah 5 Obsah Předmluva k aktuálnímu vydání 15 1 Úvod k prvnímu vydání z roku 2000 16 Typografické a syntaktické konvence................ 20 2 Základní pojmy 21 2.1 Trocha historie nikoho nezabije................
VíceTeoretické 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ícetypová konverze typová inference
Seminář Java Programování v Javě II Radek Kočí Fakulta informačních technologií VUT Únor 2008 Radek Kočí Seminář Java Programování v Javě (2) 1/ 36 Téma přednášky Rozhraní: použití, dědičnost Hierarchie
Více4. ZÁKLADNÍ POJMY Z OBJEKTOVĚ ORIENTOVANÉHO PROGRAMOVÁNÍ
4. ZÁKLADNÍ POJMY Z OBJEKTOVĚ ORIENTOVANÉHO PROGRAMOVÁNÍ OBJEKT Program v Javě je staticky strukturován na třídy, jejichž instance (objekty) za běhu dynamicky programu vznikají a zanikají. Objekt je nejprve
VíceJava efektivně. Lukáš Zapletal liberix.cz. Pokročilejší techniky programování v Javě
Lukáš Zapletal liberix.cz Pokročilejší techniky programování v Javě Tato prezentace vychází kompletně z knihy J. Blocha: Effective Java (A-W 2001) u nás Java efektivně - 57 zásad softwarového experta (Grada
VíceIterator & for cyklus
Iterator & for cyklus for (Object o : foo) funguje pokud je foo pole nebo je foo iterovatelné jako to zařídit? implementovat interface java.lang.iterable Iterable má jednu metodu java.util.iterator iterator()
VíceJava a XML. 10/26/09 1/7 Java a XML
Java a XML Java i XML jsou přenositelné V javě existuje podpora pro práci s XML, nejčastější akce prováděné při zpracování XML: načítání XML elementů generování nových elementů nebo úprava starého zápis
VíceAlgoritmizace a programování
Algoritmizace a programování Struktura programu Vytvoření nové aplikace Struktura programu Základní syntaktické elementy První aplikace Verze pro akademický rok 2012/2013 1 Nová aplikace NetBeans Ve vývojovém
VíceVícevláknové aplikace
Vícevláknové aplikace Jiří Vokřínek Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 7 B0B36PJV Programování v JAVA Jan Faigl, Jiří Vokřínek, 2017 B0B36PJV Přednáška
VíceAbstraktní datové typy: zásobník
Abstraktní datové typy: zásobník 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 Abstraktní datové typy omezené rozhraní
VíceClass loader. každá třída (java.lang.class) obsahuje referenci na svůj class loader. Implementace class loaderu
Seminář Java Zavádění tříd Radek Kočí Fakulta informačních technologií VUT Duben 2008 Radek Kočí Seminář Java Zavádění tříd 1/ 16 JVM zavádí třídy dynamicky Class loader objekt schopný zavádět třídy abstraktní
VíceSeminář Java II p.1/43
Seminář Java II Seminář Java II p.1/43 Rekapitulace Java je case sensitive Zdrojový kód (soubor.java) obsahuje jednu veřejnou třídu Třídy jsou organizovány do balíků Hierarchie balíků odpovídá hierarchii
Více14.4.1. Typický prvek kolekce pro české řazení
14.4. Co všechno by měl mít typický prvek kolekce 177 Poznámka: Třídy BigInteger, BigDecimal a Date budou vysvětleny v částech [15./183, [16./185 a [18.1./204. 14.4.1. Typický prvek kolekce pro české řazení
VíceMichal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký 1 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íceProgramovací jazyk Java
1 z 8 Programovací jazyk Java Enumerace (výčty) Složitější definice výčtového typu Konstanty anonymních typů Výčtový typ a datové struktury Java packaging JAR archivy CLASSPATH Apache Ant 10. přednáška
Více20. 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íceTŘÍDY POKRAČOVÁNÍ. Události pokračování. Příklad. public delegate void ZmenaSouradnicEventHandler (object sender, EventArgs e);
TŘÍDY POKRAČOVÁNÍ Události pokračování public delegate void ZmenaSouradnicEventHandler (object sender, EventArgs e); class Bod private int x; private int y; public event ZmenaSouradnicEventHandler ZmenaSouradnic;
VíceSeminář Java IV p.1/38
Seminář Java IV Seminář Java IV p.1/38 Rekapitulace Deklarace tříd Proměnné, metody, konstruktory, modifikátory přístupu Datové typy primitivní, objektové, pole Dědičnost Řídící konstrukce Podmínky, cykly
VíceVýčtový typ strana 67
Výčtový typ strana 67 8. Výčtový typ V této kapitole si ukážeme, jak implementovat v Javě statické seznamy konstant (hodnot). Příkladem mohou být dny v týdnu, měsíce v roce, planety obíhající kolem slunce
VíceGenerické programování
Generické programování Od C# verze 2.0 = vytváření kódu s obecným datovým typem Příklad generická metoda, zamění dva parametry: static void Swap(ref T p1, ref T p2) T temp; temp = p1; p1 = p2; p2 =
Vícepublic 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íceSoubor jako posloupnost bytů
Soubory Soubor je množina údajů uložená ve vnější paměti počítače, obvykle na disku Pro soubor jsou typické tyto operace. otevření souboru čtení údaje zápis údaje uzavření souboru Přístup k údajům (čtení
VíceJAVA. Další jazyky kompilovatelné do Java byte-code
JAVA Další jazyky kompilovatelné do Java byte-code Přehled Scala objektový a funkcionální jazyk Closure funkcionální jazyk dialekt Lispu Groovy skritpovací jazyk Kotlin nová Java Jython Java implementace
VíceSeznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí
Kolekce obecně Seznamy a iterátory 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 Kolekce ::= homogenní sada prvků
Více7. Statické prvky třídy
Statické prvky třídy strana 61 7. Statické prvky třídy V úvodních kapitolách jsme popsali deklaraci a používání datových atributů a metod instance. Jsou to nejčastě ji používané součásti třídy, nicméně
VíceMichal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký 1 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ícePříklad aplikace Klient/Server s Boss/Worker modelem (informativní)
Příklad aplikace Klient/Server s Boss/Worker modelem (informativní) Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze A0B36PR2 Programování 2 Jan Faigl, 2015 A0B36PR2
VíceJava Řetězce Java, zimní semestr
Java Řetězce 1 Řetězec instance třídy java.lang.string kompilátor s nimi zachází téměř jako s primit. typy řetězcové konstanty = instance třídy String nezměnitelné!!! pro změny třídy StringBuffer, StringBuilder
VíceProcházka na provázku
Procházka na provázku Program s mnoha metodami připomíná knósský labyrint s mnoha sály, jimiž se protlouká statečný Threadeus, jemuž pro šťastný návrat chytrá Ariadna dala klubíčko. Threadeus pokaždé při
VíceZ. Kotala, P. Toman: Java ( Obsah )
Z. Kotala, P. Toman: Java ( Obsah ) 13. Výjimky Výjimka (exception) je definována jako událost, která nastane během provádění programu a která naruší normální běh instrukcí. Výjimka je vyvolána například
VíceJAVA V RMI Java, letní semestr
JAVA RMI Přehled Remote Method Invocation používání vzdálených objektů objekty v jiné VM (na stejném počítači i přes síť) jako by to byly lokální objekty (téměř) pouze volání trvají déle Vzdálené volání
VíceOMO. 4 - Creational design patterns A. Singleton Simple Factory Factory Method Abstract Factory Prototype Builder IoC
OMO 4 - Creational design patterns A Singleton Simple Factory Factory Method Abstract Factory Prototype Builder IoC Ing. David Kadleček, PhD. kadlecd@fel.cvut.cz, david.kadlecek@cz.ibm.com 1 Creational
Více11. Dědičnost. Dědičnost strana 103
Dědičnost strana 103 11. Dědičnost V této kapitole si vysvětlíme jeden ze základních pojmů objektově orientovaného programování dědičnost (inheritance). S ní souvisejí i následující témata: předek a potomek
VíceRMI 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íceTřídy. Instance. Pokud tento program spustíme, vypíše následující. car1 má barvu Red. car2 má barvu Red. car1 má barvu Blue.
23. Třídy, generické třídy, instance, skládání, statické metody a proměnné. Zapouzdření, konstruktory, konzistence objektu, zpřístupnění vnitřní implementace, modifikátory public a private. Polymorfismus,
VíceVláknové programování část V
Vláknové programování část V Lukáš Hejmánek, Petr Holub {xhejtman,hopet@ics.muni.cz Laboratoř pokročilých síťových technologií PV192 2014 03 25 1/25 Přehled přednášky Paměťový model Javy GUI v Javě Vlákna
VícePodmínky na zápočet. Java, zimní semestr
Podmínky na zápočet zápočtový test u počítače zápočtový program "rozumná" velikost téma do 12. 1. 2018 emailem cvičícímu domácí úkoly 225 bodů (max 450) docházka víc než 3 absence 315 bodů 1 Domácí úkoly
VíceZOS 9. cvičení, ukázky kódu. Pavel Bžoch
ZOS 9. cvičení, ukázky kódu Pavel Bžoch Obsah Komunikace mezi procesy Atomické operace TSL a CAS Zámky Semafory Semafory vypsání věty Monitor Bariéra pomocí monitoru Implementace semaforu pomocí monitoru
Více1. Téma 12 - Textové soubory a výjimky
1. Téma 12 - Textové soubory a výjimky Cíl látky Procvičit práci se soubory s využitím výjimek. 1.1. Úvod Program, aby byl programem, my mít nějaké výstupy a vstupy. Velmi častým případem je to, že se
VíceIRAE 07/08 Přednáška č. 2. atr1 atr2. atr1 atr2 -33
Objekt jako proměnná Objekty a metody Objekt = proměnná referenčního typu vznik pomocí new, chování viz pole jako referenční proměnná minulý semestr Stack Heap objekt ref this 10 20 atr1 atr2 jinyobjekt
Více11 Diagram tříd, asociace, dědičnost, abstraktní třídy
11 Diagram tříd, asociace, dědičnost, abstraktní třídy Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost diagramům tříd, asociaci,
VíceProcesy a vlákna - synchronizace
ÚVOD DO OPERAČNÍCH SYSTÉMŮ Ver.1.00 Procesy a vlákna - synchronizace České vysoké učení technické Fakulta elektrotechnická 2010 Studijní materiály a informace o předmětu http://measure.feld.cvut.cz/vyuka/predmety/bakalarske/navody
VíceProgramování v jazyku Java vlákna a procesy
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Programování v jazyku Java vlákna a procesy BI-PJV Programování v jazyku Java Katedra teoretické informatiky Miroslav Balík Fakulta informačních
VíceO 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é
O autorovi 15 O odborném korektorovi 15 Úvod 17 Vývoj jazyka Java 17 Java SE 8 19 Struktura této knihy 20 Klíčové znalosti a pojmy 20 Testové otázky 20 Odpovídá expert 20 Cvičení 20 Předchozí zkušenosti
Více3. Třídy. Základní pojmy objektového programování. Třídy
3. Třídy Základní pojmy objektového programování Jak už víme, je Java objektovým programovacím jazykem. V úvodu této kapitoly si objasníme základní pojmy objektové teorie. Objekt představuje souhrn dat
VíceUJO 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íceAbstraktní třída a rozhraní
Abstraktní třída a rozhraní Někdy se může stát, zejména při psaní v hierarchické struktuře hodně nadřazených tříd, že tušíme, že bude ve zděděných třídách vhodné použít nějakou metodu. Tuto metodu ještě
VíceMichal 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íceJAVA RMI Java, letní semestr 2018
JAVA RMI Přehled Remote Method Invocation používání vzdálených objektů objekty v jiné VM (na stejném počítači i přes síť) jako by to byly lokální objekty (téměř) pouze volání trvají déle java.rmi modul
VícePočí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/04.0006
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/04.0006 Lekce 1 Jazyk Java Tento projekt je spolufinancován Evropským sociálním fondem
VíceÚvod do programovacích jazyků (Java)
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích
Více8 Třídy, objekty, metody, předávání argumentů metod
8 Třídy, objekty, metody, předávání argumentů metod Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost třídám a objektům, instančním
VícePokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.
Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat. 1. Odkrokujte následující program a s použitím notace z přednášky sledujte stav paměti
VíceTematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných
Tematický celek 03 3.1 Proměnné Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace. 3.1.1 Deklarace proměnných Dim jméno_proměnné [As typ] - deklarace uvnitř procedury platí pouze pro
VíceMichal 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íce11.5.2012. 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
Obsah přednášky 9 Základy programování (IZAPR, IZKPR) Přednáška 9 Základy dědičnosti, přístupová práva Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 03 022, Náměstí Čs. legií
Více1. Programování proti rozhraní
1. Programování proti rozhraní Cíl látky Cílem tohoto bloku je seznámení se s jednou z nejdůležitější programátorskou technikou v objektově orientovaném programování. Tou technikou je využívaní rozhraní
VíceÚvod do programování - Java. Cvičení č.4
Úvod do programování - Java Cvičení č.4 1 Sekvence (posloupnost) Sekvence je tvořena posloupností jednoho nebo více příkazů, které se provádějí v pevně daném pořadí. Příkaz se začne provádět až po ukončení
VíceJava - výjimky. private void vstup() throws IOException {... }
Java - výjimky Tato kapitola ukazuje na několika příkladech práci s výjimkami v Javě. Klíčové pojmy: Výjimka, hierarchie výjimek, zachytávání výjimek, blok try-catch, tvorba vlastních výjimek, propagace
Více5 Rekurze a zásobník. Rekurzivní volání metody
5 Rekurze a zásobník Při volání metody z metody main() se do zásobníku uloží aktivační záznam obsahující - parametry - návratovou adresu, tedy adresu, kde bude program pokračovat v metodě main () po skončení
VíceÚvod Třídy Rozhraní Pole Konec. Programování v C# Hodnotové datové typy, řídící struktury. Petr Vaněček 1 / 39
Programování v C# Hodnotové datové typy, řídící struktury Petr Vaněček 1 / 39 Obsah přednášky Referenční datové typy datové položky metody přístupové metody accessory, indexery Rozhraní Pole 2 / 39 Třídy
VíceVytváření a použití knihoven tříd
Vytváření a použití knihoven tříd 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 Prostory jmen motivace spolupráce
VíceÚvod do programovacích jazyků (Java)
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích
Více7 Formátovaný výstup, třídy, objekty, pole, chyby v programech
7 Formátovaný výstup, třídy, objekty, pole, chyby v programech Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost formátovanému výstupu,
VícePokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.
Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat. 1. Odkrokujte následující program a s použitím notace z přednášky sledujte stav paměti
VíceAlgoritmizace a programování
Algoritmizace a programování Řídicí struktury, standardní metody Problematika načítání pomocí Scanner Některé poznámky k příkazům Psaní kódu programu Metody třídy Math Obalové třídy primitivních datových
VíceProgramování v C++ 3, 3. cvičení
Programování v C++ 3, 3. cvičení úvod do objektově orientovaného programování 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled Dokončení spojového
VíceSemin 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
Seminář Java Výjimky Radek Kočí Fakulta informačních technologií VUT Únor 2008 Radek Kočí Seminář Java Výjimky 1/ 25 Výjimky Co a k čemu jsou výjimky výjimka je mechanizmus umožňující psát robustní, spolehlivé
VíceRegulární výrazy. Vzory
Regulární výrazy Regulární výrazy jsou určeny pro práci s textovými řetězci, jsou součástí J2SDK až od verze 1.4, v předchozích verzích je potřeba použít některou z externích knihoven, např. knihovnu ORO
VíceKonstruktory a destruktory
Konstruktory a destruktory Nedostatek atributy po vytvoření objektu nejsou automaticky inicializovány hodnota atributů je náhodná vytvoření metody pro inicializaci, kterou musí programátor explicitně zavolat,
VícePREPROCESOR 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íceGUI. Systémová integrace pro desktopové aplikace
GUI Systémová integrace pro desktopové aplikace 1 java.awt.desktop systémová integrace desktopových aplikací static boolean isdesktopsupported() test zda je integrace k dispozici static Desktop getdesktop()
VíceKTE / ZPE Informační technologie
4 KTE / ZPE Informační technologie Ing. Petr Kropík, Ph.D. email: pkropik@kte.zcu.cz tel.: +420 377 63 4639, +420 377 63 4606 (odd. informatiky) Katedra teoretické elektrotechniky FEL ZČU Plzeň Největší
VíceStatické proměnné a metody. Tomáš Pitner, upravil Marek Šabo
Statické proměnné a metody Tomáš Pitner, upravil Marek Šabo Úvod Se statickou metodou jsme se setkali už u úplně prvního programu - Hello, world! public class Demo { public static void main(string[] args)
VícePříklad : String txt1 = new String( Ahoj vsichni! ); //vytvoří instanci třídy String a přiřadí ji vnitřní hodnotu Ahoj vsichni!
Java práce s řetězci Trochu povídání.. Řetězce jsou v Javě reprezentovány instancemi tříd StringBuffer a String. Tyto třídy jsou součástí balíčku java.lang, tudíž je možno s nimi pracovat ihned bez nutného
VíceJazyk C# (seminář 3)
Jazyk C# (seminář 3) Pavel Procházka KMI October 8, 2014 Motivace Největší využití v programování okenních aplikací a GUI knihoven. Data reprezentujeme pomocí objektů (tříd), máme tedy ucelený pohled na
VíceANT. 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