Java. Kompendium programisty. Wydanie XI

Java. Kompendium programisty. Wydanie XI, Herbert Schildt, Arik.pl Księgarnia Akademicka
  • promocja
Dostępność: na wyczerpaniu
Wysyłka w: 48 godzin
Dostawa: Cena nie zawiera ewentualnych kosztów płatności sprawdź formy dostawy
Cena: 178,00 zł
zawiera 5.00% VAT, bez kosztów dostawy

Cena regularna: 199,00 zł

178.00
Najniższa cena od wprowadzenia towaru: 199,00 zł
ilość szt.
Zyskujesz 17 pkt [?]

towar niedostępny

dodaj do przechowalni
Pin It

Opis

Mimo upływu lat Java wciąż pozostaje jednym z najważniejszych języków programowania, konsekwentnie wybieranym przez profesjonalnych deweloperów. Jest równocześnie nowoczesna i dojrzała. Twórcy Javy od początku jej istnienia stawiali na elastyczność i stale dostosowywali ten język do zmieniających się warunków pracy programistów. Od pierwszego wydania Java zapewnia narzędzia do programowania rozwiązań internetowych, jest więc naturalnym wyborem programistów tworzących aplikacje internetowe. Jej możliwości jednak są o wiele większe - i rosną z każdą kolejną wersją. Konieczne jest więc sukcesywne zapoznawanie się z nowościami i ze zmianami wprowadzanymi w poszczególnych wydaniach Java SE.

Ta książka jest jedenastym wydaniem wyczerpującego kompendium programisty Javy, w pełni zaktualizowanym, uzupełnionym o nowości wprowadzone w Java SE 11. Opisuje język kompleksowo: jego składnię, słowa kluczowe oraz najistotniejsze zasady programowania. Zawiera także informacje o najważniejszych składnikach biblioteki Javy, takich jak klasy wejścia-wyjścia, framework Collections, biblioteka strumieni oraz narzędzia programowania współbieżnego. Oczywiście szczegółowo został tu opisany inny niezwykle ważny element - system modułów Javy. Przedstawiono też interaktywne narzędzie programistyczne JShell. Podręcznik jest przejrzysty, napisany jasnym i zrozumiałym językiem, co zdecydowanie ułatwia naukę. Co ważne, poszczególne zagadnienia zilustrowano licznymi przykładowymi fragmentami kodu źródłowego. Z tak przygotowanego materiału skorzystają wszyscy programiści Javy, zarówno początkujący, jak i profesjonalni deweloperzy.

W tej książce między innymi:

  • zasady programowania obiektowego
  • klasy wejścia-wyjścia oraz obsługa wyjątków
  • interfejsy i pakiety
  • wnioskowanie typów zmiennych lokalnych
  • obsługa zdarzeń, moduły i wyrażenia lambda
  • AWT, Swing, JavaBean i serwlety

Nie znajdziesz bardziej wyczerpującego omówienia Javy!

O autorze

Herb Schildt - jest jednym z najpopularniejszych autorów książek o programowaniu. Jest autorytetem w sprawach języków C, C++, Java i C#, a także doskonałym programistą systemu Windows. Był członkiem komitetu ANSI/ISO, który dokonał standaryzacji języka C++. Jego książki sprzedały się na całym świecie w ponad 3 milionach egzemplarzy i zostały przetłumaczone na większość języków.

Spis treści

O autorze 23

O redaktorze merytorycznym 24

Przedmowa 25

CZĘŚĆ I. JĘZYK JAVA

1. Historia i ewolucja języka Java 31

  • Rodowód Javy 31
    • Narodziny nowoczesnego języka - C 31
    • Język C++ - następny krok 33
    • Podwaliny języka Java 33
  • Powstanie języka Java 33
    • Powiązanie z językiem C# 35
  • Jak Java wywarła wpływ na internet 35
    • Aplety Javy 35
    • Bezpieczeństwo 36
    • Przenośność 36
  • Magia języka Java - kod bajtowy 37
  • Wychodząc poza aplety 38
  • Szybszy harmonogram udostępniania 38
  • Serwlety - Java po stronie serwera 39
  • Hasła języka Java 39
    • Prostota 40
    • Obiektowość 40
    • Niezawodność 40
    • Wielowątkowość 40
    • Neutralność architektury 41
    • Interpretowalność i wysoka wydajność 41
    • Rozproszenie 41
    • Dynamika 41
  • Ewolucja Javy 41
  • Kultura innowacji 46

2. Podstawy języka Java 47

  • Programowanie obiektowe 47
    • Dwa paradygmaty 47
    • Abstrakcja 48
    • Trzy zasady programowania obiektowego 48
  • Pierwszy przykładowy program 52
    • Wpisanie kodu programu 52
    • Kompilacja programów 53
    • Bliższe spojrzenie na pierwszy przykładowy program 53
  • Drugi prosty program 55
  • Dwie instrukcje sterujące 56
    • Instrukcja if 57
    • Pętla for 58
  • Bloki kodu 59
  • Kwestie składniowe 60
    • Znaki białe 60
    • Identyfikatory 60
    • Stałe 60
    • Komentarze 61
    • Separatory 61
    • Słowa kluczowe języka Java 61
  • Biblioteki klas Javy 62

