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

Podobné dokumenty
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

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

KAPITOLA 10. Implementace mezinárodní podpory a lokalizace. V této kapitole:

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

Jini (pronounced GEE-nee) Cvičení 8 - DS 2006

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

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

Softwarové komponenty a Internet

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

UJO Framework. revoluční architektura beans. verze

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

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

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

RMI Remote Method Invocation

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.

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

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

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

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

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

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

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

1. Programování proti rozhraní

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

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

RMI - Distribuované objekty v Javě

Programovací jazyk Java

Platformy NetBean a Eclipse. Úvod

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

KTE / ZPE Informační technologie

Úvod do programovacích jazyků (Java)

Úvod do programovacích jazyků (Java)

4. Rekurze. BI-EP1 Efektivní programování Martin Kačer

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

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

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

Základy objektové orientace I. Únor 2010

Abstraktní třídy, polymorfní struktury

Architektura softwarových systémů

7 Jazyk UML (Unified Modeling Language)

Elektronická podpora výuky předmětu Komprese dat

Vývoj multiplatformní aplikace v Qt

Maven. Aplikační programování v Javě (BI-APJ) - 2 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha

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

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

Architektury informačních systémů

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

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

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

Abstraktní datové typy: zásobník

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

Generické programování

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML

GUI. Systémová integrace pro desktopové aplikace

Mělká a hluboká kopie

7 Jazyk UML (Unified Modeling Language)

IoC/DI. Tomáš Herceg Microsoft MVP (ASP.NET)

TECHNICKÁ SPECIFIKACE VEŘEJNÉ ZAKÁZKY

Spring framework 2.0. Roman Pichlík CZJUG

Informační systémy 2008/2009. Radim Farana. Obsah. Nástroje business modelování. Business modelling, základní nástroje a metody business modelování.

Tvorba informačních systémů

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

Architektury informačních systémů

Objektové modelování BI-OMO 6. cvičení

typová konverze typová inference

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

Algoritmizace a programování

KMI / TMA Tvorba mobilních aplikací. 2. seminář ZS 2016/2017 Středa 13:15-15:45

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Session Beans. Petr Aubrecht CA. Vtipy budou tentokrát o krizi:

Tvorba informačních systémů

Programátorská příručka

Objektově orientované programování v PHP 5. Martin Klíma

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

Jazyk C# (seminář 6)

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

Business Intelligence

Abstraktní datové typy

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

Jádrem systému je modul GSFrameWork, který je poskytovatelem zejména těchto služeb:

Vývoj Internetových Aplikací

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

Platformy NetBean a Eclipse. Úvod

Soubor jako posloupnost bytů

Quo vadis programování? Automatizace vyhodnocování studentských úloh

Úvod do programování v jazyce Java

1. Webové služby. K čemu slouží? 2. RPC Web Service. 3. SOA Web Service. 4. RESTful Web services

1 Nejkratší cesta grafem

Android 100% Java telefon. Petr Musil

Seznámení s prostředím dot.net Framework

KMI / TMA Tvorba mobilních aplikací

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

CAL (CAN Application Layer) a CANopen

Algoritmy výpočetní geometrie

Seminář Java II p.1/43

Algoritmizace a programování

Návrh softwarových systém. Návrh softwarových systémů

Transkript:

NetBeans platforma Aplikační programování v Javě (BI-APJ) - 7 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

Architektura NetBeans platformy Netbeans platforma je modulární systém umožňující vytváření rozsáhlých desktopových aplikací systematickým způsobem. Definuje formát modulů a nabízí řadu hotových modulů použitelných pro tvorbu vlastní aplikace. Platforma se skládá z: definice formátu modulu, runtime kontejneru - minimální sada modulů umožňujících běh modulární (negrafické) aplikace, modulů podporujících grafickou aplikaci: Nodes API, Explorer API, Window System API - : moduly pro podporu Javy. NetBeans IDE je jedna z aplikací vytvořená na NetBeans platformě.

NetBeans Modul Základní část, ze které se skládá aplikace na NetBeans platformě. Moduly: umožňují, aby aplikace byla dynamicky (tj. i za běhu) rozšiřována o další funkcionalitu, mohou být tvořeny samostatnou třídou nebo mnoha balíky, poskytují si navzájem služby, definují závislosti, ohraničují viditelnost. Typy modulů: Regular - standardní modul, typicky obsahuje funkcionalitu dostupnou uživatelem (akce v menu). Autoload - moduly, které jsou zaváděny pouze, pokud je jiný modul potřebuje, Eager - moduly, které jsou zaváděny pouze tehdy, pokud jsou splněny jejich závislosti.

Struktura modulu Modul je tvořen souborem.jar obsahujícím: manifest.mf layer.xml class soubory resource soubory konfiguračním souborem: <?xml version="1.0" encoding="utf-8"?> <module name="library.presentation"> <param name="autoload">false</param> <param name="eager">false</param> <param name="enabled">true</param> <param name="jar">modules/library-presentation.jar</param> <param name="reloadable">false</param> </module>

