100942647

Page 1


Poznaj idiomy Javy i umieść je pamięci podręcznej

Gail C. Anderson

Naucz się swojego IDE, aby zmniejszać obciążenie

Trisha Gee

Zawrzyjmy

Paul W. Homer

Zbuduj tylko te fragmenty, które się zmieniają, a resztę wykorzystuj ponownie

Jenn Strater

ź poza piaskownicę Javy

Dawn Griffiths i David Griffiths

Wątki to infrastruktura i tak je traktuj

Russel Winder

Trzy

Jannah Patchay

Kevlin Henney

Odblokowywanie ukrytego potencjału testowania

Swobodnie używaj niestandardowych

tożsamościowych

Mark Richards

Użyj testowania, aby szybciej tworzyć lepsze oprogramowanie

Marit van Dijk

Sam Hepburn

mocy społeczności

O autorach i redaktorach

Abraham Marin-Perez jest programistą Javy, konsultantem, autorem i mówcą z ponad 10-letnim doświadczeniem w różnych branżach, od finansów, przez działalność wydawniczą, po sektor publiczny. Po ukończeniu informatyki na Uniwersytecie w Walencji (Hiszpania), Abraham przeniósł się do Londynu, gdzie uzyskał licencjat z telekomunikacji oraz zaczął pracować w J.P. Morgan. Po trzech latach działalności w finansach, przez kolejne trzy lata zajmował się zakładami bukmacherskimi online, a następnie został niezależnym przedsiębiorcą. Abraham bardzo skorzystał z londyńskiej społeczności programistów, więc postanowił odpłacić się i podzielić się swoim doświadczeniem, zostając redaktorem wiadomości dotyczących Javy w InfoQ, przemawiając na konferencjach takich jak Devoxx czy CodeOne (wcześniej znanej jako JavaOne). Jest autorem Real-World Maintainable Software (O’Reilly) i współautorem Continuous Delivery in Java (O’Reilly). Abraham nie porzuca nigdy nauki i  obecnie studiuje fizykę. Pomaga również w prowadzeniu London Java Community oraz udziela porad zawodowych w grupie Meet a Mentor.

Restaurator kodu, s. 27

Adam Bien

Adam Bien (adambien.blog) jest programistą, konsultantem, autorem, podcasterem i entuzjastą języka Java. Używa Javy od JDK 1.0 oraz JavaScriptu od czasu LiveScript i nadal lubi pisać kod. Na lotnisku w Monachium regularnie organizuje warsztaty Java EE, WebStandards i JavaScript (airhacks.com) oraz prowadzi comiesięczne pokazy na żywo z pytaniami i odpowiedziami na airhacks.tv.

Postępuj zgodnie z nudnymi standardami, s. 52

Alexey Soshin

Alexey Soshin jest architektem oprogramowania z 15-letnim doświadczeniem w branży. Jest autorem książki Hands-On Design Patterns with Kotlin (Packt Publishing) oraz kursu wideo Web Development with Kotlin. Alexey jest entuzjastą Kotlina i Vert.x oraz doświadczonym mówcą konferencyjnym.

CountDownLatch – przyjaciel czy wróg?, s. 31

A. Mahdy AbdelAziz

A. Mahdy AbdelAziz jest trenerem technicznym i prezenterem publicznym. Ma ponad 12-letnie doświadczenie w branży oprogramowania, w tym pracował w Google, Oracle i w trzech startupach. A. Mahdy jest współzałożycielem @ExtraVerd i interesuje się nowoczesnymi technologiami takimi jak PWA, offline-first design, uczeniem maszynowym i CloudStack. Jeśli akurat nie mówi do mikrofonu ani nie siedzi w samolocie, można go spotkać grającego w koszykówkę. Znajdź go na Twitterze jako @__amahdy lub na GitHubie jako @amahdy.

Zdarzenia między komponentami Javy, s. 46

Anders Noras

Anders, z wykształcenia artysta i projektant, spędził ostatnie 20 lat na pisaniu kodu. Obecnie pracuje dla Itera jako naczelny dyrektor techniczny. Wygłosił liczne prelekcje i przemówienia na konferencjach, takich jak JavaZone, NDC, J-Fall, Oredev i wielu innych. Wygłosił ponad 100 wykładów konferencyjnych dla różnych odbiorców, w tym dla mediów, projektantów i hardcorowych informatyków. Jest znany ze swoich energicznych i bardzo angażujących prezentacji. To jego drugi udział w serii 97 Rzeczy.

Wszystko, czego potrzebujesz, to Java, s. 1

Angie Jones

Angie Jones zajmuje stanowisko senior developer advocate i specjalizuje się w strategiach oraz technikach automatyzacji testów. Dzieli się swoją bogatą wiedzą, przemawiając i ucząc na konferencjach poświęconych oprogramowaniu na całym świecie, pisząc samouczki i artykuły techniczne na angiejones.tech oraz prowadząc internetową platformę edukacyjną Test Automation University. Jako Master Inventor, Angie znana jest ze swojego innowacyjnego i nieszablonowego stylu myślenia, który zaowo-

cował ponad 25 opatentowanymi wynalazkami w Stanach Zjednoczonych i Chinach. W wolnym czasie Angie pracuje jako wolontariuszka z Black Girls Code, aby w trakcie warsztatów uczyć młode dziewczęta kodowania, starając się przyciągnąć więcej kobiet i mniejszości do nowoczesnych technologii.

Używanie zasad obiektowych w kodzie testów, s. 194

Ben Evans

Ben Evans jest głównym inżynierem i architektem technologii JVM w New Relic. Przed dołączeniem do New Relic, Ben był współzałożycielem jClarity (przejęte przez Microsoft) i głównym architektem (Listed Derivatives) w Deutsche Banku. Ben jest autorem książek The Well-Grounded Java Developer (Manning Publications), Java: The Legend (O’Reilly), Optimizing Java (O’Reilly) i ostatnich wydań Java in a Nutshell (O’Reilly). Jest liderem w dziedzinie Javy/JVM w InfoQ, regularnie pisze do wydawnictw branżowych oraz jest częstym mówcą na konferencjach technicznych na całym świecie. Ben od ponad 20 lat zajmuje się darmowym i otwartym oprogramowaniem, był współzałożycielem inicjatywy AdoptOpenJDK (wraz z Martijnem Verburgiem) i przez sześć lat był członkiem Executive Committee JCP.

Java to dziecko lat dziewięćdziesiątych, s. 82

Nieokreślone typy Javy, s. 88

Benjamin Muschko

Benjamin Muschko jest inżynierem oprogramowania oraz konsultantem i trenerem z ponad 15-letnim doświadczeniem w branży. Pasjonuje się automatyzacją projektów, testowaniem i ciągłym dostarczaniem. Ben często przemawia na konferencjach i jest zagorzałym zwolennikiem oprogramowania open source. Projekty oprogramowania czasami przypominają mu wspinaczkę na górę. W wolnym czasie Ben uwielbia wędrować po „czternastkach” (szczyty powyżej 14000 stóp) Colorado i lubi podbijać długodystansowe szlaki.

„Ale u mnie to działa!”, s. 23

Benjamin Muskalla

Benjamin Muskalla („Benny”, @bmuskalla) przez ostatnie 12 lat realizuje pasją tworzenia narzędzi zwiększających produktywność programistów. Miał aktywny udział w tworzeniu znanego na całym świecie Eclipse IDE. Przez lata spędził dużo czasu na tworzeniu narzędzi, frameworków i stylów testowania, aby pomóc swoim rówieśnikom stać

autorach i redaktorach

się bardziej skutecznymi. Bliskie jest mu projektowanie TDD oraz API, podobnie jak praca nad oprogramowaniem open source. Benny obecnie pracuje dla Cradle Inc. nad narzędziem Cradle Build Tool.

Refaktoryzacja w kierunku szybkiego czytania, s. 153

Billy Korando

Billy Korando zajmuje stanowisko developer advocate w IBM i ma już ponad dziesięcioletnie doświadczenie. Pasją Billy’ego jest pomaganie programistom za pomocą automatyzacji i dobrych praktyk zarządczych w znajdowaniu sposobów na ograniczenie marnotrawstwa zdolności umysłowych wynikających ze żmudnej pracy, takiej jak inicjowanie projektów, wdrażanie, testowanie i walidacja itd. Poza pracą Billy lubi podróżować, grać w piłkę i kibicować Kansas City Chiefs. Billy jest także współorganizatorem Kansas City Java Users Group. Poprawa powtarzalności i audytowalności dzięki ciągłemu dostarczaniu, s. 70

Brian Vermeer

Brian Vermeer zajmuje stanowisko developer advocate w firmie Snyk i jest inżynierem z ponad 10-letnim praktycznym doświadczeniem w tworzeniu i utrzymywaniu oprogramowania. Pasjonuje się Javą, (czystym) programowaniem funkcjonalnym i cyberbezpieczeństwem.

Brian ma tytuł Oracle Groundbreaker Ambassador; jest także współprzewodniczącym Utrecht JUG, organizatorem Virtual JUG i współprowadzącym w MyDevSecOps. Jest regularnym międzynarodowym prelegentem na konferencjach związanych głównie z Javą, takich jak JavaOne, Devoxx, Devnexus, Jfokus, JavaZone i wielu innych. Poza tym Brian jest rezerwistą Królewskich Holenderskich Sił Powietrznych i mistrzem/nauczycielem taekwondo.

Dbaj o swoje zależności, s. 160

Burk Hufnagel

Burk Hufnagel jest programistą i architektem rozwiązań w Daugherty Business Solutions, gdzie koncentruje się na znajdowaniu sposobów na szybsze dostarczanie lepszego kodu oraz uczeniu innych, jak robić to samo. Jest członkiem zarządu Atlanta Java User Group i pomaga w prowadzeniu konferencji Devnexus. Prowadził prezentacje na spotkaniach grup użytkowników i konferencjach technicznych, w tym Connect.Tech,

