Java pro programátory.net



Podobné dokumenty
Java pro programátory.net

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

Algoritmizace a programování

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

Úvod do programování v jazyce Java

Úvod do programovacích jazyků (Java)

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

Java Enum Java, zimní semestr ,2017 1

PREPROCESOR POKRAČOVÁNÍ

Typický prvek kolekce pro české řazení

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/

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

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

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

Generické programování

Úvod do programování v jazyce Java

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

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

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

Programování v Javě I. Leden 2008

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

Principy objektově orientovaného programování

Zápis programu v jazyce C#

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

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

Základy programovaní 3 (Java)

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

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

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

TŘÍDY POKRAČOVÁNÍ. Události pokračování. Příklad. public delegate void ZmenaSouradnicEventHandler (object sender, EventArgs e);

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

typová konverze typová inference

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

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

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

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.

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

JAVA. Krátke poznámky:

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

Výčtový typ strana 67

Seminář Java IV p.1/38

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

Seminář Java II p.1/43

RMI Remote Method Invocation

PŘETĚŽOVÁNÍ OPERÁTORŮ

Teoretické minimum z PJV

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

Abstraktní datové typy: zásobník

Jazyk C# (seminář 6)

Osnova přednášky. Programové prostředky řízení Úvod do C# II. Přístup ke členům. Členy (Members)

7. Dynamické datové struktury

Úvod do programování - Java. Cvičení č.4

Úvod Třídy Rozhraní Pole Konec. Programování v C# Hodnotové datové typy, řídící struktury. Petr Vaněček 1 / 39

IRAE 07/08 Přednáška č. 2. atr1 atr2. atr1 atr2 -33

Objekty v PHP 5.x. This is an object-oriented system. If we change anything, the users object.

Úvod Přetěžování Generika Kolekce Konec. Programování v C# Další jazykové konstrukce. Petr Vaněček 1 / 31

3. Třídy. Základní pojmy objektového programování. Třídy

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

Předměty. Algoritmizace a programování Seminář z programování. Verze pro akademický rok 2012/2013. Verze pro akademický rok 2012/2013

Skriptovací jazyky. Obsah

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

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ředmluva Začínáme: překlad, spuštění a ladění 27

IRAE 07/08 Přednáška č. 1

Jazyk C# (seminář 3)

Java Řetězce Java, zimní semestr

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

8. GRAFICKÉ UŽIVATELSKÉ ROZHRANÍ

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

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

Dědičnost (inheritance)

Obsah. Kapitola 1. Kapitola 2

První kapitola úvod do problematiky

David Bednárek Jakub Yaghob Filip Zavoral.

KTE / ZPE Informační technologie

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

3. Základy programovacího jazyka Java

Jakub Čermák Microsoft Student Partner

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

UJO Framework. revoluční architektura beans. verze

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

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

NPRG031 Programování II 1 / :47:55

Aplikace s grafickým uživatelským rozhraním

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

Datové abstrakce v programovacích jazycích

Java [džava] nebo [džáva] v americkém slangu "kafe" Sun Microsystems nyní Oracle

Program. Organizace semináře Základní principy OOP Úvod do programovacího jazyka Java Distribuce

1. ÚVOD ZÁKLADY JAZYKA...

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

9. Polymorfismus a rozhraní

Třídy, polymorfismus. A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické

NMIN201 Objektově orientované programování 2016/17 1 / :03:29

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

1. Programování proti rozhraní

Bázové třídy platformy.net

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

Transkript:

Java pro programátory.net Lukáš Zapletal lukas.zapletal@qcm.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 konstruktory jako v C++ 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é instance of 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 switch jen int nemá goto (záměr) foreach až od verze jazyka 5: for (Object c: col) nemá přetěžování operátorů (záměr) úplně stejné jako v Javě switch i řetězce goto lze použít foreach (object o in collection) C# umí přetěžovat některé operátory

Co je jiné: výjimky java.lang.throwable dvě úrovně: Error, Exception rozlišuje mezi povinnými a nepovinnými výjimkami throws v metodách těžko se dá programovat špatně zásadně se netestuje výsledek op. na null System.Exception má pouze výjimky všechny výjimky jsou nepovinné (jejich odchyt není nutný) 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) hashcode() getclass() finalize() clone() ToString() Equals(Object o) GetHashCode() GetClass() Finalize() MemberWiseClone()

Co je jiné: kolekce bohatší dvě verze má vláknovězabezpečené i nezabezpečené množina (Set) Collections.sort(...) nemá [...] problém přetypovávání (Commons Primitives) 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í (boxing/unboxing)

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

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

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

Co je jiné: modifikátory public/private stejné protected to samé package pouze z balíčku public/private protected 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 implements int1, int1... {} c instanceof int1 class c : p {} class c : int1, int2 { } c is int1

Co je jiné: primitivní typy byte/int/short/long nemá unsigned java.lang.byte... Short... Integer... Character třída BigDecimal (pro finanční data) nemá ukazatele stejné navíc ubyte/uint... System.Byte... Int16... Int32... Char prim. typ decimal 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 Comparator Set Enumeration nemá ArrayList HashMap TreeMap LinkedList ICollection IList IComparer nemá IEnumerable IHashCodeProvider ArrayList Hashtable (pozor) SortedList Queue

Co je jiné: delegáti Java nemá delegáty: delegate: this.addlistener( new MouseListener() { void onclick(event e) { // dělej něco } }); delegate MouseHandler xy; 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, v Javě 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 profi programy se stejně takto píší...

Tvorba GUI: BorderLayout W E S T NORTH CENTER SOUTH E A S T 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 průhledné, velmi snadné to ovšem mají crackeři... proto 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 moc možností nemá, časté využití nástroje Ant nebo prostředí IDE (ty Ant používají)

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 Concole (trayikona)

d:-] gl