Programovanie

Vlákna Java: Porovnávacia recenzia kníh

Už od prvých vydaní Java vlákna od O'Reillyho a Súbežné programovanie v Jave z Addison-Wesley vyšiel pred niekoľkými rokmi, odporúčam ich ľuďom, ktorí sa chcú naučiť používať vlákna. Keďže je teraz k dispozícii niekoľko konkurenčných kníh a druhé vydanie originálov, rozhodol som sa prehodnotiť svoje odporúčania. V tomto článku sa pozriem na šesť najnovších kníh o programovaní vlákien Java.

Šesť recenzovaných kníh je:

  1. Vlákna Java, druhé vydanie, Scott Oaks a Henry Wong (O'Reilly)
  2. Súbežné programovanie v prostredí Java, druhé vydanie, Doug Lea (Addison-Wesley)
  3. Skrotenie vlákien Java, Allen Holub (Apress)
  4. Programovanie Java Thread, Paul Hyde (Sams)
  5. Viacvláknové programovanie s technológiou Java, Bil Lewis a Daniel Berg (Prentice Hall, Sun Press)
  6. Vysokovýkonné výpočty platformy Java: programovanie viacerých vlákien a sieťové pripojenie, Thomas Christopher a George Thiruvathukal (Prentice Hall, Sun Press)

Nasledujúca tabuľka poskytuje rýchly prehľad hlavných charakteristík týchto šiestich kníh.

Všetky knihy sú založené na vydaní 1.2.x platformy Java 2.
Prehľad kníh vlákien
 Java vláknaSúbežné programovanieSkrotenie vlákien JavaProgramovanie Java vlákienViacvláknové programovanieVysoký výkon Java
cena2.959.954.954.999.999.99
Celkový počet stránok320410300510460410
CD-ROM / Zdroj z webuNie anoNie anoNie anoNie anoNie anoNie ano
Základy závitovVynikajúciFérŽiadneVynikajúciVynikajúciFér
TechnikyVeľmi dobreDobreVeľmi dobreVynikajúciDobreVeľmi dobre
Dizajnové vzoryŽiadneVynikajúciChudobnýŽiadneŽiadneDobre
Stupnica: žiadna, slabá, priemerná, dobrá, veľmi dobrá, vynikajúca

Tabuľka by mala byť celkom zrejmá až po atribút CD-ROM. Ďalej vysvetlím niekoľko posledných riadkov:

  • Atribút Thread Basics naznačuje, do akej miery knihy popisujú, čo je to vlákno, a ako ho používať: popis Závit triedy a Spustiteľné rozhranie, Objekt metódy počkaj (), upozorniť ()a notifyAll ()a synchronizované kľúčové slovo.
  • Atribút Techniques (Techniky) hodnotí, ako dobre knihy skúmajú techniky pri používaní vlákien.
  • Atribút Design Patterns meria vysvetlenie kníh, ako vytvárať vláknové programovanie podľa presne definovaných vzorov návrhu.

Ďalej preskúmam každú knihu. Vedľa názvu každej knihy je hodnotenie hviezdičkami založené na oblasti pokrytia vláknami, na ktoré sa táto kniha údajne zameriava, nielen na priemer z troch vyššie uvedených atribútov. Jedna hviezdička označuje zlú prácu; najvyššie hodnotenie (päť hviezdičiek) označuje mimoriadne pokrytie.

Java vlákna

Prvé vydanie Java vlákna, Scott Oaks a Henry Wong, bol pôvodným definitívnym zdrojom pre učenie sa programovania pomocou vlákien. Zatiaľ čo väčšina úvodných kníh prešla, čo je vlákno a ako používať Závit trieda s Spustiteľné rozhranie, Java vlákna poskytli ďalšie informácie potrebné na ich efektívne využitie. Druhé vydanie ide v jeho šľapajach: obsahuje aktualizované informácie o používaní vlákien s platformou Java 2, informácie o zastaraných API, prerušenie I / O a bezpečnostné zmeny Java 2. Kniha sa venuje aj problémom multithreadingu so sadou komponentov Swing a poskytuje pomoc s natívnou podporou plánovania a prácou s viacprocesorovými strojmi.

Ak ste v programovaní Java nováčikom a ešte ste dobyli vlákna, Java vlákna je vynikajúci zdroj. Prezriete si základné informácie o Java threadingu a naučíte sa techniky potrebné na správne fungovanie vašich programov vo viacvláknovom svete.

Súbežné programovanie v Jave

Zatiaľ čo Java vlákna vysvetľuje podrobnosti na nízkej úrovni používania Threads API, Súbežné programovanie v Jave, Doug Lea skúma správny dizajn viacvláknových programov. Vedieť používať API nie je vo svete Java dostatočné; Mali by ste tiež minúť čas a energiu na správne nastavenie návrhu programu. V tomto svetle Súbežné programovanie je hlavne knihou návrhových vzorov. Pri určitom probléme môžete vyhľadať vzor definovaný v knihe a váš program sa prakticky sám píše.

Súbežné programovanie je rozdelená do štyroch oblastí, ktoré popisujú rôzne vzorce používania. Sekcia „Súbežné objektovo orientované programovanie“ vám poskytne základné informácie. V časti „Vylúčenie“ sú opísané vzory používania súboru synchronizované kľúčové slovo. „Závislosť na štáte“ skúma problémy a vzorce používania systému počkaj (), upozorniť ()a notifyAll () metódy Objekt trieda. Záverečná časť „Vytváranie vlákien“ je o vzoroch pre použitie súboru Závit trieda.

Táto kniha určite vyhovuje pokročilým používateľom a nie je pre slabé povahy. Očakáva sa od vás, že budete mať dobrý prehľad o objektovo orientovanom programovaní a programovacom jazyku Java a chýbať vám budú iba v oblasti navrhovania programov pre problémy súbežnosti. Okrem knihy Lea bezplatne sprístupňuje knižnicu util.concurrent na webových stránkach knihy. (Odkaz nájdete v časti Zdroje.) Knižnica vám pomôže navrhnúť a vyvinúť viacvláknové programy.

Skrotenie vlákien Java

Allena Holuba Skrotenie vlákien Java, vznikli tu o JavaWorld ako deväťdielna séria nástrojov Java Toolbox. Články boli odvtedy aktualizované a teraz tvoria obsah knihy spolu so zaujímavou novou kapitolou, ktorá popisuje problémy s Java Threading API. (Pozri Zdroje pre odkaz na túto časť s názvom „Keby som bol kráľom.“) Skrotenie je na rozdiel od prvých dvoch kníh, ktoré som recenzoval; ide striktne o techniky správneho používania API. Nejde o úvod do nití ani o knihu dizajnérskych vzorov. K dispozícii je tiež knižnica kódov (odkaz nájdete v časti Zdroje), aby ste mohli využiť to, čo ste sa naučili. Nezabudnite si však prečítať licenčnú zmluvu; nie je to public domain alebo open source.

Po popise základnej architektúry modelu Java s viacerými vláknami Holub vysvetľuje riziká používania vlákien a techniky ich bezpečného používania. Naučíte sa vytvárať a používať mutexy, semafory a podmienené premenné. Oboznámite sa s rozdielmi medzi Swingovými invokeLater () a invokeAndWait () metódy. Holub tiež skúma AWTEventMulticaster triedy a ukazuje, ako je to bezpečné z hľadiska vlákien s minimálnou réžiou a ako môžete pracovať s fondmi vlákien. Po tom všetkom, čo sa povie a urobí, budete mať vynikajúce znalosti o obmedzeniach a použití modelu závitov Java.

Prekvapilo ma, že som v knihe videl niektoré technické chyby - v predslove, o nič menej - ale nijako to neubralo na vynikajúcich informáciách, ktoré kniha ponúka. Avšak potom, čo som neustále videl kód Java naformátovaný zmiešaným veľkým písmom, bol som trochu prekvapený, že Holubov kód bol naformátovaný znakom podčiarknutia medzi slovami v premenných a názvoch metód. Možno budete musieť prečítať bloky kódu niekoľkokrát, kým im úplne porozumiete, ale kvalita tu uvedených informácií stojí za nepríjemnosti. Jedna poznámka na záver: všetok zdrojový kód je plne komentovaný javadocom.

Programovanie Java vlákien

Programovanie Java Thread, Paul Hyde, priamo súťaží s Java vlákna. Jasne sa zameriava na začínajúceho vývojára a zahŕňa ďalšie pokrytie pokročilejších tém a techník, keď tento vývojár „dorastie“. Táto kniha je najväčšia z celej skupiny a priestor je dobre využitý.

Prvá polovica roku Programovanie Java vlákien vysvetľuje, čo sú vlákna a ako pracovať so základmi. Získate typický popis vytvárania vlákien a použitia súboru Spustiteľné rozhranie. Existuje kapitola o tom, ako zastaviť vlákna, vrátane toho, ako ich pozastaviť a obnoviť bez použitia zastaraných metód - pekné techniky na zvýšenie produktivity. Okrem krytia počkaj () a upozorniť (), Hyde podrobne popisuje prchavý komunikácia medzi kľúčovými slovami a medzivláknami cez I / O kanály. Programovanie Java vlákien má tiež najlepšie pokrytie ThreadLocal a InheritableThreadLocal triedy, okrem zvyčajného pokrytia vlákien a Swingu, ktoré sa nachádzajú v iných knihách.

Časť 2 z Programovanie Java vlákien popisuje techniky pre prácu s vláknami Java. Ponúka najlepšie pokrytie združovania vlákien a skvelú kapitolu o odblokovaní blokovaných I / O. Z tohto výberu nebudete sklamaní.

Viacvláknové programovanie s technológiou Java

Zdá sa, že vždy nájdem aspoň jednu knihu, ktorá nie je úplne iná ako ostatné - Viacvláknové programovanie s technológiou Java, od Bila Lewisa a Daniela Berga, je presne také zviera. Stále som jej dal hodnotenie hviezdičkami, ale táto kniha si zaslúži osobitnú zmienku. Podľa mňa Programovanie s viacerými vláknami 'Primárnym účelom nie je naučiť vás programovať s vláknami v Jave. Pomôže vám v tejto oblasti, ale zdá sa, že jej primárnym účelom je naučiť vás, ako funguje architektúra podkladových vlákien, a to ako v rámci Java Virtual Machine (Java VM), tak aj v podkladových operačných systémoch. V skutočnosti nielenže získate veľa príkladov kódu knihy v kóde Java, ale aj kód POSIX a kód na prácu s vláknami rozhrania Win32 API. Keby na konci každej kapitoly boli čitateľské cvičenia, fungovalo by to dobre ako vysokoškolský text.

To znamená, ako dobre to ide Viacvláknové programovanie vás naučí používať vlákna? Najviac sa podobá Java vlákna; jeho hlavným cieľom je naučiť vás, čo je vlákno a ako ho používať. Ukazuje tiež, ako všetko pod kapotou funguje vo Java VM, ako je všetko naplánované v rámci Java VM atď. Okrem toho získate pokrytie typickými témami, ako je synchronizácia, zablokovanie a závodné podmienky. Lewis a Berg dokonca pokrývajú problémy vlákien s RMI a optimalizačnými technikami na zlepšenie výkonu. Celkovo je to dobrá kniha - nielen vaša typická prezentácia vlákien Java.

Pokiaľ ide o príklady z knihy, dávajte pozor na to, ako sa Elvis chytí UFO.

Vysoko výkonná platforma Java

Registrácia s najdlhším titulom je Vysokovýkonné výpočty platformy Java: programovanie viacerých vlákien a sieťové pripojenie, predkladajú Thomas Christopher a George Thiruvathukal. Aj priezviská autorov sú minimálne dvojnásobné oproti ich konkurencii! Prebytok tým nekončí; táto kniha stojí tiež o viac ako 25 percent viac ako ostatné.

Dosť bolo zovňajšku - čo je vo vnútri? Vysoký výkon skočí priamo do diskusie o paralelnom výpočte. Dozviete sa viac o Von Neumannovom stroji, Flynnovej taxonómii, lineárnom zrýchlení a Amdahlovom zákone, všetko v kapitole 1. Kapitola 2 skúma vytváranie vlákien do väčšej hĺbky ako väčšina úvodov do API. Po demonštrácii podmienok závodu sa v kapitole 3 diskutuje o synchronizácii a o tom, prečo ju potrebujete. Kapitola 4 sa podrobne venuje monitorom s mnohými variáciami problémov so zámkom čítačiek a zapisovačov. V kapitole 5 autori diskutujú o použití zdieľanej pamäte - na halde, nie o systémovej odrode Unix - všetko na účely vytvorenia fondu vlákien. Zvyšok knihy pokrýva vzory pre vývoj aplikácií pre paralelné vykonávanie.

Existuje veľa dobrých informácií o paralelnom výpočte, ale Vysoký výkon'Cieľom nie je skutočne učiť programovanie vlákien pre všeobecné účely. Zdá sa, že je vyvinutý hlavne ako text pre kurz paralelných výpočtov - každá kapitola končí sériou premyslených cvičení, na ktoré sa mi nepodarilo nájsť žiadne odpovede.

Stále odporúčam to isté?

Prvé vydania Súbežné programovanie v Jave a Java vlákna vyšli v roku 1997 a boli veľmi odporúčané. Iba slepo odporúčam ich druhé vydanie? Skrátka sa zdá, že Lea Súbežné programovanie je stále vynikajúcim zdrojom pre tých, ktorí sa učia navrhovať programy pre viacvláknový svet. Nie je to ľahké čítanie, ale návrhové vzory a techniky vysvetlené v knihe sú vynikajúcimi nástrojmi pre serióznych vývojárov Java.

Na druhej strane sa zdá Java vlákna bol nástupcom Samsa Programovanie Java vlákien ako najlepšia kniha pre začiatočníkov. S ponukou O'Reilly nie je nič technicky zlé, ale Programovanie Java vlákien funguje lepšie ako úvod do vlákien Java. Hyde ide dokonca nad rámec úvodného materiálu a ponúka pokročilejšie techniky navyše.

Ak máte prvé vydania z Java vlákna a Súbežné programovanie v Jave, stojí za to dostať aktualizácie? Možno by som odporučil zaobstarať si druhé vydanie Lea a ďalej Java vlákna. Ak máte prvé vydanie Java vlákna, pravdepodobne ste sa teraz posunuli nad rámec potreby druhého. Ak stále potrebujete úvodný text, vezmite si Samsov Programovanie Java vlákien namiesto toho.

Čo so zvyškom? Je to naozaj ťažký hovor a záleží na tom, ktorého desetník miniete. Keby som mohol získať iba jednu ďalšiu knihu vlákien, vybral by som si Viacvláknové programovanie s technológiou Java. Jeho pokrytie vláknami je jedinečné a dostatočne užitočné na to, aby sa stalo pekným doplnkom knižnice. Holubova Skrotenie vlákien Java obsahuje niekoľko príjemných techník, ako čo najlepšie využiť programovanie vlákien. Nie som si istý, či je to nevyhnutný zdroj. Vysoko výkonná platforma Java záujemcom o svet paralelných výpočtov sa javí ako vhodný. Inak by som to nechal na poličke.

John Zukowski je nezávislý konzultant v odbore Java, autor kníh Definitive Guide to Swing for Java 2, Second Edition od Apress, Mastering Java 2 od Sybex a Java AWT Reference od O'Reilly, ako aj príručky About's Focus on Java.
$config[zx-auto] not found$config[zx-overlay] not found