Devnexus, JavaOne i Oracle Code One. W 2010 roku Burk uzyskał tytuł JavaOne Rock Star. Jako autor, Burk napisał wiele artykułów do książek 97 Things Every Software Architect Should Know i 97 Things Every Programmer Should Know (O’Reilly). Był również recenzentem technicznym kilku książek, w tym Head First Software Development (O’Reilly) oraz Sun Certified Programmer for Java Study Guide (McGraw-Hill) autorstwa Kathy Sierra i Berta Bates, za które otrzymał niecodzienny komplement: „Burk poprawił więcej naszego kodu, niż chcielibyśmy się do tego przyznać”.

Dostarczaj szybciej lepsze oprogramowanie, s. 35

Carlos Obregón

Carlos Obregón zajmuje się tworzeniem oprogramowania od 2008 roku. Ponieważ zawsze jego pasją było dzielenie się wiedzą, założył w Bogocie Java User Group, obecnie nazywaną Bogota JVM, gdzie wygłaszał prelekcje głównie na temat dobrych praktyk w tym języku. Oprócz tworzenia oprogramowania, koordynuje bootcampy związane z tematyką tworzenia stron internetowych. Najpierw zaczął flirtować z C++, ale zanim ukończył uniwersytet, znalazł prawdziwą miłość w Javie. Po kilku latach próbował randkować z innymi językami JVM, ale stwierdził, że żaden inny język nie daje mu tyle radości co Java. Oprócz programowania uwielbia spędzać czas z rodziną i przyjaciółmi, grając w gry planszowe i gry wideo. Próbuje też czytać przynajmniej jedną książkę miesięcznie, głównie książki techniczne, ale także i literaturę. Nic nie jest dla niego ważniejsze niż Lina, Mariajose i Evie – jego żona, córka i pies.

Jak unikać null, s. 66

Chris O’Dell

Chris O’Dell spędziła prawie 15 lat jako inżynier backendu, głównie zajmując się technologiami Microsoftu, ale ostatnio korzystała z Go na dużej platformie mikroserwisowej. Kierowała zespołami dostarczającymi webowe API o wysokiej dostępności, systemy rozproszone i usługi w chmurze. Kierowała również zespołami opracowującymi wewnętrzne narzędzia do budowania i wdrażania, których celem było zwiększanie doświadczenia programistów. Obecnie Chris pracuje w Monzo, pomagając budować przyszłość bankowości. Chris regularnie występuje na konferencjach, gdzie mówi na temat ciągłego dostarczania i praktyk rozwojowych. Jest współautorką książek Build Quality In (Leanpub) oraz Continuous Delivery with Windows and .NET (O’Reilly).

Częste wydania zmniejszają ryzyko, s. 54

i redaktorach

Christin Gorman

Christin Gorman od 20 lat zajmuje się profesjonalnym pisaniem oprogramowania i zdobyła doświadczenie we wszystkim, począwszy od startupów aż po duże przedsiębiorstwa, zawsze pisząc kod w sposób praktyczny. Najbardziej znana jest ze swojego entuzjastycznego stylu wystąpień publicznych i blogowania o oprogramowaniu. Jej wspólnym motywem przewodnim jest znaczenie zaangażowania programistów w tworzone przez nich oprogramowanie. Twórcy oprogramowania są tragicznie niewykorzystywani –skazani na wybieranie pojedynczych zadań z tablicy, którą ktoś inny utworzył, skazani na pisanie kodu w stylach, językach i frameworkach, co do których nie mieli wyboru, oraz na brak możliwości spotykania użytkowników końcowych ich oprogramowania. Christin jest pasjonatką większego zaangażowania programistów, uwolnienia ich potencjału i sprawienia, by dbali o każdy aspekt tego, nad czym pracują, nie tylko po to, aby mieli więcej radości z pracy, ale co ważniejsze, aby produkty, które tworzą, były bardziej przydatne. Christin pracuje obecnie w norweskiej firmie doradczej Kodemaker. Czy wiesz, która jest godzina?, s. 37

Colin Vipurs

Colin Vipurs właśnie obchodził dwudzieste pierwsze urodziny jako programista. Dużo czas spędził w Wielkiej Brytanii, gdzie pracował w finansach, prasie, muzyce i lotnictwie, a obecnie pracuje w Masabi, w obszarze transportu publicznego. Kiedyś dużo zajmował się C/Perlem, potem przerzucił się na Javę, trochę parał się Scalą, a teraz pełnoetatowo zajmuje się głównie Kotlinem. Kiedyś napisał książkę, a także wygłasza przemówienia na konferencjach. Jego pasje to TDD/BDD, budowanie skalowalnych systemów o wysokiej wydajności oraz jedzenie.

Dlaczego nie traktuję certyfikatów poważnie, s. 201

Daniel Bryant

Daniel Bryant pracuje jako architekt produktów w Datawire, jest menedżerem w InfoQ oraz przewodniczącym QCon London. Jego obecna wiedza techniczna koncentruje się na narzędziach „DevOps”, platformach chmurowych/kontenerowych oraz wdrożeniach mikroserwisów. Daniel ma tytuł Java Champion i jest liderem London Java Community (LJC). Bierze udział w kilku projektach open source, pisze dla znanych serwisów technicznych, takich jak InfoQ, O’Reilly i DZone, oraz regularnie występuje na międzynarodowych konferencjach, takich jak QCon, JavaOne i Devoxx.

Korzyści z kodyfikowania i zapewniania jakości architektonicznej, s. 14

Argumenty przeciw fat JAR-om, s. 25

Daniel Hinojosa

Daniel Hinojosa jest programistą, konsultantem, instruktorem, prelegentem i autorem. Mając ponad 20-letnie doświadczenie, pracuje dla instytucji prywatnych, edukacyjnych i rządowych. Daniel uwielbia języki JVM, takie jak Java, Groovy i Scala, ale pracuje również z językami spoza JVM, takimi jak Haskell, Ruby, Python, LISP, C i C++. Jest zapalonym praktykiem Pomodoro Technique i każdego roku podejmuje próby nauki nowego języka programowania. Daniel jest autorem książki Testing in Scala (O’Reilly) oraz jednego z serii filmów Beginning Scala Programming stworzonych dla O’Reilly Media. W czasie wolnym lubi czytanie, pływanie, Lego, piłkę nożną i gotowanie.

Poznaj twą flatMap, s. 96

Dave Farley

Dave Farley jest liderem merytorycznym w zakresie ciągłego dostarczania. Jest współautorem książki Continuous Delivery (Addison-Wesley), która zdobyła nagrodę Jolt Award, stałym prelegentem konferencyjnym i blogerem, jednym z autorów Reactive Manifesto i twórcą sposobu myślenia BDD (behawior-driven development). Dave bawi się komputerami od ponad 35 lat, pracował z większością typów oprogramowania, a także z firmware, aplikacjami komercyjnymi i systemami transakcyjnymi, w których wymagane są małe opóźnienia. Ponad 30 lat temu rozpoczął pracę z wielkoskalowymi systemami rozproszonymi, badając rozwój luźno powiązanych systemów wykorzystujących komunikaty – prekursorów mikroserwisów. Dave jest byłym dyrektorem ds. innowacji w Thought Works i szefem rozwoju oprogramowania w LMAX Ltd. – firmy znanej z doskonałości swojego kodu i wzorowego charakteru procesu rozwoju, w której stworzono OSS Disruptor. Dave jest teraz niezależnym konsultantem oraz założycielem i dyrektorem Continuous Delivery Ltd.

Potraktuj poważnie „separację zagadnień”, s. 162

Programowanie sterowane testami, s. 166

Napisz „czytelny kod”, s. 205

David Delabassee jest zaangażowany w ekosystem Javy od ponad dwóch dekad. Żyje i oddycha Javą! Obecnie pracuje jako developer advocate w Java Platform Group w Oracle. Przez lata szeroko promował Javę na całym świecie, prezentując ją na konferencjach i grupach użytkowników. David jest autorem wielu artykułów technicznych i szkoleń, a od czasu do czasu bloguje na stronie delabassee.com. W wolnym czasie aktywnie

działa w wielu organizacjach non-profit zajmujących się poprawą praw osób niepełnosprawnych. Jest także działaczem na rzecz dostępności. David mieszka w Belgii, gdzie lubi grać w gry wideo z Lylou, swoją uroczą (ale trudną do pokonania) córką.

Uważaj na otoczenie swojego kontenera, s. 7

Dawn i David Griffiths

Dawn i David Griffiths są autorami Head First Kotlin i Head First Android Development (O’Reilly). Napisali również inne książki z serii Head First i opracowali animowany kurs wideo The Agile Sketchpad jako sposób na nauczanie kluczowych pojęć i technik w sposób, który pobudza aktywność i zaangażowanie mózgu.

Myślenie w koprocedurach, s. 172

Dean Wampler

Dean Wampler (@deanwampler) jest ekspertem w dziedzinie systemów streamingowych, skoncentrowanym na ML/AI. Jest szefem zespołu Developer Relations w Anyscale.io, która rozwija Ray dla rozproszonego Pythona. Wcześniej był dyrektorem technicznym w Lightbend, gdzie kierował rozwojem Lightbend Cloudflow – zintegrowanym systemem dla aplikacji streamingowych współdziającym z popularnymi narzędziami open source. Dean pisał książki dla O’Reilly i brał udział w kilku projektach open source. Jest częstym prelegentem na konferencjach oraz szkoleniowcem, a także współorganizatorem kilku konferencji i grup użytkowników w Chicago. Dean ma doktorat z fizyki na University of Washington.

