načítání...
nákupní košík
Košík

je prázdný
a
b

E-kniha: Java 9 - JShell -- Edice pro netrpělivé - Rudolf Pecinovský

Java 9 - JShell -- Edice pro netrpělivé

Elektronická kniha: Java 9 - JShell -- Edice pro netrpělivé
Autor:

Novinky programu Java 9 - nový nástroj JShell, který byl nově zařazen do základní sestavy nástrojů jazyka a platformy Java. Kniha vychází pouze elektronicky v Edici pro netrpělivé a je ... (celý popis)
Titul je skladem - ke stažení ihned
Médium: e-kniha
Vaše cena s DPH:  199
+
-
6,6
bo za nákup

hodnoceni - 0%hodnoceni - 0%hodnoceni - 0%hodnoceni - 0%hodnoceni - 0%   celkové hodnocení
0 hodnocení + 0 recenzí

Specifikace
Nakladatelství: » Grada
Dostupné formáty
ke stažení:
PDF
Zabezpečení proti tisku: ano
Médium: e-book
Počet stran: 156
Jazyk: česky
ADOBE DRM: bez
ISBN: 978-80-271-0645-5
Ukázka: » zobrazit ukázku
Popis

Novinky programu Java 9 - nový nástroj JShell, který byl nově zařazen do základní sestavy nástrojů jazyka a platformy Java. Kniha vychází pouze elektronicky v Edici pro netrpělivé a je určena čtenářům, kteří již znají základní vlastnosti platformy a jazyka Java a chtějí se v předstihu seznámit s klíčovými novinkami.

Zařazeno v kategoriích
Recenze a komentáře k titulu
Zatím žádné recenze.


Ukázka / obsah
Přepis ukázky

Java 9 – JShell

edice

pro netrpělivé

½ Poskytuje informace v předstihu

½ Nezatěžuje výkladem známých konstrukcí

½ Probírá nástroj pro výuku a rychlé experimenty

½ Ukazuje, jak zabudovat JShell do svého programu

Rudolf Pecinovský


Java 9 – JShell

Grada Publishing


53G_Java_9_pro_netrpelive_ZLOM.doc verze 17.01.6926 – 2017-06 -18 Strana 1 z 155

Ing. Rudolf Pecinovský, CSc. je absolventem

Fakulty Elektrotechnické ČVUT z roku 1979. Titul

CSc. získal v Ústavu teorie informace aautomatizace ČSAV v roce 1983. Od počátku 80. let učí

a publi kuje, přičemž svůj výzkum soustředí

především na oblast vstupních kurzůmoderního programování pro naprosté začátečníky.

V současné době učí na Fakultě informatiky a

statistiky Vysoké školy ekonomické v Praze, na

Fakultě jaderné a fyzikálně inženýrské ČVUT a na

Vysoké škole podnikání a práva. Doposud mu vyšlo

přes 50 knih, které byly přeloženy do pětijazyků. Většina jeho knih je zaměřena na výuku

moderního programování a na umění návrhu

objektově orientované architektury.

Verze 17.01.6926 – 2017-06-18

132 NS

3 320 odstavců

36 227 slov

237 292 znaků

1 592 320 bajtů

Všem, kteří se chtějí něco naučiti


53G_Java_9_pro_netrpelive_ZLOM.doc verze 17.01.6926 – 2017-06 -18 Strana 3 z 155

Upozornění pro čtenáře a uživatele této knihy

Všechna práva vyhrazena. Žádná část této tištěné či elektronické knihy nesmí být reprodukována a

šířena v papírové, elektronické či jiné podobě bez předchozího písemného souhlasu nakladatele.

Neoprávněné užití této knihy bude trestně stíháno. Rudolf Pecinovský Java 9 – JShell Edice pro netrpělivé Vydala Grada Publishing a.s. U Průhonu 22, Praha 7 Redakce: Jaroslava Palasová Návrh vnitřního layoutu: Rudolf Pecinovský Zlom: Rudolf Pecinovský Počet stran 163 První vydání, Praha 2017 V knize použité názvy mohou být ochrannými známkami nebo registrovanými ochrannými známkami příslušných vlastníků. Copyright © Grada Publishing, a.s., 2017 ISBN 978-80-271-9786-6 (epub) ISBN 978-80-271-9785-9 (pdf)

Stručný obsah 5

53G_Java_9_pro_netrpelive_ZLOM.doc verze 17.01.6926 – 2017-06 -18 Strana 5 z 155

Stručný obsah

Stručný obsah

Stručný obsah ............................................................................................................... 5

Podrobný obsah ............................................................................................................ 6

Seznam programů ....................................................................................................... 10

Seznam obrázků .......................................................................................................... 12

Úvod ............................................................................................................................. 13

1 Seznamte se: JShell ............................................................................................ 19

2 Začínáme programovat ....................................................................................... 26

3 Rekapitulační příkazy .......................................................................................... 34

4 Ukládání a načítání skriptů ................................................................................. 51

5 Nápověda ............................................................................................................. 65

6 Vylučování úryvků ............................................................................................... 77

7 Konfigurace uživatelského prostředí ................................................................. 87

8 Úpravy úryvků .................................................................................................... 104

9 Použití platformy JShell z programu................................................................ 124

A. Příprava prostředí a spuštění programu v systému Windows ...................... 141

B. Přípr ava prostředí a spuštění programu v systémech Mac OS a Linux ....... 152

Literatura .................................................................................................................... 155

Java 9 – JShell – Edice pro netrpělivé 53G_Java_9_pro_netrpelive_ZLOM.doc verze 17.01.6926 – 2017-06 -18 Strana 6 z 155 Podrobný obsah Podrobný obsah Stručný obsah ............................................................................................................... 5

