Tytuł oryginału: Java 8 Pocket Guide · Symbole walut w Unicode 31 Rozdział 3. Typy proste...
Transcript of Tytuł oryginału: Java 8 Pocket Guide · Symbole walut w Unicode 31 Rozdział 3. Typy proste...
Tytuł oryginału: Java 8 Pocket Guide
Tłumaczenie: Robert Górczyński
ISBN: 978-83-246-9628-4
© 2014 Helion S.A.
Authorized Polish translation of the English edition Java 8 Pocket Guide ISBN 9781491900864 © 2014 Gliesian, LLC.
This translation is published and sold by permission of O’Reilly Media, Inc., which ownsor controls all rights to publish and sell the same.
All rights reserved. No part of this book may be reproduced or transmitted in any formor by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from the Publisher.
Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji.
Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli.
Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności aniza ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowychlub autorskich. Autor oraz Wydawnictwo HELION nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartychw książce.
Wydawnictwo HELIONul. Kościuszki 1c, 44-100 GLIWICEtel. 32 231 22 19, 32 230 98 63e-mail: [email protected]: http://helion.pl (księgarnia internetowa, katalog książek)
Drogi Czytelniku!Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie/jav8lkMożesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.
Printed in Poland.
• Kup książkę• Poleć książkę • Oceń książkę
• Księgarnia internetowa• Lubię to! » Nasza społeczność
5
Spis treści
Wprowadzenie ..........................................................................................11
Część I Język .................................................................. 15
Rozdział 1. Konwencje nazw ................................................................... 17Nazwy klas 17Nazwy interfejsów 17Nazwy metod 18Nazwy egzemplarzy i zmiennych statycznych 18Nazwy parametrów i zmiennych lokalnych 18Nazwy parametrów typów ogólnych 18Nazwy stałych 19Nazwy typów wyliczeniowych 19Nazwy pakietów 19Nazwy adnotacji 20Nazwy akronimów 20
Rozdział 2. Elementy leksykalne ............................................................. 21Unicode i ASCII 21Komentarze 23Słowa kluczowe 24Identyfikatory 24
Kup książkę Poleć książkę
6 Spis treści
Separatory 25Operatory 26Literały 26Sekwencje sterujące 30Symbole walut w Unicode 31
Rozdział 3. Typy proste ............................................................................33Typy podstawowe 33Literały dla typów podstawowych 33Encje zmiennoprzecinkowe 35Promocja liczbowa dla typów podstawowych 37Klasy opakowujące 39Automatyczne pakowanie i rozpakowywanie 39
Rozdział 4. Typy odnośnikowe ................................................................43Porównanie typów odnośnikowych i podstawowych 44Wartości domyślne 44Konwersja typów odnośnikowych 46Konwersja między typami podstawowymi i odnośnikowymi 47Przekazanie typu odnośnikowego metodzie 47Porównywanie typów odnośnikowych 48Kopiowanie typów odnośnikowych 51Alokacja pamięci i usuwanie nieużytków w przypadkutypów odnośnikowych 52
Rozdział 5. Programowanie zorientowane obiektowo .........................53Klasy i obiekty 53Zmiennej długości lista argumentów 59Klasy i metody abstrakcyjne 60Statyczne dane składowe, metody, stałe i inicjalizatory 61Interfejsy 63Wyliczenia 63Typy adnotacji 64Interfejsy funkcjonalne 66
Kup książkę Poleć książkę
Spis treści 7
Rozdział 6. Polecenia i bloki .................................................................... 67Polecenie w postaci wyrażenia 67Polecenie puste 68Blok 68Polecenia warunkowe 68Polecenia iteracji 70Transfer kontroli 72Polecenie synchronized 73Polecenie assert 73Polecenia obsługi wyjątków 74
Rozdział 7. Obsługa wyjątków ................................................................ 75Hierarchia wyjątku 75Sprawdzane i niesprawdzane wyjątki oraz błędy 76Najczęstsze sprawdzane i niesprawdzane wyjątki oraz błędy 77Słowa kluczowe związane z obsługą wyjątków 79Proces obsługi wyjątków 84Zdefiniowanie własnej klasy wyjątku 84Wyświetlanie informacji o wyjątku 85
Rozdział 8. Modyfikatory w Javie ...........................................................87Modyfikatory dostępu 88Inne modyfikatory (niedotyczące dostępu) 88
Część II Platforma ........................................................... 91
Rozdział 9. Java SE ...................................................................................93Najczęściej używane biblioteki API Javy SE 93
Rozdział 10. Podstawy programowania ................................................ 105JRE 105JDK 105Struktura programu w Javie 106Narzędzia wiersza poleceń 108Classpath 114
Kup książkę Poleć książkę
8 Spis treści
Rozdział 11. Zarządzanie pamięcią .........................................................115Rodzaje mechanizmów usuwania nieużytków 115Narzędzia przeznaczone do zarządzania pamięcią 117Opcje w wierszu poleceń 118Zmiana wielkości stosu wirtualnej maszyny Javy 121Przestrzeń Metaspace 121Współpraca z mechanizmem GC 121
Rozdział 12. Podstawowe wejście i wyjście .......................................... 123Standardowe strumienie in, out i err 123Hierarchia klas dla podstawowego wejścia i wyjścia 124Odczyt i zapis pliku 124Odczyt i zapis gniazda 127Serializacja 128Tworzenie archiwum ZIP i rozpakowywanie plików 129
Rozdział 13. Nowe API wejścia-wyjścia (NIO.2) ....................................131Interfejs Path 131Klasa Files 132Funkcje dodatkowe 133
Rozdział 14. Współbieżność .................................................................. 135Tworzenie wątków 135Stany wątku 136Priorytety wątku 136Najczęściej używane metody dotyczące wątków 137Synchronizacja 138Narzędzia współbieżności 139
Rozdział 15. Framework Collections ...................................................... 143Interfejs Collection 143Implementacje 144Metody frameworka Collection 144Algorytmy klasy Collections 145Efektywność algorytmu 145Interfejs funkcjonalny Comparator 146
Kup książkę Poleć książkę
Spis treści 9
Rozdział 16. Framework Generics .......................................................... 149Klasy i interfejsy frameworka Generics 149Konstruktory wykorzystujące framework Generics 150Zasada zastępowania 151Parametry typu, znaki wieloznaczne i granice 151Zasada get i put 152Specjalizacja typów generycznych 153Metody frameworka Generics w niezmodyfikowanych typach 154
Rozdział 17. API skryptowe Javy ............................................................ 155Języki skryptowe 155Implementacje silnika skryptów 155Konfiguracja języków skryptowych i silników 157
Rozdział 18. API daty i godziny ...............................................................161Wsteczna zgodność 162Kalendarze regionalne 162Kalendarz ISO 162
Rozdział 19. Wyrażenia lambda ............................................................ 169Podstawy wyrażeń lambda 169Interfejsy funkcjonalne specjalnego przeznaczenia 171Interfejsy funkcjonalne ogólnego przeznaczenia 172Zasoby dotyczące wyrażeń lambda 174
Część III Dodatki ............................................................ 175
A API Fluent ...........................................................................................177
B Narzędzia firm trzecich .................................................................... 179
C Podstawy UML .................................................................................. 189
Skorowidz ............................................................................................... 199
Kup książkę Poleć książkę
135
ROZDZIAŁ 14.
Współbieżność
Wątki w Javie pozwalają na znacznie efektywniejsze użycie wielu procesorówlub wielu rdzeni w pojedynczym procesorze. W przypadku pojedynczegoprocesora wątki zapewniają możliwość równoległego wykonywania operacji,na przykład wejścia-wyjścia i przetwarzania.
Programowanie wielowątkowe w Javie jest obsługiwane dzięki funkcjomoferowanym przez klasę Thread i interfejs Runnable.
Tworzenie wątkówWątki mogą być tworzone na dwa sposoby: przez rozszerzenie klasy java.lang.Thread lub przez implementację interfejsu java.lang.Runnable.
Rozszerzenie klasy ThreadRozszerzenie klasy Thread i nadpisanie metody run() powoduje utworzenieklasy obsługującej wątki. Uruchomienie nowego wątku jest bardzo łatwymzadaniem:
class Comet extends Thread { public void run() { System.out.println("Orbitowanie"); orbit(); }}
Comet halley = new Comet();halley.run();
Kup książkę Poleć książkę
136 Rozdział 14. Współbieżność
Pamiętaj, że tylko jedna superklasa może być rozszerzona. Dlatego też klasarozszerzająca Thread nie może rozszerzać już żadnych innych superklas.
Implementacja interfejsu RunnableImplementacja interfejsu funkcjonalnego Runnable i zdefiniowanie jego metodyrun() również pozwala na utworzenie klasy obsługującej wątki.
class Asteroid implements Runnable { public void run() { System.out.println("Orbitowanie"); orbit(); }}
Asteroid majaAsteroid = new Asteroid();Thread majaThread = new Thread(majaAsteroid);majaThread.run();
Pojedynczy możliwy do uruchomienia egzemplarz może być przekazanywielu obiektom wątków. Każdy wątek wykonuje to samo zadanie, jak poka-zano w poniższym fragmencie kodu tuż po użyciu wyrażenia lambda:
Runnable asteroid = () -> { System.out.println("Orbitowanie"); orbit();};
Thread asteroidThread1 = new Thread(asteroid);Thread asteroidThread2 = new Thread(asteroid);asteroidThread1.run();asteroidThread2.run();
Stany wątkuWyliczenie Thread.state zawiera sześć stanów wątków, które zostały wymie-nione w tabeli 14.1.
Priorytety wątkuPrawidłowy zakres wartości priorytetu wątku to zwykle od 1 do 10, a warto-ścią domyślną jest 5. Priorytety wątku to jeden z aspektów Javy charakteryzu-jący się najmniejszą przenośnością, ponieważ zakres i wartość domyślna mogąsię różnić w poszczególnych wirtualnych maszynach Javy. Wartości prioryte-tów można pobrać za pomocą MIN_PRIORITY, NORM_PRIORITY i MAX_PRIORITY.
Kup książkę Poleć książkę
Najczęściej używane metody dotyczące wątków 137
Tabela 14.1. Stany wątku
Stan wątku Opis
NEW Wątek, który został utworzony, ale jeszcze nie jest uruchomiony.
RUNNABLE Wątek, który jest gotowy do uruchomienia.
BLOCKED „Żywy” wątek, który jest zablokowany i oczekuje na blokadę monitora.
WAITING „Żywy” wątek, który wywołuje własną metodę wait() lub join() w trakcieoczekiwania na inny wątek.
TIMED_WAITING „Żywy” wątek, który oczekuje na inny wątek przez określony czas. Wątek uśpiony.
TERMINATED Wątek, który zakończył działanie.
System.out.print(Thread.MAX_PRIORITY);
Wątki o niższym priorytecie oferują mniejszą wydajność niż wątki o wyż-szym priorytecie.
Najczęściej używane metodydotyczące wątkówW tabeli 14.2 wymieniono najczęściej używane metody dotyczące wątkówi pochodzące z klasy Thread.
Tabela 14.2. Najczęściej używane metody klasy Thread dotyczące wątków
Metoda Opis
getPriority() Wartością zwrotną metody jest priorytet wątku.
getState() Wartością zwrotną metody jest stan wątku.
interrupt() Przerwanie pracy wątku.
isAlive() Wartością zwrotną metody jest stan „życia” wątku.
isInterrupted() Metoda sprawdza, czy nastąpiło przerwanie pracy wątku.
join() Wątek wywołujący tę metodę musi poczekać na zakończenie działania przezwątek, który jest reprezentowany przez dany obiekt.
setPriority(int) Ustawienie priorytetu wątku.
start() Umieszczenie wątku w stanie gotowości do uruchomienia.
W tabeli 14.3 wymieniono najczęściej używane metody dotyczące wątkówi pochodzące z klasy Object.
Kup książkę Poleć książkę
138 Rozdział 14. Współbieżność
Tabela 14.3. Najczęściej używane metody klasy Object dotyczące wątków
Metoda Opis
notify() Metoda nakazuje obudzenie wątku i jego uruchomienie.
notifyAll() Metoda nakazuje obudzenie wszystkich wątków oczekujących na inne wątkilub zasoby; następnie algorytm szeregowania wybierze jeden wątek i uruchomi go.
wait() Wstrzymanie wątku w stanie oczekiwania aż do chwili, gdy inny wątek wywołametodę notify() lub notifyAll().
Wywołanie metody wait() lub notify() spowoduje zgłoszeniewyjątku InterruptedException, jeśli wywołanie metody nastąpiwzględem wątku, który ma ustawioną wartość true dla opcjiwskazującej na przerwanie jego pracy.
W tabeli 14.4 wymieniono najczęściej używane metody statyczne klasy Threaddotyczące wątków, na przykład Thread.sleep(1000).
Tabela 14.4. Metody statyczne dotyczące wątków
Metoda Opis
activeCount() Wartością zwrotną metody jest liczba wątków znajdujących się w bieżącejgrupie wątków.
currentThread() Metoda zwraca odniesienie do aktualnie działającego wątku.
interrupted() Metoda sprawdza, czy nastąpiło przerwanie aktualnie działającego wątku.
sleep(long) Zablokowanie na podaną w parametrze liczbę milisekund aktualniedziałającego wątku.
yield() Wstrzymanie aktualnego wątku, aby pozwolić innym wątkom na działanie.
SynchronizacjaSłowo kluczowe synchronize jest przeznaczone do nakładania blokad na blokii metody. Blokada powinna zostać nałożona na blok kodu lub metodę, którapróbuje uzyskać dostęp do zasobu współdzielonego o znaczeniu krytycznym.Tego rodzaju blokada monitora jest definiowana w nawiasie klamrowym.Poniżej przedstawiono kilka przykładów synchronizowanych bloków i metod.
Egzemplarz obiektu t wraz z synchronizowaną blokadą:synchronized (t) { // Polecenia bloku.}
Egzemplarz obiektu this wraz z synchronizowaną blokadą:
Kup książkę Poleć książkę
Narzędzia współbieżności 139
synchronized (this) { // Polecenia bloku.}
Metoda raise() wraz z synchronizowaną blokadą:// Pierwszy segment kodu.synchronized void raise() { // Polecenia metody.}
// Drugi segment kodu.void raise() { synchronized (this) { // Polecenia metody. }}
Metoda statyczna calibrate() wraz z synchronizowaną blokadą:class Telescope { synchronized static void calibrate() { // Polecenia metody. }}
Inna nazwa blokady to monitor lub mutex (ang. mutually exclu-sive lock).
Narzędzia współbieżności to kolejny sposób na stosowanie współbieżnościi zarządzanie nią.
Narzędzia współbieżnościW Javie SE 5.0 wprowadzono klasę narzędziową przeznaczoną do progra-mowania współbieżnego. Wspomniane narzędzia znajdują się w pakieciejava.util.concurrent i obejmują wykonawców, współbieżne kolekcje, syn-chronizatory i narzędzia przeznaczone do odmierzania czasu.
WykonawcyKlasa ThreadPoolExecutor oraz jej podklasa ScheduledThreadPoolExecutor imple-mentują interfejs Executor zapewniający konfigurowaną i elastyczną pulęwątków. Wspomniana pula wątków pozwala komponentom serwera na wy-korzystanie zalet wynikających z możliwości wielokrotnego użycia wątków.
Kup książkę Poleć książkę
140 Rozdział 14. Współbieżność
Klasa Executors dostarcza metody fabryczne (tworzące obiekty) oraz narzę-dziowe. Spośród nich wymienione poniżej są przeznaczone do tworzeniapul wątków:
newCachedThreadPool()Utworzenie nieograniczonej puli wątków, która automatycznie wielo-krotnie używa wątków.
newFixedThreadPool(int nThreads)Utworzenie puli wątków o stałej wielkości, która automatycznie wie-lokrotnie używa wątków ze współdzielonej, nieograniczonej kolejki.
newScheduledThreadPool(int corePoolSize)Utworzenie puli wątków, dla której zdefiniowano polecenia wykony-wane okresowo lub po upływie określonego czasu.
newSingleThreadExecutor()Utworzenie wykonawcy działającego w pojedynczym wątku i operu-jącego na nieograniczonej kolejce.
newSingleThreadScheduledExecutor()Utworzenie wykonawcy działającego w pojedynczym wątku i posiada-jącego zdefiniowane polecenia wykonywane okresowo lub po upływieokreślonego czasu.
Poniżej przedstawiono fragment kodu demonstrujący użycie metody newFixedThreadPool():
import java.util.concurrent.Executors;import java.util.concurrent.ExecutorService;
public class ThreadPoolExample { public static void main() { // Utworzenie zadań // (klasa RTask implementuje interfejs Runnable). RTask t1 = new RTask("thread1"); RTask t2 = new RTask("thread2");
// Utworzenie menedżera wątków. ExecutorService threadExecutor = Executors.newFixedThreadPool(2);
// Przygotowanie wątków do uruchomienia. threadExecutor.execute(t1); threadExecutor.execute(t2);
// Zamknięcie wątków. threadExecutor.shutdown(); }}
Kup książkę Poleć książkę
Narzędzia współbieżności 141
Współbieżne kolekcjeNawet jeśli typ kolekcji może być synchronizowany, najlepszym rozwiąza-niem jest użycie klas współbieżności zapewniających bezpieczeństwo wąt-ków i oferujących taką samą funkcjonalność, jak zwykłe klasy. Wspomnianeklasy kolekcji i ich odpowiedniki współbieżności wymieniono w tabeli 14.5.
Tabela 14.5. Klasy kolekcji i ich odpowiedniki zapewniające bezpieczeństwo wątków
Klasa kolekcji Odpowiednik zapewniający bezpieczeństwo wątków
HashMap ConcurrentHashMap
TreeMap ConcurrentSkipListMap
TreeSet ConcurrentSkipListSet
podtypy Map ConcurrentMap
podtypy List CopyOnWriteArrayList
podtypy Set CopyOnWriteArraySet
PriorityQueue PriorityBlockingQueue
Deque BlockingDeque
Queue BlockingQueue
SynchronizatorySynchronizatory to specjalnego przeznaczenia narzędzia synchronizacji.Dostępne synchronizatory zostały wymienione w tabeli 14.6.
Tabela 14.6. Synchronizatory
Synchronizator Opis
Semaphore Obsługuje zestaw zezwoleń.
CountDownLatch Implementuje oczekiwanie aż do zakończenia wykonywania zestawu operacji.
CyclicBarrer Implementuje oczekiwanie aż do usunięcia najczęściej występujących barier.
Exchanger Implementuje punkt synchronizacji, w którym wątki mogą wymieniać elementy.
Narzędzia odmierzania czasuWyliczenie TimeUnit jest najczęściej stosowane do informowania metod opar-tych na odmierzaniu czasu, jak powinien być obliczony dany parametr zwią-zany z czasem. Przykład przedstawiono w poniższym fragmencie kodu.Dostępne stałe wyliczenia TimeUnit zostały wymienione w tabeli 14.7.
Kup książkę Poleć książkę
142 Rozdział 14. Współbieżność
// tryLock (czas podany jako typ long i jednostka TimeUnit).if (lock.tryLock(15L, TimeUnit.DAYS)) {...} // 15 dni.
Tabela 14.7. Stałe wyliczenia TimeUnit
Stała Definicja jednostki Jednostka (s) Skrót
NANOSECONDS 1/1000 µs .000000001 ns
MICROSECONDS 1/1000 ms .000001 µs
MILLISECONDS 1/1000 s .001 ms
SECONDS s 1 sec
MINUTES 60 s 60 min
HOURS 60 min 3600 hr
DAYS 24 godziny 86400 d
Kup książkę Poleć książkę
199
Skorowidz
λE, 169–174
Aadnotacja, 64, 65
@FunctionalInterface, 66agregacja (UML), 195alokacja pamięci, 52API
daty i godziny, 161–167Fluent, 161, 177, 178NIO.2, 131–133skryptowe, 155–159
archiwizacja programu Javy, 111argument classpath, 114ASCII, 21, 22asercje, 73asocjacja (UML), 195automatyczne pakowanie, 39, 40
Bbiblioteki
API Javy SE, 93–103CORBA, 100RMI, 100wspomagające programowanie
w Javie, 182, 183
blok, 68catch, 80–83finally, 80–83try, 80–83
błędy, 77, 79
CcamelCase, 17
Ddane składowe, 54definiowanie własnej klasy wyjątku,
84deserializacja obiektu, 129domknięcia, 169–174
Eelementy leksykalne, 21–32encje specjalne, 36, 37encje zmiennoprzecinkowe, 35, 36
FFluent, 177, 178formatowanie obiektów daty
i godziny, 166, 167
Kup książkę Poleć książkę
200 Skorowidz
Framework Collections, 143–148framework Generics, 149–154
Ggarbage collection, 115–122generalizacja (UML), 196granice, 151, 152GZIP, 129, 130
Hhermetyzacja, 53hierarchia wyjątku, 75
Iidentyfikatory, 24implementacje silnika skryptów,
155–157inicjalizator statyczny, 62interfejs
Collection, 143Comparator, 146, 147, 148maszynowy, 164, 165Runnable, 136ScriptEngine, 155Serializable, 128
interfejsy, 63funkcjonalne, 66
ogólnego przeznaczenia, 172,173, 174
specjalnego przeznaczenia, 171,172
interpreter Javy, 109, 110
JJDBC, 166JDK, 105, 106języki skryptowe
zgodne ze specyfikacją JSR 223, 186,187
JRE, 105
Kkalendarz ISO, 162–164klasa, 53, 54
abstrakcyjna, 60BufferedInputStream, 126BufferedOutputStream, 126BufferedReader, 124, 127Collections, 145, 146DataInputStream, 125, 127DataOutputStream, 126, 128DateTimeFormatter, 166Executors, 140Files, 132FileWriter, 126InputStream, 124ObjectInputStream, 129ObjectOutputStream, 128opakowująca, 39OutputStream, 124Path, 132PrintWriter, 126, 127PushbackInputStream, 126Reader, 124Thread, 135ThreadPoolExecutor, 139wejścia-wyjścia, 123–130Writer, 124ZipInputSteam, 129ZipOutputStream, 129
klonowanie, 51, 52kolekcje, 143komentarze, 23kompilator Javy, 108, 109kompozycja (UML), 195konfiguracja
języka skryptowego, 157silnika skryptowego, 158
konstrukcjatry-catch, 81try-catch-finally, 82, 83try-finally, 82
konstruktory, 56, 57
Kup książkę Poleć książkę
Skorowidz 201
konwencje nazw, 17konwersja
między typami podstawowymii odnośnikowymi, 47
typów odnośnikowych, 46, 47kopiowanie typów odnośnikowych,
51, 52
Lliterały, 26, 28, 29
dla typów podstawowych, 33–35
Mmechanizm
CMS, 117G1, 117Parallel, 116Parallel Compacting, 116Serial, 116
metaadnotacja Retention, 65metoda, 54–56
abstrakcyjna, 61Duration.between(), 165equals(), 49finalize(), 122getAnnotation(), 65getMessage(), 85getPriority(), 137getState(), 137interrupt(), 137isAlive(), 137isInterrupted(), 137join(), 137klasy Object dotycząca wątków,
138klasy Thread dotycząca wątków,
137lines(), 127main(), 107notify(), 138notifyAll(), 138
printf(), 60printStackTrace(), 85setPriority(int), 137start(), 137statyczna dotycząca wątków, 138statyczna, 62toString(), 85typu vararg, 59wait(), 138write(), 128writeInt(), 126
modyfikatorabstract, 89default, 89dostępu, 87, 88final, 89Javy, 87–90native, 89package-private, 88private, 88protected, 88public, 88static, 89strictfp, 89synchronized, 89transient, 89volatile, 89
moment, 166
Nnadpisywanie metod, 56narzędzia
firm trzecich wspomagająceprogramowanie w Javie, 179–187
javadoc, 112, 113odmierzania czasu, 141przeznaczone
do zarządzania pamięcią, 117,118
wiersza poleceń, 108–114współbieżności, 139–141
Kup książkę Poleć książkę
202 Skorowidz
NIO, 123NIO.2, 131–133notacja duże O, 147
Oobiekt, 53, 54obsługa wyjątków, 75–86odczyt gniazda, 127, 128odczyt plików, 124–126okres, 165OOP, Patrz programowanie
zorientowane obiektowooperatory, 26
równości, 48warunkowe, 38
Pparametry typu, 151, 152platforma
aplikacji sieciowychwspomagające programowaniew Javie, 184, 185
Java SE, 93–103pliki JAR, 111, 112podklasa, 57pola, 54polecenie, 67–74
assert, 73break, 72continue, 72do-while, 71for, 70if else if, 69if, 68if-else, 69iteracji, 70, 71obsługi wyjątków, 74puste, 68return, 73switch, 69w postaci wyrażenia, 67
warunkowe, 68, 69while, 71
porównywanieciągów tekstowych, 49typów odnośnikowych, 48, 49wyliczeń, 50
powiązanie tymczasowe (UML), 195Przestrzeń Metaspace, 121priorytety wątku, 136, 137programowanie
wielowątkowe, 135zorientowane obiektowo, 53–66
promocja liczbowa, 37przeciążanie metod, 55
Rrealizacja (UML), 196rozpakowywanie, 40
SSAM, 66sekwencje sterujące, 30separatory, 25serializacja obiektu, 128silniki skryptowe, 155–159słowo kluczowe, 24
abstract, 60extends, 57final, 62static, 62super, 58synchronize, 138synchronized, 73this, 58throw, 80
stałe statyczne, 62stany wątku, 137statyczne dane składowe, 61stos, 121
zmiana wielkości stosuwirtualnej maszyny Javy, 121, 122
Kup książkę Poleć książkę
Skorowidz 203
struktura programu w Javie, 106–108strumienie danych wejściowych
i wyjściowych, 124, 125superklasa, 57synchronizacja, 138, 139synchronizator, 141System.err, 124System.in, 123System.out, 124
Śśrodowiska IDE, 183, 184
Ttablice, 45, 46TimeUnit, 141, 142tokeny, 21–32tworzenie archiwum ZIP
i rozpakowywanie plików, 129, 130typy
generyczne, specjalizacja, 153odnośnikowe, 43–52podstawowe, 33–41
a typy odnośnikowe, 44proste, 33–41
UUML, 189–198
diagram klas, 189–191diagram obiektu, 191diagram pakietu, 192, 193diagram sekwencji, 196, 197relacje klas, 194–196
Unicode, 21symbole walut, 31, 32
usuwanie nieużytków, 115–122opcje w wierszu poleceń, 118–120
Wwartość domyślna, 44wątki, 135–142weryfikacja silnika skryptowego, 158współbieżne kolekcje, 141współbieżność, 135–142wyjątek, 75wyjątki
niesprawdzane, 76–79sprawdzane, 76–78
wyliczenia, 63wyrażenia lambda, 169–174
XXSD, 166
Zzapis
gniazda, 127, 128pliku, 124–126
zarządzanie pamięcią, 115–122zasada zastępowania, 151ZIP, 129zmienne egzemplarza, 44, 54zmienne lokalne, 44znaki
ASCII, 22, 23wieloznaczne, 151, 152
Zunifikowany język modelowania,Patrz UML
Kup książkę Poleć książkę