Facebook - konwersja
  • promocja

Java. Podstawy. Wydanie XI - ebook

Wydawnictwo:
Tłumacz:
Data wydania:
26 listopada 2019
Format ebooka:
EPUB
Format EPUB
czytaj
na czytniku
czytaj
na tablecie
czytaj
na smartfonie
Jeden z najpopularniejszych formatów e-booków na świecie. Niezwykle wygodny i przyjazny czytelnikom - w przeciwieństwie do formatu PDF umożliwia skalowanie czcionki, dzięki czemu możliwe jest dopasowanie jej wielkości do kroju i rozmiarów ekranu. Więcej informacji znajdziesz w dziale Pomoc.
Multiformat
E-booki w Virtualo.pl dostępne są w opcji multiformatu. Oznacza to, że po dokonaniu zakupu, e-book pojawi się na Twoim koncie we wszystkich formatach dostępnych aktualnie dla danego tytułu. Informacja o dostępności poszczególnych formatów znajduje się na karcie produktu.
, PDF
Format PDF
czytaj
na laptopie
czytaj
na tablecie
Format e-booków, który możesz odczytywać na tablecie oraz laptopie. Pliki PDF są odczytywane również przez czytniki i smartfony, jednakze względu na komfort czytania i brak możliwości skalowania czcionki, czytanie plików PDF na tych urządzeniach może być męczące dla oczu. Więcej informacji znajdziesz w dziale Pomoc.
Multiformat
E-booki w Virtualo.pl dostępne są w opcji multiformatu. Oznacza to, że po dokonaniu zakupu, e-book pojawi się na Twoim koncie we wszystkich formatach dostępnych aktualnie dla danego tytułu. Informacja o dostępności poszczególnych formatów znajduje się na karcie produktu.
, MOBI
Format MOBI
czytaj
na czytniku
czytaj
na tablecie
czytaj
na smartfonie
Jeden z najczęściej wybieranych formatów wśród czytelników e-booków. Możesz go odczytać na czytniku Kindle oraz na smartfonach i tabletach po zainstalowaniu specjalnej aplikacji. Więcej informacji znajdziesz w dziale Pomoc.
Multiformat
E-booki w Virtualo.pl dostępne są w opcji multiformatu. Oznacza to, że po dokonaniu zakupu, e-book pojawi się na Twoim koncie we wszystkich formatach dostępnych aktualnie dla danego tytułu. Informacja o dostępności poszczególnych formatów znajduje się na karcie produktu.
(3w1)
Multiformat
E-booki sprzedawane w księgarni Virtualo.pl dostępne są w opcji multiformatu - kupujesz treść, nie format. Po dodaniu e-booka do koszyka i dokonaniu płatności, e-book pojawi się na Twoim koncie w Mojej Bibliotece we wszystkich formatach dostępnych aktualnie dla danego tytułu. Informacja o dostępności poszczególnych formatów znajduje się na karcie produktu przy okładce. Uwaga: audiobooki nie są objęte opcją multiformatu.
czytaj
na laptopie
Pliki PDF zabezpieczone watermarkiem możesz odczytać na dowolnym laptopie po zainstalowaniu czytnika dokumentów PDF. Najpowszechniejszym programem, który umożliwi odczytanie pliku PDF na laptopie, jest Adobe Reader. W zależności od potrzeb, możesz zainstalować również inny program - e-booki PDF pod względem sposobu odczytywania nie różnią niczym od powszechnie stosowanych dokumentów PDF, które odczytujemy każdego dnia.
Informacje na temat zabezpieczenia e-booka znajdziesz na karcie produktu w "Szczegółach na temat e-booka". Więcej informacji znajdziesz w dziale Pomoc.
czytaj
na tablecie
Aby odczytywać e-booki na swoim tablecie musisz zainstalować specjalną aplikację. W zależności od formatu e-booka oraz systemu operacyjnego, który jest zainstalowany na Twoim urządzeniu może to być np. Bluefire dla EPUBa lub aplikacja Kindle dla formatu MOBI.
Informacje na temat zabezpieczenia e-booka znajdziesz na karcie produktu w "Szczegółach na temat e-booka". Więcej informacji znajdziesz w dziale Pomoc.
czytaj
na czytniku
Czytanie na e-czytniku z ekranem e-ink jest bardzo wygodne i nie męczy wzroku. Pliki przystosowane do odczytywania na czytnikach to przede wszystkim EPUB (ten format możesz odczytać m.in. na czytnikach PocketBook) i MOBI (ten fromat możesz odczytać m.in. na czytnikach Kindle).
Informacje na temat zabezpieczenia e-booka znajdziesz na karcie produktu w "Szczegółach na temat e-booka". Więcej informacji znajdziesz w dziale Pomoc.
czytaj
na smartfonie
Aby odczytywać e-booki na swoim smartfonie musisz zainstalować specjalną aplikację. W zależności od formatu e-booka oraz systemu operacyjnego, który jest zainstalowany na Twoim urządzeniu może to być np. iBooks dla EPUBa lub aplikacja Kindle dla formatu MOBI.
Informacje na temat zabezpieczenia e-booka znajdziesz na karcie produktu w "Szczegółach na temat e-booka". Więcej informacji znajdziesz w dziale Pomoc.