Podrobný obsah ............................................................................................................ 6

Seznam programů ....................................................................................................... 10

Seznam obrázků .......................................................................................................... 12

Úvod ............................................................................................................................. 13

Komu je kniha určena ............................................................................................................. 13

Terminologie ............................................................................................................................ 14

Objekt × Instance ........................................................................................................................... 14

Rozhraní × interfejs ........................................................................................................................ 14

Textový podpis ............................................................................................................................... 14

Syntaktické definice a diagramy ............................................................................................ 15

Potřebné vybavení .................................................................................................................. 15

Doprovodné programy ........................................................................................................... 16

Použité typografické konvence ............................................................................................. 16

Zpětná vazba ........................................................................................................................... 18

1 Seznamte se: JShell ............................................................................................ 19

1.1 Prostředí typu REPL ................................................................................................... 19

1.2 Příprava testovací složky (adresáře) ......................................................................... 21

1.3 Příprava programu JShell a první spuštění .............................................................. 21

První spuštění ...................................................................................................................................... 21

Zveřejnění cesty k programu ............................................................................................................. 21

1.4 Spuštění a ukončení programu .................................................................................. 22

1.5 Úryvky (snippets) a příkazy (commands).................................................................. 23

1.6 První úryvky ................................................................................................................. 23

1.7 Pomocné proměnné (scratch variables) ................................................................... 25

1.8 Soubory pro opakování .............................................................................................. 25

2 Začínáme programovat ....................................................................................... 26

2.1 Definice proměnné ...................................................................................................... 26

2.2 Definice proměnné pro rozepsaný výraz .................................................................. 27

2.3 Neinicializované proměnné ........................................................................................ 28

2.4 Definice konstant ........................................................................................................ 29

2.5 Zadávání kódu ve více řádcích .................................................................................. 29

2.6 Definice metod ............................................................................................................. 30

2.7 Reakce na syntaktické chyby ..................................................................................... 31

2.8 Dopředné odkazy ........................................................................................................ 32

2.9 Soubory pro opakování .............................................................................................. 33

3 Rekapitulační příkazy .......................................................................................... 34

3.1 Úryvky (snippets) a příkazy (commands).................................................................. 34

3.2 Listování historií pomocí šipek .................................................................................. 34

Podrobný obsah 7

53G_Java_9_pro_netrpelive_ZLOM.doc verze 17.01.6926 – 2017-06 -18 Strana 7 z 155

3.3 Příkaz /list ................................................................................................................ 35

Zobrazení vybraného prvku ............................................................................................................... 37

Parametr -start .................................................................................................................................. 38

Parametr -all ...................................................................................................................................... 38

Parametr -history .............................................................................................................................. 41

Parametry <name> a <ID> .................................................................................................................... 41

Syntaktický diagram ........................................................................................................................... 42

3.4 Výpis definovaných proměnných – /vars ................................................................ 42

Syntaktický diagram ........................................................................................................................... 43

3.5 Výpis definovaných metod – /methods ..................................................................... 43

Syntaktický diagram ........................................................................................................................... 44

3.6 Výpis definovaných datových typů – /types ........................................................... 44

Syntaktický diagram ........................................................................................................................... 45

3.7 Výpis definovaných importů – /imports .................................................................. 46

3.8 Přidání dalšího importu .............................................................................................. 46

Využití <SHIFT+TAB><I> ................................................................................................................... 46

Přímé zadání importu ......................................................................................................................... 47

3.9 Soubory pro opakování .............................................................................................. 50

4 Ukládání a načítání skriptů ................................................................................. 51

4.1 Uložení aktuálního stavu – /save .............................................................................. 51

4.2 Načtení skriptu – /open .............................................................................................. 55

Interní zabudované skripty ................................................................................................................ 56

4.3 Restart seance – /reset ............................................................................................. 58

4.4 Znovuzavedení – /reload .......................................................................................... 58

4.5 Pokračování z minula – /reload -restore .............................................................. 61

4.6 Parametr -quiet.......................................................................................................... 63

4.7 Syntaktický diagram ................................................................................................... 63

4.8 Soubory pro opakování .............................................................................................. 64

5 Nápověda ............................................................................................................. 65

5.1 Získání nápovědy........................................................................................................ 65

Syntaktický diagram ........................................................................................................................... 66

5.2 Zrychlená nápověda ................................................................................................... 67

5.3 Automatické doplňování ............................................................................................ 69

5.4 Zkrácené příkazy......................................................................................................... 70

5.5 Doplňování parametrů příkazů .................................................................................. 71

5.6 Doplňování dat a kódu ............................................................................................... 73

5.7 Vyhledávání předchozích zadání .............................................................................. 74

5.8 Vyhledávání následujících zadání ............................................................................. 76

5.9 Soubory pro opakování .............................................................................................. 76

6 Vylučování úryvků ............................................................................................... 77

6.1 Spuštění úryvku zadáním jeho ID ............................................................................. 77

Uložení záznamu o takto spuštěném úryvku do historie ................................................................ 78

„Spuštění“ úryvku s příkazem, definicí metody či datového typu ................................................ 78

6.2 Odebrání (vyloučení) zadaného úryvku – /drop ...................................................... 79

Vylučování úryvků zadaných názvem .............................................................................................. 80

Vyloučené úryvky se pouze deaktivují ............................................................................................. 81

Reaktivace úryvků .............................................................................................................................. 82

Více úryvků se shodným názvem...................................................................................................... 84

Vyloučení již vyloučeného úryvku .................................................................................................... 85

Syntaktický diagram ........................................................................................................................... 86

6.3 Soubory pro opakování .............................................................................................. 86


8 Java 9 – JShell – Edice pro netrpělivé

53G_Java_9_pro_netrpelive_ZLOM.doc verze 17.01.6926 – 2017-06 -18 Strana 8 z 155

