Darmowa dostawa od 150,00 zł
Java. Najlepsze rozwiązania zadań programistycznych. Receptury. Wydanie IV
Promocja Okazja

Java. Najlepsze rozwiązania zadań programistycznych. Receptury. Wydanie IV

  • Rok wydania: 2021 Oprawa: miękka Ilość stron: 616 Format: 168x237
Rozmiar

107,10 zł

brutto / 1szt.
Najniższa cena z 30 dni przed obniżką: 119,00 zł / szt.-10%
Cena regularna: 119,00 zł / szt.-10%
Cena katalogowa:
Możesz kupić za pkt.
z
Produkt dostępny w bardzo dużej ilości
Skontaktuj się z obsługą sklepu, aby oszacować czas przygotowania tego produktu do wysyłki.
Produkt dostępny w bardzo dużej ilości
Wysyłka
14 dni na łatwy zwrot
Sprawdź, w którym sklepie obejrzysz i kupisz od ręki
Java. Najlepsze rozwiązania zadań programistycznych. Receptury. Wydanie IV
Java. Najlepsze rozwiązania zadań programistycznych. Receptury. Wydanie IV
Bezpieczne zakupy
Odroczone płatności. Kup teraz, zapłać później, jeżeli nie zwrócisz
Kup teraz, zapłać później - 4 kroki
Przy wyborze formy płatności, wybierz PayPo.PayPo - kup teraz, zapłać za 30 dni
PayPo opłaci twój rachunek w sklepie.
Na stronie PayPo sprawdź swoje dane i podaj pesel.
Po otrzymaniu zakupów decydujesz co ci pasuje, a co nie. Możesz zwrócić część albo całość zamówienia - wtedy zmniejszy się też kwota do zapłaty PayPo.
W ciągu 30 dni od zakupu płacisz PayPo za swoje zakupy bez żadnych dodatkowych kosztów. Jeśli chcesz, rozkładasz swoją płatność na raty.
Po zakupie otrzymasz pkt.

Java jest jednym z najpopularniejszych języków programowania. Równocześnie należy do najbardziej innowacyjnych technologii informatycznych; zawsze stanowiła awangardę. Programiści cenią Javę za dojrzałość, bezpieczeństwo i wszechstronność. Jednak nawet tak znakomity język niekiedy przysparza problemów podczas pracy. Mogą się one okazać całkiem proste do rozwiązania, jeśli tylko wiadomo, jak się do tego zabrać.

Oto zbiór aktualnych i kompletnych receptur instruktażowych, z których każda pomaga w rozwiązaniu konkretnego problemu. Wszystkie zostały starannie przetestowane i wielokrotnie udowodniły swoją przydatność. Każdą poprzedzono krótkim wprowadzeniem i omówieniem zastosowanych mechanizmów działania. Ta książka nie jest klasycznym podręcznikiem programowania, jednak z pewnością przyśpieszy praktyczne wykorzystanie możliwości Javy. Wśród receptur znalazł się szeroki zakres zagadnień, od podstawowych operacji na ciągach znaków, poprzez programowanie funkcyjne, po komunikację sieciową, rozwiązania big data i współdziałanie z kodem napisanym w innych językach. W tym wydaniu uwzględniono zmiany wprowadzone w wersjach Javy 12, 13 i 14.

W książce między innymi:

  • kompilacja kodu, uruchamianie i debugowanie oraz pakowanie klas Javy
  • praca z tekstem, wyrażenia regularne i wzorce
  • programowanie obiektowe i funkcyjne oraz programowanie sieciowe
  • format JSON i wymiana danych
  • wielowątkowość i współbieżność
  • big data i Java

Java: najlepsze rozwiązania najważniejszych zadań!

O autorze

Ian F. Darwin pracuje w branży komputerowej od trzech dziesięcioleci. Oprócz pisania programów i świadczenia usług consultingowych, Ian pracuje w firmie Learning Tree International, jednej z wiodących na świecie firm prowadzących kursy techniczne, gdzie naucza wykorzystania systemu Unix oraz programowania w językach C oraz Java. Jest także autorem książki Checking C Programs with Lint (O’Reilly) oraz ponad 70 artykułów poświęconych systemowi Unix.

Spis treści

Wstęp 13