Java. Podstawy. Wydanie XI - ebook

Świat usłyszał o Javie pod koniec 1995 roku. Wkrótce stała się niezwykle popularną i cenioną technologią. Dziś jest dojrzałym, rozbudowanym, elastycznym, a przy tym niezwykle starannie zaprojektowanym językiem programowania, który może służyć do pisania dużych systemów, małych programów, aplikacji mobilnych i aplikacji WWW. Charakteryzuje się też wysublimowanymi zabezpieczeniami, które w niego wbudowano. Każdy, kto chce pisać dobry i wydajny kod, powinien dobrze poznać zarówno podstawowe, jak i zaawansowane cechy Javy.

Ta książka jest kolejnym, zaktualizowanym i uzupełnionym wydaniem kultowego podręcznika dla profesjonalnych programistów Javy - to pierwszy tom, w którym omówiono podstawy języka oraz najważniejsze zagadnienia związane z programowaniem interfejsu użytkownika. W tym wydaniu opisano pakiet JDK Java Standard Edition (SE) w wersji 9, 10 i 11. Teorii towarzyszą liczne przykłady kodu, obrazujące zasady działania niemal każdej przedstawionej tu funkcji czy biblioteki. Przykładowe programy są proste, aby ułatwić naukę najważniejszych zagadnień.

W tej książce między innymi:

  • solidne wprowadzenie do Javy i przygotowanie środowiska pracy
  • zasady programowania obiektowego: klasy, hermetyzacja, dziedziczenie
  • mechanizm refleksji i obiekty proxy
  • interfejsy, klasy wewnętrzne i wyrażenia lambda
  • programowanie generyczne i system kolekcji
  • GUI i praca z pakietem Swing
  • programowanie współbieżne

Java - oto język mistrzów programowania!

Spis treści


Wstęp 13

  • Do Czytelnika 13
  • O książce 15
  • Konwencje typograficzne 17
  • Przykłady kodu 17

Podziękowania 19

Rozdział 1. Wprowadzenie do Javy 21

  • 1.1. Java jako platforma programistyczna 21
  • 1.2. Słowa klucze białej księgi Javy 22
    • 1.2.1. Prostota 23
    • 1.2.2. Obiektowość 23
    • 1.2.3. Sieciowość 24
    • 1.2.4. Niezawodność 24
    • 1.2.5. Bezpieczeństwo 24
    • 1.2.6. Niezależność od architektury 25
    • 1.2.7. Przenośność 26
    • 1.2.8. Interpretacja 26
    • 1.2.9. Wysoka wydajność 27
    • 1.2.10. Wielowątkowość 27
    • 1.2.11. Dynamiczność 27
  • 1.3. Aplety Javy i internet 28
  • 1.4. Krótka historia Javy 29
  • 1.5. Główne nieporozumienia dotyczące Javy 32