3. Typy danych, zmienne i tablice 63

  • Java to język ze ścisłą kontrolą typów 63
  • Typy proste 63
  • Typy całkowitoliczbowe 64
    • Typ byte 64
    • Typ short 65
    • Typ int 65
    • Typ long 65
  • Typy zmiennoprzecinkowe 65
    • Typ float 66
    • Typ double 66
  • Typ znakowy 66
  • Typ logiczny 68
  • Bliższe spojrzenie na stałe 68
    • Stałe całkowitoliczbowe 68
    • Stałe zmiennoprzecinkowe 69
    • Stałe logiczne 70
    • Stałe znakowe 70
    • Stałe łańcuchowe 71
  • Zmienne 71
    • Deklaracja zmiennej 71
    • Inicjalizacja dynamiczna 72
    • Zasięg i czas życia zmiennych 72
  • Konwersja typów i rzutowanie 74
    • Automatyczna konwersja typów 74
    • Rzutowanie niezgodnych typów 75
  • Automatyczne rozszerzanie typów w wyrażeniach 76
    • Zasady rozszerzania typu 76
  • Tablice 77
    • Tablice jednowymiarowe 77
    • Tablice wielowymiarowe 79
    • Alternatywna składnia deklaracji tablicy 82
  • Wnioskowanie typów zmiennych lokalnych 83
    • Ograniczenia var 85
  • Kilka słów o łańcuchach 85

4. Operatory 87

  • Operatory arytmetyczne 87
    • Podstawowe operatory arytmetyczne 88
    • Operator reszty z dzielenia 88
    • Operatory arytmetyczne z przypisaniem 89
    • Inkrementacja i dekrementacja 90
  • Operatory bitowe 91
    • Logiczne operatory bitowe 92
    • Przesunięcie w lewo 94
    • Przesunięcie w prawo 95
    • Przesunięcie w prawo bez znaku 96
    • Operatory bitowe z przypisaniem 97
  • Operatory relacji 98
  • Operatory logiczne 99
    • Operatory logiczne ze skracaniem 100
  • Operator przypisania 101
  • Operator ? 101
  • Kolejność wykonywania operatorów 102
  • Stosowanie nawiasów okrągłych 102

5. Instrukcje sterujące 105

  • Instrukcje wyboru 105
    • Instrukcja if 105
    • Instrukcja switch 108
  • Instrukcje iteracyjne 111
    • Pętla while 112
    • Pętla do-while 113
    • Pętla for 115
    • Wersja for-each pętli for 118
    • Wnioskowanie typów zmiennych lokalnych w pętlach 122
    • Pętle zagnieżdżone 123
  • Instrukcje skoku 123
    • Instrukcja break 124
    • Instrukcja continue 127
    • Instrukcja return 128

6. Wprowadzenie do klas 129

  • Klasy 129
    • Ogólna postać klasy 129
    • Prosta klasa 130
  • Deklarowanie obiektów 132
    • Bliższe spojrzenie na operator new 133
  • Przypisywanie zmiennych referencyjnych do obiektów 133
  • Wprowadzenie do metod 134
    • Dodanie metody do klasy Box 134
    • Zwracanie wartości 136
    • Dodanie metody przyjmującej parametry 137
  • Konstruktor 139
    • Konstruktor sparametryzowany 140
  • Słowo kluczowe this 141
    • Ukrywanie zmiennych składowych 141
  • Mechanizm odzyskiwania pamięci 142
  • Klasa stosu 142

7. Dokładniejsze omówienie metod i klas 145

  • Przeciążanie metod 145
    • Przeciążanie konstruktorów 147
  • Obiekty jako parametry 149
  • Dokładniejsze omówienie przekazywania argumentów 151
  • Zwracanie obiektów 152
  • Rekurencja 153
  • Wprowadzenie do kontroli dostępu 155
  • Składowe statyczne 158
  • Słowo kluczowe final 159
  • Powtórka z tablic 160
  • Klasy zagnieżdżone i klasy wewnętrzne 161
  • Omówienie klasy String 164
  • Wykorzystanie argumentów wiersza poleceń 165
  • Zmienna liczba argumentów 166
    • Przeciążanie metod o zmiennej liczbie argumentów 169
    • Zmienna liczba argumentów i niejednoznaczności 170
  • Stosowanie wnioskowania typów zmiennych lokalnych z typami referencyjnymi 171

8. Dziedziczenie 173

  • Podstawy dziedziczenia 173
    • Dostęp do składowych a dziedziczenie 174
    • Bardziej praktyczny przykład 175
    • Zmienna klasy bazowej może zawierać referencję do obiektu klasy pochodnej 177
  • Słowo kluczowe super 178
    • Wykorzystanie słowa kluczowego super do wywołania konstruktora klasy bazowej 178
    • Drugie zastosowanie słowa kluczowego super 181
  • Tworzenie hierarchii wielopoziomowej 182
  • Kiedy są wykonywane konstruktory? 184
  • Przesłanianie metod 185
  • Dynamiczne przydzielanie metod 187
    • Dlaczego warto przesłaniać metody? 188
    • Zastosowanie przesłaniania metod 188
  • Klasy abstrakcyjne 190
  • Słowo kluczowe final i dziedziczenie 192
    • Słowo kluczowe final zapobiega przesłanianiu 192
    • Słowo kluczowe final zapobiega dziedziczeniu 193
  • Wnioskowanie typów zmiennych lokalnych a dziedziczenie 193
  • Klasa Object 195

9. Pakiety i interfejsy 197

  • Pakiety 197
    • Definiowanie pakietu 197
    • Znajdowanie pakietów i ścieżka CLASSPATH 198
    • Prosty przykład pakietu 199
  • Dostęp do pakietów i składowych 199
    • Przykład dostępu 200
  • Import pakietów 203
  • Interfejsy 204
    • Definiowanie interfejsu 205
    • Implementacja interfejsu 206
    • Interfejsy zagnieżdżone 208
    • Stosowanie interfejsów 209
    • Zmienne w interfejsach 211
    • Interfejsy można rozszerzać 213
  • Metody domyślne 214
    • Podstawy metod domyślnych 215
    • Bardziej praktyczny przykład 216
    • Problemy wielokrotnego dziedziczenia 217
  • Metody statyczne w interfejsach 217
  • Stosowanie metod prywatnych w interfejsach 218
  • Ostatnie uwagi dotyczące pakietów i interfejsów 219