Przyjmij myślenie z SQL-a, s. 44

Donald Raab

Donald Raab ma ponad 18-letnie doświadczenie jako inżynier oprogramowania w branży usług finansowych. W Javie zaczął programować w 1997 roku i przez lata programował w ponad 20 językach. Jest członkiem grupy ekspertów JSR 335, a także twórcą Eclipse Collections Java Library, która pierwotnie została udostępniona w 2012 r. jako GS Collections, a następnie zmigrowana do Eclipse Foundation w 2015 r. W 2018 roku Donald zdobył tytuł Java Champion. Jest częstym prelegentem i gościnnym szkoleniowcem na kluczowych konferencjach i spotkaniach grup użytkowników związanych z Javą, w tym Oracle CodeOne, JavaOne, QCon New York, Devnexus, Devoxx US, EclipseCon, JVM Language Summit i Great Indian Developer Summit (GIDS).

Nauka kata i kata do nauki, s. 106

Edson Yanaga

Edson Yanaga pełni funkcję dyrektora ds. doświadczeń deweloperów w firmie Red Hat, ma tytuł Java Champion oraz MVP Microsoftu. Jest także autorem publikacji i częstym prelegentem na międzynarodowych konferencjach, gdzie omawia Javę, mikroserwisy, przetwarzanie w chmurze, DevOps i rzemiosło związane z oprogramowaniem.

Yanaga uważa się za rzemieślnika oprogramowania i jest przekonany, że wszyscy możemy stworzyć lepszy świat dla ludzi za pomocą lepszego oprogramowania. Celem jego życia jest dostarczanie i pomaganie programistom na całym świecie w szybszym i bezpieczniejszym dostarczaniu lepszego oprogramowania – i może nawet nazwać to pracą!

Zachowanie jest „łatwe”, a stan jest trudny, s. 9

Emily Bache

Emily Bache jest technicznym trenerem agile w ProAgile. Pomaga zespołom ulepszać sposób wspólnego pisania kodu i uczy programowania sterowanego testami. Emily mieszka w Göteborgu w Szwecji, ale pochodzi z Wielkiej Brytanii. Jest autorką The Coding Dojo Hand book (publikacja własna) i często przemawia na międzynarodowych konferencjach.

Użyj pokrycia, aby ulepszyć swoje testy jednostkowe, s. 187

Testowanie zatwierdzające, s. 3

Emily Jiang

Emily Jiang ma tytuł Java Champion. Jest także Liberty Microservices Architect and Advocate oraz STSM w IBM w laboratorium Hursley Lab w Wielkiej Brytanii. Emily jest guru w zakresie MicroProfile i pracuje nad nim od 2016 roku. Kieruje specyfikacjami MicroProfile Config, Fault Tolerance i Service Mesh. Jest również członkiem Grupy Ekspertów CDI. Emily jest pasjonatką języka Java, MicroProfile i Jakarta EE. Regularnie przemawia na konferencjach, takich jak QCon, Code One, Devoxx, Dev-nexus, JAX, Voxxed, EclipseCon, GeeCON, JFokus i nie tylko. Możesz ją znaleźć na Twitterze jako @emilyfhjiang i w LinkedIn.

Uczyń kod prostym i czytelnym, s. 118

O autorach i redaktorach

Gail

C. Anderson

Gail C. Anderson ma tytuł Java Champion, Oracle Groundbreaker Ambassador i jest byłym członkiem NetBeans Dream Team. Jest dyrektorem ds. badań i członkiem założycielem Anderson Software Group, wiodącego dostawcy kursów szkoleniowych z zakresu Javy, JavaFX, Pythona, Go, Modern C++ i innych języków programowania.

Gail lubi badać i pisać o wiodących technologiach Javy. Jej obecna pasja to JavaFX z GraalVM dla wieloplatformowych aplikacji mobilnych. Jest współautorką ośmiu podręczników z zakresu programowania. Ostatnio była współtwórcą The Definitive Guide to Modern Java Clients with JavaFX: Cross-Platform Mobile and Cloud Development (Apress). Gail przedstawiała prezentacje na różnych światowych konferencjach dotyczących Javy i JUGS, w tym Devoxx, Devnexus, JCrete i Oracle Code/ JavaOne. Twitter: @gail_asgteach. Strona internetowa: asgteach.com.

Naucz się korzystać z nowych funkcji Javy, s. 111

Dr Gail Ollis

Dr Gail Ollis programuje, odkąd nauczyła się języka BASIC na jednym ze szkolnych komputerów znajdujących się w magazynie przyborów matematycznych. Wiele języków programowania później, jej kariera obejmowała tworzenie profesjonalnego oprogramowania, badania nad psychologią tworzenia oprogramowania oraz wykłady dla studentów studiów licencjackich i magisterskich z zakresu programowania i cyberpsychologii. Jej pasją jest pomaganie ludziom w lepszym programowaniu w szerokim zakresie jej doświadczeń: od korepetycji z informatyki i coachingu dla początkujących programistów, po prowadzenie badań akademickich związanych z branżą w celu rozwijania praktycznego wsparcia dla cyberbezpieczeństwa w tworzeniu profesjonalnego oprogramowania.

Nie ukrywaj swoich narzędzi, s. 39

Heather VanCura

Heather VanCura jest dyrektorką i przewodniczącą programu Java Community Process (JCP). W ramach swoich obowiązków odpowiada za kierowanie społecznością. Jest także międzynarodowym mówcą, mentorem i liderem hackatonów. VanCura nadzoruje prace Komitetu Wykonawczego JCP, stronę internetową JCP.org, zarządzanie JSR, budowanie społeczności, wydarzenia, komunikację i wzrost liczby członków. Jest także współtwórcą i liderem prowadzonych przez społeczność programów przyjmowania grup użytkowników. W JSR jest jednym z liderów w ramach JCP.

Next, mającego na celu rozwój samego programu JCP. Heather mieszka w Bay Area w Kalifornii, pasjonuje się językiem Java i społecznościami programistów, a w wolnym czasie lubi próbować nowe sporty i zajęcia fitness. Można ją znaleźć na Twitterze: @heathervc.

Czym jest program JCP i jak w nim uczestniczyć, s. 199

Dr Heinz M. Kabutz

Dr Heinz M. Kabutz jest autorem lekko zabawnego i dość przydatnego newslettera #Java Specialists, który można znaleźć pod adresem javaspecialists.eu. Można się z nim skontaktować pod adresem heinz@ javaspecialists.eu

Czytaj OpenJDK codziennie, s. 143

Holly Cummins

Holly Cummins jest pracownikiem IBM i kieruje społecznością programistów w IBM Garage. Jako część Garage, Holly wykorzystuje technologię, aby umożliwić wprowadzanie innowacji klientom z różnych branż, od bankowości, przez catering, handel detaliczny po organizacje pozarządowe. Prowadziła projekty polegające na liczeniu ryb przy użyciu sztucznej inteligencji, pomaganiu niewidomemu atlecie w przebyciu ultramaratonów na pustyni w pojedynkę, poprawie opieki zdrowotnej dla osób starszych i zmianie sposobu działania miejskiego parkingu. Holly posiada także tytuły Oracle Java Championship, IBM Q Ambassador i JavaOne Rock Star. Przed dołączeniem do IBM Garage była kierownikiem dostaw w WebSphere Liberty Profile (obecnie Open Liberty). Holly jest współautorką Enterprise OSGi in Action (Manning) i nadal z przyjemnością wyjaśnia, dlaczego OSGi jest świetne. Przed dołączeniem do IBM Holly zdobyła tytuł doktora filozofii w dziedzinie obliczeń kwantowych. Holly jest dobrze zorganizowana ze swoim wełnianymi szalikami (jeszcze ani jednego nie zgubiła), natomiast regularnie gubi płaszcze zimowe (brrr).

Odśmiecanie pamięci jest twoim przyjacielem, s. 60 Java powinna być przyjemna, s. 86

Ian E Darwin od wieków pracował w branży komputerowej nad systemami niemal każdego rozmiaru, kształtu i dla każdego systemu operacyjnego. Koduje w wielu językach, w tym w Javie, Pythonie, Dart/ Flutter i skryptach shellowych, a także wniósł wkład do OpenBSD,

O autorach i redaktorach

Linuksa i innych projektów. Pracował w University Health Network w Toronto, gdzie stworzył pierwszą androidową wersję Medly, ratującej życie aplikacji typu mHealth. Najbardziej znany z Java Cookbook i Android Cookbook (O’Reilly), napisał i prowadził kursy Uniksa i Javy dla Learning Tree oraz kursy licencjackie z Uniksa i C na University of Toronto. Ian pisze także o podróżach, samochodach elektrycznych, literaturze średniowiecznej i wszelkich innych „gładszych kamyczkach lub ładniejszych muszlach niż te zwykłe”, na które natrafia nad brzegiem morza. Możesz znaleźć go na darwinsys.com lub na Twitterze jako @Ian_Darwin.

Wyjdź poza piaskownicę Javy, s. 170

Ixchel Ruiz

Ixchel Ruiz tworzy aplikacje i narzędzia od 2000 roku. Jej zainteresowania badawcze obejmują Javę, języki dynamiczne, technologie po stronie klienta i testowanie. Ma tytuł Java Championship, Groundbreaker Ambassador; jest także entuzjastką Hackergarten, zwolenniczką oprogramowania open source, liderką JUG, oratorką i mentorką.

Buduj zróżnicowane zespoły, s. 19

James Elliot