7 Konfigurace uživatelského prostředí ................................................................. 87

7.1 Zjištění aktuálního nastavení ..................................................................................... 87

7.2 Nastavení zpětnovazebního režimu ........................................................................... 88

Syntaktický diagram ............................................................................................................................ 88

Podrobný režim (verbose mode) ....................................................................................................... 89

Standardní režim (normal mode) ....................................................................................................... 90

Stručný režim (concise mode) ........................................................................................................... 91

Tichý režim (silent mode) ................................................................................................................... 92

Parametr -retain................................................................................................................................. 92

Trvalé nastavení aktuálního režimu ................................................................................................... 94

Uživatelský režim ................................................................................................................................. 94

Nastavení zpětnovazebního režimu v příkazovém řádku ................................................................ 94

7.3 Nastavení startovního skriptu .................................................................................... 96

Nastavení startovního skriptu v příkazovém řádku ....................................................................... 100

7.4 Nastavení proměnné classpath ............................................................................... 100

7.5 Soubory pro opakování ............................................................................................ 103

8 Úpravy úryvků .................................................................................................... 104

8.1 Editační klávesové zkratky ....................................................................................... 104

8.2 Použití zabudovaného editoru ................................................................................. 105

8.3 Reakce prostředí na úpravy v editoru ..................................................................... 107

8.4 Rizika některých úprav ............................................................................................. 109

Přípravné operace ............................................................................................................................. 110

Redefinice třídy Demo ......................................................................................................................... 111

Problémy po redefinici ...................................................................................................................... 111

Analýza aktuálního stavu prostředí ................................................................................................. 113

Experimenty s instancemi původní a redefinované třídy .............................................................. 114

Závěr ................................................................................................................................................... 116

8.5 Nastavení vlastního editoru ..................................................................................... 116

Zadání příkazu bez parametrů .......................................................................................................... 117

Parametr -retain............................................................................................................................... 117

Parametr -default ............................................................................................................................. 118

Parametr -delete............................................................................................................................... 118

Parametr -wait .................................................................................................................................. 118

Nastavení požadovaného editoru .................................................................................................... 118

Specifika Windows ....................................................................................................................... 119

Komunikace s některými známými editory ..................................................................................... 119

Programy pro editaci nevhodné ................................................................................................... 119

Programy pro editaci nešikovné ................................................................................................... 119

Programy, které je možno spustit a opět zavřít ............................................................................ 120

Programy simulující své okamžité zavření ................................................................................... 122

Programy pracující v multiinstančním režimu ............................................................................... 122

Další možnosti .............................................................................................................................. 123

8.6 Soubory pro opakování ............................................................................................ 123

9 Použití platformy JShell z programu ................................................................ 124

9.1 Nejdůležitější součásti platformy JShell ................................................................. 124

Balíček jdk.jshell ............................................................................................................................ 125

Třída JShell ....................................................................................................................................... 125

Vláknová bezpečnost ................................................................................................................... 126

Třída SnippetEvent ............................................................................................................................ 126

Vláknová bezpečnost ................................................................................................................... 127

Třída Snippet ..................................................................................................................................... 127

Vláknová bezpečnost ................................................................................................................... 127

Výčtový typ Snippet.Status ............................................................................................................ 127

Třída SourceCodeAnalysis ................................................................................................................ 128

9.2 Ukázka využití v kódu ............................................................................................... 128


Podrobný obsah 9

53G_Java_9_pro_netrpelive_ZLOM.doc verze 17.01.6926 – 2017-06 -18 Strana 9 z 155

Spouštěcí metoda ............................................................................................................................. 129

Metoda processSnippetEvent(SnippetEvent) ............................................................................... 130

Metoda evaluateStatus(SnippetEvent, StringBuilder) ........................................................... 132

9.3 Test vytvořeného kódu ............................................................................................ 133

Jednoduché výrazy a příkazy .......................................................................................................... 134

Definice metod a dopředné odkazy................................................................................................. 136

Definice metod s problematickou signaturou ................................................................................ 136

Úprava definice datového typu ........................................................................................................ 137

Současná definice více úryvků........................................................................................................ 138

Závěrečné informace ........................................................................................................................ 139

9.4 Soubory pro opakování ............................................................................................ 140

A. Příprava prostředí a spuštění programu v systému Windows ...................... 141

A.1 Úprava proměnné Path ............................................................................................ 141

Windows 10 ....................................................................................................................................... 144

Windows 7 ......................................................................................................................................... 145

A.2 Spuštění programu ................................................................................................... 146

Zástupce na ploše, resp. v zadané složce ...................................................................................... 146

Úprava vlastností zástupce .............................................................................................................. 147

Vytvoření vlastní dávky .................................................................................................................... 148

Přímé spuštění příkazového řádku ................................................................................................. 149

Total Commander ........................................................................................................................ 149

Průzkumník ve Windows 10 ......................................................................................................... 149

Dodatečné nastavení aktuální složky .......................................................................................... 150

B. Příprava prostředí a spuštění programu v systémech Mac OS a Linux ....... 152

B.1 Omluva ...................................................................................................................... 152

B.2 Úprava proměnné PATH ............................................................................................ 153

B.3 Spuštění programu ................................................................................................... 154

Literatura .................................................................................................................... 155


10 Java 9 – JShell – Edice pro netrpělivé

53G_Java_9_pro_netrpelive_ZLOM.doc verze 17.01.6926 – 2017-06 -18 Strana 10 z 155

Seznam programů

Seznam programů

Výpis 1.1: Odezva prostředí JShell po spuštění.......................................................................... 22

Výpis 1.2: Reakce prostředí na zadání výrazu ............................................................................ 23

