Platformy NetBean a Eclipse. Úvod

Podobné dokumenty
Platformy NetBean a Eclipse. Úvod

JAVA. Reflection API

JAVA. Krátce o Reflection API

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

Reflexe RTTI Runtime Type Identification

JAVA Moduly Java, letní semestr 2018

NetBeans platforma. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

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

Úvod do programovacích jazyků (Java)

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

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

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

Úvod do programování v jazyce Java

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

Java. Generické typy

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

UJO Framework. revoluční architektura beans. verze

Výčtový typ strana 67

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

Základy Guice Vazby Scopes. Google Guice. základní seznámení s frameworkem Google Guice

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

Generické programování

typová konverze typová inference

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

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

Programátorská příručka

JAVA Unit testing Java, zimní semestr

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/

Spring framework 2.0. Roman Pichlík CZJUG

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

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

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

Algoritmizace a programování

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

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

10 Balíčky, grafické znázornění tříd, základy zapozdření

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

Statické proměnné a metody. Tomáš Pitner, upravil Marek Šabo

Programování v Javě I. Leden 2008

Seminář Java II p.1/43

[ASP].NET Core Demystified. Miroslav Holec. Konzultant a lektor [ASP].NET Core.

Tvorba informačních systémů

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

Úvod do programování v jazyce Java

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

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

Java Enum Java, zimní semestr ,2017 1

1. Programování proti rozhraní

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

Programování II. Třídy a objekty (objektová orientovanost) 2018/19

Abstraktní datové typy: zásobník

knihovna programátora

20. Projekt Domácí mediotéka

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

