JAVA Moduly Java, letní semestr 2018

Podobné dokumenty
JAVA. Krátce o Reflection API

JAVA Moduly Java, letní semestr 2019

Platformy NetBean a Eclipse. Úvod

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

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

Platformy NetBean a Eclipse. Úvod

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

Podmínky na zápočet. Java, zimní semestr

UJO Framework. revoluční architektura beans. verze

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

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

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

GUI. Systémová integrace pro desktopové aplikace

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

Iterator & for cyklus

Programování v Javě I. Leden 2008

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

JAVA V RMI Java, letní semestr

JAVA RMI Java, letní semestr 2018

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

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

Java. Platformy apod.

Teoretické minimum z PJV

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

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

Úvod do programovacích jazyků (Java)

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

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

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

Reflexe RTTI Runtime Type Identification

JAVA JavaBeans Java, letní semestr 2018

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

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

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

JAVA Unit testing Java, zimní semestr

ŠKOLENÍ PROGRAMOVACÍHO JAZYKA JAVA JAVA - ZÁKLADY

Java Enum Java, zimní semestr ,2017 1

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

Instalace produktu Ontopia. ver (open-source verze)

Perun. Identity and Access Management System (IAM) Michal Procházka, Slávek Licehammer

JAVA. Java Management Extensions JMX

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

Seminář Java II p.1/43

INSTALACE PRODUKTU ONTOPIA KNOWLEDGE SUITE

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

Formy komunikace s knihovnami

Softwarové komponenty a Internet

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

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

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

Tvorba informačních systémů

JAVA JavaBeans Java, letní semestr

Programovací jazyk Java

Úvod do OpenWRT. Ondřej Caletka. 1. března Uvedené dílo podléhá licenci Creative Commons Uveďte autora 3.0 Česko.

Programové konvence, dokumentace a ladění. Programování II 2. přednáška Alena Buchalcevová

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

CATIA V5 R19 SP3 HF04 (GRC 4.0.0, červen 2009)

Algoritmizace a programování. Terminálový vstup a výstup

Webová prezentační aplikace

ProjectWise V8 XM Edition

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

Java. Platformy apod.

Algoritmizace a programování

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

Datové abstrakce v programovacích jazycích

První kapitola úvod do problematiky

CAL (CAN Application Layer) a CANopen

Instalace Debianu pomocí debootstrap

Java Výjimky Java, zimní semestr

MBI - technologická realizace modelu

RMI Remote Method Invocation

Anotace a Hibernate. Aleš Nosek Ondřej Vadinský Daniel Krátký

Diferenciální počet funkcí jedné proměnné

Úvod. Petr Aubrecht (CA) Martin Ptáček (Wincor Nixdorf) Je 10 typů lidí: ti, kteří znají binární kód, a ti, kteří ne.

Specializovaná mapa s interpretací regionálních rozdílů v oblasti sociálního výzkumu

I.CA RemoteSeal. Ing. Filip Michl První certifikační autorita, a.s

Úvod do počítačových sítí

Tvorba informačních systémů

Robot Operating System. Ing. Zdeněk Materna,

Generické programování

Architektura rodiny operačních systémů Windows NT Mgr. Josef Horálek

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

Natural Language Toolkit

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

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

JAVA. Reflection API

Remote Method Invocation RMI

1 Správce licencí Správce licencí Správce licencí Start > Všechny programy > IDEA StatiCa > Správce licencí Soubor > Správce licencí Licence

Licence Creative Commons

ZAŘÍZENÍ PRO VZDÁLENÝ SBĚR A PŘENOS DAT FIRMWARE

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

Mongeovo zobrazení. Konstrukce stop roviny

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

MPLAB Harmony. Idea Instalace. Více podrobností naleznete na nejen k MPLAB Harmony

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

IOPC2. Petr Čermák Vedoucí RNDr. Michal Kopecky, Ph.D.

java remote method invocation Kateřina Fricková, Matouš Jandek

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

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

Transkript:

JAVA Moduly

Modularizace modul explicitně definované co poskytuje i co požaduje proč koncept classpath je křehký chybí zapouzření 2