10. Obsługa wyjątków 221

  • Podstawy obsługi wyjątków 221
  • Typy wyjątków 222
  • Nieprzechwycone wyjątki 222
  • Stosowanie instrukcji try i catch 223
    • Wyświetlenie opisu wyjątku 224
  • Wiele klauzul catch 225
  • Zagnieżdżone instrukcje try 226
  • Instrukcja throw 228
  • Klauzula throws 229
  • Słowo kluczowe finally 229
  • Wyjątki wbudowane w język Java 231
  • Tworzenie własnej klasy pochodnej wyjątków 231
  • Łańcuch wyjątków 234
  • Trzy dodatkowe cechy wyjątków 235
  • Wykorzystanie wyjątków 236

11. Programowanie wielowątkowe 237

  • Model wątków języka Java 238
    • Priorytety wątków 239
    • Synchronizacja 239
    • Przekazywanie komunikatów 240
    • Klasa Thread i interfejs Runnable 240
  • Wątek główny 240
  • Tworzenie wątku 242
    • Implementacja interfejsu Runnable 242
    • Rozszerzanie klasy Thread 244
    • Wybór odpowiedniego podejścia 244
  • Tworzenie wielu wątków 245
  • Stosowanie metod isAlive() i join() 246
  • Priorytety wątków 248
  • Synchronizacja 249
    • Synchronizacja metod 249
    • Instrukcja synchronized 251
  • Komunikacja międzywątkowa 252
    • Zakleszczenie 256
  • Zawieszanie, wznawianie i zatrzymywanie wątków 258
  • Uzyskiwanie stanu wątku 260
  • Stosowanie metody wytwórczej do tworzenia i uruchamiania wątku 261
  • Korzystanie z wielowątkowości 262

12. Wyliczenia, automatyczne opakowywanie typów prostych i adnotacje 263

  • Typy wyliczeniowe 263
    • Podstawy wyliczeń 263
    • Metody values() i valueOf() 265
    • Wyliczenia Javy jako typy klasowe 266
    • Wyliczenia dziedziczą po klasie Enum 268
    • Inny przykład wyliczenia 269
  • Opakowania typów 271
    • Klasa Character 271
    • Klasa Boolean 271
    • Opakowania typów numerycznych 272
  • Automatyczne opakowywanie typów prostych 273
    • Automatyczne opakowywanie i metody 274
    • Automatyczne opakowywanie i rozpakowywanie w wyrażeniach 274
    • Automatyczne opakowywanie typów znakowych i logicznych 276
    • Automatyczne opakowywanie pomaga zapobiegać błędom 276
    • Słowo ostrzeżenia 277
  • Adnotacje 277
    • Podstawy tworzenia adnotacji 278
    • Określanie strategii zachowywania adnotacji 278
    • Odczytywanie adnotacji w trakcie działania programu za pomocą refleksji 279
    • Interfejs AnnotatedElement 283
    • Wartości domyślne 283
    • Adnotacje znacznikowe 285
    • Adnotacje jednoelementowe 285
    • Wbudowane adnotacje 287
  • Adnotacje typów 288
  • Adnotacje powtarzalne 292
  • Ograniczenia 294

13. Wejście-wyjście, instrukcja try z zasobami i inne tematy 295

  • Podstawowa obsługa wejścia i wyjścia 295
    • Strumienie 296
    • Strumienie znakowe i bajtowe 296
    • Predefiniowane strumienie 298
  • Odczyt danych z konsoli 298
    • Odczyt znaków 298
    • Odczyt łańcuchów 299
  • Wyświetlanie informacji na konsoli 301
  • Klasa PrintWriter 301
  • Odczyt i zapis plików 302
  • Automatyczne zamykanie pliku 307
  • Modyfikatory transient i volatile 310
  • Operator instanceof 311
  • Modyfikator strictfp 313
  • Metody napisane w kodzie rdzennym 313
  • Stosowanie asercji 313
    • Opcje włączania i wyłączania asercji 315
  • Import statyczny 316
  • Wywoływanie przeciążonych konstruktorów za pomocą this() 318
  • Kilka słów o kompaktowych profilach API 320

14. Typy sparametryzowane 321

  • Czym są typy sparametryzowane? 321
  • Prosty przykład zastosowania typów sparametryzowanych 322
    • Typy sparametryzowane działają tylko dla typów referencyjnych 325
    • Typy sparametryzowane różnią się, jeśli mają inny argument typu 325
    • W jaki sposób typy sparametryzowane zwiększają bezpieczeństwo? 325
  • Klasa sparametryzowana z dwoma parametrami typu 327
  • Ogólna postać klasy sparametryzowanej 328
  • Typy ograniczone 328
  • Zastosowanie argumentów wieloznacznych 330
    • Ograniczony argument wieloznaczny 333
  • Tworzenie metody sparametryzowanej 337
    • Konstruktory sparametryzowane 338
  • Interfejsy sparametryzowane 339
  • Typy surowe i starszy kod 341
  • Hierarchia klas sparametryzowanych 343
    • Zastosowanie sparametryzowanej klasy bazowej 343
    • Podklasa sparametryzowana 345
    • Porównywanie typów w hierarchii klas sparametryzowanych w czasie wykonywania 346
    • Rzutowanie 348
    • Przesłanianie metod w klasach sparametryzowanych 348
  • Wnioskowanie typów a typy sparametryzowane 349
  • Wnioskowanie typów zmiennych lokalnych a typy sparametryzowane 350
  • Znoszenie 350
    • Metody mostu 351
  • Błędy niejednoznaczności 352
  • Pewne ograniczenia typów sparametryzowanych 353
    • Nie można tworzyć egzemplarza parametru typu 353
    • Ograniczenia dla składowych statycznych 354
    • Ograniczenia tablic typów sparametryzowanych 354
    • Ograniczenia wyjątków typów sparametryzowanych 355