Testovací metoda. Testovací metoda. public class SimpleTest {

Teoretické minimum z PJV

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

Dynamicky vázané metody. Pozdní vazba, virtuální metody

PA165: Úvod do Java EE. Petr Adámek

Paměť počítače. alg2 1

Jazyk C# (seminář 6)

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

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

Remote Method Invocation RMI

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

Návrhové vzory. Jakub Klemsa, Jan Legerský. 30. října Objektově orientované programování.

Výchozí a statické metody rozhraní. Tomáš Pitner, upravil Marek Šabo

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

První kapitola úvod do problematiky

Principy objektově orientovaného programování

Základy objektové orientace I. Únor 2010

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

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

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

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

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

Dědičnost (inheritance)

Třídy. Instance. Pokud tento program spustíme, vypíše následující. car1 má barvu Red. car2 má barvu Red. car1 má barvu Blue.

Kód, který se nebude často měnit

Ú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++ 2, 4. cvičení

Programování II. Objektová dekompozice Třída jako objekt 2018/19

Vytváření uživatelských datových typů a funkcí v Javě

GUI. Systémová integrace pro desktopové aplikace

Programovací jazyk Java

Základy programovaní 3 (Java)

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

Student s Life. Návrhová dokumentace (Design) Lukáš Barák, Jakub Ječmínek, Jaroslav Brchel, Jiří Zmeškal

JAVA. Další jazyky kompilovatelné do Java byte-code

7. Datové typy v Javě

Další vlastnosti Springu Moduly Springu. Spring Framework. Pavel Mička. Pavel Mička Spring Framework 1/18

TÉMATICKÝ OKRUH Softwarové inženýrství

Technologie Java. Jaroslav Žáček

RMI Remote Method Invocation

11 Diagram tříd, asociace, dědičnost, abstraktní třídy

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

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

Seminář Java IV p.1/38

Transkript:

Platformy NetBean a Eclipse Úvod

O předmětu Petr Hnětynka hnetynka@d3s.mff.cuni.cz Pavel Parízek parizek@d3s.mff.cuni.cz http://d3s.mff.cuni.cz/~hnetynka/netbeans předpokládá se znalost Javy (alespoň v rozsahu NPRG013, lépe i NPRG021) 0/2 Z

Zápočet napsání zápočtového programu domluvit si zadání do konce výuky v letním semestru poslat mailem téma rozšíření pro NetBeans nebo Eclipse více na dalších slidech odevzdat nejlépe do konce června nejpozději do konce září (než začne nový akademický rok) předvedení osobně plus emailem uživatelskou dokumentaci a zdrojáky

Zápočet NetBeans vlastní (netriviální) program/modul nad NetBeans platform spolu se zápočtem lze získat i osvědčení NetBeans Certified Engineer 3 možnosti open-source vlastní program/modul nad NetBeans platform rozšíření stávajících modulů opravení 5 chyb z NetBeans Bugzilly

Zápočet Eclipse vlastní (netriviální) program/plugin nad Eclipse

Osnova předmětu Úvod OSGi NetBeans Úvod Moduly Okna NB filesystem Datové objekty a uzly Eclipse (1 přednáška) (1 přednáška) (6 přednášek) (6 přednášek) Úvod Eclipse infrastruktura bundle, plugin, SWT, extension UI příkazy a akce, builders, natures help, preferences, cheat sheets features, bundling, branding, update sites, RICH Platformy NetBeans a Eclipse, letní semestr 2014 applications

Literatura, odkazy vše o Javě NetBeans http://www.oracle.com/technetwork/java/ http://netbeans.org/ http://platform.netbeans.org/ http://netbeans.org/features/platform/all-docs.html Eclipse http://eclipse.org/ http://www.eclipse.org/articles/ http://www.vogella.de/eclipse.html

Literatura, odkazy NetBeans Eclipse

O předmětu notebooky s sebou! připojení k internetu s sebou!

NetBeans a Eclipse Proč používat framework...

Proč používat... Let's create our own framework! Maintaining the framework takes a lot of my time :(

Proč používat... Don't reinvent the wheel!

Proč používat... Neobjevovat kolo! Znovupoužití kódu Existující knihovny Modulární aplikace Soustředění se jen na aplikační logiku

Nuance V-Builder VoiceXML

Fiorano Studio: Lego Blocks for SOA

Nokia NetAct: Mobile Network Mgr

TidalWave BlueMarine: Photo Manager

Global Vision Systems EasyMonitoring

IBM Lotus Expeditor

ForeFlight

Java Zopakování různých vlastností

Zopakování různých vlastností Reflection API

Přehled Reflection Introspection zkoumá strukturu objektů umožňuje mění strukturu/stav objektů 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 23

java.lang.class instance třídy Class reprezentuje třídu nebo interface v běžícím programu primitivní typy také reprezentovány jako instance třídy Class nemá žádný konstruktor instance vytvářeny automaticky při natažení kódu třídy do JVM třídy jsou natahovány do JVM až při jejich prvním použití 24

java.lang.class získání instance třídy Class getclass() literál class (představuje expression typu Class) JmenoTridy.class třída pro daný typ Class.forName(String classname) metoda na třídě Object vrátí třídu objektu, na kterém je zavolána statická metoda vrátí třídu daného jména pro primitivní typy statický atribut TYPE na wrapper třídách Integer.TYPE literál class int.class 25

java.lang.class třídy do JVM natahuje classloader java.lang.classloader standardní classloader hledá třídy v CLASSPATH lze si napsat vlastní classloader Class.forName(String classname, boolean initialize, ClassLoader cl) natáhne třídu daným classloaderem a vrátí objekt třídy Class getclassloader() metoda na Class classloader, kterým byla třída natažena upozornění: typ objektu je reprezentována nejen pomocí Class, ale také classloaderu, který danou class nahrál 26

java.lang.class: metody String getname() boolean isprimitive() boolean isarray() boolean isinterface() boolean isinstance(object o) boolean isassignablefrom(class cls) test, zda daný objekt je instancí třídy ekvivalent k operatoru instanceof zda objekt typu cls lze přiřadit do proměnné typu třídy, na níž je metoda volaná Method[] getmethods() Field[] getfields() Constructor[] getconstructors()... 27

java.lang.class: instance Object newinstance() vytvoří novou instanci dané třídy použije se konstruktor bez parametrů jako by se použilo new Trida() vytváření nových instancí od třídy pomocí jiných konstruktorů třída java.lang.reflect.constructor 28

Zopakování různých vlastností Classloader

Přehled třídy se do VM natahují dynamicky lze změnit java.lang.classloader VM používá classloadery pro natahovaní tříd každá třída je natažena nějakým classloaderem odkud se natahují jak se natahují Class.getClassLoader() výjimka třídy pro pole vytvářeny automaticky, když je potřeba Class.getClassLoader() vrací stejnou třídu jako pro elementy pole

Třída a classloader třída je ve VM určena nejen jménem ale i classloaderem jedna třída natažená různými classloadery => z pohledu VM dvě různé třídy každý classloader má předka (teď ne dědičnost) výjimka system bootstrap classloader pokud se nespecifikuje => systémový classloader nemá předka při použití null nebude žádný předek při natahování třídy classloader nejdříve deleguje natažení na předka a pokud ten třídu nenalezl, natáhne classloader třídu sám

Třída a classloader pokud jsou při natahování třídy potřeba další třídy, natahují se stejným classloaderem lze si napsat vlastní classloader podědit od java.lang.classloader předefinovat metodu findclass() použití Class.forName("trida", true, new MyClassLoader()); nebo new MyClassLoader().loadClass("trida"); lze zcela změnit systém načítání (ve smyslu předků) není to vhodné

Příklad použití více classloaderů oddělení jmenných prostorů př. aplikační server jedna VM "aplikace" jsou natahovány vlastními classloadery mohou využívat různé verze stejných knihoven (různé třídy se stejnými názvy)

Zopakování různých vlastností Service loader & provides

Přehled mějme nějaký interface pro nějakou službu př. javax.xml.parsers.documentbuilderfactory různí dodavatelé implementace služby pokud bychom chtěli použít v programu, museli bychom jméno implementace mít napevno v kódu při změně dodavatele nutno změnit kód lépe => použijeme ServiceLoader

Použití implementaci zabalit do JAR v kódu přidat do JAR soubor META-INF/services/jmeno.interfacu.služby př: META-INF/services/javax.xml.parsers.DocumentBuilderFactory v něm co řádek, to jméno třídy implementující interface sl = ServiceLoader.load(interface.class, classloader); sl.iterator() ServiceLoader je až od JDK 6 META-INF/services se používá už od JDK 1.3 bylo nutné si obdobu ServiceLoaderu napsat ručně lze použít na dependency injection

Zopakování různých vlastností Anotace

Přehled anotace ~ metadata data o datech přídavná informace o části programu, která nemá (přímo) vliv na funkčnost programu od JDK 5 anotaci lze použít tam, kde lze použít nějaký modifikátor výjimka u anotací pro balíky při definici anotace lze omezit, na co půjde použít lze použít mezi modifikátory v jakémkoliv pořadí zapisují se do spec. souboru package-info.java konvence použít nejdřív anotace a pak modifikátory lze aplikovat libovolné množství anotací na jeden element nelze aplikovat jednu anotaci vícekrát ani při použití různých parametrů

Definice a použití podobně jako interface př. @interface metody bez implementace public @interface RequestForEnhancement { int id(); String synopsis(); String engineer() default "[unassigned]"; String date() default "[unimplemented]"; } @RequestForEnhancement( id = 2868724, synopsis = "Enable time-travel", engineer = "Mr. Peabody", date = "4/1/3007" ) public static void travelthroughtime(date destination) {... }

Definice anotace pro použití na anotacích @Target ovlivňují možnosti použití anotace v balíku java.lang.annotation specifikuje, na jakém elementu lze anotaci použít @Retention specifikuje, kde je anotace použitelná source, class, runtime

Zpracování Reflection API interface AnnotatedElement na runtime anotace Annotation Processing Tool (APT) nástroj pro zpracování source anotací vytváření tzv. annotation processors součást JDK od JDK 8 bude APT a související API označeno za deprecated od JDK 6 lze říct přímo překladači, aby použil anotační procesory parametr -processor

Zopakování různých vlastností MVC a DCI

MVC Model-View-Controler Zdroj obrázku: http://zdrojak.root.cz/clanky/uvod-do-architektury-mvc/

DCI Data-Context-Interactions řeší problém OOP je dobré pro modelování dat kam dát operace? př. bankovní účet a převod peněz

DCI Zdroj obrázků: http://www.artima.com/articles/dci_vision.html

NetBeans a Eclipse Modulární systémy Komponentové systémy

Přehled žádná aplikace se dnes nepíše od začátku knihovny, frameworky,... co když chceme mít aplikaci rozšiřitelnou třetími stranami co když chceme distribuovaný vývoj samotné objekty nestačí potřebujeme komponenty (moduly, pluginy,...) v Java 9 budou moduly přímo obsaženy komponenty mají explicitně i závislosti (požadavky) objekty mají explicitně poskytované služby komponenty naimplementovány pomocí objektů existuje obrovské množství komponentových systémů

Komponenty vs. NetBeans a Eclipse NetBeans moduly Eclipse pluginy základ systému = kontejner pro komponenty poskytuje správu komponent správu závislostí versioning NetBeans vlastní systém Eclipse OSGi od 6.9 NetBeans platforma může běžet nad OSGi NB moduly budou OSGi bundly některé Eclipse pluginy (bez UI) lze použít v NB

Komponenty vs. NetBeans a Eclipse druhy komponent (ve vztahy k NB a Ecl) normální knihovny obálka na existujícími JAR baliky jak NB, tak i Ecl umožňují vytvářet rozšíření do IDE samostatné aplikace vůbec to nemusí být IDE aplikace je sada komponent (plus kontejner)

NetBeans vs. Eclipse hlavní rozdíly (zjednodušeně) komponentový kontejner NB vlastní UI ale lze mít i OSGi Eclipse OSGi NB Swing Eclipse SWT podpora NB Oracle (dříve Sun) Eclipse IBM