Manifest modulu Souboru manifest.mf je jediná povinná část modulu. Definuje hodnoty atributů např: OpenIDE-Module - jednoznačné jméno modulu (jediný povinný atribut), OpenIDE-Module-Layer - cesta k layer souboru, OpenIDE-Module-Specification-Version - verze modulu v Dewey dekadickém formátu, Příklad: Manifest-Version: 1.0 OpenIDE-Module: libray.model OpenIDE-Module-Localizing-Bundle: libray/model/bundle.properties OpenIDE-Module-Specification-Version: 1.0

Runtime kontejner (1/2) Je tvořen minimální sadou modulů umožňujích běh modulární (negrafické) aplikace:

Runtime kontejner (2/2) Bootstrap - umí zavádět moduly. Startup - obsahuje vstupní bod aplikace (main) a incializační algoritmus. File System API - poskytuje aplikaci přístup do virtuálních souborových systémů. Module System API - umožňuje řídit životní cyklus modulů v aplikaci. Utilities API - kromě jiného obsahuje Lookup API, které umožňuje vyhledávat služby, které si moduly navzájem poskytují.

File System API File System API umožňuje instalovat v aplikaci různé virtuální filesystémy, a tak přistupovat k "souborům" jednotným způsobem bez ohledu na implementaci virtuálního systému. Virtuální filesystém může být: skutečný lokální souborový systém,.jar resp.zip soubor, jakákoliv hierarchická struktura obsahující sekvenční data. "Soubor" i "adresář" virtuálního filesystému je reprezetován objektem FileObject. Virtuální filesystém tvoří jmenný prostor objektů FileObject (jsou určeny cestou). Objekty FileObject jsou zobecněním objektů java.io.file (umožňují např. instalovat posluchače změn "souboru"). Jedním z druhů souboru ve filesystému je tzv. soubor. instance, který reprezentuje serializovaný objekt.

System Filesystem (1/2) System Filesystem je speciální virtuální filesystém obsahující konfigurační data NetBeans aplikace. Každý modul může deklarovat adresáře a soubory v tomto filesystému pomocí souborů layer.xml: <filesystem> <folder name="actions"> <file name="openaddreaderdialogaction.instance"> </folder> </filesystem> Výsledný souborový systém aplikace vzniká sjednocením layer.xml souborů ze všech modulů aplikace. System Filesystem je namapován na podadresář config/ v uživatelském adresáři, kde jsou ukládány všechny změny (System Filesystem je read-write). Adresáře virtuálního souborového systému tvoří tzv. body rozšíření (extension point) aplikace.

System Filesystem (2/2) Některé adresáře jsou definovány v modulech, které jsou částí NetBeans platformy a mají speciální význam: Services/ - adresář pro registraci služeb, které modul poskytuje, Actions/ - adresář globálních akcí. Akce je typicky tvořena souborem.instance, který reprezentuje objekt (singleton) třídy implementující ActionListener. Menu/ - obsah menu bar hlavního okna. Podadresáře reprezentují jednotlivá menu, jejich podadresáře reprezentují submenu atd. Akce jsou reprezentovány soubory typu.instance. Loaders/ - obsahuje podadresáře definující mime types (např.. Loaders/text/x-java)

Lookup API (1/1) Lookup - realizace paternu dependency injection. Objekt lookup umožňuje vyhledávat služby, které v aplikaci zaregistroval některý modul (služba je obvykle realizována singletonem). Default lookup - instance třídy Lookup získaná voláním Lookup.getDefault (), která provádí vlastní hledání metodou lookup. Parametrem hledání je rozhraní (resp. abstraktní třída) služby. Příklad: nalezení služby, která zobrazuje uživateli informační správu (notification): NotifyDescriptor nd = new NotifyDescriptor.Message("Hello...", NotifyDescriptor.INFORMATION_MESSAGE); Lookup defaultlookup = Lookup.getDefault(); DialogDisplayer dd = (DialogDisplayer) defaultlookup.lookup(dialogdisplayer.class) dd.notify(nd);

Lookup API (1/2) Obvykle má abstraktních třída definující službu svou vlastní metodu getdefault implementovanou jako veřejnou statickou metodu: package p; public abstract class MyService { } public static MyService getdefault () { Lookup lkp = Lookup.getDefault(); MyService result =(MyService)lkp.lookup(MyService.class); if (result == null) { result = new TrivialImplementationOfMyService(); } return result; } public abstract void dosomething (...);

Lookup API (1/3) Moduly mohou registrovat objekty poskytující služby třemi způsoby: prostřednictvím standardního Java mechanismu rozšíření - viz třída ServiceLoader, umístěním souboru.instance v adresáři Services v System Filesystem: <folder name="services"> <file name="myservice.instance"> <attr name="instanceclass" stringvalue="p.myserviceimpl"/> <attr name="instanceof" stringvalue="p.myservice"/> </file></folder> anotací: package p; @ServiceProvider(service=MyService.class) public class MyServiceImpl extends MyService {...