Rozdział 2. Środowisko programistyczne Javy 35

  • 2.1. Instalacja oprogramowania Java Development Kit 35
    • 2.1.1. Pobieranie pakietu JDK 36
    • 2.1.2. Instalacja pakietu JDK 37
    • 2.1.3. Instalacja plików źródłowych i dokumentacji 39
  • 2.2. Używanie narzędzi wiersza poleceń 40
  • 2.3. Praca w zintegrowanym środowisku programistycznym 45
  • 2.4. JShell 48

Rozdział 3. Podstawowe elementy języka Java 51

  • 3.1. Prosty program w Javie 52
  • 3.2. Komentarze 55
  • 3.3. Typy danych 56
    • 3.3.1. Typy całkowite 56
    • 3.3.2. Typy zmiennoprzecinkowe 57
    • 3.3.3. Typ char 58
    • 3.3.4. Unicode i typ char 60
    • 3.3.5. Typ boolean 61
  • 3.4. Zmienne i stałe 61
    • 3.4.1. Deklarowanie zmiennych 61
    • 3.4.2. Inicjalizacja zmiennych 62
    • 3.4.3. Stałe 63
    • 3.4.4. Typ wyliczeniowy 64
  • 3.5. Operatory 65
    • 3.5.1. Operatory arytmetyczne 65
    • 3.5.2. Funkcje i stałe matematyczne 66
    • 3.5.3. Konwersja typów numerycznych 68
    • 3.5.4. Rzutowanie 68
    • 3.5.5. Łączenie przypisania z innymi operatorami 69
    • 3.5.6. Operatory inkrementacji i dekrementacji 70
    • 3.5.7. Operatory relacyjne i logiczne 70
    • 3.5.8. Operatory bitowe 71
    • 3.5.9. Nawiasy i priorytety operatorów 72
  • 3.6. Łańcuchy 73
    • 3.6.1. Podłańcuchy 73
    • 3.6.2. Konkatenacja 74
    • 3.6.3. Łańcuchów nie można modyfikować 74
    • 3.6.4. Porównywanie łańcuchów 76
    • 3.6.5. Łańcuchy puste i łańcuchy null 77
    • 3.6.6. Współrzędne kodowe znaków i jednostki kodowe 77
    • 3.6.7. API String 78
    • 3.6.8. Dokumentacja API w internecie 81
    • 3.6.9. Składanie łańcuchów 84
  • 3.7. Wejście i wyjście 85
    • 3.7.1. Odbieranie danych wejściowych 85
    • 3.7.2. Formatowanie danych wyjściowych 88
    • 3.7.3. Zapis i odczyt plików 92
  • 3.8. Sterowanie wykonywaniem programu 94
    • 3.8.1. Zasięg blokowy 94
    • 3.8.2. Instrukcje warunkowe 95
    • 3.8.3. Pętle 98
    • 3.8.4. Pętle o określonej liczbie powtórzeń 101
    • 3.8.5. Wybór wielokierunkowy - instrukcja switch 105
    • 3.8.6. Instrukcje przerywające przepływ sterowania 107
  • 3.9. Wielkie liczby 110
  • 3.10. Tablice 112
    • 3.10.1. Deklarowanie tablic 112
    • 3.10.2. Dostęp do elementów tablicy 114
    • 3.10.3. Pętla typu for each 114
    • 3.10.4. Kopiowanie tablicy 115
    • 3.10.5. Parametry wiersza poleceń 116
    • 3.10.6. Sortowanie tablicy 117
    • 3.10.7. Tablice wielowymiarowe 120
    • 3.10.8. Tablice postrzępione 122