James Elliott jest starszym inżynierem oprogramowania w firmie Singlewire w Madison w stanie Wisconsin, z 30-letnim doświadczeniem zawodowym jako programista systemów. Uwielbia wszystko, od asemblera 6502 po Javę i jest zachwycony, że aktualnie pracuje w Clojure, zarówno w pracy, jak i przy swoich pobocznych projektach takich jako Deep Symmetry. Od czasu do czasu jest DJ-em i produkuje muzyczne programy ze swoim partnerem, Chrisem. James jest autorem i współautorem kilku książek i zaktualizowanych wydań dla O’Reilly, a także lubi być mentorem dla nowych pokoleń programistów w ciągle zmieniającym się (ale zasadniczo ponadczasowym) świecie oprogramowania.

Javadoc rozszerzony przez AsciiDoc, s. 5

Odkryj JVM na nowo dzięki Clojure, s. 149

Jannah Patchay

Jannah Patchay jest uznaną w branży ekspertką i konsultantką w sektorze rynków finansowych, specjalizującą się w innowacjach na rynkach finansowych oraz pomaganiu firmom w definiowaniu, rozwijaniu i realizacji ich strategii handlowych w ściśle regulowanym środowisku.

Jej szczególną pasją jest struktura rynku – uczestnicy rynków finansowych, ich interakcje i konsekwencje sposobów tych interakcji – oraz znajdowanie kreatywnych rozwiązań problemów związanych z dostępem do rynków i płynnością. Obejmuje to zarówno tradycyjne rynki finansowe i klasy aktywów, jak i wschodzącą dziedzinę rynków aktywów cyfrowych. Jannah jest także dyrektorką i ambasadorką prawniczą w London Blockchain Foundation, a także pisze na tematy związane z innowacjami finansowymi i technologicznymi dla magazynu Best Execution. Jannah ma licencjat z matematyki i informatyki Uniwersytecie w Kapsztadzie oraz LLM z międzynarodowego prawa bankowego i finansowego na Uniwersytecie w Liverpoolu.

Trzy cechy naprawdę, naprawdę dobrych programistów, s. 176

Jeanne Boyarsky

Jeanne Boyarsky ma tytuł Java Champion i mieszka w Nowym Jorku. Napisała pięć książek o certyfikacji Javy. Jeanne od 17 lat zarabia dzięki wykorzystaniu Javy. Jest wolontariuszką w coderanch.com oraz w zespole robotyki FIRST. Jeanne regularnie przemawia na konferencjach oraz ma tytuł Distinguished Toastmaster, który wymagał wygłoszenia ponad 50 przemówień.

Podziel problemy i zadania na małe kawałki, s. 17

Jest ukończone, ale..., s. 78

Poznaj idiomy Javy i umieść je pamięci podręcznej swojego umysłu, s. 104

Jenn Strater

Jenn Strater jest długoletnim członkiem społeczności Groovy i menedżerem Groovy Community. Wniosła istotny wkład do różnych projektów open source, w tym CodeNarc, Gradle, Groovy i Spring REST Docs. Jako konferencyjna prelegentka, Jenn prowadziła prezentacje na takich imprezach, jak Devoxx Belgium, Grace Hopper Celebration of Women in Computing, Spring-One Platform oraz O’Reilly Velocity Conference. W 2013 roku założyła organizację GR8Ladies (obecnie GR8DI), przez którą prowadzi mentoring studentów i młodszych programistów. Jest absolwentką Hamilton College w Clinton w stanie Nowy Jork i była stypendystką Fulbrighta w latach 2016–2017. Obecnie mieszka w Twin Cities.

Procesy budowania nie muszą być powolne ani zawodne, s. 21

Zbuduj tylko te fragmenty, które się zmieniają, a resztę wykorzystuj ponownie, s. 130

Projekty open source nie są magiczne, s. 132

O autorach i redaktorach

Jennifer Reif

Jennifer Reif jest zapaloną programistką i lubi rozwiązywać problemy. Brała udział w projektach zarówno dla społeczności deweloperów, jak i dużych firm, organizując i nadając sens rozległym zbiorom danych i wykorzystując je w celu uzyskania maksymalnej wartości. Pracowała z różnymi narzędziami komercyjnymi i open source, lubi uczyć się nowych technologii, czasami nawet każdego dnia! Nauka i pisanie kodu to podstawowe elementy jej codziennych zajęć. Lubi tworzyć treści, którymi może się podzielić z innymi. Często obejmuje to wystąpienia na konferencjach i wydarzeniach dla programistów, a także pisanie. Jej pasją jest szukanie sposobów na uporządkowanie chaosu i skuteczniejsze dostarczanie oprogramowania. Inne jej zainteresowania to koty, rodzinne podróże, piesze wycieczki, czytanie, pieczenie i jazda konna.

W wojnach językowych Java nie daje za wygraną, s. 72

Jessica Kerr jest symmatyczką2 w zakresie kodu. Wierzy w systemy uczenia się złożone z części edukacyjnych: entuzjastycznych ludzi i rozwijającego się oprogramowania. W ciągu 20 lat profesjonalnego tworzenia oprogramowania pracowała w językach od Javy po Scala i Clojure, od Ruby po Elixir i Elm, od Bash po TypeScript i PowerShell. Podczas swojej wieloletniej pracy jako koordynatorka konferencji i prelegentka mówiła o tym wszystkim, a także poruszała głębsze tematy związane z rozwojem oprogramowania. Inspiruje ją inżynieria odporności, myślenie systemowe i sztuka. Uwielbia pomagać programistom, automatyzować nudne elementy naszej pracy oraz wprowadzać więcej kreatywności w pozostałych. Posłuchaj jej nauk na Twitterze (@jessitron), zobacz programowanie na żywo na Twitchu (jessitronica) oraz przeczytaj teksty na blog.jessitron.com. W swoim domu w St. Louis (Missouri) wychowuje dwoje młodych, nieprzewidywalnych ludzi.

Od łamigłówek do produktów, s. 56

Josh Long (@starbuxman) jest inżynierem z wieloletnim doświadczeniem w pisaniu kodu. Jest także pierwszą osobą będącą Spring Developer Advocate. Ponadto ma tytuł Java Champion, jest autorem książek (w tym Cloud Native Java: Designing Resilient Systems with Spring Boot, Spring Cloud and Cloud Foundry wydanej przez O’Reilly oraz samodzielnie opublikowanej Reactive Spring) oraz wielu komercyjnych szkoleń

2 Od ang. sim-MATH-uh-sist – aktywny uczestnik symmatezy (przyp. red.).

Jessica Kerr
Josh Long

wideo (w tym Building Microservices with Spring Boot Livelessons z współtwórcą Spring Boot – Philem Webbem). Josh jest częstym gościem na konferencjach, przemawiającym w setkach miast na całym świecie, na każdym kontynencie (z wyjątkiem Antarktydy). Josh uwielbia pisać kod. Jest współtwórcą oprogramowania (Spring Framework, Spring Boot, Spring Integration, Spring Cloud, Activiti, Vaadin, MyBatis itp.), podcasterem (A Bootiful Podcast) i YouTuberem (Spring Tips).

Produkcja to najszczęśliwsze miejsce na Ziemi, s. 139

Ken Kousen

Ken Kousen ma tytuł Java Champion, Oracle Groundbreaker Ambassador, Java RockStar i Grails Rock Star. Jest autorem książek Kotlin Cookbook, Modern Java Recipes i Cradle Recipes for Android (wydawnictwa O’Reilly) oraz książki Making Java Groovy (wydawnictwa Manning), a także kilku kursów wideo na platformie O’Reilly Learning Platform. Jest stałym prezenterem podczas trasy konferencyjnej No Fluff Just Stuff, a także przemawiał na wielu konferencjach na całym świecie. Przez swoją firmę Kousen IT Inc. nauczył tworzenia oprogramowania tysiące studentów i oraz już pracujących profesjonalistów.

Uczyń swoją Javę jeszcze bardziej odlotową, s. 120

Kenny Bastani

Kenny Bastani z Doliny Krzemowej jest zapalonym ewangelistą technologii i zwolennikiem oprogramowania open source. Jako konsultant ds. oprogramowania używał zróżnicowanego zestawu umiejętności potrzebnych w projektach wymagających od programistów znajomości frontendu i backendu z wykorzystaniem metodyki Agile. Jako zapalony bloger i współtwórca bezpłatnego oprogramowania Kenny angażuje społeczności pełnych pasji programistów, którzy chcą wykorzystywać nowe techniki przetwarzania grafów do analizy danych.

Kompromisy w architekturze mikroserwisowej, s. 178

Kevin Wittek

Kevin Wittek jest współzarządzającym Testcontainers i autorem Testcontainers-Spock, a także pasjonatem FLOSS i Linuksa. Otrzymał nagrodę Oracle Groundbreaker Ambassador za swój wkład w społeczność open source. Kevin należy do ruchu Software Craftsman i jest fanem testów. Z powodu Spocka zakochał się w TDD. Kevin wierzy w programowanie ekstremalne jako jedną z najlepszych metodologii Agile. Lubi pisać programy w Matlabie, aby wspierać swoją żonę w przeprowadzaniu behawioralnych

autorach i redaktorach

eksperymentów naukowych z gołębiami. Kevin gra na gitarze elektrycznej i w swoim drugim życiu jest muzykiem. Po wielu latach pracy w branży jako inżynier, Kevin robi obecnie doktorat w RWTH Aachen na temat weryfikacji Smart Contracts i kieruje Blockchain Research Lab w Institute for Internet Security w Gelsenkirchen na Westphalian University of Applied Sciences.

Odblokowywanie ukrytego potencjału testowania integracji przy użyciu kontenerów, s. 182

Kevlin Henney