15. Wyrażenia lambda 357

  • Wprowadzenie do wyrażeń lambda 357
    • Podstawowe informacje o wyrażeniach lambda 358
    • Interfejsy funkcyjne 358
    • Kilka przykładów wyrażeń lambda 359
  • Blokowe wyrażenia lambda 362
  • Sparametryzowane interfejsy funkcyjne 364
  • Przekazywanie wyrażeń lambda jako argumentów 365
  • Wyrażenia lambda i wyjątki 368
  • Wyrażenia lambda i przechwytywanie zmiennych 369
  • Referencje do metod 370
    • Referencje do metod statycznych 370
    • Referencje do metod instancyjnych 371
    • Referencje do metod a typy sparametryzowane 374
  • Referencje do konstruktorów 376
  • Predefiniowane interfejsy funkcyjne 380

16. Moduły 383

  • Podstawowe informacje o modułach 383
    • Przykład prostego modułu 384
    • Kompilowanie i uruchamianie przykładowej aplikacji 388
    • Dokładniejsze informacje o instrukcjach requires i exports 389
  • java.base i moduły platformy 390
  • Stary kod i moduł nienazwany 390
  • Eksportowanie do konkretnego modułu 391
  • Wymagania przechodnie 392
  • Stosowanie usług 396
    • Podstawowe informacje o usługach i dostawcach usług 396
    • Słowa kluczowe związane z usługami 397
    • Przykład stosowania usług i modułów 397
  • Grafy modułów 403
  • Trzy wyspecjalizowane cechy modułów 404
    • Moduły otwarte 404
    • Instrukcja opens 404
    • Instrukcja requires static 404
  • Wprowadzenie do jlink i plików JAR modułów 405
    • Dołączanie plików dostarczonych jako struktura katalogów 405
    • Konsolidacja modularnych plików JAR 405
    • Pliki JMOD 406
  • Kilka słów o warstwach i modułach automatycznych 406
  • Końcowe uwagi dotyczące modułów 407

CZĘŚĆ II. BIBLIOTEKA JĘZYKA JAVA

17. Obsługa łańcuchów 411

  • Konstruktory klasy String 411
  • Długość łańcucha 413
  • Specjalne operacje na łańcuchach 413
    • Literały tekstowe 413
    • Konkatenacja łańcuchów 414
    • Konkatenacja łańcuchów z innymi typami danych 414
    • Konwersja łańcuchów i metoda toString() 415
  • Wyodrębnianie znaków 416
    • Metoda charAt() 416
    • Metoda getChars() 416
    • Metoda getBytes() 416
    • Metoda toCharArray() 417
  • Porównywanie łańcuchów 417
    • Metody equals() i equalsIgnoreCase() 417
    • Metoda regionMatches() 418
    • Metody startsWith() i endsWith() 418
    • Metoda equals() kontra operator == 418
    • Metoda compareTo() 419
  • Przeszukiwanie łańcuchów 420
  • Modyfikowanie łańcucha 421
    • Metoda substring() 421
    • Metoda concat() 422
    • Metoda replace() 422
    • Metody trim() i strip() 423
  • Konwersja danych za pomocą metody valueOf() 424
  • Zmiana wielkości liter w łańcuchu 424
  • Łączenie łańcuchów 425
  • Dodatkowe metody klasy String 425
  • Klasa StringBuffer 426
    • Konstruktory klasy StringBuffer 427
    • Metody length() i capacity() 427
    • Metoda ensureCapacity() 427
    • Metoda setLength() 428
    • Metody charAt() i setCharAt() 428
    • Metoda getChars() 428
    • Metoda append() 429
    • Metoda insert() 429
    • Metoda reverse() 430
    • Metody delete() i deleteCharAt() 430
    • Metoda replace() 431
    • Metoda substring() 431
    • Dodatkowe metody klasy StringBuffer 431
  • Klasa StringBuilder 432

18. Pakiet java.lang 433

  • Opakowania typów prostych 433
    • Klasa Number 434
    • Klasy Double i Float 434
    • Metody isInfinite() i isNan() 437
    • Klasy Byte, Short, Integer i Long 437
    • Klasa Character 445
    • Dodatki wprowadzone w celu obsługi punktów kodowych Unicode 446
    • Klasa Boolean 449
  • Klasa Void 449
  • Klasa Process 450
  • Klasa Runtime 451
    • Zarządzanie pamięcią 452
    • Wykonywanie innych programów 453
  • Runtime.Version 453
  • Klasa ProcessBuilder 455
  • Klasa System 457
    • Wykorzystanie metody currentTimeMillis() do obliczania czasu wykonywania programu 458
    • Użycie metody arraycopy() 459
    • Właściwości środowiska 459
  • Interfejs System.Logger i klasa System.LoggerFinder 460
  • Klasa Object 460
  • Wykorzystanie metody clone() i interfejsu Cloneable 460
  • Klasa Class 462
  • Klasa ClassLoader 465
  • Klasa Math 465
    • Funkcje trygonometryczne 465
    • Funkcje wykładnicze 466
    • Funkcje zaokrągleń 466
    • Inne metody klasy Math 467
  • Klasa StrictMath 469
  • Klasa Compiler 469
  • Klasy Thread i ThreadGroup oraz interfejs Runnable 469
    • Interfejs Runnable 469
    • Klasa Thread 470
    • Klasa ThreadGroup 472
  • Klasy ThreadLocal i InheritableThreadLocal 475
  • Klasa Package 475
  • Klasa Module 476
  • Klasa ModuleLayer 477
  • Klasa RuntimePermission 477
  • Klasa Throwable 477
  • Klasa SecurityManager 477
  • Klasa StackTraceElement 477
  • Klasa StackWalker i interfejs StackWalker.StackFrame 478
  • Klasa Enum 478
  • Klasa ClassValue 479
  • Interfejs CharSequence 479
  • Interfejs Comparable 480
  • Interfejs Appendable 480
  • Interfejs Iterable 480
  • Interfejs Readable 481
  • Interfejs AutoCloseable 481
  • Interfejs Thread.UncaughtExceptionHandler 481
  • Podpakiety pakietu java.lang 481
    • Podpakiet java.lang.annotation 482
    • Podpakiet java.lang.instrument 482
    • Podpakiet java.lang.invoke 482
    • Podpakiet java.lang.management 482
    • Podpakiet java.lang.module 482
    • Podpakiet java.lang.ref 482
    • Podpakiet java.lang.reflect 482