1. Rozpoczynanie pracy: kompilacja i uruchamianie 27

  • 1.0. Wprowadzenie 27
  • 1.1. Kompilacja i uruchamianie programów napisanych w Javie - JDK 28
  • 1.2. Kompilacja i uruchamianie: stosowanie GraalVM dla lepszej wydajności 30
  • 1.3. Kompilacja, uruchamianie i testowanie programów przy użyciu IDE 32
  • 1.4. Poznawanie Javy przy wykorzystaniu JShell 36
  • 1.5. Efektywne wykorzystanie zmiennej środowiskowej CLASSPATH 39
  • 1.6. Pobieranie przykładów dołączonych do tej książki i korzystanie z nich 41
  • 1.7. Automatyzacja zależności, kompilacji, testowania i wdrażania przy użyciu programu Apache Maven 49
  • 1.8. Automatyzacja zależności, kompilacji, testowania i wdrażania przy użyciu programu Gradle 53
  • 1.9. Komunikaty o odrzuconych metodach 55
  • 1.10. Zapewnianie poprawności kodu za pomocą testów jednostkowych: JUnit 57
  • 1.11. Zarządzanie kodem z wykorzystaniem ciągłej integracji 60
  • 1.12. Uzyskiwanie czytelnych komunikatów o wyjątkach 65
  • 1.13. Poszukiwanie przykładowych kodów źródłowych 66
  • 1.14. Poszukiwanie gotowych bibliotek Javy 67

2. Interakcja ze środowiskiem 71

  • 2.0. Wprowadzenie 71
  • 2.1. Pobieranie wartości zmiennych środowiskowych 71
  • 2.2. Pobieranie informacji z właściwości systemowych 72
  • 2.3. Stosowanie kodu zależnego od używanej wersji JDK lub systemu operacyjnego 74
  • 2.4. Stosowanie rozszerzających interfejsów programistycznych lub innych API 79
  • 2.5. Stosowanie systemu modułów Javy 80

3. Łańcuchy znaków i przetwarzanie tekstów 85

  • 3.0. Wprowadzenie 85
  • 3.1. Odczytywanie fragmentów łańcucha 88
  • 3.2. Łączenie łańcuchów znaków przy użyciu klasy StringBuilder 93
  • 3.3. Przetwarzanie łańcucha znaków po jednej literze 95
  • 3.4. Wyrównywanie łańcuchów znaków 97
  • 3.5. Konwersja pomiędzy znakami Unicode a łańcuchami znaków 100
  • 3.6. Odwracanie kolejności słów lub znaków w łańcuchu 103
  • 3.7. Rozwijanie i kompresja znaków tabulacji 104
  • 3.8. Kontrola wielkości liter 108
  • 3.9. Wprowadzanie znaków niedrukowalnych 109
  • 3.10. Usuwanie odstępów z końca łańcucha 111
  • 3.11. Tworzenie komunikatów z użyciem zasobów wielojęzycznych 113
  • 3.12. Stosowanie konkretnych ustawień lokalnych 116
  • 3.13. Tworzenie wiązki zasobów 117
  • 3.14. Program - proste narzędzie do formatowania tekstów 118
  • 3.15. Program - fonetyczne porównywanie nazwisk 121

4. Dopasowywanie wzorców przy użyciu wyrażeń regularnych 125

  • 4.0. Wprowadzenie 125
  • 4.1. Składnia wyrażeń regularnych 127
  • 4.2. Wykorzystanie wyrażeń regularnych w języku Java - sprawdzanie występowania wzorca 134
  • 4.3. Odnajdywanie tekstu pasującego do wzorca 138
  • 4.4. Zastępowanie określonego tekstu 140
  • 4.5. Wyświetlanie wszystkich wystąpień wzorca 143
  • 4.6. Wyświetlanie wierszy zawierających fragment pasujący do wzorca 145
  • 4.7. Kontrola wielkości znaków w metodach match() i subst() 147
  • 4.8. Dopasowywanie znaków z akcentami lub znaków złożonych 148
  • 4.9. Odnajdywanie znaków nowego wiersza 149
  • 4.10. Program - analiza dziennika serwera Apache 151
  • 4.11. Program - pełna wersja programu grep 153

5. Liczby 159

  • 5.0. Wprowadzenie 159
  • 5.1. Sprawdzanie, czy łańcuch znaków stanowi poprawną liczbę 162
  • 5.2. Konwertowanie liczb na obiekty i na odwrót 163
  • 5.3. Pobieranie ułamka z liczby całkowitej bez konwertowania go na postać zmiennoprzecinkową 164
  • 5.4. Stosowanie liczb zmiennoprzecinkowych 166
  • 5.5. Formatowanie liczb 170
  • 5.6. Konwersje pomiędzy różnymi systemami liczbowymi - dwójkowym, ósemkowym, dziesiętnym i szesnastkowym 174
  • 5.7. Operacje na grupie liczb całkowitych 175
  • 5.8. Formatowanie z zachowaniem odpowiedniej postaci liczby mnogiej 177
  • 5.9. Generowanie liczb losowych 179
  • 5.10. Mnożenie macierzy 182
  • 5.11. Operacje na liczbach zespolonych 184
  • 5.12. Obsługa liczb o bardzo dużych wartościach 187
  • 5.13. Program TempConverter 189
  • 5.14. Program - generowanie liczbowych palindromów 191