Výpis 1.3: Odezva prostředí na zadání dalších výrazů ............................................................... 24

Výpis 2.1: Definice proměnné pozdrav a její použití ................................................................... 27

Výpis 2.2: Definice proměnné pozdrav2 a její použití ................................................................. 28

Výpis 2.3: Deklarace neinicializovaných proměnných ................................................................. 28

Výpis 2.4: Pokus o deklaraci konstanty ....................................................................................... 29

Výpis 2.5: Definice výrazu rozepsaná na více řádcích ................................................................ 30

Výpis 2.6: Definice metody currentFile() vracející aktuální složku (adresář) ......................... 30

Výpis 2.7: Demonstrace zpracování syntaktických chyb ............................................................. 31

Výpis 2.8: Demonstrace zpracování dopředného odkazu ........................................................... 32

Výpis 3.1: Odpověď programu po zadání příkazu /list ............................................................ 36

Výpis 3.2: Použití příkazu /list k zobrazení vybraných výpisků ............................................... 37

Výpis 3.3: Použití příkazu /list k zobrazení startovní sady úryvků ........................................... 38

Výpis 3.4: Odpověď programu po zadání příkazu /list -all .................................................. 38

Výpis 3.5: Odpověď programu po zadání příkazu /list -history ........................................... 40

Výpis 3.6: Vypsání zadaných úryvků .......................................................................................... 41

Výpis 3.7: Odpověď programu po zadání příkazu /vars ............................................................ 42

Výpis 3.8: Odpověď programu po zadání příkazu /methods ...................................................... 43

Výpis 3.9: Odpověď programu po zadání příkazu /types .......................................................... 44

Výpis 3.10: Definice datového typu a jeho použití......................................................................... 45

Výpis 3.11: Odpověď programu po zadání příkazu /imports ...................................................... 46

Výpis 3.12: Definice potřebného importu při vkládání úryvku ....................................................... 47

Výpis 3.13: Dodatečná definici potřebného importu ...................................................................... 48

Výpis 3.14: Seznam aktivních úryvků na konci kapitoly ................................................................ 49

Výpis 3.15: Výsledný seznam zadaných importů .......................................................................... 49

Výpis 4.1: Obsah souboru uloženého v tomto okamžiku příkazem

/save -history 04.1_Save_Hist.jsh .................................................................... 53

Výpis 4.2: Obsah interního skriptu DEFAULT ................................................................................ 56

Výpis 4.3: Obsah interního skriptu PRINTING .............................................................................. 57

Výpis 4.4: Seance, jež uloží svoji historii do souboru 04.3_Reset_Hist.jsh ............................ 59

Výpis 4.5: Obsah souboru 04.3_Reset_Hist.jsh uloženého ve výpisu 4.4 .............................. 59

Výpis 4.6: Demonstrace chování příkazů /reset a /reload ...................................................... 60

Výpis 4.7: Obsah souboru 04.4_Reload_Hist.jsh uloženého na konci výpisu 4.6 .................. 61

Výpis 4.8: Výpis, který je pokračováním výpisu 4.6, demonstruje chování programu po

zadání příkazu /re load -restore ............................................................................ 62

Výpis 4.9: Obsah souboru 04.5_Reload_Restore_Hist.jsh ukládaného na konci

výpisu 4.8 ................................................................................................................... 63

Výpis 5.1: Nápověda, jak používat nápovědu ............................................................................. 66


Seznam programů 11

53G_Java_9_pro_netrpelive_ZLOM.doc verze 17.01.6926 – 2017-06 -18 Strana 11 z 155

Výpis 5.2: Reakce prostředí na další tři po sobě jdoucí stisky klávesy <TAB> .......................... 68

Výpis 5.3: Postupné doplňování zadávaného příkazu /list s10 s2........................................ 69

Výpis 5.4: Postupné doplňování zadávaného příkazu /list s10 s2........................................ 72

Výpis 5.5: Doplňování dat a zobrazení programové dokumentace ............................................ 74

Výpis 5.6: Akce předcházející ukázce chování prostředí při zpětném hledání ........................... 75

Výpis 5.7: Průběh zpětného hledání ........................................................................................... 75

Výpis 6.1: Opětné spuštění prvních dvou úryvků ....................................................................... 78

Výpis 6.2: Začátek seznamu úryvků po vyloučení proměnné $1 ................................................ 79

Výpis 6.3: Reakce na použití neexistující proměnné .................................................................. 80

Výpis 6.4: Odpovědi programu po zadání příkazu /drop start() a následném spuštění

úryvku 29 ................................................................................................................... 81

Výpis 6.5: Vypsání podoby odebraných, neaktivních úryvků...................................................... 82

Výpis 6.6: Používání aktivních i vyloučených úryvků ................................................................. 83

Výpis 6.7: Odpovědi programu po zadání příkazu /drop ........................................................... 84

Výpis 6.8: Vyloučení již vyloučeného úryvku .............................................................................. 85

Výpis 7.1: Zjištění aktuálního nastavení ..................................................................................... 88

Výpis 7.2: Posloupnost příkazů zadávaná pro test reakcí v jednotlivých zpětnovazebních

režimech a uložená v souboru 07.2_Test.jsh ......................................................... 89

Výpis 7.3: Reakce na příkazy z výpisu 7.2 v podrobném režimu ............................................... 90

Výpis 7.4: Reakce na příkazy z výpisu 7.2 ve standardním režimu............................................ 91

Výpis 7.5: Reakce na příkazy z výpisu 7.2 ve stručném režimu ................................................. 91

Výpis 7.6: Reakce na příkazy z výpisu 7.2 v tichém režimu ....................................................... 92

Výpis 7.7: Vliv parametru -retain na nastavení zpětnovazebního režimu ............................... 92

