JAVA. Nástroje v JDK

Podobné dokumenty
JAVA. Nástroje v JDK

JAVA V Anotace Java, zimní semestr ,2015 1

JAVA V Anotace Java, zimní semestr ,2014 1

JAVA V Anotace Java, zimní semestr ,2016 1

Semin aˇr Java N astroje Radek Koˇc ı Fakulta informaˇcn ıch technologi ı VUT Bˇrezen 2012 Radek Koˇc ı Semin aˇr Java n astroje 1/ 42

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

JAVA V Hibernate Java, letní semestr

Ant aneb Ferda Mravenec, práce všeho druhu

Algoritmizace a programování

12. Dokumentace a distribuce aplikací. speciálních dokumentačních komentářích vpisovaných před

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

Správa projektů a testování

Java Výjimky Java, zimní semestr

Úvod do programovacích jazyků (Java)

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

Programování v Javě I. Leden 2008

3 KTE / ZPE Informační technologie

Podmínky na zápočet. 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/

JAVA. Java Management Extensions JMX

Doxygen. Jakub Břečka

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

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

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

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

JAVA Moduly Java, letní semestr 2018

Java Cvičení 01. CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics

První kapitola úvod do problematiky

Java Enum Java, zimní semestr ,2017 1

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

Výčtový typ strana 67

JAVA. Krátce o Reflection API

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

JAVA V RMI Java, letní semestr

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

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

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

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

JAVA Unit testing Java, zimní semestr

Seminář Java II p.1/43

1 Návod na instalaci prostředí LeJOS-NXJ a přehrání firmwaru NXT kostky

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

Iterator & for cyklus

RMI Remote Method Invocation

Soubor jako posloupnost bytů

1. Dědičnost a polymorfismus

Jazyk XSL XPath XPath XML. Jazyk XSL - rychlá transformace dokumentů. PhDr. Milan Novák, Ph.D. KIN PF JU České Budějovice. 9.

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

Úvod do programovacích jazyků (Java)

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

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

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

SonarQube - statická analýza kódu a její zapojení v CI. Babu Červenková Big Data developer - Java Fulltext - Robot tým

Generické programování

20. Projekt Domácí mediotéka

Pokročilé techniky tvorby sestav v Caché. ZENové Reporty

Teoretické minimum z PJV

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é

Java Řetězce Java, zimní semestr

Programovací jazyk Java

JAVA RMI Java, letní semestr 2018

UJO Framework. revoluční architektura beans. verze

Přednáška 2. Systémy souborů OS UNIX. Nástroje pro práci se souborovým systémem. Úvod do Operačních Systémů Přednáška 2

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

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

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

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

1. Programování proti rozhraní

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

Typický prvek kolekce pro české řazení

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

PB161 Programování v jazyce C++ Přednáška 9

Úvod Vývojová prostředí Štábní kultura Dokumentace Konec. Programování v C# Prostředí a doporučení 1 / 39

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

Michal Podzimek

Základy XML struktura dokumentu (včetně testových otázek)

Úvod do programovacích jazyků (Java)

Z. Kotala, P. Toman: Java ( Obsah )

Algoritmizace a programování

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných

PREPROCESOR POKRAČOVÁNÍ

3. Základy programovacího jazyka Java

Šablonovací systém htmltmpl vypracoval: Michal Vajbar, Šablonovací systém htmltmpl

typová konverze typová inference

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