Modularizace modul explicitně definované co poskytuje i co požaduje proč koncept classpath je křehký chybí zapouzření 3

Modulární aplikace motivace proč aplikace více a více komplexní skládání aplikací vývoj v distribuovaných týmech komplexní závislosti dobrá architektura programu ví o svých závislostech spravuje závislosti 4

Deklarace modulu module-info.java module com.foo.bar { requires com.foo.baz; exports com.foo.bar.alpha; exports com.foo.bar.beta; } modular artifact modularní JAR JAR obsahující module-info.class nový formát JMOD ZIP s třídami, nativním kódem, konfigurací,... 5

Moduly a JDK standardní knihovna JDK také modularní java.base vždy required module java.base { exports java.io; exports java.lang; exports java.lang.annotation; exports java.lang.invoke; exports java.lang.module; exports java.lang.ref; exports java.lang.reflect; exports java.math; exports java.net;... 6

Module readability & module path Pokud modul přímo závisí na jiném modulu Modul čte (reads) jiný modul (nebo, jinak, druhý modul je čitelný (readable) prvním modulem) Module path ekvivalent ke classpath ale pro moduly -p, --module-path 7

Module graph module com.foo.app { requires com.foo.bar; requires java.sql; } 8

Dostupnost (Accessibility) Pokud jsou dva typy S a T definovány v různých modulech a T je public, potom kód v S může přistupovat (access) k T pokud: modul s S čte modul s T, a zárověň modul s T exportuje balíček s T 9

Implied readability Readability není tranzitivní příklad: in java.sql java.sql.driver { java.util.logger getparrentlogger();... in java.logging module java.sql { requires public java.logging; requires public java.xml; exports java.sql; exports javax.sql; exports javax.transaction.xa; } 10

Services & ServiceLoader module com.mysql.jdbc { requires java.sql; requires org.slf4j; exports com.mysql.jdbc; provides java.sql.driver with com.mysql.jdbc.driver; } module java.sql { requires public java.logging; requires public java.xml; exports java.sql; exports javax.sql; exports javax.transaction.xa; uses java.sql.driver; } 11

Qualified exports module java.base {... exports sun.reflect to java.corba, java.logging, java.sql, java.sql.rowset, jdk.scripting.nashorn; } není určeno pro běžné používání 12

requires static vyžadován během překlady, ale volitelný při spuštění module com.foo.bar { requires static com.foo.baz; } VAROVÁNÍ kód vyžadující balíček přes required static musí být připraven na nedostupnost 13

opens, open před Java 9, cokoliv je dostupné přes reflection i privátní elementy v Java 9+, i reflexe dodržuje pravidla pro moduly ale balíčky lze otevřít module com.foo.bar { opens com.foo.bar.alpha; } typy v otevřeném balíčku jsou dostupné při běhu open module com.foo.bar { } otevírá všechny svoje balíčky 14

opens to opens package to list-of-modules otevírá balíček jen pro vybrané moduly 15

Reflection package java.lang.reflect; public final class Module { public String getname(); public ModuleDescriptor getdescriptor(); public ClassLoader getclassloader(); public boolean canread(module source); public boolean isexported(string packagename);... } 16

Vrstva (layer) layer instance grafu modulů při běhu programu mapuje každý modul v grafu na jedinečný classloader vrstvy lze vrstvit přes sebe nová vrstva může být vytvořena nad existující boot layer graf modulů vrstvy obsahuje (jako reference) grafy modulů všech vrstev níže vytvořen VM při startu vrstvy určeny pro aplikační servery, IDE,... 17

Kompatibilita se starou Javou Classpath stále podporováno v podstatě jsou moduly volitelné Nepojmenovaný modul cokoliv mimo jakýkoliv modul starý kód čte jakýkoliv jiný modul exportuje všechny svoje balíčky pro všechny jiné moduly 18

Automatic module implicitně definovaný pojmenovaný module nemá deklaraci modulu obyčejný JAR umístěný na module path místo na classpath JAR bez module-info.java 19

Verze prezentace AJ04.cz.2018.01 Java, letní semestr 2018 Tato prezentace podléhá licenci Creative Commons Uveďte autora-neužívejte komerčně 4.0 Mezinárodní License. 20