Výpis 7.8: Vliv parametru -retain na nastavení zpětnovazebního režimu ............................... 95

Výpis 7.9: Nastavování startovního skriptu ................................................................................ 97

Výpis 7.10: Nastavování proměnné classpath ......................................................................... 101

Výpis 8.1: Reakce prostředí na úpravy v zabudovaném editoru .............................................. 108

Výpis 8.2: Pokračování výpisu 8.1 zobrazující přípravné operace ........................................... 110

Výpis 8.3: Upravená definice (druhá verze) třídy Demo ............................................................. 111

Výpis 8.4: Pokračování výpisu 8.2 zobrazující problémy po redefinici třídy Demo .................... 112

Výpis 8.5: Pokračování výpisu 8.4 demonstrující mé analytické kroky..................................... 114

Výpis 8.6: Pokračování výpisu 8.5 demonstrující experimenty s instancemi původní i

opravené verze třídy Demo ....................................................................................... 114

Výpis 8.7: Použití editoru WordPad .......................................................................................... 120

Výpis 8.8: Použití editoru jEdit .................................................................................................. 121

Výpis 8.9: Použití editoru PSPad .............................................................................................. 122

Výpis 9.1: Definice metody main ve tř ídě ExampleJShell ....................................................... 129

Výpis 9.2: Definice metody processSnippetEvent(SnippetEvent)ve třídě

ExampleJShell ........................................................................................................ 131

Výpis 9.3: Definice metody evaluateStatus(SnippetEvent, StringBuilder) ve třídě

ExampleJShell ........................................................................................................ 132

Výpis 9.4: Obsah souboru 09.3_Test.jsh se zadávanými testovacími texty ......................... 133

Výpis 9.5: Úvodní část seance demonstrující zpracování jednoduchých výrazů ..................... 134

Výpis 9.6: Část demonstrující definici metod s dopřednými odkazy ......................................... 135

Výpis 9.7: Část demonstrující definici metod s dopřednými odkazy v signatuře ...................... 137

Výpis 9.8: Část demonstrující změnu definice používaného datového typu............................. 138

Výpis 9.9: Část demonstrující změnu definice používaného datového typu............................. 139

Výpis 9.10: Závěrečná část se souhrnným výpisem definovaných úryvků ................................. 140


12 Java 9 – JShell – Edice pro netrpělivé

53G_Java_9_pro_netrpelive_ZLOM.doc verze 17.01.6926 – 2017-06 -18 Strana 12 z 155

Seznam obrázků

Seznam obrázků

Obrázek 3.1: Syntaktický diagram příkazu /list ............................................................................. 42

Obrázek 3.2: Syntaktický diagram příkazu /vars ............................................................................. 43

Obrázek 3.3: Syntaktický diagram příkazu /methods ....................................................................... 44

Obrázek 3.4: Syntaktický diagram příkazu /types ........................................................................... 45

Obrázek 3.5: Dialogové okno otevřené úryvkem .............................................................................. 48

Obrázek 4.1: Syntaktický diagram příkazu /save ............................................................................. 52

Obrázek 4.2: Syntaktický diagram příkazu /open ............................................................................. 55

Obrázek 4.3: Syntaktický diagram příkazu /reload ......................................................................... 64

Obrázek 5.1: Syntaktický diagram příkazu pro získání nápovědy ..................................................... 67

Obrázek 6.1: Syntaktický diagram příkazu /dro p ............................................................................. 86

Obrázek 7.1: Syntaktický diagram příkazu /set feedback pro nastavení zpětnovazebního

režimu ......................................................................................................................... 89

Obrázek 7.2: Syntaktický diagram příkazu /set start pro nastavení startovního skriptu .............. 96

Obrázek 8.1: Syntaktický diagram příkazu /edit ........................................................................... 106

Obrázek 8.2: Okno zabudovaného editoru otevřené po zadání příkazu /edit .............................. 106

Obrázek 8.3: Definice třídy Demo v editačním okně ......................................................................... 108

Obrázek 8.4: Syntaktický diagram příkazu /set editor ................................................................ 117

Obrázek 9.1: Závislosti mezi hlavními třídami balíčku jdk.jshell ................................................ 124

Obrázek A.1 Okno otevřené ve Windows 10 po žádosti o vlastnosti složky Tento počítač ......... 142

Obrázek A.2 Okno Vlastnosti systému ............................................................................................ 142

Obrázek A.3 Okno Proměnné prostředí ve Windows 10 ................................................................. 143

Obrázek A.4 Okno Proměnné prostředí ve Windows 7 ................................................................... 144

Obrázek A.5 Okno Upravit proměnné prostředí ve Windows 10 ..................................................... 145

Obrázek A.6 Okno Úpravy systémové prostředí ve Windows 7 ....................................................... 145

Obrázek A.7: Místní nabídka po puštění souboru přesouvaného pravým tlačítkem myši .............. 146

Obrázek A.8: Dialogové okno pro nastavení vlastností zadaného zástupce .................................. 147

Obrázek A.9: Místní nabídka po puštění souboru přesouvaného pravým tlačítkem myši .............. 150

§


Úvod 13

53G_Java_9_pro_netrpelive_ZLOM.doc verze 17.01.6926 – 2017-06 -18 Strana 13 z 155

Úvod

Úvod

Otevíráte první ze série knih, které se vás pokusí seznámit s nejvýraznějšími

novinkami nové verze jazyka Java, aniž by vás rozptylovaly výkladem základních

programových konstrukcí.

Tato kniha se soustředí na výklad nového nástroje, kterým je program JShell.

Tento program je reakcí na volání programátorů a učitelů programování, kterým

v základní sadě nástrojů platformy Java chyběl program určený pro práci vrežimu označovaném zkratkou REPL (Read-Evaluate-Print-Loop).