19. Pakiet java.util, część 1. - kolekcje 483

  • Wprowadzenie do kolekcji 484
  • Interfejsy kolekcji 485
    • Interfejs Collection 486
    • Interfejs List 488
    • Interfejs Set 489
    • Interfejs SortedSet 490
    • Interfejs NavigableSet 490
    • Interfejs Queue 491
    • Interfejs Deque 492
  • Klasy kolekcji 493
    • Klasa ArrayList 494
    • Klasa LinkedList 497
    • Klasa HashSet 498
    • Klasa LinkedHashSet 499
    • Klasa TreeSet 499
    • Klasa PriorityQueue 501
    • Klasa ArrayDeque 501
    • Klasa EnumSet 502
  • Dostęp do kolekcji za pomocą iteratora 502
    • Korzystanie z iteratora Iterator 504
    • Pętla typu for-each jako alternatywa dla iteratora 505
  • Spliteratory 506
  • Przechowywanie w kolekcjach własnych klas 509
  • Interfejs RandomAccess 510
  • Korzystanie z map 510
    • Interfejsy map 510
    • Klasy map 516
  • Komparatory 520
    • Wykorzystanie komparatora 522
  • Algorytmy kolekcji 526
  • Klasa Arrays 531
  • Starsze klasy i interfejsy 535
    • Interfejs Enumeration 535
    • Klasa Vector 536
    • Klasa Stack 539
    • Klasa Dictionary 540
    • Klasa Hashtable 541
    • Klasa Properties 544
    • Wykorzystanie metod store() i load() 547
  • Ostatnie uwagi na temat kolekcji 548

20. Pakiet java.util, część 2. - pozostałe klasy użytkowe 549

  • Klasa StringTokenizer 549
  • Klasa BitSet 551
  • Klasy Optional, OptionalDouble, OptionalInt oraz OptionalLong 553
  • Klasa Date 556
  • Klasa Calendar 557
  • Klasa GregorianCalendar 560
  • Klasa TimeZone 561
  • Klasa SimpleTimeZone 562
  • Klasa Locale 563
  • Klasa Random 564
  • Klasy Timer i TimerTask 566
  • Klasa Currency 568
  • Klasa Formatter 569
    • Konstruktory klasy Formatter 570
    • Metody klasy Formatter 570
    • Podstawy formatowania 570
    • Formatowanie łańcuchów i znaków 573
    • Formatowanie liczb 573
    • Formatowanie daty i godziny 574
    • Specyfikatory %n i %% 575
    • Określanie minimalnej szerokości pola 576
    • Określanie precyzji 577
    • Używanie znaczników (flag) formatów 578
    • Wyrównywanie danych wyjściowych 578
    • Znaczniki spacji, plusa, zera i nawiasów 579
    • Znacznik przecinka 580
    • Znacznik # 580
    • Opcja wielkich liter 580
    • Stosowanie indeksu argumentu 581
    • Zamykanie obiektu klasy Formatter 582
    • Metoda printf() w Javie 582
  • Klasa Scanner 582
    • Konstruktory klasy Scanner 583
    • Podstawy skanowania 584
    • Kilka przykładów użycia klasy Scanner 587
    • Ustawianie separatorów 590
    • Pozostałe elementy klasy Scanner 591
  • Klasy ResourceBundle, ListResourceBundle i PropertyResourceBundle 592
  • Dodatkowe klasy i interfejsy użytkowe 596
  • Podpakiety pakietu java.util 597
    • java.util.concurrent, java.util.concurrent.atomic oraz java.util.concurrent.locks 598
    • java.util.function 598
    • java.util.jar 600
    • java.util.logging 600
    • java.util.prefs 600
    • java.util.regex 600
    • java.util.spi 601
    • java.util.stream 601
    • java.util.zip 601

21. Operacje wejścia-wyjścia: analiza pakietu java.io 603

  • Klasy i interfejsy obsługujące operacje wejścia-wyjścia 604
  • Klasa File 604
    • Katalogi 607
    • Stosowanie interfejsu FilenameFilter 608
    • Alternatywna metoda listFiles() 609
    • Tworzenie katalogów 609
  • Interfejsy AutoCloseable, Closeable i Flushable 609
  • Wyjątki operacji wejścia-wyjścia 610
  • Dwa sposoby zamykania strumieni 610
  • Klasy strumieni 611
  • Strumienie bajtów 612
    • Klasa InputStream 612
    • Klasa OutputStream 613
    • Klasa FileInputStream 613
    • Klasa FileOutputStream 615
    • Klasa ByteArrayInputStream 617
    • Klasa ByteArrayOutputStream 618
    • Filtrowane strumienie bajtów 620
    • Buforowane strumienie bajtów 620
    • Klasa SequenceInputStream 623
    • Klasa PrintStream 625
    • Klasy DataOutputStream i DataInputStream 627
    • Klasa RandomAccessFile 628
  • Strumienie znaków 629
    • Klasa Reader 629
    • Klasa Writer 629
    • Klasa FileReader 629
    • Klasa FileWriter 631
    • Klasa CharArrayReader 632
    • Klasa CharArrayWriter 633
    • Klasa BufferedReader 634
    • Klasa BufferedWriter 636
    • Klasa PushbackReader 636
    • Klasa PrintWriter 637
  • Klasa Console 638
  • Serializacja 639
    • Interfejs Serializable 640
    • Interfejs Externalizable 640
    • Interfejs ObjectOutput 640
    • Klasa ObjectOutputStream 641
    • Interfejs ObjectInput 642
    • Klasa ObjectInputStream 642
    • Przykład serializacji 643
  • Korzyści wynikające ze stosowania strumieni 645