Kevlin Henney (@KevlinHenney) jest niezależnym konsultantem, trenerem, koderem i pisarzem. Jego zainteresowania w programowaniu obejmują języki oraz praktykę, a także pomaganie jednostkom, zespołom i organizacjom w osiąganiu lepszych wyników. Ma głębokie zamiłowanie do programowania i języków, które – co bardzo go cieszy – sprawdzają się jako jego zawód przez ponad trzy dekady. Kevlin wygłosił przemówienia, przeprowadził szkolenia oraz warsztaty na setkach konferencji i spotkań na całym świecie. Był felietonistą w różnych magazynach, czasopismach i witrynach internetowych, współautorem oprogramowania o otwartym i zamkniętym kodzie źródłowym oraz członkiem tak dużej liczby grup, organizacji i komitetów, iż nie jest to prawdopodobnie zdrowe (stwierdził, iż „komitet jest jak ślepy zaułek, do którego pomysły są zwabiane, a następnie po cichu duszone”). Jest współautorem A Pattern Language for Distributed Computing oraz On Patterns and Pattern Languages, dwóch tomów z serii Pattern-Oriented Software Architecture (Wiley) oraz wydawcą 97 Things Every Programmer Should Know (O’Reilly).

Nazwij datę, s. 126

Program z dobrymi testami jednostkowymi, s. 141

Nie kontroluj swoich wyjątków, s. 180

Kirk Pepperdine

Kirk Pepperdine od ponad 20 lat zajmuje się optymalizacją wydajności aplikacji w Javie. Jest autorem oryginalnego Java Performance Tuning Workshop. W 2006 roku Kirk został mianowany Java Champion za swoje przemyślane przywództwo w dziedzinie wydajności Javy. Często przemawia na spotkaniach grup użytkowników oraz na konferencjach i wielokrotnie został nazywany JavaOne Rockstar. Jako współzałożyciel JCrete, antykonferencji dotyczącej Javy, która została wykorzystana jako wzorzec dla wielu innych antykonferencji w Europie, Azji i Ameryce Północnej, Kirk w dalszym ciągu zagorzale wspiera społeczność Javy. W 2019 roku startup Kirka, jClarity, został przejęty przez Microsoft, gdzie obecnie pracuje jako główny inżynier.

Hej Fred, możesz mi przekazać HashMap?, s. 64

Liz Keogh

Liz Keogh jest konsultantką Lean and Agile mieszkającą w Londynie. Jest znaną na całym świecie blogerką i prelegentką, ważnym członkiem społeczności BDD oraz zagorzałą zwolenniczką platformy Cynefin i jej zdolności do zmiany sposobów myślenia. Ma solidną wiedzę techniczną oraz 20-letnie doświadczenie w dostarczaniu wartości i szkoleniu w tym innych, od małych startupów po globalne przedsiębiorstwa. Większość jej działań skupia się teraz na Lean, Agile i transformacjach organizacji, a także na stosowaniu przejrzystości, pozytywnego języka, właściwym formułowaniu wyników i prowadzeniu bezpiecznych eksperymentów we wprowadzaniu zmian w spoób innowacyjny, łatwy i przyjemny.

Pętle informacji zwrotnych, s. 48

Maciej Walkowiak

Maciej Walkowiak jest niezależnym konsultantem ds. oprogramowania. Pomaga firmom w podejmowaniu decyzji architektonicznych oraz projektowaniu i rozwijaniu systemów opartych głównie na stosie Springa. Aktywny członek społeczności Spring, był współpracownikiem w kilku projektach w Springu. W ostatnich latach coraz bardziej pasjonuje go nauczanie i dzielenie się wiedzą. Maciej prowadzi kanał na YouTube (Spring Academy), przemawia na konferencjach i spędza zbyt dużo czasu na Twitterze.

„Full stack developer” to sposób myślenia, s. 58

Mala Gupta

Mala Gupta zajmuje stanowisko developer advocate w JetBrains oraz jest założycielką i główną mentorką w ejavaGuru.com, prowadząc szkolenia dla osób aspirujących do przejścia ścieżki Java Certification. Jako Java Champion, przez swoje książki, kursy, wykłady i wystąpienia, promuje naukę i wykorzystanie technologii związanych z Javą na różnych platformach. Jest głęboko przekonana o równości obowiązków i szans dla wszystkich. Ma ponad 19-letnie doświadczenie w branży oprogramowania jako autorka, prelegentka, mentorka, konsultantka, liderka technologiczna i programistka. Jest autorką w Manning Publications, a jej książki dotyczące Javy są najwyżej oceniane pod kątem Oracle Certification na całym świecie. Jest częstą prelegentką na konferencjach branżowych oraz współprowadzącą Java User Group-Delhi. Jest silną zwolenniczką Women in Technology oraz kieruje inicjatywami Women Who Code, Delhi Chapter, mającymi na celu zwiększenie udziału kobiet w wykorzystaniu nowoczesnych technologii.

Certyfikacja w Javie: kamień probierczy technologii, s. 80

autorach i redaktorach

Marco Beelen

Marco Beelen jest rzemieślnikiem oprogramowania z pasją do tworzenia łatwego do utrzymania i czytelnego kodu. Jako programista Marco pracuje od 2005 roku. Wcześniej był administratorem systemu, co wpoiło w niego ważność obserwowalności systemów oprogramowania. Marco był gospodarzem różnych Code Retreats oraz spotkań, w tym miniserii poświęconej TDD. Marco jest żonaty i ma dwoje dzieci. Woli „wypić własnego szampana” niż „zjeść karmę swojego psa” (zwłaszcza, że lubi pić szampana). Można go znaleźć online jako @mcbeelen

Pakiet na funkcjonalność z domyślnym modyfikatorem dostępu, s. 137

Maria Arias de Reyna

Maria Arias de Reyna jest starszym inżynierem oprogramowania w Javie, entuzjastką geoprzestrzenności i zwolenniczką oprogramowania open source. Od 2004 r jest liderką społeczności i główną opiekunką kilku bezpłatnych i otwartych projektów. Maria obecnie pracuje w Red Hat, gdzie koncentruje się na Middleware oraz opiekuje się Apache Camel i Syndesis. Jest doświadczoną prelegentką. Między 2017 i 2019 Maria została wybrana na prezesa OSGeo, Open Source Geospatial Foundation, która służy jako parasol dla wielu najważniejszych programów związanych z danymi geoprzestrzennymi. Jest także feministką i aktywistką Women In Technology.

Młoda, stara i odśmiecacz, s. 207

Mario Fusco

Mario Fusco jest głównym inżynierem oprogramowania w firmie Red Hat i pracuje jako lider projektu Drools. Ma ogromne doświadczenie jako programista Javy, będąc zaangażowanym (i często liderem) w wielu dużych projektach w różnych branżach, od firm medialnych po sektor finansowy. Jego zainteresowania obejmują programowanie funkcyjne i DSL-e. Wykorzystując te dwie pasje, stworzył bibliotekę open source lambdaj w celu udostępnienia wewnętrznego DSL-a Javy do manipulowania kolekcjami i umożliwienia odrobiny programowania funkcyjnego w Javie. Ma tytuł Java Champion, jest koordynatorem JUG Milano, częstym prelegentem i współautorem książki Modern Java in Action wydanej przez wydawnictwo Manning.

Współbieżność w JVM, s. 29

Zawrzyjmy umowę: sztuka projektowania API w Javie, s. 116

Marit van Dijk

Marit van Dijk ma prawie 20-letnie doświadczenie w tworzeniu oprogramowania na różnych stanowiskach i w różnych firmach. Uwielbia tworzyć niesamowite oprogramowanie z niezwykłymi ludźmi. Jest głównym współtwórcą Cucumber, a także okazjonalnie współpracuje przy innych projektach. Lubi uczyć się nowych rzeczy, a także dzielić się wiedzą z zakresu programowania, automatyzacji testów, Cucumber/BDD i inżynierii oprogramowania. Występuje na międzynarodowych konferencjach, podczas webinariów, a także na podcastach. Bloguje na medium.com/ jako @mlvandijk. Marit jest obecnie zatrudniona jako inżynier oprogramowania w bol.com.

Użyj testowania, aby szybciej tworzyć lepsze oprogramowanie, s. 192

Mark Richards

Mark Richards jest doświadczonym, praktycznym architektem oprogramowania zajmującym się architekturą, projektowaniem i wdrażaniem architektur mikroserwisowych, architektur sterowanych zdarzeniami i systemów rozproszonych. W branży oprogramowania działa od 1983 roku i ma tytuł magistra informatyki. Mark jest założycielem DeveloperToArchitect.com, bezpłatnej strony internetowej poświęconej pomocy programistom w ich drodze do architektów oprogramowania. Jest także autorem i prelegentem konferencyjnym; przemawiał na setkach konferencji na całym świecie i stworzył wiele książek i filmów na temat mikroserwisów i architektury oprogramowania. Jego najnowszą książką jest Fundamentals of Software Architecture (O’Reilly).

Swobodnie używaj niestandardowych adnotacji tożsamościowych , s. 189

Michael Hunger

Michael Hunger od ponad 35 lat pasjonuje się tworzeniem oprogramowania, z czego 25 dotyczyło ekosystemu Javy. Przez ostatnie 10 lat pracował nad otwartą grafową bazą danych Neo4j, wypełniając wiele ról, a ostatnio kierując pracami Neo4j Labs. Jako opiekun społeczności i ekosystemu Neo4j, szczególnie lubi pracować nad projektami związanymi z grafami oraz z użytkownikami i współtwórcami. Jako programista, Michael stara się korzystać z wielu aspektów języków programowania, codziennie stara się poznawać nowe rzeczy, bierze udział w ekscytujących i ambitnych projektach open source oraz współtworzy i pisze książki oraz artykuły związane z oprogramowaniem.

O autorach i redaktorach