Rozdział 4. Obiekty i klasy 127

  • 4.1. Wstęp do programowania obiektowego 128
    • 4.1.1. Klasy 129
    • 4.1.2. Obiekty 129
    • 4.1.3. Identyfikacja klas 130
    • 4.1.4. Relacje między klasami 131
  • 4.2. Używanie klas predefiniowanych 132
    • 4.2.1. Obiekty i zmienne obiektów 133
    • 4.2.2. Klasa LocalDate 135
    • 4.2.3. Metody udostępniające i zmieniające wartość elementu 137
  • 4.3. Definiowanie własnych klas 141
    • 4.3.1. Klasa Employee 141
    • 4.3.2. Używanie wielu plików źródłowych 144
    • 4.3.3. Analiza klasy Employee 144
    • 4.3.4. Pierwsze kroki w tworzeniu konstruktorów 145
    • 4.3.5. Deklarowanie zmiennych lokalnych za pomocą słowa kluczowego var 146
    • 4.3.6. Praca z referencjami null 147
    • 4.3.7. Parametry jawne i niejawne 148
    • 4.3.8. Korzyści z hermetyzacji 149
    • 4.3.9. Przywileje klasowe 151
    • 4.3.10. Metody prywatne 152
    • 4.3.11. Stałe jako pola klasy 152
  • 4.4. Pola i metody statyczne 153
    • 4.4.1. Pola statyczne 153
    • 4.4.2. Stałe statyczne 154
    • 4.4.3. Metody statyczne 155
    • 4.4.4. Metody fabryczne 156
    • 4.4.5. Metoda main 156
  • 4.5. Parametry metod 159
  • 4.6. Konstruowanie obiektów 165
    • 4.6.1. Przeciążanie 165
    • 4.6.2. Domyślna inicjalizacja pól 166
    • 4.6.3. Konstruktor bezargumentowy 166
    • 4.6.4. Jawna inicjalizacja pól 167
    • 4.6.5. Nazywanie parametrów 168
    • 4.6.6. Wywoływanie innego konstruktora 169
    • 4.6.7. Bloki inicjalizujące 169
    • 4.6.8. Niszczenie obiektów i metoda finalize 173
  • 4.7. Pakiety 174
    • 4.7.1. Nazwy pakietów 174
    • 4.7.2. Importowanie klas 175
    • 4.7.3. Importowanie statyczne 176
    • 4.7.4. Dodawanie klasy do pakietu 177
    • 4.7.5. Dostęp do pakietu 180
    • 4.7.6. Ścieżka klas 181
    • 4.7.7. Ustawianie ścieżki klas 183
  • 4.8. Pliki JAR 184
    • 4.8.1. Tworzenie plików JAR 184
    • 4.8.2. Manifest 184
    • 4.8.3. Wykonywalne pliki JAR 186
    • 4.8.4. Pliki JAR z wieloma wersjami klas 187
    • 4.8.5. Kilka uwag na temat opcji wiersza poleceń 188
  • 4.9. Komentarze dokumentacyjne 189
    • 4.9.1. Wstawianie komentarzy 190
    • 4.9.2. Komentarze do klas 190
    • 4.9.3. Komentarze do metod 191
    • 4.9.4. Komentarze do pól 192
    • 4.9.5. Komentarze ogólne 192
    • 4.9.6. Komentarze do pakietów 193
    • 4.9.7. Pobieranie komentarzy 194
  • 4.10. Porady dotyczące projektowania klas 195

Rozdział 5. Dziedziczenie 199

  • 5.1. Klasy, nadklasy i podklasy 200
    • 5.1.1. Definiowanie podklas 200
    • 5.1.2. Przesłanianie metod 201
    • 5.1.3. Konstruktory podklas 203
    • 5.1.4. Hierarchia dziedziczenia 207
    • 5.1.5. Polimorfizm 207
    • 5.1.6. Zasady wywoływania metod 209
    • 5.1.7. Wyłączanie dziedziczenia - klasy i metody finalne 211
    • 5.1.8. Rzutowanie 212
    • 5.1.9. Klasy abstrakcyjne 215
    • 5.1.10. Ograniczanie dostępu 220
  • 5.2. Kosmiczna klasa wszystkich klas - Object 221
    • 5.2.1. Zmienne typu Object 221
    • 5.2.2. Metoda equals 221
    • 5.2.3. Porównywanie a dziedziczenie 223
    • 5.2.4. Metoda hashCode 226
    • 5.2.5. Metoda toString 228
  • 5.3. Generyczne listy tablicowe 234
    • 5.3.1. Deklarowanie list tablicowych 234
    • 5.3.2. Dostęp do elementów listy tablicowej 237
    • 5.3.3. Zgodność pomiędzy typowanymi a surowymi listami tablicowymi 240
  • 5.4. Opakowania obiektów i automatyczne pakowanie 241
  • 5.5. Metody ze zmienną liczbą parametrów 244
  • 5.6. Klasy wyliczeniowe 246
  • 5.7. Refleksja 248
    • 5.7.1. Klasa Class 248
    • 5.7.2. Podstawy deklarowania wyjątków 251
    • 5.7.3. Zasoby 252
    • 5.7.4. Zastosowanie refleksji w analizie funkcjonalności klasy 254
    • 5.7.5. Refleksja w analizie obiektów w czasie działania programu 259
    • 5.7.6. Zastosowanie refleksji w generycznym kodzie tablicowym 264
    • 5.7.7. Wywoływanie dowolnych metod i konstruktorów 267
  • 5.8. Porady projektowe dotyczące dziedziczenia 270