6. Daty i godziny 195

  • 6.0. Wprowadzenie 195
  • 6.1. Określanie bieżącej daty 198
  • 6.2. Wyświetlanie daty i czasu w zadanym formacie 200
  • 6.3. Konwersja liczb określających datę i czas oraz liczbę sekund 202
  • 6.4. Analiza łańcuchów znaków i ich zamiana na daty 203
  • 6.5. Obliczanie różnicy pomiędzy dwiema datami 204
  • 6.6. Dodawanie i odejmowanie dat 206
  • 6.7. Obsługa zdarzeń cyklicznych 207
  • 6.8. Obliczanie dat z uwzględnieniem stref czasowych 209
  • 6.9. Stosowanie starych klas Date i Calendar 210

7. Strukturalizacja danych w języku Java 213

  • 7.0. Wprowadzenie 213
  • 7.1. Strukturalizacja danych przy użyciu tablic 214
  • 7.2. Modyfikacja wielkości tablic 216
  • 7.3. Framework kolekcji 217
  • 7.4. Klasa podobna do tablicy, lecz bardziej dynamiczna 219
  • 7.5. Stosowanie typów ogólnych we własnych klasach 222
  • 7.6. Jak przeglądać zawartość kolekcji? Wyliczenie dostępnych sposobów 226
  • 7.7. Unikanie powtórzeń dzięki zastosowaniu zbioru 229
  • 7.8. Strukturalizacja danych z wykorzystaniem list połączonych 230
  • 7.9. Odwzorowywanie z wykorzystaniem klas Hashtable oraz HashMap 235
  • 7.10. Zapisywanie łańcuchów znaków w obiektach Properties i Preferences 237
  • 7.11. Sortowanie kolekcji 242
  • 7.12. Unikanie konieczności sortowania danych 246
  • 7.13. Odnajdywanie obiektu w kolekcji 248
  • 7.14. Zamiana kolekcji na tablicę 251
  • 7.15. Zapewnianie możliwości przeglądania danych przy użyciu iteratora 252
  • 7.16. Używanie stosu obiektów 254
  • 7.17. Struktury wielowymiarowe 257
  • 7.18. Upraszczanie obiektów danych przy wykorzystaniu bibliotek Lombok lub Record 259
  • 7.19. Program - porównanie szybkości działania 262

8. Techniki obiektowe 265

  • 8.0. Wprowadzenie 265
  • 8.1. Metody klasy Object - formatowanie obiektów przy użyciu metody toString() i porównywanie ich metodą equals() 268
  • 8.2. Wykorzystanie klas wewnętrznych 275
  • 8.3. Tworzenie metod zwrotnych z wykorzystaniem interfejsów 278
  • 8.4. Polimorfizm i metody abstrakcyjne 282
  • 8.5. Wartości wyliczeniowe bezpieczne dla typów 283
  • 8.6. Unikanie wyjątków NPE z użyciem klasy Optional 287
  • 8.7. Wymuszanie użycia wzorca Singleton 289
  • 8.8. Zgłaszanie własnych wyjątków 291
  • 8.9. Wstrzykiwanie zależności 293
  • 8.10. Program Plotter 296

9. Techniki programowania funkcyjnego: interfejsy funkcyjne, strumienie i kolekcje równoległe 301

  • 9.0. Wprowadzenie 301
  • 9.1. Stosowanie wyrażeń lambda lub domknięć zamiast klas wewnętrznych 304
  • 9.2. Stosowanie predefiniowanych interfejsów lambda zamiast własnych 307
  • 9.3. Upraszczanie przetwarzania z wykorzystaniem interfejsu Stream 311
  • 9.4. Upraszczanie strumieni przy użyciu kolektorów 312
  • 9.5. Poprawianie przepustowości dzięki wykorzystaniu strumieni i kolekcji równoległych 315
  • 9.6. Używanie istniejącego kodu w sposób funkcyjny dzięki wykorzystaniu odwołań do metod 317
  • 9.7. Wstawianie istniejącego kodu metod 321