Příští díl se bude věnovat zavedení modulárního systému označovaného

zkratkou JPMS (Java Platform Modular System) a z toho vyplývající úpravy a rozš íření základní sady nástrojů. V případě zájmu přibude i díl probírající ostatní

novin ky určené většinou zkušenějším programátorům.

Komu je kniha určena

Nástroj JShell je zaměřen na dvě skupiny uživatelů:

● Na programátory, kteří si potřebují rychle a jednoduše vyzkoušet nějakýnový nápad.

● Na učitele programování, kteří chtějí jednoduše demonstrovat studentům

přednášenou látku a vlastnosti probírané programové konstrukce.

Tomu odpovídá i zaměření knihy. U obou skupin lze předpokládat, že znají jak

prog ramovací jazyk Java, tak stejnojmennou platformu a chtějí se seznámit s

hlavními novinkami deváté verze jazyka a platformy Java. V knize proto nebudu vysvětlovat všeobecně známé konstrukce a knihovny, ale soustředím se na co nejlepší výklad práce s probíraným nástrojem. Na druhou stranu však nebudu předpokládat žádné hluboké znalosti programování ani hlubší znalosti práce s operačním systémem, takže by knihu měl být schopen číst i začínajícíprogramátor – absolvent základního kurzu programování.

Dohodněme se, že budu předpokládat programátorské znalosti na úrovni své

knihy Java 8 – Úvod do objektové architektury pro mírně pokročilé (Pecinovský, 2014).


14 Java 9 – JShell – Edice pro netrpělivé

53G_Java_9_pro_netrpelive_ZLOM.doc verze 17.01.6926 – 2017-06 -18 Strana 14 z 155

Terminologie

Nové termíny vysvětlím, až na ně narazím v textu. Tady bych chtěl pouzeupozornit na termíny běžně používané, které se však v různých kurzech vysvětlují

různě, takže při jejich interpretaci může občas dojít k nedorozumění.

Objekt × Instance

Prvním z nich je obecně známý termín objekt. Objektově orientovanéprogramování (OOP) říká, že „objekt je vše, co můžeme označit podstatným jménem“. Objektem

jsou tedy i datové typy, metody a další součásti programu. Řada programátorů

ale omezuje své chápání tohoto termínu na objekty, které jsou instancemi nějaké

třídy . Toto chápání je důsledek kompromisů, které provedli autoři některých program ovacích jazyků pro zvýšení efektivity vytvořených program ů.

V čistém OOP implementovaném např. v jazyku Smalltalk je však objektem

cokoliv. V tomto významu budu tento termín dále používat. Budu-li chtít hovořit

o objektech, které jsou instancemi nějaké třídy, budu vždy hovořit o instancích.

O programu JShell, kterému je věnována tato kniha, bychom mohli říci, že ke

všem objektům přistupuje z jistého hlediska stejně a je mu jedno, zda se právě

jedná o instanci nějakého typu, příkaz, metodu nebo datový typ. Připravte se

proto na to, že budu-li v textu hovořit o objektech, budu mít na mysli libovolný

druh objektu.

Rozhraní × interfejs

Termínem rozhraní (přesněji rozhraní objektu) označuji souhrn vlastností aschopností, které daný objekt zveřejňuje a jeho okolí je může využívat při komunikaci s

daným objektem.

Termínem interfejs pak budu označovat programovou konstrukci, která měla

původně reprezentovat rozhraní datových typů, ale v osmé verzi Javy přibrala

i omezené možnosti definice implementace.

Textový podpis

Budu-li někde hovořit o textovém podpisu instance (případně jenom o podpisu

instance), budu tím mít na mysli textový řetězec obdržený po zavolání metody

toString().


Úvod 15

53G_Java_9_pro_netrpelive_ZLOM.doc verze 17.01.6926 – 2017-06 -18 Strana 15 z 155

Syntaktické definice a diagramy

Pro definice možných způsobů zápisu nějakého příkazu se používají syntaktické

definice a/nebo syntaktické diagramy. Syntaktické definice jsou výhodnější pro

strojové zpracování, ale syntaktické diagramy jsou pochopitelnější pro člověka.

V učebni cích se sice syntaktické diagramy příliš neobjevují, ale to je většinou

pouze důsledek nechuti autorů k tvorbě obrázků. V této knize jim ale budu dávat

přednost.

Syntaktický diagram ukazuje, jak je možno zobrazovanou konstrukci zapsat.

Pojedete-li po čarách, tak jakýkoliv průjezd generuje syntakticky správnoukonstrukci. Toho, kdo sy ntaktické diagramy ještě nezná a chtěl by rychle některý

vidět, bych odkázal např. na diagram na obrázku 3.1 na straně 42.

Potřebné vybavení

Nechcete-li si knížkou pouze listovat, ale chcete-li ji použít jako příručku čidokonce učebnici, budete si jistě chtít vše vyzkoušet. K tomu potřebujete vhodný vývojový nástroj. Pro studium této kn ihy bude s výjimkou poslední kapitoly stačit pouhé JDK. Pro experimentování s programem probíraným v poslední kapitole je vhodné instalovat IDE podporující Javu 9.

Vývojová sada JDK 9

Pro úspěšné studium této knihy budete potřebovat mít instalovanou Javu 9. Tu

stáhnete ze stránky http://www.oracle.com/technetwork/java/javase/downloads/.

Patříte-li mezi ty opravdu netrpělivé, kteří si chtějí vše vyzkoušet ještě před

tím, než bude uvolněna oficiální verze (firma Oracle plánuje její uvedení na

21. září 2017) , musíte si stáhnout předběžnou verzi označovanou jako Early Access.

Odkaz na ni najdete na téže stránce, jenom musíte popojet kousek níž a stisknout