Rozdział 6. Interfejsy, wyrażenia lambda i klasy wewnętrzne 273

  • 6.1. Interfejsy 274
    • 6.1.1. Koncepcja interfejsu 274
    • 6.1.2. Własności interfejsów 280
    • 6.1.3. Interfejsy a klasy abstrakcyjne 281
    • 6.1.4. Metody statyczne i prywatne 282
    • 6.1.5. Metody domyślne 283
    • 6.1.6. Wybieranie między metodami domyślnymi 284
    • 6.1.7. Interfejsy i wywołania zwrotne 286
    • 6.1.8. Interfejs Comparator 289
    • 6.1.9. Klonowanie obiektów 290
  • 6.2. Wyrażenia lambda 296
    • 6.2.1. Po co w ogóle są lambdy 296
    • 6.2.2. Składnia wyrażeń lambda 297
    • 6.2.3. Interfejsy funkcyjne 299
    • 6.2.4. Referencje do metod 301
    • 6.2.5. Referencje do konstruktorów 305
    • 6.2.6. Zakres dostępności zmiennych 306
    • 6.2.7. Przetwarzanie wyrażeń lambda 308
    • 6.2.8. Poszerzenie wiadomości o komparatorach 311
  • 6.3. Klasy wewnętrzne 312
    • 6.3.1. Dostęp do stanu obiektu w klasie wewnętrznej 313
    • 6.3.2. Specjalne reguły składniowe dotyczące klas wewnętrznych 316
    • 6.3.3. Czy klasy wewnętrzne są potrzebne i bezpieczne? 317
    • 6.3.4. Lokalne klasy wewnętrzne 319
    • 6.3.5. Dostęp do zmiennych finalnych z metod zewnętrznych 320
    • 6.3.6. Anonimowe klasy wewnętrzne 321
    • 6.3.7. Statyczne klasy wewnętrzne 325
  • 6.4. Moduły ładowania usług 328
  • 6.5. Klasy pośredniczące 331
    • 6.5.1. Kiedy używać klas pośredniczących 331
    • 6.5.2. Tworzenie obiektów pośredniczących 331
    • 6.5.3. Właściwości klas pośredniczących 335

Rozdział 7. Wyjątki, asercje i dzienniki 337

  • 7.1. Obsługa błędów 338
    • 7.1.1. Klasyfikacja wyjątków 339
    • 7.1.2. Deklarowanie wyjątków kontrolowanych 341
    • 7.1.3. Zgłaszanie wyjątków 343
    • 7.1.4. Tworzenie klas wyjątków 344
  • 7.2. Przechwytywanie wyjątków 345
    • 7.2.1. Przechwytywanie wyjątku 345
    • 7.2.2. Przechwytywanie wielu typów wyjątków 347
    • 7.2.3. Powtórne generowanie wyjątków i budowanie łańcuchów wyjątków 348
    • 7.2.4. Klauzula finally 350
    • 7.2.5. Instrukcja try z zasobami 352
    • 7.2.6. Analiza danych ze stosu wywołań 354
  • 7.3. Wskazówki dotyczące stosowania wyjątków 358
  • 7.4. Asercje 360
    • 7.4.1. Koncepcja asercji 361
    • 7.4.2. Włączanie i wyłączanie asercji 362
    • 7.4.3. Zastosowanie asercji do sprawdzania parametrów 362
    • 7.4.4. Zastosowanie asercji do dokumentowania założeń 364
  • 7.5. Dzienniki 365
    • 7.5.1. Podstawy zapisu do dziennika 366
    • 7.5.2. Zaawansowane techniki zapisu do dziennika 366
    • 7.5.3. Zmiana konfiguracji menedżera dzienników 368
    • 7.5.4. Lokalizacja 370
    • 7.5.5. Obiekty typu Handler 371
    • 7.5.6. Filtry 374
    • 7.5.7. Formatery 374
    • 7.5.8. Przepis na dziennik 375
  • 7.6. Wskazówki dotyczące debugowania 383

