Java pro programátory.net



Podobné dokumenty
Java pro programátory.net

Cílem kapitoly je seznámit studenta se strukturou programu a jeho překladem.

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

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

Typický prvek kolekce pro české řazení

Úvod do programování v jazyce Java

Algoritmizace a programování

Struktura třídy, operátory, jednoduché algoritmy, junit. Programování II 2. cvičení Alena Buchalcevová

Java Enum Java, zimní semestr ,2017 1

PREPROCESOR POKRAČOVÁNÍ

3 Vývojová prostředí, základní prvky jazyka Java, konvence jazyka Java

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

Java a Caché IV: Manipulace s objekty

Úvod do programovacích jazyků (Java)

Programování v Javě I. Leden 2008

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

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

Obsah. Úvodem 9 Komu je kniha určena 9 Forma výkladu 9 Konkrétní postup výuky 10 Příklady ke knize 11

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

Jazyk C# přednáška 01. Fakulta elektrotechniky a informatiky Univerzita Pardubice 2014/2015

Principy objektově orientovaného programování

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

Seznámení žáků s pojmem makra, možnosti využití, praktické vytvoření makra.

RMI Remote Method Invocation

Fakulta elektrotechniky a informatiky Univerzita Pardubice 2014/2015. poslední přednáška a materiál k samostudiu

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

Zápis programu v jazyce C#

Úvod do programování v jazyce Java

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

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

Gymnázium, Praha 6, Arabská 14. předmět: Programování. vyučující: Tomáš Obdržálek. Piškvorky. ročníkový projekt. Le Hoang Nguyen, 1.E.

Teoretické minimum z PJV

5. Ř etězce (třída String)

David Bednárek Jakub Yaghob Filip Zavoral.

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

MINISTERSTVO PRO MÍSTNÍ ROZVOJ UŽIVATELSKÁ PŘÍRUČKA IS KP 14+ PRO INTEGROVANÉ NÁSTROJE: ŽÁDOST O PODPORU STRATEGIE CLLD. Verze: 1.

Informační systém pro rezervaci pokojů hotelu SPORT

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

funkční na dual-sim telefonech možnost přesměrovat příchozí hovory možnost nastavení více telefonních čísel pro případ, že je jedno nedostupné

Java efektivně. Lukáš Zapletal liberix.cz. Pokročilejší techniky programování v Javě

Uložené procedury Úvod ulehčit správu zabezpečení rychleji

Programovací jazyk Java

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/

VYUŽITÍ NEURONOVÝCH SÍTÍ PROSTŘEDÍ MATLAB K PREDIKCI HODNOT NÁKLADŮ PRO ELEKTRICKÉ OBLOUKOVÉ PECE

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

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

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

Abstraktní datové typy: zásobník

JAVA. Krátke poznámky:

Kapitola 5 WCF, webové služby a mezidoménové zásady

Algoritmus (nebo dřívějším pravopisem algorithmus)

Prostory jmen. #include<iostream.h> namespace RadimuvProstor { int secti(int a, int b); class Trida { private: int Atribut; public: void metoda();

boolean hasnext() Object next() void remove() Kolekce

Pokyny k instalaci FRIATRACE Verze 5.3

4IT218 Databáze. 4IT218 Databáze

Komponenty v.net. Obsah přednášky

1 - Úvod do platformy.net. IW5 - Programování v.net a C#

Klíčová slova: OOP, konstruktor, destruktor, třída, objekt, atribut, metoda

Obsah. Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13

ISZR Referenční agent.net

Úvod do jazyka C. Proč jazyk C

Návrhové vzory Tvorba objektů

Praktické úlohy- zaměření specializace

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

GUI. JavaFX. Java UI, letní semestr 2017/2018 1

Základní stavební prvky algoritmu

KOMORA DAŇOVÝCH PORADCŮ ČR STANDARD PRO SDÍLENÍ ÚČETNÍCH / FAKTURAČNÍCH ÚDAJŮ. (Short Invoice Descriptor)

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