22. System NIO 647

  • Klasy systemu NIO 647
  • Podstawy systemu NIO 648
    • Bufory 648
    • Kanały 648
    • Zestawy znaków i selektory 651
  • Udoskonalenia dodane w systemie NIO.2 651
    • Interfejs Path 651
    • Klasa Files 651
    • Klasa Paths 654
    • Interfejsy atrybutów plików 655
    • Klasy FileSystem, FileSystems i FileStore 657
  • Stosowanie systemu NIO 657
    • Stosowanie systemu NIO dla operacji wejścia-wyjścia na kanałach 658
    • Stosowanie systemu NIO dla operacji wejścia-wyjścia na strumieniach 666
    • Stosowanie systemu NIO dla operacji na ścieżkach i systemie plików 668

23. Obsługa sieci 675

  • Podstawy działania sieci 675
  • Klasy i interfejsy pakietu java.net obsługujące komunikację sieciową 676
  • Klasa InetAddress 677
    • Metody wytwórcze 677
    • Metody klasy 678
  • Klasy Inet4Address oraz Inet6Address 679
  • Gniazda klientów TCP/IP 679
  • URL 682
  • Klasa URLConnection 683
  • Klasa HttpURLConnection 685
  • Klasa URI 687
  • Pliki cookie 687
  • Gniazda serwerów TCP/IP 688
  • Datagramy 688
    • Klasa DatagramSocket 689
    • Klasa DatagramPacket 689
    • Przykład użycia datagramów 690
  • Prezentacja pakietu java.net.http 692
    • Trzy kluczowe elementy 692
    • Prosty przykład użycia API klienta HTTP 695
    • Czego jeszcze warto dowiedzieć się o pakiecie java.net.http? 696

24. Obsługa zdarzeń 697

  • Dwa mechanizmy obsługi zdarzeń 697
  • Model obsługi zdarzeń oparty na ich delegowaniu 698
    • Zdarzenia 698
    • Źródła zdarzeń 698
    • Obiekty nasłuchujące zdarzeń 699
  • Klasy zdarzeń 699
    • Klasa ActionEvent 701
    • Klasa AdjustmentEvent 701
    • Klasa ComponentEvent 702
    • Klasa ContainerEvent 702
    • Klasa FocusEvent 703
    • Klasa InputEvent 704
    • Klasa ItemEvent 704
  • Klasa KeyEvent 705
    • Klasa MouseEvent 706
    • Klasa MouseWheelEvent 707
    • Klasa TextEvent 708
    • Klasa WindowEvent 708
  • Źródła zdarzeń 709
  • Interfejsy nasłuchujące zdarzeń 710
    • Interfejs ActionListener 711
    • Interfejs AdjustmentListener 711
    • Interfejs ComponentListener 711
    • Interfejs ContainerListener 711
    • Interfejs FocusListener 711
    • Interfejs ItemListener 711
    • Interfejs KeyListener 711
    • Interfejs MouseListener 712
    • Interfejs MouseMotionListener 712
    • Interfejs MouseWheelListener 712
    • Interfejs TextListener 712
    • Interfejs WindowFocusListener 712
    • Interfejs WindowListener 712
  • Stosowanie modelu delegowania zdarzeń 713
    • Kluczowe zagadnienia tworzenia aplikacji graficznych z użyciem AWT 713
    • Obsługa zdarzeń generowanych przez mysz 714
    • Obsługa zdarzeń generowanych przez klawiaturę 717
  • Klasy adapterów 720
  • Klasy wewnętrzne 722
    • Anonimowa klasa wewnętrzna 724

25. Wprowadzenie do AWT: praca z oknami, grafiką i tekstem 727

  • Klasy AWT 728
  • Podstawy okien 730
    • Klasa Component 730
    • Klasa Container 730
    • Klasa Panel 730
    • Klasa Window 731
    • Klasa Frame 731
    • Klasa Canvas 731
  • Praca z oknami typu Frame 731
    • Ustawianie wymiarów okna 731
    • Ukrywanie i wyświetlanie okna 732
    • Ustawianie tytułu okna 732
    • Zamykanie okna typu Frame 732
    • Metoda paint() 732
    • Wyświetlanie łańcuchów znaków 732
    • Określanie koloru tekstu i tła 733
    • Żądanie ponownego wyświetlenia zawartości okna 733
    • Tworzenie aplikacji korzystających z klasy Frame 734
  • Wprowadzenie do stosowania grafiki 735
    • Rysowanie odcinków 735
    • Rysowanie prostokątów 735
    • Rysowanie elips, kół i okręgów 736
    • Rysowanie łuków 736
    • Rysowanie wielokątów 736
    • Prezentacja metod rysujących 737
    • Dostosowywanie rozmiarów obiektów graficznych 738
  • Praca z klasą Color 739
    • Metody klasy Color 740
    • Ustawianie bieżącego koloru kontekstu graficznego 741
    • Program demonstrujący zastosowanie klasy Color 741
  • Ustawianie trybu rysowania 742
  • Praca z czcionkami 743
    • Określanie dostępnych czcionek 745
    • Tworzenie i wybieranie czcionek 746
    • Uzyskiwanie informacji o czcionkach 748
  • Zarządzanie tekstowymi danymi wyjściowymi z wykorzystaniem klasy FontMetrics 749