tlačítko Download v sekci Early Access Releases.

Vývojové prostředí

Teoreticky už nic dalšího nepotřebujete, nicméně většina programátorů používá

nějaký profesionální vývojový nástroj. Je zcela na vás, jaký nástroj zvolíte. Já jsem

při vý voji výukových nástrojů používal vývojov é prostřed í NetBeans, protože ta

ostatní nenabízejí potřebnou nestandardní funkcionalitu. Jsou totiž optimalizována

pro profesionální programátory, kteří tyto nestandardní funkce nepotřebují.

16 Java 9 – JShell – Edice pro netrpělivé

53G_Java_9_pro_netrpelive_ZLOM.doc verze 17.01.6926 – 2017-06 -18 Strana 16 z 155

Opět si ale budete muset zkontrolovat, že daná verze podporuje Javu 9.Očeká

vám, že ostré verze podporující Javu 9 se objeví až na přelomu roku 2017 a 2018.

Budete-li si proto chtít vyzkoušet vše dříve, budete muset použít vývojovou verzi

daného prostředí. Podrobnosti se dozvíte na stránce výrobce.

Pro tři nejrozšířenější vývojová prostředí, tj. pro prostředí NetBeans, IntelliJ

IDEA a Eclipse se pokusím sledovat poslední změny a informovat o nich nastrán

ce knihy na adrese http://knihy.pecinovsky.cz/53_java9_jshell. Psát o nich zde nepovažuji

vhledem k častým změnám za vhodné.

Doprovodné programy

Všechny doprovodné programy zmiňované a používané v textu najdete nastrán

ce knihy na adrese http://knihy.pecinovsky.cz/53_java9_jshell. Měl i byste zde najít

soubory 53_Java9_JShell_VVVV.zip, což je archiv obsahující dvě virtuální složky:

● Složku JShell se záznamy seancí spolu se soubory ukládanými v průběhu

výkladu. Na tyto soubory se bude v každé kapitole odkazovat její závě rečn á

podkapitola nazvan á Soubory pro opakování.

● Složku Lib obsahující dvě knihovny, které začneme používat v podkapitole

7.4 Nastavení proměnné classpath na straně 100. V této složce jsou dva soubory:

● Soubor js.Win_Class.jar obsahující jednoduchou demonstrační knihovnu

s třídou js.Win.

● Soubor N56 -Lib -en_Framework.jar s jednoduchým frameworkem, který

používám ve svých začátečnických učebnicích. Zájemci o její zdrojový

kód najdou příslušný odkaz na stránce knihy.

Použité typografické konvence

K tomu, abyste se v textu lépe vyznali a také abyste si vykládanou látku lépe

zapamatovali, používám několik prostředků pro odlišení a zvýraznění textu.

Termíny První výskyt nějakého termínu a další texty, které chci zvýraznit,

vysazuji tučně.

Název Názvy firem a jeji ch produktů vysazuji kurzivou. Kurzivou vysazuji

také názvy kapitol, podkapitol a oddílů, na které se v textu odkazuji.

Citace Texty, které si můžete přečíst na displeji, např. názvy polí vdialogo

vých oknech či názvy příkazů v nabídkách, vysazuji tučným bezpatkovým

písmem. Úvod 17 53G_Java_9_pro_netrpelive_ZLOM.doc verze 17.01.6926 – 2017-06 -18 Strana 17 z 155 Program Identifikátory a další části programů zmíněné v běžném textuvysazuji neproporcionálním písmem, které je v elektronických verzích pro

zvýraznění tmavě červené.

metoda(?) Při odkazech na metody budu v závorkách za názvem metody vždy

uvádět seznam typů jejich parametrů – např. equals(Object). Nebude-li v danou chvíli jasné, jaké má zmiňovaná metoda parametry,

budu do závorek psát otazník – např. metoda(?).

úryvek Tučně červeně bude ve výpisech konverzace se systémem vypisován

text zadaný uživatelem. Text zapsaný systémem bude vypsán černě.

<KLÁVESA> Modře, kapitálkami a ve špičatých závorkách budou vysazovány

klávesové zkratky. Ve výpisech budou označovat místa, kde uživatel

danou klávesovou zkratku stiskl. Má-li se klávesa stisknout přistisknutém přeřaďovači, bude tento přeřaďovač uveden v závorkách

spolu s klávesou – např. <SHIFT+TAB>.

Kromě výše zmíněných částí textu najdete v knize ještě řadu doplňujícíchpoznámek a vysvětlivek. Všechny budou v jednotném rámečku, který bude označen

ikonou charakterizující druh informace, kterou vám chce poznámka či vysvětlivka

předat.

Symbol jing-jang bude uvozovat poznámky, s nimiž se setkáte napočátku každé kapitoly. Zde vám vždy prozradím, co se v dané kapitole

naučíte.

Otevřená schránka s dopisy označuje informace o projektu, s nímž

budeme v dalším textu pracovat, nebo v něm najdete vzorové řešení

aplikující probranou látku. Příslušný projekt získáte pomocí generátoru

projektů popsaného výše.

Obrázek knihy označuje poznámku týkající se používané terminologie.

Tato poznámka většinou upozorňuje na další používané termínyoznačující stejnou skutečnost nebo na konvence, které se k probíranéproblematice vztahují.


18 Java 9 – JShell – Edice pro netrpělivé

53G_Java_9_pro_netrpelive_ZLOM.doc verze 17.01.6926 – 2017-06 -18 Strana 18 z 155

Píšící ruka označuje obyčejnou poznámku, která pouze doplňujeinformace z hlavního proudu výkladu o nějakou zajímavost.

Ruka s hrozícím prstem upozorňuje na věci, které byste měli určitě vědět