10. Wejście i wyjście: odczyt, zapis i sztuczki z katalogami 323

  • 10.0. Wprowadzenie 323
  • 10.1. Klasy InputStream/OutputStream oraz Reader/Writer 325
  • 10.2. Odczytywanie pliku tekstowego 327
  • 10.3. Odczytywanie informacji ze standardowego strumienia wejściowego bądź z konsoli/terminala 329
  • 10.4. Wyświetlanie tekstów przy użyciu klasy Formatter i metody printf 334
  • 10.5. Analiza zawartości pliku przy użyciu klasy StringTokenizer 338
  • 10.6. Analiza danych wejściowych przy użyciu klasy Scanner 342
  • 10.7. Analiza danych wejściowych o strukturze gramatycznej 345
  • 10.8. Kopiowanie pliku 349
  • 10.9. Zmiana skojarzeń standardowych strumieni 350
  • 10.10. Powielanie strumienia podczas realizacji operacji zapisu; zmiana skojarzeń standardowych strumieni 351
  • 10.11. Odczyt i zapis danych zakodowanych w innym zbiorze znaków 354
  • 10.12. Te kłopotliwe znaki końca wiersza 356
  • 10.13. Kod operujący na plikach w sposób zależny od systemu operacyjnego 356
  • 10.14. Odczytywanie i zapisywanie danych binarnych 358
  • 10.15. Odczytywanie i zapisywanie danych w archiwach JAR oraz ZIP 358
  • 10.16. Odnajdywanie plików w sposób niezależny od systemu operacyjnego przy użyciu metod getResource() i getResourceAsStream() 362
  • 10.17. Pobieranie informacji o pliku 364
  • 10.18. Tworzenie nowego pliku lub katalogu 371
  • 10.19. Zmiana nazwy pliku lub jego atrybutów 372
  • 10.20. Usuwanie plików 375
  • 10.21. Tworzenie plików tymczasowych 377
  • 10.22. Tworzenie listy zawartości katalogu 379
  • 10.23. Pobieranie katalogów głównych 380
  • 10.24. Stosowanie usługi WatchService do uzyskiwania informacji o zmianach pliku 382
  • 10.25. Zapisywanie danych użytkownika na dysku 384
  • 10.26. Program Find - poruszanie się po drzewie katalogów 388

11. Nauka o danych i język R 393

  • 11.1. Uczenie maszynowe z użyciem Javy 394
  • 11.2. Stosowanie danych w Apache Spark 395
  • 11.3. Interaktywne stosowanie R 398
  • 11.4. Porównanie i wybór implementacji R 400
  • 11.5. Używanie R w aplikacjach Javy: Renjin 401
  • 11.6. Stosowanie kodu Javy w sesji R 403
  • 11.7. Stosowanie FastR - implementacji R korzystającej z GraalVM 405
  • 11.8. Stosowanie R w aplikacjach internetowych 406

12. Klienty sieciowe 409

  • 12.0. Wprowadzenie 409
  • 12.1. Internetowy klient HTTP/REST 412
  • 12.2. Nawiązywanie połączenia z serwerem z użyciem gniazd 414
  • 12.3. Odnajdywanie adresów sieciowych i zwracanie informacji o nich 415
  • 12.4. Obsługa błędów sieciowych 417
  • 12.5. Odczyt i zapis danych tekstowych 418
  • 12.6. Odczyt i zapis danych binarnych 420
  • 12.7. Datagramy UDP 423
  • 12.8. URI, URL czy może URN? 426
  • 12.9. Program - klient TFTP wykorzystujący protokół UDP 427
  • 12.10. Program - klient pogawędek internetowych używający gniazd 432
  • 12.11. Program - sprawdzanie odnośników HTTP 436

13. Programy Javy działające na serwerze 439

  • 13.0. Wprowadzenie 439
  • 13.1. Tworzenie serwera 440
  • 13.2. Znajdowanie interfejsów sieciowych 443
  • 13.3. Zwracanie odpowiedzi (łańcucha znaków bądź danych binarnych) 444
  • 13.4. Zwracanie informacji o obiektach przez połączenie sieciowe 448
  • 13.5. Obsługa wielu klientów 449
  • 13.6. Serwer obsługujący protokół HTTP 454
  • 13.7. Zabezpieczanie serwera WWW przy użyciu SSL i JSSE 456
  • 13.8. Tworzenie usługi typu RESTful z użyciem JAX-RS 459
  • 13.9. Rejestracja operacji sieciowych 462
  • 13.10. Konfiguracja i stosowanie SLF4J 463
  • 13.11. Rejestracja przez sieć przy użyciu Log4j 466
  • 13.12. Rejestracja przez sieć przy użyciu pakietu java.util.logging 471