Michael pomagał organizować konferencje i przemawiał na wielu innych. Jego wysiłki sprawiły, że został przyjęty do programu Java Champions. Michael pomaga dzieciom w nauce programowania, prowadząc w lokalnych szkołach cotygodniowe lekcje programowania tylko dla dziewcząt.

Benchmarking jest trudny – pomaga w nim JMH, s. 11 Praca na najwyższych obrotach, s. 50

Mike Dunn

Mike Dunn jest głównym inżynierem zajmującym się rozwiązaniami mobilnymi i Androidem w O’Reilly Media. Jest uznanym członkiem społeczności AOSP i zaangażowanym współtwórcą otwartego ekosystemu Androida. Jest pierwotnym twórcą popularnej i długo już istniejącej biblioteki obrazów kafelkowych, Tile View. Mike jest także współautorem książki Native Mobile Development: A Cross-Reference for Android and iOS Native Development z Shaun Lewis (O’Reilly) oraz – wraz z Pierre-Olivierem Laurencem – Programming Android with Kotlin: Java to Kotlin by Example (O’Reilly), która ma się wkrótce ukazać. Jest współtwórcą biblioteki JavaScript Closure firmy Google oraz daje bezinteresowne wsparcie do różnych projektów – począwszy od bibliotek zarządzania kolorami przez umożliwiającego szybkie przeszukiwanie, stosującego szyfrowanie blokowe odtwarzacza multimedialnego nowej generacji ExoPlayer firmy Google, po kompaktowy mechanizm routingu PHP. Mike zajmuje się programowaniem zawodowo od prawie 20 lat i kontynuuje naukę informatyki w ramach studiów magisterskich na Georgia Institute of Technology. Na stronie Mike’a można znaleźć nieco starszych fragmentów kodu, projektów open source i klientów, a także jego blog.

Kotlin to jest coś, s. 101

Monica Beckwith

Monica Beckwith to Java Champion, First Lego League Coach i współautorka Java Performance Companion (Addison-Wesley). Jest samodzielną autorką nadchodzącej wersji Java 11 LTS+ – A Performance Perspective. Pasjonuje się wydajnością JVM w Microsofcie.

Programowanie w Javie z perspektywy wydajności JVM, s. 84

Nat Pryce

Nat Pryce programuje od <kaszlnięcie> lat, przy czym przez wiele z nich używał języka Java i/lub JVM. Pracował jako konsultant i architekt w różnych branżach oraz dostarczał systemy o krytycznym znaczeniu dla biznesu – począwszy od dedykowanych rozwiązań konsumenckich po duże farmy obliczeniowe wspierające globalny biznes. Jest regularnym prelegentem na konferencjach i jednym z autorów Growing Object-Oriented Software, Guided by Tests (Addison-Wesley), popularnej książki o projektowaniu obiektowym i TDD.

Nieuzasadniona skuteczność fuzz testingu, s. 184

Nicolai Parlog

Nicolai Parlog (aka nipafx) to Java Champion z pasją do nauki i dzielenia się. Robi to w postach na blogach, artykułach, biuletynach i książkach; w tweetach, repozytoriach, filmach i strumieniach; na konferencjach i szkoleniach wewnętrznych – więcej o tym wszystkim można znaleźć na nipafx.dev. Jest ponadto najbardziej znany ze swojej fryzury.

Rodzaje komentarzy, s. 94

Optional to monada łamiąca reguły, ale i dobry typ, s. 134

Dbaj o swoje deklaracje modułów, s. 158

Nikhil Nanivadekar

Nikhil Nanivadekar jest inicjatorem i liderem otwartego frameworka Eclipse Collections. Od 2012 roku pracuje w sektorze finansowym jako programista Javy. Zanim rozpoczął karierę programisty, Nikhil uzyskał tytuł licencjata w dziedzinie inżynierii mechanicznej na Uniwersytecie w Pune w Indiach oraz tytuł magistra w zakresie inżynierii mechanicznej ze specjalizacją w robotyce na Uniwersytecie w Utah. Nikhil w 2018 roku uzyskał tytuł Java Champion. Regularnie występuje na lokalnych i międzynarodowych cyklach szkoleniowych. Jest także zdecydowanym orędownikiem edukacji i mentoringu dzieci, a także prowadzi kilka warsztatów uczących dzieci robotyki podczas wydarzeń takich jak JCrete4Kids, JavaOne4Kids, OracleCodeOne4Kids i Devoxx4Kids. Nikhil lubi gotować z rodziną, wędrować po górach, jeździć na nartach, jeździć na motocyklu oraz współpracować z organizacjami zajmującymi się ratowaniem zwierząt i pomocą humanitarną.

Poznaj swoje kolekcje, s. 99

autorach i redaktorach

Patricia Aas

Patricia Aas jest doświadczoną programistką C++, która zaczynała jako programistka Javy. Pracowała nad dwiema przeglądarkami, Operą i Vivaldi oraz nad systemami teleobecności w Cisco. Niezwykle ciekawa osoba, zawsze podekscytowana uczeniem się nowych rzeczy. Obecnie pracuje jako konsultant i trener w firmie TurtleSec, której jest współzałożycielką, gdzie specjalizuje się w bezpieczeństwie aplikacji.

Myślenie wkomponowane, s. 74

Paul W. Homer jest profesjonalnym programistą od 30 lat. Tworzył komercyjne produkty dla finansów, marketingu, druku i opieki zdrowotnej, a ostatnie 15 lat spędził na blogowaniu o tym. W pewnym momencie zajmował się prawie każdym aspektem tworzenia oprogramowania, a także często był głównym programistą. Jego blog The Programmer’s Paradox jest próbą syntezy pewnego zdrowego rozsądku z tych różnorodnych doświadczeń. Omawia w nim najistotniejsze wzorce, które napotkał podczas przechodzenia między tymi różnymi organizacjami. Woli implementowanie algorytmów w backendzie, ale często nie odmówi sobie uczynienia w pełni dynamicznymi interfejsów dziedzinowych. Gdy nie siedzi w skomplikowanym kodzie, stara się spędzać czas na rozmowach z programistami i przedsiębiorcami o podstawach tworzenia oprogramowania.

Potrzeba technologii przemysłowych, s. 128

Peter Hilton

Peter Hilton jest menedżerem produktu, programistą, pisarzem, mówcą, trenerem i muzykiem. Jego zainteresowania zawodowe to zarządzanie produktami, automatyzacja przepływu pracy, funkcjonalne projektowanie oprogramowania, metody tworzenia oprogramowania z użyciem Agile oraz utrzymanie i dokumentowanie oprogramowania. Peter jest konsultantem dla firm programistycznych i zespołów programistycznych, a od czasu do czasu prowadzi prezentacje i warsztaty. Peter występował wcześniej na wielu europejskich konferencjach deweloperów i jest współautorem książki Play for Scala (Manning Publications). Prowadził kurs Fast Track to Play with Scala, a ostatnio także prowadzi własny kurs szkoleniowy How to Write Maintainable Code.

Popraw nazywanie rzeczy, s. 62

Refaktoryzuj wartości logiczne na wyliczenia, s. 151

Pisz jednozdaniowe komentarze, s. 203

Rafael Benevides

Rafael Benevides zajmuje stanowisko developer advocate związane z rozwiązaniami chmurowymi w Oracle. Dzięki wieloletniemu doświadczeniu w kilku dziedzinach branży IT pomaga programistom i firmom na całym świecie zwiększyć efektywność tworzenia oprogramowania. Rafael uważa się za osobę rozwiązującą problemy, która uwielbia się dzielić swoją wiedzą. Jest członkiem Apache DeltaSpike PMC, zdobywcą nagrody Duke’s Choice Award i jest prelegentem na konferencjach takich jak JavaOne, Devoxx, TDC, Devnexus i wielu innych. Na Twitterze jest jako @rafabene

Warto zajrzeć pod maskę, s. 145

Rod Hilton

Rod Hilton jest inżynierem oprogramowania w Twitterze pracującym w Scali i Javie. Bloguje o oprogramowaniu, technologii, a czasem Gwiezdnych wojnach na nomachetejuggling.com. Można go znaleźć na Twitterze jako @rodhilton

W twoim katalogu /bin są świetne narzędzia, s. 168

Dr Russel Winder

Dr Russel Winder najpierw był teoretycznym fizykiem zajmującym się cząstkami o wysokiej energii, a następnie przekwalifikował się na programistę systemów uniksowych. Doprowadziło to do tego, że został akademikiem w dziedzinie informatyki (University College London, a następnie King’s College London) ze szczególnym zainteresowaniem w zakresie programowania, języków programowania, narzędzi i środowisk; konkurencyjności; równoległości; budowania; interakcji człowiek-komputer i systemów socjotechnicznych. Będąc profesorem informatyki i szefem wydziału informatyki w King’s College London, opuścił środowisko akademickie, aby jako CTO lub CEO zająć się startupami. Następnie przez dekadę był niezależnym konsultantem, analitykiem, autorem, trenerem i biegłym rzeczoznawcą. W 2016 roku przeszedł na emeryturę. Nadal bardzo interesuje się programowaniem, językami programowania, narzędziami i środowiskami; konkurencyjnością; równoległością i budowaniem –dzięki temu na emeryturze jest wciąż aktywny.

Wyrażenia deklaratywne drogą do równoległości, s. 33

JVM jest platformą wieloparadygmatową: wykorzystaj to, aby ulepszyć swoje programowanie, s. 90

Wątki to infrastruktura i tak je traktuj, s. 174

autorach i redaktorach

Sam Hepburn