Mikromarz. CharGraph. Programovatelný výpočtový měřič fyzikálních veličin. Panel Version. Stručná charakteristika:

Jakub Čermák Microsoft Student Partner

Windows 7 kompletní příručka. Bohdan Cafourek. Vydala Grada Publishing a.s. U Průhonu 22, Praha 7 jako svou publikaci

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT. Cyklus while, do-while, dělitelnost, Euklidův algoritmus

Java Řetězce Java, zimní semestr

Bázové třídy platformy.net

Základy programovaní 3 (Java)

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

SWT & MigLayout. Alternativy Java GUI v praxi. Pavel Janečka & Tomáš Chlouba. červen 2011

Jazyk C# (seminář 6)

7. Dynamické datové struktury

Validátor jbpm 3 Workflow jako plugin pro Eclipse IDE

Část 1 Třídy a objekty. Objektově orientované programování. Část 2 Vztahy mezi objekty. Část 3 Objektově orientované programování (v Javě)

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

Informační a komunikační technologie. 1.4 Data, informace, komprimace

UJO Framework. revoluční architektura beans. verze

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

Krajská hospodářská komora Střední Čechy. Pravidla soutěže. Poznáváme firmy ve středních Čechách. 1. Pořadatel soutěže. 2. Termín konání soutěže

Modul informačního systému SPŠSE Liberec

Soubory a databáze. Soubor označuje množinu dat, která jsou kompletní k určitému zpracování a popisují vybrané vlastnosti reálných objektů

Dědičnost (inheritance)

Generické programování

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

8. GRAFICKÉ UŽIVATELSKÉ ROZHRANÍ

Algoritmizace a programování

Algoritmizace a programování

Záloha a obnovení Uživatelská příručka

Oborové číslo Hodnocení - část A Hodnocení - část B Hodnocení - část A+B

Server. Software serveru. Služby serveru

PrvnÌ program pro Windows 23. SystÈmovÈ poûadavky 24 V bïr vhodnè verze 25 Instalace Visual C#

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.

Transkript:

Java pro programátory.net Lukáš Zapletal liberix.cz Představení jazyka

Co je to Java? [džáva] Java je objektově orientovaný jazyk stvořený pro vestavěná zařízení, který se uchytil v mnoha oblastech od desktopy až po mobilní zařízení a Internet. Největší úspěchy zažívá na serverech. J2SE standardní edice J2EE komponent. technologie pro obchod J2ME - ořezaná J2SE (mobily, TV, PDA)

Letem světem... JVM = CLR Bytecode = IL Java, JPython... = C#, VB, Managed C++ JAR = DLL/EXE JDK =.NET Framework SDK javac = cs ant = make Servlet/JSP/JSF = ASP.NET Eclipse, Netbeans = MS Visual Studio (www.eclipse.org, www.netbeans.org)

Kde ji najít... java.sun.com vývojáři java.com uživatelé JRE nutné pro běh (14MB) JDK překladač, nástroje (50MB) JDK + Netbeans bundle (100MB) dokumentace zvlášť (50MB) (rozbalit do./doc)

Jak se ji naučit... B. Eckels: Thinking In Java (www, vyšla v překladu Grada 2003) čeští autoři M. Virius, P. Herout J. Bloch Effective Java (překlad, Grada) další zdroje: jakarta.apache.org - Ant www.onjava.com - články www.theserverside.com - J2EE

Co je stejné... jednoduchá dědičnost (jeden rodič) operátor new, sběr smetí přístup ke členům pomocí tečky abstraktní metody a jejich princip rozhraní, dědičnost rozhraní konstruktory, implicitní konstruktory

Co je jiné: způsob zápisu balíčky: cz.upol.zapletal třídy: Trida, MojeTrida, SuperDlouhyNazev metody: init, doupdate, getsize, setsize členské proměnné: stejné jako metody konstanty: K1, KONSTANTA_JEDNA