26. Stosowanie kontrolek AWT, menedżerów układu graficznego oraz menu 753

  • Podstawy kontrolek AWT 754
    • Dodawanie i usuwanie kontrolek 754
    • Odpowiadanie na zdarzenia kontrolek 754
    • Wyjątek HeadlessException 755
  • Etykiety 755
  • Stosowanie przycisków 756
    • Obsługa zdarzeń przycisków 757
  • Stosowanie pól wyboru 760
    • Obsługa zdarzeń pól wyboru 761
  • Klasa CheckboxGroup 762
  • Kontrolki list rozwijanych 764
    • Obsługa zdarzeń list rozwijanych 765
  • Stosowanie list 766
    • Obsługa zdarzeń generowanych przez listy 767
  • Zarządzanie paskami przewijania 769
    • Obsługa zdarzeń generowanych przez paski przewijania 770
  • Stosowanie kontrolek typu TextField 772
    • Obsługa zdarzeń generowanych przez kontrolkę TextField 773
  • Stosowanie kontrolek typu TextArea 774
  • Wprowadzenie do menedżerów układu graficznego komponentów 776
    • FlowLayout 777
    • BorderLayout 778
    • Stosowanie obramowań 779
    • GridLayout 781
    • Klasa CardLayout 782
    • Klasa GridBagLayout 785
  • Menu i paski menu 789
  • Okna dialogowe 794
  • Przesłanianie metody paint() 797

27. Obrazy 799

  • Formaty plików 799
  • Podstawy przetwarzania obrazów: tworzenie, wczytywanie i wyświetlanie 800
    • Tworzenie obiektu obrazu 800
    • Ładowanie obrazu 800
    • Wyświetlanie obrazu 801
  • Podwójne buforowanie 802
  • Interfejs ImageProducer 804
    • Klasa MemoryImageSource 805
  • Interfejs ImageConsumer 806
    • Klasa PixelGrabber 806
  • Klasa ImageFilter 809
    • Klasa CropImageFilter 809
    • Klasa RGBImageFilter 810
  • Dodatkowe klasy obsługujące obrazy 821

28. Narzędzia współbieżności 823

  • Pakiety interfejsu Concurrent API 824
    • Pakiet java.util.concurrent 824
    • Pakiet java.util.concurrent.atomic 825
    • Pakiet java.util.concurrent.locks 825
  • Korzystanie z obiektów służących do synchronizacji 825
    • Klasa Semaphore 825
    • Klasa CountDownLatch 830
    • CyclicBarrier 832
    • Klasa Exchanger 834
    • Klasa Phaser 835
  • Korzystanie z egzekutorów 842
    • Przykład prostego egzekutora 842
    • Korzystanie z interfejsów Callable i Future 844
  • Typ wyliczeniowy TimeUnit 846
  • Kolekcje współbieżne 847
  • Blokady 847
  • Operacje atomowe 850
  • Programowanie równoległe przy użyciu frameworku Fork/Join 851
    • Najważniejsze klasy frameworku Fork/Join 852
    • Strategia dziel i zwyciężaj 855
    • Prosty przykład użycia frameworku Fork/Join 855
    • Znaczenie poziomu równoległości 858
    • Przykład użycia klasy RecursiveTask 860
    • Asynchroniczne wykonywanie zadań 862
    • Anulowanie zadania 863
    • Określanie statusu wykonania zadania 863
    • Ponowne uruchamianie zadania 863
    • Pozostałe zagadnienia 863
    • Wskazówki dotyczące stosowania frameworku Fork/Join 865
  • Pakiet Concurrency Utilities a tradycyjne metody języka Java 866

29. API strumieni 867

  • Podstawowe informacje o strumieniach 867
    • Interfejsy strumieni 868
    • Jak można uzyskać strumień? 870
    • Prosty przykład stosowania strumieni 871
  • Operacje redukcji 874
  • Stosowanie strumieni równoległych 876
  • Odwzorowywanie 878
  • Tworzenie kolekcji 882
  • Iteratory i strumienie 885
    • Stosowanie typu Iterator i strumieni 885
    • Stosowanie spliteratorów 886
  • Inne możliwości API strumieni 889

30. Wyrażenia regularne i inne pakiety 891

  • Przetwarzanie wyrażeń regularnych 891
    • Klasa Pattern 892
    • Klasa Matcher 892
    • Składnia wyrażeń regularnych 893
    • Przykład dopasowywania do wzorca 893
    • Dwie opcje dopasowywania do wzorca 898
    • Przegląd wyrażeń regularnych 898
  • Refleksje 898
  • Zdalne wywoływanie metod (RMI) 901
    • Prosta aplikacja typu klient-serwer wykorzystująca RMI 902
  • Formatowanie dat i czasu przy użyciu pakietu java.text 905
    • Klasa DateFormat 905
    • Klasa SimpleDateFormat 906
  • Interfejs API dat i czasu - java.time 908
    • Podstawowe klasy do obsługi dat i czasu 908
    • Formatowanie dat i godzin 910
    • Analiza łańcuchów zawierających daty i godziny 912
    • Inne możliwości pakietu java.time 913

CZĘŚĆ III. WPROWADZENIE DO PROGRAMOWANIA GUI PRZY UŻYCIU PAKIETU SWING

31. Wprowadzenie do pakietu Swing 917

  • Geneza powstania biblioteki Swing 917
  • Bibliotekę Swing zbudowano na bazie zestawu narzędzi AWT 918
  • Podstawowe cechy biblioteki Swing 918
    • Komponenty biblioteki Swing są lekkie 918
    • Biblioteka Swing obsługuje dołączany wygląd i sposób obsługi 919
  • Podobieństwo do architektury MVC 919
  • Komponenty i kontenery 920
    • Komponenty 920
    • Kontenery 921
    • Panele kontenerów najwyższego poziomu 921
  • Pakiety biblioteki Swing 922
  • Prosta aplikacja na bazie biblioteki Swing 922
  • Obsługa zdarzeń 926
  • Rysowanie w bibliotece Swing 929
    • Podstawy rysowania 929
    • Wyznaczanie obszaru rysowania 930
    • Przykład rysowania 930