Sam Hepburn spędziła ostatnie dziewięć lat w Londynie, stając się rozpoznawaną twarzą sceny startupów technologicznych. Współpracowała z różnymi organizacjami w Londynie, a teraz pracuje dalej w tym obszarze w Stanach Zjednoczonych, Wielkiej Brytanii i Polsce, tworząc jedne z największych społeczności technologicznych na świecie. Jej głównym celem jest tworzenie środowiska, w którym jednostki będą czuły się mile widziane, a społeczności będą się rozwijać. Obecnie kieruje zespołem społeczności w Snyk.io, pomagając programistom we wdrażaniu zabezpieczeń w ich działaniach związanych z pracami rozojowymi. Prywatnie jest współzałożycielką Circle, sieci wspierającej karierę kobiet w naszym nowym świecie pracy oraz prowadzi podcast Busy Being Human, przedstawiający nieupiększone, prawdziwe, ludzkie historię o tym, jak nasi ulubieńcy stali się tym, kim teraz są.

Wykorzystywanie mocy społeczności do rozwijania swojej kariery, s. 197

Sander Mak

Sander Mak jest dyrektorem ds. technologii w Picnic, holenderskim internetowym sklepie spożywczym, który rozwija systemy oparte na Javie. Ma również tytuł Java Champion i jest autorem książki Java 9 Modularity (O’Reilly). Jako zapalony mówca na konferencjach, bloger i autor Pluralsight, Sander uwielbia dzielić się wiedzą.

Odrodzenie Javy, s. 147

Sebastiano Poggi

Sebastiano Poggi, pochodzący z mglistych równin północnych Włoch, zjadł zęby, pracując w początkowej fazie działania startupu związanego ze smartwatchami. Przeniósł się wraz ze swoimi lokami do Londynu, aby pomagać w aplikacjach na Androida dużym klientom renomowanych agencji AKQA i Novoda. Od 2014 roku ma tytuł Google Developer Expert, często występuje na konferencjach i sporadycznie pisze artykuły na blogach. Po powrocie do Włoch pracuje obecnie dla JetBrains zarówno nad narzędziami, jak i aplikacją na Androida. Ma talent do dobrego projektowania, typografii i fotografii, a także ma przeszłość jako producent wideo. Sebastiano często można znaleźć na twitter.com/seebrock3r, gdzie wyraża niekwestionowane opinie.

Interoperacyjność z Kotlinem, s. 76

Steve Freeman

Steve Freeman, współautor Growing Object-Oriented Software, Guided by Tests (Addison-Wesley), był pionierem rozwoju oprogramowania zgodnego z Agile w Wielkiej Brytanii. Jego doświadczenie obejmuje pracę dla firm konsultingowych i dostawców oprogramowania, działania jako niezależnego konsultanta i trenera oraz prototypowanie dla głównych laboratoriów badawczych. Steve ma doktorat z Cambridge University. Obecnie jest wybitnym konsultantem w Zuhlke Engineering Ltd. z siedzibą w Wielkiej Brytanii. Główną rozrywką Stevesa jest staranie się, by nie kupować więcej puzonów.

Nie zmieniaj swoich zmiennych, s. 41

Minimalne konstruktory, s. 123

Proste obiekty wartości, s. 155

Thomas Ronzon

Thomas Ronzon od ponad 20 lat koncentruje się na modernizacji krytycznych aplikacji biznesowych. Ponadto publikuje artykuły i zabiera głos na konferencjach. Thomas z pasją, chętnie i głęboko zanurza się w aspekty techniczne i robi to profesjonalnie. Dzięki empatii, doświadczeniu i konkretnym propozycjom rozwiązań pomaga budować pomosty między biznesem a IT.

Jak spowodować awarię swojej JVM, s. 68

Trisha Gee

Trisha Gee tworzyła aplikacje w Javie dla różnych branż, w tym finansów, produkcji, oprogramowania i organizacji non-profit, dla firm każdej wielkości. Ma doświadczenie w wysokowydajnych systemach Javy i jest pasjonatką zwiększania produktywności programistów. Trisha zajmuje stanowisko developer advocate w JetBrains, jest liderką Sevilla Java User Group oraz Java Champion. Wierzy, że zdrowe społeczności i dzielenie się pomysłami pomagają nam uczyć się na błędach i budować, bazując na sukcesach.

Trzymaj rękę na pulsie, s. 92

Naucz się swojego IDE, aby zmniejszać obciążenie poznawcze, s. 114

Techniczne rozmowy kwalifikacyjne to umiejętność, którą warto rozwijać, s. 164

autorach i redaktorach

Uberto Barbini jest programistą-poliglotą z ponad 20-letnim doświadczeniem w projektowaniu i tworzeniu skutecznego oprogramowania dla wielu branż. Odkrył, że uwielbia programować, gdy stworzył swoją pierwszą grę na ZX Spectrum. Nadal jest bardzo zaangażowany w to, jak napisać najlepszy kod, który zapewni firmie wartość dodaną – i to nie tylko jednokrotnie, ale w regularnym tempie. Gdy nie programuje, Uberto uwielbia przemawiać publicznie, pisać i uczyć. Obecnie pisze książkę o pragmatycznie funkcyjnym Kotlinie.

Naucz się kochać swój stary kod, s. 235

Umysł nie jest naczyniem, które trzeba napełnić, lecz ogniem, który należy rozniecić Plutarch

Co powinien wiedzieć każdy programista Javy? To zależy. Zależy od tego, kogo pytasz, dlaczego pytasz i kiedy pytasz. Sugestii jest co najmniej tyle, ile punktów widzenia. W zakresie języka, platformy, ekosystemu i społeczności, która wpływa na oprogramowanie oraz życie tak wielu ludzi. I dzieje się tak od stulecia do stulecia, od jednego do wielu rdzeni, od megabajtów do gigabajtów. Jest to szersze, niż można byłoby się spodziewać, że zostanie ujęte w jednej książce przez jednego autora.

Natomiast w tej książce wykorzystamy niektóre z tych wielu punktów widzenia, aby stworzyć razem pewien przekrój i przedstawić sposób myślenia w technologii Java. To nie będzie jedynym słusznym podejściem, ale 97 spojrzeniami 73 autorów. Cytując przedmowę książki 97 Things Every Programmer Should Know (O’Reilly):

Jest tak wiele rzeczy do poznania i do zrobienia i tak wiele na to sposobów, że żadna osoba ani żaden byt nie może rościć sobie praw do „jedynej słusznej drogi”. Poszczególne spojrzenia nie muszą zazębiać się jak części pewnego modułu – może być nawet odwrotnie. Wartość każdego spojrzenia wynika z jego odrębności. Wartość kolekcji wynika z tego, jak poszczególne elementy uzupełniają się, potwierdzają, a nawet zaprzeczają sobie nawzajem. Nie ma nadrzędnej narracji: to Ty poszukujesz odpowiedzi, zastanawiasz się i łączysz to, co czytasz, porównując z własnym kontekstem, wiedzą i doświadczeniem.

Co powinien wiedzieć każdy programista Javy? 97 rzeczy, które będziemy poruszać, obejmują język, JVM, techniki testowania, JDK, społeczność, historię, zwinne myślenie, wiedzę wdrożeniową, profesjonalizm, styl, treść, paradygmaty programowania, programistów jako ludzi, architekturę oprogramowania, umiejętności wykraczające poza kod, narzędzia, mechanikę GC, języki JVM inne niż Java... i nie tylko.

Własność intelektualna

Zgodnie z duchem pierwszej książki 97 Things, każde spojrzenie na pewne zagadnienie w tej publikacji jest zgodne z nieograniczonym modelem open source. Każde jest

też objęte licencją Creative Commons Attribution 4.0. Wiele z nich pojawiło się po raz pierwszy na platformie Medium 97 Things.

Wszystkie one są paliwem i ogniem dla twoich myśli i twojego kodu.

O’Reilly – wiedza online

Od ponad 40 lat O’Reilly Media oferuje szkolenia, wiedzę i wgląd w zakresie technologii i biznesu, pomagające firmom odnieść sukces.

Nasza wyjątkowa sieć ekspertów i innowatorów dzieli się swoją wiedzą i doświadczeniem przez książki, artykuły i naszą internetową platformę edukacyjną. Platforma edukacyjna O’Reilly zapewnia dostęp na żądanie do szkoleń prowadzonych na żywo, rozbudowanych ścieżek edukacyjnych, interaktywnych środowisk kodowania oraz ogromnej kolekcji tekstów i materiałów wideo pochodzących od O’Reilly i ponad 200 innych wydawców. Aby uzyskać więcej informacji, odwiedź http://oreilly.com

Kontakt z nami

Komentarze i pytania dotyczące tej książki prosimy kierować do wydawcy:

O’Reilly Media, Inc.

1005 Gravenstein Highway North Sebastopol, CA 95472

800-998-9938 (w Stanach Zjednoczonych i Kanadzie)

707-829-0515 (międzynarodowy i lokalny)

707-829-0104 (fax)

Dla tej książki prowadzimy dedykowaną stronę internetową, na której zamieszczamy erratę, przykłady i wszelkie dodatkowe informacje. Dostęp do tej strony można uzyskać pod adresem https://oreil.ly/97Tejpsk.

Aby skomentować lub zadać pytania techniczne dotyczące tej książki, wyślij e-mail na adres bookquestions@oreilly.com.

Odwiedź http://oreilly.com, aby zapoznać się z wiadomościami i informacjami o naszych książkach i kursach.

Znajdź nas na Facebooku: http://facebook.com/oreilly.

Śledź nas na Twitterze pod adresem http://twitter.com/oreillymedia, a także sprawdzaj http://twitter.com/97_Things.

Oglądaj nas na YouTubie: http://youtube.com/oreillymedia

Podziel problemy i zadania

na

małe kawałki