Rozdział 8. Programowanie generyczne 389

  • 8.1. Dlaczego programowanie generyczne 390
    • 8.1.1. Zalety parametrów typów 390
    • 8.1.2. Dla kogo programowanie generyczne 391
  • 8.2. Definicja prostej klasy generycznej 392
  • 8.3. Metody generyczne 394
  • 8.4. Ograniczenia zmiennych typowych 396
  • 8.5. Kod generyczny a maszyna wirtualna 398
    • 8.5.1. Wymazywanie typów 398
    • 8.5.2. Translacja wyrażeń generycznych 399
    • 8.5.3. Translacja metod generycznych 400
    • 8.5.4. Używanie starego kodu 402
  • 8.6. Ograniczenia i braki 403
    • 8.6.1. Nie można podawać typów prostych jako parametrów typowych 403
    • 8.6.2. Sprawdzanie typów w czasie działania programu jest możliwe tylko dla typów surowych 403
    • 8.6.3. Nie można tworzyć tablic typów generycznych 404
    • 8.6.4. Ostrzeżenia dotyczące zmiennej liczby argumentów 405
    • 8.6.5. Nie wolno tworzyć egzemplarzy zmiennych typowych 406
    • 8.6.6. Nie można utworzyć egzemplarza generycznej tablicy 407
    • 8.6.7. Zmiennych typowych nie można używać w statycznych kontekstach klas generycznych 408
    • 8.6.8. Obiektów klasy generycznej nie można generować ani przechwytywać 409
    • 8.6.9. Można wyłączyć sprawdzanie wyjątków kontrolowanych 409
    • 8.6.10. Uważaj na konflikty, które mogą powstać po wymazaniu typów 411
  • 8.7. Zasady dziedziczenia dla typów generycznych 412
  • 8.8. Typy wieloznaczne 414
    • 8.8.1. Koncepcja typu wieloznacznego 414
    • 8.8.2. Ograniczenia nadtypów typów wieloznacznych 415
    • 8.8.3. Typy wieloznaczne bez ograniczeń 418
    • 8.8.4. Chwytanie typu wieloznacznego 418
  • 8.9. Refleksja a typy generyczne 421
    • 8.9.1. Generyczna klasa Class 421
    • 8.9.2. Zastosowanie parametrów Classdo dopasowywania typów 422
    • 8.9.3. Informacje o typach generycznych w maszynie wirtualnej 422
    • 8.9.4. Literały typowe 426