Co je jiné: základy JAVA java.lang.object balíčky výchozí: package metody automaticky virtuální nemá destruktor (pouze finalizaci) anonymní třídy C# System.Object namespaces výchozí: private nutno použít virtual/override desktruktor (~) je jen zkratka pro finalize pouze anonymní metody

Co je jiné: data a operátory nemá unisgned nemá ukazatele (záměr) boxing/unboxing až od verze 5 enum až od 5 struct = class operátory stejné instanceof final unsigned int/short... základní podpora pro ukazatele má (un)boxing Integer a = 5; má enum má struct operátory stejné is sealed

Co je jiné: řízení toku if, while, do, for, break, continue úplně stejné jako v Javě switch jen int/enum switch i řetězce nemá goto (záměr) goto lze použít foreach až od verze jazyka 5: for (Object c: col) nemá přetěžování operátorů (záměr) foreach (object o in collection) C# umí přetěžovat některé operátory

Co je jiné: výjimky java.lang.throwable System.Exception dvě úrovně: Error, Exception rozlišuje mezi povinnými a nepovinnými výjimkami má pouze výjimky všechny výjimky jsou nepovinné (jejich odchyt není nutný) throws v metodách těžko se dá programovat špatně zásadně se netestuje výsledek op. na null v.netu lze snadno programovat nebezpečně - tedy nezachytávat výjimky testování na null (někdy)

Co je jiné: Object tostring() equals(object o) ToString() Equals(Object o) hashcode() GetHashCode() getclass() GetClass() finalize() Finalize() clone() MemberWiseClone()

Co je jiné: kolekce bohatší dvě verze má vláknovězabezpečené i nezabezpečené množina (Set) Collections.sort(...) nemá [...] funkčně chudší pouze jedna verze, dobré pojmenování pouze vláknově nezabezpečené nemá množiny kolekce.sort() možno použít [...] problém přetypovávání (Commons Primitives) problém přetypovávání (boxing/unboxing)

Co je jiné: I/O, vlákna dobrá knihovna proudů + NIO dobrá knihovna proudů serializace (Serializable) serializace (ISerializable) Reader/Writer Reader/Writer java.lang.thread System.Threading ThreadPool jako ext. knihovna ThreadPool přímo v knihovně

Co je jiné: vlastnosti get/set properties: int getsize() { return size; } void setsize(int s) { size = s; } int Size { get { return size; } set { size = value; } }

Co je jiné: řetězce java.lang.string prim. typ: string String a = xxx ; string a = xxx ; a.equals( b ) nebo b.equals(a) a == b nebo b == a těžší zápis, výhody toho, že String má své místo v hiearchii snadnější zápis, string stojí mimo API nutno s ním nakládat zvlášť spojování pomocí + spojování pomocí + StringBuffer StringBuilder regulární výrazy regulární výrazy java.text.format IFormatProvider printf až od verze 5 printf metody

Co je jiné: modifikátory public/private stejné public/private protected to samé protected package pouze z balíčku internal pouze assembly nutno používat kl. slovo override při změně

Co je jiné: dědičnost class c extends p {} class c : p {} class c implements int1, int1... {} c instanceof int1 class c : int1, int2 { } c is int1

Co je jiné: primitivní typy byte/int/short/long stejné nemá unsigned navíc ubyte/uint... java.lang.byte... Short... Integer... Character System.Byte... Int16... Int32... Char třída BigDecimal (pro finanční data) prim. typ decimal nemá ukazatele ukazatele: -> * &

Co je jiné: pole int[ ][ ] p = new [3][2]; neobdélníková pole stejné jako v.net System.arraycopy() pole lze procházet pomocí for (od verze 5.0) int[,] p = new [3,2]; neobdélníková pole (jagged arrays) Array.Copy() pole lze procházet pomocí foreach