Uczysz się programować. Otrzymujesz małe zadanie. Piszesz poniżej tysiąca wierszy kodu. Wprowadzasz dane i testujesz. Następnie dodajesz instrukcje print lub używasz debugera. Może robisz sobie kawę. Następnie zastanawiasz się, o czym wcześniej myślałeś.

Brzmi znajomo? A to tylko prosty problem. Typowe zadania i systemy są znacznie większe. Rozwiązanie dużych problemów wymaga czasu. Co gorsza, pamięć RAM twojego mózgu nie jest nieograniczona.

Dobrym sposobem na rozwiązanie tego problemu jest podzielenie go na małe fragmenty. Im mniejsze, tym lepiej. Jeśli uda ci się przejść przez jeden mały element, to nie musisz już o nim myśleć i możesz przejść do następnego. Gdy nabierzesz wprawy, będziesz mógł napisać automatyczne testy dla każdego małego problemu. Powinieneś także często stosować zatwierdzania (kodu w systemie kontroli wersji). To daje możliwość wycofania, gdy coś nie zadziała zgodnie z oczekiwaniami.

Pamiętam, jak pomagałam koledze z zespołu, który utknął na swoim problemie. Zapytałam, kiedy ostatnio wykonał zatwierdzenie, ponieważ najłatwiejszym rozwiązaniem byłoby wycofanie się i ponowne wprowadzenie zmiany. Odpowiedź brzmiała „tydzień temu”. W rezultacie miał dwa problemy: pierwotny i to, że nie mogłam pomóc mu w debugowaniu jego tygodniowej pracy.

Po tym zdarzeniu przeprowadziłam dla mojego zespołu sesję szkoleniową dotyczącą dzielenia zadań na mniejsze części. Starsi programiści powiedzieli mi, że ich zadania są „specjalne” i „nie można ich podzielić”. Kiedy słyszysz słowo specjalne w odniesieniu do zadania, od razu powinieneś być podejrzliwy.

Postanowiłam umówić się na drugie spotkanie. Każdy był odpowiedzialny za przyniesienie przykładu „specjalnego” zadania, a ja pomogłam im je podzielić. Pierwszym przykładem był formularz, na którego opracowanie zaplanowano na dwa tygodnie. Podzieliłam to następująco:

• Pod właściwym adresem URL utwórz ekran hello world – bez pól, aby po prostu było tylko wyświetlone hello world.

• Dodaj funkcjonalność wyświetlania listy z bazy danych.

• Dodaj pole tekstowe.

• Dodaj listę rozwijaną.

• <Długa lista drobnych zadań>

I zgadnij co? Po każdym z tych drobnych zadań może nastąpić zatwierdzenie.

Oznacza to, że zatwierdzenia mogą mieć miejsce wiele razy dziennie.

Następnie powiedziano mi, że można to zrobić dla formularza, natomiast przetwarzanie plików jest „specjalne”. Co powiedziałam o słowie „specjalne”? To również podzieliłam:

• Odczytaj wiersz z pliku.

• Sprawdź poprawność pierwszego pola, wykorzystując wywołanie do bazy danych.

• Sprawdź poprawność drugiego pola i przekształć je za pomocą logiki biznesowej.

• <Kilka pól później>

• Do wszystkich pól zastosuj pierwszą regułę logiki biznesowej.

• <Kilka zasad później>

• Dodaj komunikat do kolejki

I ponownie – zadanie nie było specjalne. Jeśli uważasz, że zadanie jest wyjątkowe, zatrzymaj się i zastanów się, dlaczego. Często okaże się, że powyższa technika będzie miała do tego zastosowanie.

Na koniec programista powiedział mi, że nie może zatwierdzać swojego kodu częściej niż co tydzień. Zadanie zostało zatem przydzielone do mnie ponownie. Uznałam za rzecz zasadniczą wykonanie kilku dodatkowych zatwierdzeń. W sumie wykonałam 22 zatwierdzenia w ciągu 2 dni, które zajęło mi wykonanie zadania. Może gdyby ten programista wykonywał zatwierdzenia jeszcze częściej, to zrobiłby to jeszcze szybciej ode mnie!

Java. 97 rzeczy, które powinieneś wiedzie

Kotlin to jest coś

Java jest prawdopodobnie najbardziej dojrzałym i sprawdzonym językiem, który nadal jest w powszechnym użyciu i jest mało prawdopodobne, aby zmieniło się to radykalnie w dającej się przewidzieć przyszłości. Aby ułatwić współczesne wyobrażenie o tym, co powinien robić język programowania, niektórzy sprytni ludzie zdecydowali się napisać nowy język, który obsługuje wszystkie rzeczy Javy, a także kilka fajnych nowych, których nauczenie się jest dość łatwe i które są w dużej mierze interoperacyjne. Ktoś taki jak ja, który od lat pracuje nad tą samą ogromną aplikacją na Androida, może zdecydować się na napisanie jednej klasy w Kotlinie bez angażowania się w pełną migrację.

Zadaniem Kotlina jest umożliwienie pisania krótszego, czystszego i nowocześniejszego kodu. Chociaż współczesne oraz zapowiadane wersje Javy rozwiązują wiele problemów, które również usprawnia Kotlin, może on być szczególnie przydatny dla programistów Androida, którzy utknęli gdzieś między Javą 7 a Javą 8.

Spójrzmy na kilka przykładów, takich jak wzorzec konstruktora właściwości dla modeli. Zacznijmy od prostego przykładu, jak może wyglądać taki model w Javie:

public class Person {

private String name;

private Integer age;

public String getName() { return name; }

public void setName(String name) { this.name = name; }

public Integer getAge() { return age; }

public void setAge(int age) { this.age = age; } }

Moglibyśmy utworzyć specjalny konstruktor, który będzie pobierał pewne wartości początkowe:

public class Person { public Person(String name, Integer age) { this.name = name; this.age = age; } ... }

Nieźle, ale prawdopodobnie widzisz, jak kilka dodatkowych właściwości może sprawić, że definicja tej dość prostej klasy będzie bardzo szybko się rozrastać. Rzućmy okiem na tę klasę w Kotlinie:

class Person(val name:String, var age:Int)

Otóż to! Innym fajnym przykładem jest delegacja. Delegacje w Kotlinie pozwalają utworzyć logikę dla dowolnej liczby operacji odczytu. Jednym z przykładów jest leniwa inicjalizacja, koncepcja z pewnością znana programistom Javy. Może to wyglądać tak:

public class SomeClass { private SomeHeavyInstance someHeavyInstance = null; public SomeHeavyInstance getSomeHeavyInstance() { if (someHeavyInstance == null) { someHeavyInstance = new SomeHeavyInstance(); }

return someHeavyInstance; } }

Znów niezbyt to straszne, a nawet zrobione dość prosto i bez konfiguracji, ale są szanse, że będziesz powtarzał ten sam fragment kilka razy w swoim kodzie, naruszając zasadę DRY (Don't Repeat Yourself – nie powtarzaj się ). Nie jest też bezpieczne w przypadku wątków. Oto wersja w Kotlinie:

val someHeavyInstance by lazy { return SomeHeavyInstance() } Krótkie, przyjemne i czytelne. Cały ten nadmiar kodu jest ładnie schowany pod spodem. Aha, i jest też bezpieczne dla wątków. Dużym ulepszeniem jest również bezpieczeństwo związane z null. W Kotlinie możesz zobaczyć wiele operatorów znaków zapytania po odwołaniu do wartości, która może przyjmować null:

val something = someObject?.someMember?.anotherMember

Java. 97 rzeczy, które powinieneś wiedzieć

Użyj pokrycia, aby ulepszyć swoje testy jednostkowe

Emily Bache

Mierzenie pokrycia testami jest łatwiejsze niż kiedykolwiek. W nowoczesnym IDE przycisk do uruchamiania testów pokrycia znajduje się tuż obok tych, które umożliwiają ich wykonanie lub debugowanie. Wyniki pokrycia są prezentowane klasa po klasie wraz z małymi wykresami, zaś w kodzie źródłowym odpowiednie wiersze są podświetlane kolorem.

Dane dotyczące pokrycia są łatwe do zdobycia. Jak najlepiej z nich skorzystać?

Gdy piszesz nowy kod

Większość osób zgadza się, że razem z całym napisanym kodem należy dostarczać testy jednostkowe. Możesz spierać się o to, w jakiej kolejności robić te rzeczy, ale z mojego doświadczenia wynika, że najlepiej sprawdzają się krótkie pętle sprzężenia zwrotnego. Utwórz mały kod testowy, napisz trochę kodu produkcyjnego i zbuduj funkcjonalność wraz z testami. Gdy pracuję w ten sposób, od czasu do czasu przeprowadzam testy pokrycia jako dodatkowe ubezpieczenie, że nie zapomniałam przetestować nowego kodu, który właśnie napisałam.

Głównym zagrożeniem jest tutaj to, że możesz być bardzo zadowolony z wysokiej wartości pokrycia i nie zauważysz, że brakuje ci zarówno kodu, jak i testów dla kluczowej funkcjonalności. Być może zapomniałeś dodać obsługę błędów. Być może przegapiłeś regułę biznesową. Jeśli nigdy wcześniej nie napisałeś kodu produkcyjnego, pomiary pokrycia nie mogą tego wykryć.

Gdy musisz zmienić kod, którego nie napisałeś

Modyfikowanie kodu, którego nie napisałeś i dla którego testy są słabe lub ich brakuje, może być trudne – szczególnie jeśli tak naprawdę nie rozumiesz, co on robi, ale mimo to musisz go zmienić. Gdy mam do czynienia z taką sytuacją, sprawdzenie pokrycia jest jednym ze sposobów, w jaki dowiaduję się, jak dobre są testy i które części z większą pewnością mogę refaktoryzować.

Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.