a na které byste si měli dát pozor, protože jejich zanedbání vás většinou

dostane do problémů.

Usměváček vás bude upozorňovat na různé tipy, kterými můžetevylepšit svůj program nebo zefektivnit svoji práci.

Mračoun vás naopak bude upozorňovat na různá úskalí programovacího

jazyka nebo programů, s nimiž budeme pracovat. Bude vám radit, jak se

těmto nástrahám vyhnout či jak to zařídit, aby vám alespoň pokudmožno nevadily.

Brýle označují tzv. „poznámky pro šťouraly“, ve kterých se vás snažím

seznámit s některými zajímavými vlastnostmi probírané konstrukce nebo

upozorňuji na některé souvislosti. Jejich znalost však není k pochopení

látky nezbytná.

Zpětná vazba

Kniha vznikla na základě přání řady mých studentů a programátorů z mých

kurzů. Vznikala poměrně narychlo, takže lze očekávat, že se v ní můževyskytnout větší množství chyb, protože ve zrychleném režimu procházela i redakcí.

Objevíte-li proto v knize nějakou chybu nebo budete mít návrh na nějaké její

vylepšení, neostýchejte se napsat na adresu rudolf@pecinovsky.cz. Pokusím se co

nejdříve zanést na stránku knihy příslušná errata s opravou, kterou pak zapracujeme

do případného dalšího vydání.

Pokud vám bude někde připadat text nepříliš srozumitelný nebo budete mít

nějaký dotaz, ať už k vykládané látce či použitému vývojovému prostředí, pošlete

mail s předmětem ADVENT_DOTAZ. Bude-li se dotaz týkat něčeho obecnějšího,zveřejním na stránce knihy http://knihy.pecinovsky.cz/53_java9_jshell odpověď i pro ostatní,

které by mohl obdobný dotaz napadnout za pár dní, anebo jsou natolik ostýchaví,

že se netroufnou sami zeptat.


Kapitola 1 Seznamte se: JShell 19

53G_Java_9_pro_netrpelive_ZLOM.doc verze 17.01.6926 – 2017-06 -18 Strana 19 z 155

1 Seznamte se: JShell

Kapitola 1

Seznamte se: JShell

Co se v kapitole naučíte

Tato kapitola vám vysvětlí, co to jsou prostředí typu REPL, a seznámí vás

s programem a prostředím JShell, které je od 9. verze integrální součástí

Javy. Naučí vás, jak upravit konfiguraci svého systému tak, aby bylo

možno program JShell snadno spustit, a na příkladu několika jednoduchých

příkazů vám ukáže, jak s ním pracovat.

JShell bude v textu knihy střídavě vystupovat jako program a prostředí.

Dokud o něm budu hovořit z hlediska operačního systému, bude to

program. Jakmile ale tento program spustím, stane se pro mne prostředím,

v němž mohu zadávat své požadavky a očekávat odpovědi.

Program JShell zařazujeme do kategorie nástrojů typu REPL, což je zkratka z

anglického read-evaluaterint-loop (česky: cyklus přečti-vyhodnoť-vytiskni). Tyto

nástroje se používají jako poskytovatelé prostředí (platformy) pro rychlouinterakci s podkladovým prostředím, kterým může být jak operační systém, tak nějaký

program . Uživatel platformy může komunikovat s podkladovým prostředím

v programovacím jazyce dané platformy bez potřeby překladu a samostatného

spuštění.

1.1 Prostředí typu REPL

Prostředí typu REPL jsou jednoduchá programovací prostředí, která vyhodnocují

uživatelovy příkazy ihned po jejich zadání a netrvají na dodržení některýchpravidel použitého jazyka.


20 Java 9 – JShell – Edice pro netrpělivé

53G_Java_9_pro_netrpelive_ZLOM.doc verze 17.01.6926 – 2017-06 -18 Strana 20 z 155

Ve výše zmíněném cyklu se opakovaně vyvolávají jeho jednotlivé funkce, které

jsou charakterizovány následovně:

● Funkce čtení (read) přijímá zadání od uživatele a zadaný výraz, příkaz či

definici uloží v nějaké vnitřní podobě do své paměti. Uživatel může např.

zadat

(3 + 5) * 7

Prostředí výraz předzpracuje a vrátí jej převedený do vnitřního tvaru, ve

kterém jej lze lépe zpracovat.

● Funkce vyhodnocení (správně by mělo být evaluate, ale většinou se používá

pouze zkrácené eval) převezme uživatelovo zadání převedené do vnitřního

tvaru a vyhodno tí je. V našem případě sečte čísla 3 a 5, součet vynásobí číslem

7 a uloží vyhodnocený výsledek.

● Funkce tisk (print) převezme obdržený výsledek a ve vhodném tvaru jej

vytiskne . Většinou ho ještě doplní o další informace.

Prostředí typu REPL se používají buď jako příkazová prostředí anglickyoznačo

vaná zkratkou shell, která jsou spouštěna jako programy z operačního systému.

Používají se také jako nástroje spouštěné z jiného programu a umožňujícírozšiřo

vat schopnosti tohoto programu. Výrazně však převažuje první z uvedených

použití a stejně tomu bude i v této knize.

Prostředí spouštěná jako programy přímo ze systému umožňují svýmuživate

lům přístup k důležitým funkcím operačního systému a spolu s nimi i přístup

k různým programovacím funkcím. Využívají se však nejenom ke komunikaci se

systémem, ale také pro rychlé prototypování připravovaných programů.Nezane<



       
Knihkupectví Knihy.ABZ.cz - online prodej | ABZ Knihy, a.s.
ABZ knihy, a.s.
 
 
 

Knihy.ABZ.cz - knihkupectví online -  © 2004-2018 - ABZ ABZ knihy, a.s. TOPlist