14. Przetwarzanie danych w formacie JSON 475

  • 14.0. Wprowadzenie 475
  • 14.1. Bezpośrednie generowanie danych w formacie JSON 477
  • 14.2. Analiza i zapisywanie danych JSON przy użyciu pakietu Jackson 478
  • 14.3. Analiza i zapis danych w formacie JSON przy użyciu pakietu org.json 480
  • 14.4. Analiza i zapis danych w formacie JSON przy użyciu biblioteki JSON-B 481
  • 14.5. Znajdowanie elementów danych w formacie JSON przy użyciu wskaźników 483

15. Pakiety i ich tworzenie 487

  • 15.0. Wprowadzenie 487
  • 15.1. Tworzenie pakietu 488
  • 15.2. Tworzenie dokumentacji klas przy użyciu programu Javadoc 490
  • 15.3. Więcej niż Javadoc - adnotacje i metadane 494
  • 15.4. Tworzenie klasy w taki sposób, by była komponentem JavaBeans 496
  • 15.5. Umieszczanie pakietów w plikach JAR 500
  • 15.6. Wykonywanie programu spakowanego w pliku JAR 501
  • 15.7. Pakowanie komponentów warstwy internetowej do pliku WAR 503
  • 15.8. Tworzenie mniejszego pakietu dystrybucyjnego przy użyciu programu jlink 504
  • 15.9. Stosowanie JPMS do tworzenia modułów 506

16. Stosowanie wątków w Javie 509

  • 16.0. Wprowadzenie 509
  • 16.1. Uruchamianie kodu w innym wątku 511
  • 16.2. Animacja - wyświetlanie poruszających się obrazów 515
  • 16.3. Zatrzymywanie działania wątku 519
  • 16.4. Spotkania i ograniczenia czasowe 522
  • 16.5. Synchronizacja wątków przy użyciu słowa kluczowego synchronized 523
  • 16.6. Upraszczanie synchronizacji przy użyciu blokad 529
  • 16.7. Upraszczanie programu producent-konsument przy użyciu interfejsu Queue 533
  • 16.8. Optymalizacja działania równoległego przy użyciu Fork/Join 535
  • 16.9. Planowanie zadań: operacje w przyszłości, zapis danych w tle w programach edycyjnych 539

17. Introspekcja lub "klasa o nazwie Class" 543

  • 17.0. Wprowadzenie 543
  • 17.1. Pobieranie deskryptora klasy 544
  • 17.2. Określanie oraz stosowanie metod i pól 545
  • 17.3. Uzyskiwanie dostępu do prywatnych pól i metod za pomocą introspekcji 549
  • 17.4. Dynamiczne ładowanie i instalowanie klas 550
  • 17.5. Tworzenie nowej klasy od podstaw przy użyciu obiektu ClassLoader 552
  • 17.6. Tworzenie nowej klasy od podstaw z użyciem kompilatora Javy 554
  • 17.7. Określanie efektywności działania 557
  • 17.8. Wyświetlanie informacji o klasie 561
  • 17.9. Wyświetlanie klas należących do pakietu 563
  • 17.10. Stosowanie i definiowanie adnotacji 565
  • 17.11. Zastosowanie adnotacji do odnajdywania klas pełniących rolę wtyczek 570
  • 17.12. Program CrossRef 573

18. Wykorzystywanie Javy wraz z innymi językami programowania 577

  • 18.0. Wprowadzenie 577
  • 18.1. Uruchamianie zewnętrznego programu 578
  • 18.2. Wykonywanie programu i przechwytywanie jego wyników 582
  • 18.3. Wywoływanie kodu napisanego w innych językach przy użyciu javax.script 586
  • 18.4. Łączenie różnych języków z użyciem GraalVM 588
  • 18.5. Łączenie języków Java i Perl 590
  • 18.6. Dołączanie kodu rodzimego 593
  • 18.7. Wywoływanie kodu Javy z kodu rodzimego 599

Posłowie 603

A. Java kiedyś i obecnie 605

Marka
Autor
Ian F. Darwin
ISBN
9788328370869
Potrzebujesz pomocy? Masz pytania?Zadaj pytanie a my odpowiemy niezwłocznie, najciekawsze pytania i odpowiedzi publikując dla innych.
Zapytaj o produkt
Jeżeli powyższy opis jest dla Ciebie niewystarczający, prześlij nam swoje pytanie odnośnie tego produktu. Postaramy się odpowiedzieć tak szybko jak tylko będzie to możliwe. Dane są przetwarzane zgodnie z polityką prywatności. Przesyłając je, akceptujesz jej postanowienia.
Napisz swoją opinię
Twoja ocena:
5/5
Dodaj własne zdjęcie produktu:
pixel