Nauka Javy. Wprowadzenie do tworzenia aplikacji do rzeczywistych zastosowań. Wydanie V - ebook
Nauka Javy. Wprowadzenie do tworzenia aplikacji do rzeczywistych zastosowań. Wydanie V - ebook
Twórcy Javy od początku historii tego języka śmiało wprowadzali kolejne awangardowe innowacje, a pisane w niej aplikacje miały swój udział w napędzaniu internetowego postępu. Obecnie Java jest uważana za najpopularniejszy język programowania na świecie, a miliony deweloperów wciąż tworzą za jej pomocą oprogramowanie dla niemal każdego urządzenia wyposażonego w procesor. Java jest wyjątkowo wszechstronnym narzędziem: pozwala napisać zarówno prostą aplikację mobilną, jak i złożony system internetowy. Pozostaje przy tym stosunkowo prosta w nauce - co sprawia, że jest idealnym językiem dla początkujących, którzy mają ambicję dojścia do profesjonalnego poziomu.
Ta książka jest praktycznym przewodnikiem dla każdego, kto chce zdobyć doświadczenie w tworzeniu rzeczywistych aplikacji w Javie. To również znakomity kurs programowania obiektowego dla początkujących, umożliwiający gruntowne zrozumienie podstaw języka Java i jego interfejsów API. Wyczerpująco opisano tu biblioteki klas, techniki programowania oraz idiomy. Nie zabrakło zaawansowanych zagadnień, takich jak wyrażenia lambda czy serwlety. W tym przejrzanym i zaktualizowanym wydaniu ujęto zmiany wprowadzone zarówno w wersji 11 Javy, jak i w przeglądowych wersjach 12, 13 i 14. Przedstawiono więc takie nowości jak interferencja typów w typach sparametryzowanych, ulepszenia w obsłudze wyjątków czy nowe środowisko testowe jshell.
W książce między innymi:
- przygotowanie środowiska pracy i konfiguracja przydatnych narzędzi
- typy, instrukcje, wyrażenia oraz obiekty w Javie
- obsługa wątków i pakiet współbieżności Javy
- błędy i wyjątki
- interfejs API wyrażeń regularnych
- tworzenie zaawansowanych aplikacji i usług sieciowych
Java: niezawodny kod, aplikacja, która działa!
Spis treści
Przedmowa 11
1. Nowoczesny język 17
- Java 17
- Pochodzenie Javy 18
- Okres dojrzewania 19
- Maszyna wirtualna 20
- Java a inne języki programowania 23
- Bezpieczeństwo projektowania 26
- Upraszczaj, upraszczaj i jeszcze raz upraszczaj 26
- Bezpieczeństwo typów i wiązanie metod 27
- Realizacja przyrostowa 28
- Dynamiczne zarządzanie pamięcią 28
- Obsługa błędów 29
- Wątki 30
- Skalowalność 30
- Bezpieczeństwo implementacji 31
- Weryfikator 32
- Ładowarka klas 33
- Zarządca bezpieczeństwa 34
- Bezpieczeństwo na poziomie aplikacji i użytkownika 35
- Harmonogram Javy 35
- Przeszłość: Java 1.0 - Java 11 36
- Teraźniejszość: Java 14 38
- Przyszłość 39
- Dostępność 40
2. Pierwsza aplikacja 41
- Narzędzia i środowisko Javy 41
- Instalowanie JDK 42
- Instalowanie OpenJDK w systemie Linux 43
- Instalowanie OpenJDK w systemie macOS 43
- Instalowanie OpenJDK w systemie Windows 44
- Konfigurowanie środowiska IntelliJ IDEA i tworzenie projektu 46
- Uruchomienie projektu 50
- Pobieranie przykładów kodu 51
- HelloJava 51
- Klasy 54
- Metoda main() 55
- Klasy i obiekty 56
- Zmienne i typy klasowe 56
- HelloComponent 57
- Dziedziczenie 58
- Klasa JComponent 59
- Relacje i szukanie winnego 59
- Pakiety i importowanie 60
- Metoda paintComponent() 62
- HelloJava2: drugie podejście 63
- Zmienne instancyjne 64
- Konstruktory 65
- Zdarzenia 67
- Metoda repaint() 69
- Interfejsy 70
- Żegnaj i ponownie witaj 71
3. Narzędzia pracy 73
- Środowisko JDK 73
- Maszyna wirtualna Javy 74
- Uruchamianie aplikacji Javy 74
- Właściwości systemowe 76
- Ścieżka klas (classpath) 76
- Narzędzie javap 78
- Moduły 78
- Kompilator Javy 78
- Natychmiastowe sprawdzanie działania kodu Javy 80
- Pliki JAR 85
- Kompresja plików 85
- Narzędzie jar 86
- Narzędzie pack200 88
- Czas przygotowań 89
4. Język Java 91
- Kodowanie tekstu 92
- Komentarze 94
- Komentarze javadoc 94
- Zmienne i stałe 96
- Typy 98
- Typy proste 99
- Typy referencyjne 103
- Inferencja typów 104
- Przekazywanie referencji 105
- Kilka słów na temat obiektów String 106
- Instrukcje i wyrażenia 106
- Instrukcje 107
- Wyrażenia 115
- Tablice 120
- Typy tablicowe 121
- Tworzenie i inicjowanie tablicy 121
- Używanie tablic 123
- Tablice anonimowe 125
- Tablice wielowymiarowe 125
- Typy, klasy i tablice, o rany! 127
5. Obiekty w Javie 129
- Klasy 129
- Deklarowanie klas i tworzenie ich instancji 131
- Uzyskiwanie dostępu do pól i metod 132
- Składowe statyczne 137
- Metody 139
- Zmienne lokalne 140
- Przesłanianie 141
- Metody statyczne 142
- Inicjowanie zmiennych lokalnych 144
- Przekazywanie argumentów i referencje 145
- Klasy opakowujące dla typów prostych 146
- Przeciążanie metod 148
- Tworzenie obiektów 149
- Konstruktory 150
- Praca z konstruktorami przeciążonymi 151
- Niszczenie obiektów 152
- Mechanizm odzyskiwania pamięci 153
- Pakiety 154
- Importowanie klas 154
- Pakiety niestandardowe 156
- Widoczność i dostępność składowych 157
- Kompilowanie pakietów 159
- Zaawansowane projektowanie klas 160
- Tworzenie podklas i dziedziczenie 160
- Interfejsy 165
- Klasy wewnętrzne 167
- Anonimowe klasy wewnętrzne 168
- Organizowanie zawartości i uwzględnianie występowania błędów 170
6. Obsługa błędów i rejestrowanie 173
- Wyjątki 174
- Klasy błędów i wyjątków 174
- Obsługa wyjątków 176
- Bąbelkowanie 179
- Ślady stosu 180
- Wyjątki sprawdzane i niesprawdzane 181
- Rzucanie wyjątków 182
- Kłopotliwe try 185
- Klauzula finally 186
- try-with-resources 186
- Kwestie związane z wydajnością 188
- Asercje 188
- Włączanie i wyłączanie asercji 189
- Używanie asercji 190
- API rejestrowania 191
- Przegląd 191
- Poziomy rejestrowania 193
- Prosty przykład 194
- Właściwości konfiguracyjne rejestrowania 195
- Klasa Logger 197
- Wydajność 197
- Wyjątki w praktyce 198
7. Kolekcje oraz typy i metody sparametryzowane 199
- Kolekcje 199
- Interfejs Collection 200
- Typy kolekcji 201
- Interfejs Map 202
- Ograniczenia typów 204
- Kontenery, czyli budowanie lepszej pułapki na myszy 205
- Czy kontenery można naprawić? 206
- Wprowadzenie do typów i metod sparametryzowanych 206
- Kilka słów o typach 209
- "Łyżka nie istnieje" 210
- Wymazywanie 210
- Typy surowe 212
- Relacje typów sparametryzowanych 213
- Dlaczego List
nie jest typem List
- Dlaczego List
- Rzutowania 216
- Konwertowanie między kolekcjami a tablicami 217
- Iterator 217
- Działanie metody sort() 218
- Aplikacja: drzewa na planszy 219
- Podsumowanie 220
8. Praca z tekstem i podstawowe narzędzia 223
- Łańcuchy znaków - klasa String 223
- Konstruowanie łańcuchów znaków 224
- Tekstowe reprezentacje z różnych elementów 225
- Porównywanie łańcuchów znaków 226
- Wyszukiwanie 227
- Podsumowanie metod klasy String 227
- Różne elementy z tekstowych reprezentacji 229
- Parsowanie liczb prostych 229
- Tokenizacja tekstu 230
- Wyrażenia regularne 232
- Notacja wyrażeń regularnych 232
- Interfejs API java.util.regex 238
- Narzędzia matematyczne 242
- Klasa java.lang.Math 243
- Duże i dokładne liczby 246
- Daty i godziny 248
- Lokalne daty i godziny 248
- Porównywanie oraz zmiana dat i godzin 249
- Strefy czasowe 250
- Parsowanie i formatowanie dat i godzin 251
- Błędy parsowania 253
- Znaczniki czasu 254
- Inne przydatne narzędzia 254
9. Wątki 257
- Wprowadzenie do wątków 258
- Klasa Thread i interfejs Runnable 258
- Sterowanie wątkami 261
- "Śmierć" wątku 266
- Synchronizacja 268
- Szeregowanie dostępu do metod 268
- Uzyskiwanie dostępu do zmiennych klasowych i instancyjnych z wielu wątków 273
- Planowanie i priorytety 274
- Stany wątku 275
- Podział czasu 276
- Priorytety 277
- Oddawanie sterowania 278
- Wydajność wątków 279
- Koszt synchronizacji 279
- Wykorzystywanie zasobów wątku 279
- Narzędzia do obsługi współbieżności 280
10. Aplikacje desktopowe 283
- Przyciski, suwaki oraz pola tekstowe, o rety! 284
- Hierarchie komponentów 284
- Architektura Model-Widok-Kontroler 284
- Etykiety i przyciski 286
- Komponenty tekstowe 292
- Inne komponenty 299
- Kontenery i układy 303
- Ramki i okna 303
- Klasa JPanel 305
- Menedżery układu 306
- Zdarzenia 314
- Zdarzenia myszy 315
- Zdarzenia działań 318
- Zdarzenia zmian 320
- Inne zdarzenia 321
- Okna modalne i wyskakujące okienka 322
- Okna dialogowe z komunikatami 322
- Okna dialogowe z potwierdzeniem 325
- Okna dialogowe z danymi wejściowymi 326
- Rozważania na temat obsługi wątków 326
- Klasa SwingUtilities i aktualizacje komponentów 327
- Minutniki 330
- Kolejne kroki 332
- Menu 333
- Preferencje 335
- Komponenty niestandardowe oraz Java2D 335
- JavaFX 335
- Interfejs użytkownika i doświadczenie użytkownika 336
11. Obsługa sieci i operacje we-wy 337
- Strumienie 337
- Podstawowe operacje we-wy 339
- Strumienie znaków 341
- Klasy opakowujące dla strumieni 342
- Klasa java.io.File 346
- Strumienie plików 351
- Klasa RandomAccessFile 353
- Interfejs API plików NIO 354
- Klasy FileSystem i Path 355
- Operacje interfejsu plików NIO 356
- Pakiet NIO 360
- Asynchroniczne operacje we-wy 360
- Wydajność 361
- Pliki zmapowane i zablokowane 361
- Kanały 361
- Bufory 362
- Kodery i dekodery znaków 365
- FileChannel 367
- Programowanie sieciowe 370
- Gniazda 372
- Klienty i serwery 373
- Klient DateAtHost 376
- Gra rozproszona 378
- Więcej do odkrycia 387
12. Programowanie aplikacji internetowych 389
- Adresy URL 389
- Klasa URL 390
- Strumień danych 391
- Pobieranie zawartości jako obiektu 392
- Zarządzanie połączeniami 393
- Procedury obsługi w praktyce 394
- Przydatne frameworki procedur obsługi 394
- Komunikacja z aplikacjami internetowymi 395
- Korzystanie z metody GET 395
- Korzystanie z metody POST 396
- Obiekt HttpURLConnection 399
- SSL i bezpieczna komunikacja internetowa 400
- Aplikacje internetowe Javy 400
- Cykl życia serwletu 402
- Serwlety 402
- Serwlet HelloClient 404
- Odpowiedź serwletu 405
- Parametry serwletu 406
- Serwlet ShowParameters 408
- Zarządzanie sesjami użytkowników 409
- Serwlet ShowSession 410
- Kontenery serwletów 412
- Konfigurowanie za pomocą pliku web.xml oraz adnotacji 413
- Mapowania wzorców adresów URL 416
- Wdrażanie serwletu HelloClient 416
- WWW - sieć na cały świat rozległa 417
13. Rozszerzanie Javy 419
- Wydania Javy 419
- JCP i JSR 420
- Wyrażenia lambda 420
- Modernizacja kodu 421
- Rozszerzanie Javy poza podstawowe funkcjonalności 426
- Końcowe podsumowanie i kolejne kroki 427
A. Przykłady kodu i program IntelliJ IDEA 429
Słowniczek 443
Kategoria: | Programowanie |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-283-7129-3 |
Rozmiar pliku: | 8,6 MB |