32. Przewodnik po pakiecie Swing 933

  • Klasy JLabel i ImageIcon 933
  • Klasa JTextField 935
  • Przyciski biblioteki Swing 936
    • Klasa JButton 937
    • Klasa JToggleButton 939
    • Pola wyboru 940
    • Przyciski opcji 942
  • Klasa JTabbedPane 944
  • Klasa JScrollPane 946
  • Klasa JList 948
  • Klasa JComboBox 951
  • Drzewa 953
  • Klasa JTable 955

33. Wprowadzenie do systemu menu pakietu Swing 959

  • Podstawy systemu menu 959
  • Przegląd klas JMenuBar, JMenu oraz JMenuItem 961
    • Klasa JMenuBar 961
    • Klasa JMenu 962
    • Klasa JMenuItem 963
  • Tworzenie menu głównego 963
  • Dodawanie mnemonik i kombinacji klawiszy do opcji menu 967
  • Dodawanie obrazów i etykiet ekranowych do menu 969
  • Stosowanie klas JRadioButtonMenuItem i JCheckBoxMenuItem 970
  • Tworzenie menu podręcznych 972
  • Tworzenie paska narzędzi 974
  • Stosowanie akcji 977
  • Finalna postać programu MenuDemo 981
  • Dalsze poznawanie pakietu Swing 987

CZĘŚĆ IV. STOSOWANIE JAVY W PRAKTYCE

34. Java Beans 991

  • Czym jest komponent typu Java Bean? 991
  • Zalety komponentów Java Beans 992
  • Introspekcja 992
    • Wzorce właściwości 992
    • Wzorce projektowe dla zdarzeń 993
    • Metody i wzorce projektowe 994
    • Korzystanie z interfejsu BeanInfo 994
  • Właściwości ograniczone 994
  • Trwałość 995
  • Interfejs Customizer 995
  • Interfejs Java Beans API 995
    • Klasa Introspector 997
    • Klasa PropertyDescriptor 997
    • Klasa EventSetDescriptor 997
    • Klasa MethodDescriptor 997
  • Przykład komponentu Java Bean 997

35. Serwlety 1001

  • Podstawy 1001
  • Cykl życia serwletu 1002
  • Sposoby tworzenia serwletów 1002
  • Korzystanie z serwera Tomcat 1003
  • Przykład prostego serwletu 1004
    • Tworzenie i kompilacja kodu źródłowego serwletu 1004
    • Uruchamianie serwera Tomcat 1005
    • Uruchamianie przeglądarki i generowanie żądania 1005
  • Interfejs Servlet API 1005
  • Pakiet javax.servlet 1005
    • Interfejs Servlet 1006
    • Interfejs ServletConfig 1006
    • Interfejs ServletContext 1007
    • Interfejs ServletRequest 1007
    • Interfejs ServletResponse 1007
    • Klasa GenericServlet 1007
    • Klasa ServletInputStream 1007
    • Klasa ServletOutputStream 1009
    • Klasy wyjątków związanych z serwletami 1009
  • Odczytywanie parametrów serwletu 1009
  • Pakiet javax.servlet.http 1010
    • Interfejs HttpServletRequest 1011
    • Interfejs HttpServletResponse 1011
    • Interfejs HttpSession 1011
    • Klasa Cookie 1013
    • Klasa HttpServlet 1014
  • Obsługa żądań i odpowiedzi HTTP 1014
    • Obsługa żądań GET protokołu HTTP 1014
    • Obsługa żądań POST protokołu HTTP 1016
  • Korzystanie ze znaczników kontekstu użytkownika 1017
  • Śledzenie sesji 1019

DODATKI

A. Komentarze dokumentujące 1023

  • Znaczniki narzędzia javadoc 1023
    • Znacznik @author 1024
    • Znacznik {@code} 1024
    • Znacznik @deprecated 1025
    • Znacznik {@docRoot} 1025
    • Znacznik @exception 1025
    • Znacznik @hidden 1025
    • Znacznik {@index} 1025
    • Znacznik {@inheritDoc} 1025
    • Znacznik {@link} 1025
    • Znacznik {@linkplain} 1026
    • Znacznik {@literal} 1026
    • Znacznik @param 1026
    • Znacznik @provides 1026
    • Znacznik @return 1026
    • Znacznik @see 1026
    • Znacznik @serial 1026
    • Znacznik @serialData 1027
    • Znacznik @serialField 1027
    • Znacznik @since 1027
    • Znacznik {@summary} 1027
    • Znacznik @throws 1027
    • Znacznik @uses 1027
    • Znacznik {@value} 1027
    • Znacznik @version 1028
  • Ogólna postać komentarzy dokumentacyjnych 1028
  • Wynik działania narzędzia javadoc 1028
  • Przykład korzystający z komentarzy dokumentacyjnych 1028

B. Wprowadzenie do JShell 1031

  • Podstawy JShell 1031
  • Wyświetlanie, edytowanie i ponowne wykonywanie kodu 1033
  • Dodanie metody 1034
  • Utworzenie klasy 1035
  • Stosowanie interfejsu 1036
  • Przetwarzanie wyrażeń i wbudowane zmienne 1037
  • Importowanie pakietów 1037
  • Wyjątki 1038
  • Inne polecenia JShell 1038
  • Dalsze poznawanie możliwości JShell 1039

C. Kompilowanie i uruchamianie prostych programów w jednym kroku 1041

 

Koszty dostawy Cena nie zawiera ewentualnych kosztów płatności

Kraj wysyłki:

Opinie o produkcie (0)

do góry
Sklep jest w trybie podglądu
Pokaż pełną wersję strony
Sklep internetowy Shoper.pl