WPA - Konfigurace Java EE aplikace (Maven, struktura war arch. kontejnerem Tomcat 8

GUI. Systémová integrace pro desktopové aplikace

Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra informatiky a výpočetní techniky. Dokumentace k programu MMDoc

KTE / ZPE Informační technologie

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

Gradle.

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

Textové soubory. alg9 1

Webová prezentační aplikace

Ing. Petr Ferschmann SoftEU s.r.o. Ing. Jindřich Vimr HSF s.r.o.

Objektově orientované programování

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

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

DSL manuál. Ing. Jan Hranáč. 27. října V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v

Transkript:

JAVA Nástroje v JDK 1

Nástroje javac javadoc jdb javah jconsole jshell... 2

JAVA javac 3

javac parametry -cp -encoding -g debugovací informace -g:none -target verze bytecode (6, 7, 8, 9) --release -source verze jazyka -d adresář pro generovaný bytecode 4

JAVA jshell 5

jshell interaktivní shell od Java 9 6

JAVA javadoc 7

Přehled nástroj na automatické generování dokumentace ze zdrojových kódů deklarace tříd atd. plus dokumentační komentáře dokumentace je přímo v kódu snadno se udržuje aktualizovaná výstup (implicitně) HTML stránky dokumentační komentáře /** komentar */ před popisovaný element uvnitř text + speciální tagy + html kód program javadoc ve standardní distribuci vygeneruje dokumentaci 8

Komentáře dokumentační komentáře těsně před popisovaný element /** Komentar ke tride */ public class MyClass { /** Komentar k atributu */ public int a; /** Komentar k metode */ public void foo() {... } } 9

Komentáře jinde jsou ignorovány (jako normální komentáře) /** ignorovano */ import java.util.*; public class MyClass { void foo() { /** ignorovano */ } } 10

Víceřádkové komentáře komentáře typicky přes více řádků úvodní mezery a hvězdička na dalších řádcích jsou ignorovány bez hvězdičky mezery nejsou ignorovány (od 1.3) /** Tohle je viceradkovy komentar. * Uvodni mezery a hvezdicky * jsou ignorovany a odstraneny. */ /** Zde uvodni mezery ignorovany nejsou chybi hvezdicka. */ 11

Sekce komentářů dvě sekce v dokumentačních komentářích hlavní popis sekce s tagy nejdřív je hlavní popis, pak sekce s tagy pořadí sekcí nelze prohodit sekce s tagy začíná prvním tagem (@neco) /** Hlavni popis elementu. Stale hlavni * popis elementu * @see java.lang.object */ komentáře můžou mít pouze jednu sekci 12

Druhy tagů "block tags" @tag samostatné tagy můžou stát jen na začátku řádku (úvodní mezery a hvězdička ignorovány) znak @ jinde než na začátku řádku je normální znak "in-line tags" {@tag} můžou stát kdekoliv v textu i hlavním popisu @deprecated As of JDK 1.1, replaced by {@link #setbounds(int,int,int,int)} 13

Komentáře první věta komentáře = shrnutí věta končí první tečkou následovanou bílým znakem (nebo prvním tagem) zobrazena v přehledu členů třídy (metody, atributy) v krátkém popisu třídy jeden komentář k více atributům /** Komentar patri k obema atributum */ public int x, y; 14

HTML text komentářů HTML lze používat HTML tagy /** Tohle je <b>dokumentacni</b> * komentar */ znaky < > & zapisovat jako v HTML <... < >... > &... & není vhodné používat některé tagy např. hlavičky <h1> <h2> naruší strukturu vygenerované dokumentace 15

Dědění komentářů pokud není komentář definován, dědí se od nadřazené třídy u předefinovaných metod u implementovaných metod z interfaců dědí se ta část komentáře, která není definována platí od 1.4 do 1.3 přítomnost dokumentačního komentáře zamezila dědění z předků explicitní dědění {@inheritdoc} 16

Popis balíku dokumentační komentář k balíku soubor package.html ve stejném adresáři jako třídy obsahuje HTML stránku do dokumentace se vloží vše mezi <body> a </body> píše se bez /**... */ první věta krátký popis balíku popis skupiny tříd soubor overview.html jako package.html 17

Tagy Tag od JDK Tag od JDK @author 1.0 @return 1.0 @{code} 1.5 @see 1.0 @{docroot} 1.3 @serial 1.2 @deprecated 1.0 @serialdata 1.2 @exception 1.0 @serialfield 1.2 {@inheritdoc} 1.4 @since 1.1 {@link} 1.2 @throws 1.2 {@linkplain} 1.4 {@value} 1.4 {@literal} 1.5 @version 1.0 @param 1.0 18

Tagy u metod /** Hlavni popis. * @param p1 popis parametru p1 * @param p2 popis parametru p2 * @throws IOException kdy je vyhozena * @throws MyException kdy je vyhozena * @returns co vraci */ int foo(int p1, long p2) throws IOException, MyException; 19

Další tagy @since text lze použít všude význam: od jaké verze softwaru daný element existuje @since 1.4 @exception to samé jako @throws @author jmeno jméno tvůrce použití u třídy, balíku a v přehledu 20

Další tagy @see reference "See also" hlavička ve vygenerované dokumentaci tři formáty @see "retezec" @see "The Java language specification" @see <a href="url#value">label</a> @see package.class#member label @see String#equals(Object) equals @see java.io.file#exists() exists {@link package.class#member label} reference v textu podobné jako @see 21

Další tagy {@linkplain package.class#member label} stejné jako {@link...} použije se stejný font jako pro text pro {@link...} se použije jiný font @deprecated text označuje API, které by se už nemělo používat (přetrvává z předchozích verzí) text vysvětlení proč zpracovává ho i překladač varování při použití takového API od 1.5 anotace @deprecated {@docroot} relativní cesta ke kořenovému adresáři vygenerované dokumentace 22

Další tagy {@literal text} text se nebude nijak interpretovat {@literal a<b>c} v dokumentaci bude a<b>c <b> se nebude interpretovat jako tag {@code text} to samé jako <code>{@literal text}</code> 23

javadoc vygenerování dokumentace javadoc součást standardní distribuce spouštění javadoc [parametry] [baliky] [zdrojove_soubory] [-subpackages pkg1:pkg2:...] 24

Parametry pro javadoc -overview cesta/soubor jiné umístění pro soubor overview.html -public dokumentace bude obsahovat pouze public elementy -protected dokumentace bude obsahovat public a protected elementy implicitní chování -package dokumentace bude obsahovat public, protected a elementy bez označení -private dokumentace bude obsahovat všechny elementy 25

Parametry pro javadoc -doclet trida doclet generuje dokumentaci imlicitní doclet generuje HTML -source 1.4 pokud se používají assertions (pro JDK 1.4) -sourcepath seznam_cest kde se mají hledat zdrojové soubory -verbose -quiet uroveň výpisů při generování -locale jazyk_země_varianta musí být jako první parametr -encoding kodovani kódování zdrojových souborů 26

Parametry pro javadoc -d cesta kam vygenerovat dokumentaci -version zahrnout tag @version -author zahrnout tag @author -windowtitle text -doctitle text -header text bude na začátku každé stránky -footer text bude na konci každé stránky -nodeprecated -nosince 27

JAVA ANT 28

Přehled http://ant.apache.org/ nástroj (nejen) na překlad java programů obdoba make napsán v Javě rozšiřitelný přidáváním dalších tříd vstupní soubor (buildfile) (obdoba makefile u make) XML NetBeans interně Ant používají pro překlad, spouštění,... projektů 29

Buildfile implicitní jméno build.xml obsahuje jeden project a alespoň jeden target <?xml version="1.0" encoding="us-ascii"?> <project...> <target...>... </target> <target...>... </target> </project> 30

Project atributy name jméno projektu default implicitní target, který se bude provádět, pokud nebude žádný explicitně zadán povinný parametr basedir adresář, od něhož budou všechny cesty v souboru odvozeny volitelný element <description> popis projektu <project name="projekt" default="compile" basedir="."> <description>dlouhy popis projektu</description> 31

Target posloupnost činností (task), které se mají provést může záviset na jiných targets provede se až po těch, na kterých závisí atributy name jméno, povinné depends seznam targetů, na kterých závisí description krátký popis if jméno property, která musí být nastavena unless jméno property, která nesmí být nastavena 32

Target <target name="compile" depends="init" description="prelozi aplikaci">... </target> 33

Task kód, který může být vykonán různý počet parametrů podle druhu vestavěné volitelné vlastní <jmeno atr1="hodnota" atr2="hodnota".../> <javac srcdir="..." destdir="..."/> 34

Property jméno a hodnota jména rozlišování velikosti písmen získání obsahu property - ${property} vestavěné property basedir ant.file ant.version ant.project.name ant.java.version systémové properties Javy vlastní property <property name="jmeno"... /> 35

Příklad <?xml version='1.0' encoding='us-ascii'?> <project basedir="." default="compile" name="project"> <description>project description</description> <property name="src" location="src"/> <property name="classes" location="classes"/> <target name="init"> <mkdir dir="${classes}"/> </target> <target name="compile" depends="init" description="compile"> <javac debug="true" destdir="${classes}" srcdir="${src}" includes="**/*.java" classpath="${src}" /> </target> <!-- pokracovani --> 36

Příklad <!-- pokracovani --> <target name="run" depends="init,compile" description="execute"> <java fork="true" classname="main" classpath="${classes}" /> </target> </project> 37

Spouštění ant [parametry] [target [target2... ]] parametry -projecthelp, -p napověda projektu popis projektu + popis task -propertyfile <soubor> definuje property ze zadaného souboru -D<property>=<name> definice property -buildfile <soubor> -file <soubor> -f <soubor> buildfile 38

Task javac spouští překladač Javy překládá pouze ty soubory, které jsou potřeba k souboru.java není.class nebo je starší pozor! určuje pouze podle jmen souborů tj. neví o vnitřních třídách apod. atributy srcdir adresář s.java soubory povinný destdir kam ukládat.class soubory classpath CLASSPATH 39

Task javac atributy encoding kódování source -source parametr pro javac compiler jaký překladač pro Javu se má použít fork true nebo false (implicitně false) spustit překladač ve stejne JVM jako ant nebo v nové srcdir, classpath (a další) můžou být nahrazeny vnořenými elementy <src>, <classpath> (a další) 40

Task java spustí Java aplikaci atributy classname třída s metodou main jar jar-soubor ke spuštění povinně buď classname nebo jar classpath fork spustit aplikaci v nové JVM vnořené elementy <arg> parametry příkazové řádky 41

Task property nastaví property na danou hodnotu nelze měnit jejich hodnotu atributy name jméno property value hodnota property location absolutní cesta zadaného souboru file soubor, ze kterého se mají načíst property url url, ze kterého se mají načíst property 42

Task property příklady <property name="src" location="src"/> <property name="foo.dist" value="dist"/> <property file="foo.properties"/> <property url="http://..." /> 43

Task javadoc vytvoří javadoc dokumentaci atributy sourcepath adresáře se zdrojáky sourcefiles přímo vyjmenované zdrojáky packagenames pro které balíčku vytvářet destdir do jakého adresáře generovat public, protected,package, private pro které elementy se má dokumentace generovat author zahrnout tag autor version zahrnou tag version mnoho dalších 44

Ostatní mnoho dalších tasků delete maže soubory/adresáře move přesun/přejmenování souborů mkdir vytoření adresáře copy kopírování echo vypíše text na standardní výstup 45

JAVA Maven

Přehled http://maven.apache.org/ nástroj pro správu projektů zjednodušeně si lze představit jako rozšíření Antu ale není to rozšíření Antu poskytuje správu závislostí usnadnění překládání (build) projektů používání best practices přidávání nových modulů

Používání vygenerování struktury projektu mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DgroupId=com.mycompany.app -DartifactId=my-app archetype ~ šablona projektu vygeneruje následující strukturu

Struktura projektu my-app -- pom.xml `-- src -- main `-- java `-- com `-- mycompany `-- app `-- App.java `-- test `-- java `-- com `-- mycompany `-- app `-- AppTest.java

POM Project Object Model definice projektu <project xmlns="http://maven.apache.org/pom/4.0.0" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelversion>4.0.0</modelversion> <groupid>com.mycompany.app</groupid> <artifactid>my-app</artifactid> <packaging>jar</packaging> <version>1.0-snapshot</version> <name>maven Quick Start Archetype</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupid>junit</groupid> <artifactid>junit</artifactid> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> </project>

Životní cyklus buildu mvn fáze vždy se provedou i předchozí fáze 1. process-resources 2. compile 3. process-test-resources 4. test-compile 5. test 6. package 7. install 8. deploy

Java, zimní semestr Verze prezentace 2017 J06.cz.2017.01 Tato prezentace podléhá licenci Creative Commons Uveďte autora-neužívejte komerčně 4.0 Mezinárodní License. 52