Co je jiné: kolekce Collection / List ICollection / IList Comparator IComparer Set nemá Enumeration IEnumerable nemá IHashCodeProvider ArrayList ArrayList HashMap Hashtable (pozor) TreeMap SortedList LinkedList Queue

Co je jiné: delegáti Java nemá delegáty: delegate: this.addlistener( new MouseListener() { delegate MouseHandler xy; void onclick(event e) { // dělej něco } this.onclick += new MouseHandler( MyMouseHandler); }); public MyMouseHandler... {}

Tvorba GUI: okna a okna první verze Javy = AWT od verze 1.2 je to SWING (JFC) Swing je rozšířením AWT (Frame x JFrame) přenositelná knihovna s modulární arch. a s podporou skinů (look-and-feel) návrhové vzory skládání a dekorátor existují i jiné (SWT, QT, GNOME-Java...) okno = frame (JFrame) static void main(string[] args) {... }

Tvorba GUI: Layout Managers JFrame = okno obsah = contentpane + menubar největší problém, ve Swingu se nepoužívají XY managery kvůli přenositelnosti vytvoří se panely (JPanel) a na ně se rozmístí komponenty, to se vrství panelům se přidělují layout managery: BorderLayout, GridLayout, FlowLayout, CardLayout a BoxLayout pouze do řady nebo sloupce pro GUI buildery: GridbagLayout, SpringLayout např. Netbeans využívá GBLayout + přidává (nestandardní) XYLayout

Tvorba GUI: BorderLayout NORTH W E S T CENTER E A S T SOUTH Je implicitním managerem po vytvoření JPanelu, často se používá, jedno okno často obsahuje až několik (5) vnořených panelů.

Tvorba GUI: zprávy základem jsou rozhraní NěcoListener každá komponenta poskytuje metody addnějakýlistener(...) časté využití anonymních tříd pro usnadnění je k dispozici k některým rozsáhlým rozhraním také abstraktní implementace (třídy) AbstractNěcoListener při reakcích je nutno jednat rychle nebo spustit nové vlákno (aby aplikace nepřestala reagovat)

Tvorba GUI: Applety Applety jsou komponenty spouštěné v prohlížeči, proto mají omezená práva umožnění některých věcí (čtení/zápis na disk, k síti) = dig. podepisování v SWT = Applet (Java 1.1, MSIE) od verze 1.2 = JApplet nutno mít nainstalován plug-in (instaluje se automaticky s JRE) chová se podobně jako JFrame, ale má jinou inicializaci (init, destroy)

Balíčky a adresáře každá třída (soubor class) musí být ve stejném adresáři jako balíčku např. cz.upol.zapletal.curve musí být v: /někde/cz/upol/zapletal/curve.class ve stejné hiearchii jsou soubory.java překladač i interpret si to vynutí vše je snadno k nalezení snadnější to mají ovšem i crackeři bytekód se mrví (tzv. obfuscating)

Překlad a spouštění aplikací CLASSPATH = nejdůležitější prvek CP určuje cestu k adresářům se soubory class nebo k souborům JAR java = interpret (dnes již JIT) java -cp.:bin:lib/knihovna.jar cz.upol.test na Windows středníky, jinde dvojtečky javac = překladač (napsán v Javě) javac -cp lib/knihovna.jar *.java

Spouštění appletů applety se musejí zkompilovat a eventuálně zabalit do JAR archivu v HTML se použije <applet> nebo <object> ladění pomocí aplikace appletviewer je těžkopádné doporučení: implementovat metodu main a ladit applet jako obyčejnou aplikaci pozor však pak na omezená práva (nepodepsaný applet toho moc nemůže...) v prohlížeči Java Console (trayikona)

Trendy v jazyce Java 5.0 - generické typy Java 6.0 - výkon, snadná instalace, podpora nových jazyků (JavaFX, JRuby, JPython, Groovy) Java 7.0 -? spekuluje se o: properties closures moduly (Java Module System) další jazyky (Visual Basic, PHP), NIO2