Rozdział 9. Kolekcje 433

  • 9.1. Architektura kolekcji Javy 434
    • 9.1.1. Oddzielenie warstwy interfejsów od warstwy klas konkretnych 434
    • 9.1.2. Interfejs Collection 436
    • 9.1.3. Iteratory 437
    • 9.1.4. Generyczne metody użytkowe 439
  • 9.2. Interfejsy w systemie kolekcji Javy 442
  • 9.3. Konkretne klasy kolekcyjne 445
    • 9.3.1. Listy powiązane 445
    • 9.3.2. Listy tablicowe 454
    • 9.3.3. Zbiór HashSet 454
    • 9.3.4. Zbiór TreeSet 458
    • 9.3.5. Kolejki Queue i Deque 462
    • 9.3.6. Kolejki priorytetowe 464
  • 9.4. Słowniki 465
    • 9.4.1. Podstawowe operacje słownikowe 465
    • 9.4.2. Modyfikowanie wpisów w słowniku 468
    • 9.4.3. Widoki słowników 470
    • 9.4.4. Klasa WeakHashMap 471
    • 9.4.5. Klasy LinkedHashSet i LinkedHashMap 472
    • 9.4.6. Klasy EnumSet i EnumMap 473
    • 9.4.7. Klasa IdentityHashMap 474
  • 9.5. Widoki i opakowania 476
    • 9.5.1. Małe kolekcje 476
    • 9.5.2. Przedziały 478
    • 9.5.3. Widoki niemodyfikowalne 478
    • 9.5.4. Widoki synchronizowane 480
    • 9.5.5. Widoki kontrolowane 480
    • 9.5.6. Uwagi dotyczące operacji opcjonalnych 481
  • 9.6. Algorytmy 485
    • 9.6.1. Dlaczego algorytmy generyczne 485
    • 9.6.2. Sortowanie i tasowanie 486
    • 9.6.3. Wyszukiwanie binarne 489
    • 9.6.4. Proste algorytmy 490
    • 9.6.5. Operacje zbiorowe 492
    • 9.6.6. Konwersja pomiędzy kolekcjami a tablicami 493
    • 9.6.7. Pisanie własnych algorytmów 493
  • 9.7. Stare kolekcje 495
    • 9.7.1. Klasa Hashtable 495
    • 9.7.2. Wyliczenia 495
    • 9.7.3. Słowniki własności 496
    • 9.7.4. Stosy 500
    • 9.7.5. Zbiory bitów 500

Rozdział 10. Graficzne interfejsy użytkownika 505

  • 10.1. Historia zestawów narzędzi do tworzenia interfejsów użytkownika 505
  • 10.2. Wyświetlanie ramki 507
    • 10.2.1. Tworzenie ramki 507
    • 10.2.2. Właściwości ramki 509
  • 10.3. Wyświetlanie informacji w komponencie 512
    • 10.3.1. Figury 2D 517
    • 10.3.2. Kolory 523
    • 10.3.3. Czcionki 524
    • 10.3.4. Wyświetlanie obrazów 530
  • 10.4. Obsługa zdarzeń 531
    • 10.4.1. Podstawowe koncepcje obsługi zdarzeń 531
    • 10.4.2. Przykład - obsługa kliknięcia przycisku 533
    • 10.4.3. Zwięzłe definiowanie procedur nasłuchowych 536
    • 10.4.4. Klasy adaptacyjne 537
    • 10.4.5. Akcje 539
    • 10.4.6. Zdarzenia generowane przez mysz 545
    • 10.4.7. Hierarchia zdarzeń w bibliotece AWT 550
  • 10.5. API Preferences 552

Rozdział 11. Komponenty Swing interfejsu użytkownika 559

  • 11.1. Swing i wzorzec model-widok-kontroler 560
  • 11.2. Wprowadzenie do zarządzania rozkładem 563
    • 11.2.1. Zarządcy układu 563
    • 11.2.2. Rozkład brzegowy 565
    • 11.2.3. Rozkład siatkowy 567
  • 11.3. Wprowadzanie tekstu 568
    • 11.3.1. Pola tekstowe 568
    • 11.3.2. Etykiety komponentów 570
    • 11.3.3. Pola haseł 571
    • 11.3.4. Obszary tekstowe 572
    • 11.3.5. Panele przewijane 573
  • 11.4. Komponenty umożliwiające wybór opcji 575
    • 11.4.1. Pola wyboru 575
    • 11.4.2. Przełączniki 577
    • 11.4.3. Obramowanie 581
    • 11.4.4. Listy rozwijane 583
    • 11.4.5. Suwaki 586
  • 11.5. Menu 592
    • 11.5.1. Tworzenie menu 592
    • 11.5.2. Ikony w elementach menu 595
    • 11.5.3. Pola wyboru i przełączniki jako elementy menu 596
    • 11.5.4. Menu podręczne 597
    • 11.5.5. Mnemoniki i akceleratory 598
    • 11.5.6. Aktywowanie i dezaktywowanie elementów menu 600
    • 11.5.7. Paski narzędzi 604
    • 11.5.8. Dymki 606
  • 11.6. Zaawansowane techniki zarządzania rozkładem 607
    • 11.6.1. Rozkład GridBagLayout 607
    • 11.6.2. Niestandardowi zarządcy rozkładu 616
  • 11.7. Okna dialogowe 620
    • 11.7.1. Okna dialogowe opcji 621
    • 11.7.2. Tworzenie okien dialogowych 625
    • 11.7.3. Wymiana danych 629
    • 11.7.4. Okna dialogowe wyboru plików 634

Rozdział 12. Współbieżność 643

  • 12.1. Czym są wątki 644
  • 12.2. Stany wątków 648
    • 12.2.1. Wątki tworzone za pomocą operatora new 649
    • 12.2.2. Wątki RUNNABLE 649
    • 12.2.3. Wątki BLOCKED i WAITING 650
    • 12.2.4. Zamykanie wątków 650
  • 12.3. Własności wątków 652
    • 12.3.1. Przerywanie wątków 652
    • 12.3.2. Wątki demony 655
    • 12.3.3. Nazwy wątków 655
    • 12.3.4. Procedury obsługi nieprzechwyconych wyjątków 655
    • 12.3.5. Priorytety wątków 657
  • 12.4. Synchronizacja 658
    • 12.4.1. Przykład sytuacji powodującej wyścig 658
    • 12.4.2. Wyścigi 660
    • 12.4.3. Obiekty klasy Lock 662
    • 12.4.4. Warunki 665
    • 12.4.5. Słowo kluczowe synchronized 670
    • 12.4.6. Bloki synchronizowane 674
    • 12.4.7. Monitor 675
    • 12.4.8. Pola ulotne 676
    • 12.4.9. Zmienne finalne 677
    • 12.4.10. Zmienne atomowe 677
    • 12.4.11. Zakleszczenia 679
    • 12.4.12. Zmienne lokalne wątków 682
    • 12.4.13. Dlaczego metody stop i suspend są wycofywane 683
  • 12.5. Kolekcje bezpieczne wątkowo 685
    • 12.5.1. Kolejki blokujące 685
    • 12.5.2. Szybkie słowniki, zbiory i kolejki 692
    • 12.5.3. Atomowe modyfikowanie elementów słowników 693
    • 12.5.4. Operacje masowe na współbieżnych słownikach skrótów 696
    • 12.5.5. Współbieżne widoki zbiorów 698
    • 12.5.6. Tablice kopiowane przy zapisie 699
    • 12.5.7. Równoległe algorytmy tablicowe 699
    • 12.5.8. Starsze kolekcje bezpieczne wątkowo 700
  • 12.6. Zadania i pule wątków 701
    • 12.6.1. Interfejsy Callable i Future 702
    • 12.6.2. Klasa Executors 704
    • 12.6.3. Kontrolowanie grup zadań 707
    • 12.6.4. Metoda rozgałęzienie-złączenie 711
  • 12.7. Obliczenia asynchroniczne 714
    • 12.7.1. Klasa CompletableFuture 714
    • 12.7.2. Tworzenie obiektów CompletableFuture 716
    • 12.7.3. Czasochłonne zadania w wywołaniach zwrotnych interfejsu użytkownika 722
  • 12.8. Procesy 728
    • 12.8.1. Budowanie procesu 729
    • 12.8.2. Uruchamianie procesu 730
    • 12.8.3. Uchwyty procesów 731

Dodatek A 737

Skorowidz 741

Kategoria: Programowanie
Zabezpieczenie: Watermark
Watermark
Watermarkowanie polega na znakowaniu plików wewnątrz treści, dzięki czemu możliwe jest rozpoznanie unikatowej licencji transakcyjnej Użytkownika. E-książki zabezpieczone watermarkiem można odczytywać na wszystkich urządzeniach odtwarzających wybrany format (czytniki, tablety, smartfony). Nie ma również ograniczeń liczby licencji oraz istnieje możliwość swobodnego przenoszenia plików między urządzeniami. Pliki z watermarkiem są kompatybilne z popularnymi programami do odczytywania ebooków, jak np. Calibre oraz aplikacjami na urządzenia mobilne na takie platformy jak iOS oraz Android.
ISBN: 978-83-283-5779-2
Rozmiar pliku: 6,8 MB

BESTSELLERY

Kategorie: