Programiranje

Java niti: primerjalna kritika

Že od prvih izdaj Java niti od O'Reillyja in Sočasno programiranje v Javi iz Addison-Wesley izšel pred nekaj leti, priporočam jih ljudem, ki se želijo naučiti uporabljati niti. Z nekaj konkurenčnimi knjigami in drugimi izdajami izvirnikov, ki so zdaj na voljo, sem se odločil ponovno oceniti svoja priporočila. V tem članku si bom ogledal šest najnovejših knjig o programiranju niti Java.

Šest pregledanih knjig je:

  1. Java niti, druga izdaja, Scott Oaks in Henry Wong (O'Reilly)
  2. Sočasno programiranje v Javi, druga izdaja, Doug Lea (Addison-Wesley)
  3. Ukrotitev niti Java, Allen Holub (Apress)
  4. Programiranje Java niti, Paul Hyde (Sams)
  5. Večnitno programiranje s tehnologijo Java, Bil Lewis in Daniel Berg (Prentice Hall, Sun Press)
  6. Visoko zmogljivo računalništvo Java Platform: večnitno in omrežno programiranje, Thomas Christopher in George Thiruvathukal (Prentice Hall, Sun Press)

Spodnja tabela ponuja hiter pregled glavnih značilnosti šestih knjig.

Vse knjige temeljijo na izdaji 1.2.x platforme Java 2.
Teme Knjige Pregled
 Java nitiSočasno programiranjeUkrotitev niti JavaProgramiranje niti JavaVečnitno programiranjeVisoko zmogljiva Java
Cena2.959.954.954.999.999.99
Skupaj strani320410300510460410
CD-ROM / vir s spletaNe daNe daNe daNe daNe daNe da
Osnove nitiOdličnoPoštenoNobenegaOdličnoOdličnoPošteno
TehnikeZelo dobroDobroZelo dobroOdličnoDobroZelo dobro
Vzorci oblikovanjaNobenegaOdličnoSlaboNobenegaNobenegaDobro
Lestvica: Brez, slabo, povprečno, dobro, zelo dobro, odlično

Tabela naj bo do samega sebe razumljiva do atributa CD-ROM. Naj še pojasnim zadnjih nekaj vrstic:

  • Atribut Thread Basics prikazuje obseg, v katerem knjige opisujejo, kaj je nit in kako jo uporabiti: opis Navoj razred in Teče vmesnik, Predmet metode počakaj (), obvestiti(), in notifyAll (), in sinhronizirano ključna beseda.
  • Atribut Techniques ocenjuje, kako dobro knjige raziskujejo tehnike uporabe niti.
  • Atribut Design Patterns meri razlago knjig, kako ustvariti programiranje na osnovi niti po natančno določenih vzorcih oblikovanja.

Nato bom pregledal vsako knjigo. Zraven naslova vsake knjige je ocena zvezd, ki temelji na območju pokritosti niti, na katero se knjiga osredotoča, in ne le na povprečju treh zgoraj naštetih atributov. Ena zvezdica označuje slabo službo; najvišja ocena (pet zvezdic) pomeni izjemno pokritost.

Java niti

Prva izdaja Java niti, Scott Oaks in Henry Wong, je bil prvotni dokončni vir za učenje programiranja z nitmi. Medtem ko je večina uvodnih knjig prešla na to, kaj je nit in kako uporabiti Navoj razred z Teče vmesnik, Java niti zagotovil dodatne informacije, potrebne za njihovo učinkovito uporabo. Druga izdaja gre po njegovih stopinjah: vključuje posodobljene informacije o uporabi niti s platformo Java 2, informacije o opuščenih API-jih, prekinitvi V / I in varnostne spremembe Java 2. Knjiga zajema tudi vprašanja večnitnosti z naborom komponent Swing in nudi pomoč pri podpori izvornega načrtovanja in delu z večprocesorskimi stroji.

Če ste nov v programiranju Java in še niste osvojili niti, Java niti je odličen vir. Spoznali boste osnove navojev Java in spoznali tehnike, potrebne za pravilno delovanje programov v večnitnem svetu.

Sočasno programiranje v Javi

Medtem Java niti razlaga podrobnosti o uporabi niza API, Sočasno programiranje v Javi, avtorja Douga Lea, raziskuje pravilno zasnovo večnitnih programov. V svetu Jave ne vemo, kako uporabljati API; porabili bi tudi čas in energijo, da bi oblikovali program pravilno. V tej luči Sočasno programiranje je predvsem knjiga o vzorcih oblikovanja. Glede na določeno težavo lahko poiščete vzorec, opredeljen v knjigi, in vaš program se tako rekoč sam zapiše.

Sočasno programiranje je razdeljen na štiri področja, ki opisujejo različne vzorce uporabe. Oddelek "Sočasno objektno usmerjeno programiranje" vas začne z osnovami. V razdelku "Izključitev" so opisani vzorci uporabe sinhronizirano ključna beseda. "Državna odvisnost" raziskuje težave in vzorce uporabe počakaj (), obvestiti(), in notifyAll () metode Predmet razred. Zadnji razdelek "Ustvarjanje niti" govori o vzorcih za uporabo Navoj razred.

Ta knjiga zagotovo skrbi za napredne uporabnike in ni namenjena slabovidnim. Pričakuje se, da boste dobro razumeli objektno usmerjeno programiranje in programski jezik Java, manjka pa vam le na področju oblikovanja programov za sočasnost. Lea poleg knjige daje knjižico util.concurrent prosto na voljo na spletnem mestu knjige. (Za povezavo glejte Viri.) Knjižnica vam bo pomagala pri oblikovanju in razvoju večnitnih programov.

Ukrotitev niti Java

Allena Holuba Ukrotitev niti Java, izvirajo tukaj na JavaWorld kot devetdelna serija Java Toolbox. Članki so bili od takrat posodobljeni in zdaj tvorijo vsebino knjige, skupaj z zanimivim novim poglavjem, ki opisuje težave z API-jem Java threading. (Glejte Vire za povezavo do tega oddelka z naslovom "Če bi bil kralj.") Ukrotitev je drugačen od prvih dveh knjig, ki sem jih pregledal; gre izključno za tehnike za pravilno uporabo API-ja. To ni uvod v niti ali knjiga z vzorci oblikovanja. Na voljo je tudi knjižnica kod (glejte Viri za povezavo), tako da lahko izkoristite to, kar ste se naučili. Vsekakor preberite licenčno pogodbo; ni v javni domeni ali odprtokodni.

Po opisu osnovne arhitekture Java-jevega večnitnega modela Holub razloži nevarnosti uporabe niti in tehnike za njihovo varno uporabo. Naučili se boste ustvarjati in uporabljati mutekse, semaforje in pogojne spremenljivke. Spoznali boste razlike med Swingovimi invokeLater () in invokeAndWait () metode. Holub tudi raziskuje AWTEventMulticaster razred in prikazuje, kako varno je z nitmi z minimalnimi dodatnimi stroški in kako lahko delate s področji niti. Ko je vse rečeno in končano, boste odlično razumeli omejitve in uporabo Java modela navojev.

Bil sem presenečen, ko sem v knjigi opazil nekaj tehničnih napak - v predgovoru, nič manj - vendar to ni zmanjšalo odličnih informacij, ki jih knjiga ponuja. Ko pa sem nenehno videl kodo Java, formatirano z mešanimi črkami, sem bil nekoliko presenečen, da je bila Holubova koda oblikovana s podčrtajem med besedami v spremenljivkah in imeni metod. Morda boste morali bloke kode večkrat prebrati, preden jih boste popolnoma razumeli, toda kakovost informacij, ki so tu naštete, je vredna nevšečnosti. Še zadnja opomba: vsa izvorna koda je v celoti komentirana s strani JavaDoc.

Programiranje niti Java

Programiranje Java niti, Paul Hyde, neposredno konkurira Java niti. Jasno cilja na razvijalca začetnika in vključuje dodatno poročanje o naprednejših temah in tehnikah, kdaj ta razvijalec "odraste". Ta knjiga je največja iz skupine in prostor je dobro izkoriščen.

Prva polovica leta Programiranje niti Java razloži, kaj so niti in kako delati z osnovami. Dobite tipičen opis ustvarjanja niti in uporabe Teče vmesnik. Obstaja poglavje o tem, kako ustaviti niti, vključno s tem, kako jih ustaviti in nadaljevati brez uporabe zastarelih metod - lepe tehnike za povečanje produktivnosti. Poleg pokrivanja počakaj () in obvestiti(), Hyde podrobno opisuje hlapljivo ključna beseda in vmesniška komunikacija po V / I ceveh. Programiranje niti Java ima tudi najboljšo pokritost ThreadLocal in InheritableThreadLocal razredih, poleg običajnega pokrivanja niti in Swinga, ki ga najdemo v drugih knjigah.

2. del Programiranje niti Java opisuje tehnike za delo z nitmi Java. Ponuja najboljšo pokritost združevanja niti in odlično poglavje o preboju blokiranih V / I. Nad tem izborom ne boste razočarani.

Večnitno programiranje s tehnologijo Java

Zdi se mi, da vedno najdem vsaj eno knjigo, ki ni povsem podobna ostalim - Večnitno programiranje s tehnologijo Java, Bil Lewis in Daniel Berg, je prav takšna zver. Še vedno sem ji dal zvezdico, vendar si to knjigo zasluži posebno omembo. Po mojem mnenju, Večnitno programiranje 'Primarni namen ni naučiti vas programirati z nitmi v Javi. Pomagal vam bo na tem področju, vendar se zdi, da je njegov glavni namen naučiti vas, kako deluje osnovna arhitektura niti, tako znotraj Java Virtual Machine (Java VM) kot osnovnih operacijskih sistemov. Pravzaprav ne dobite le številnih primerov kode knjige v kodi Java, dobite tudi kodo POSIX in kodo za obdelavo niti Win32 API. Če bi bile na koncu vsakega poglavja vaje za bralce, bi to dobro delovalo kot univerzitetno besedilo.

Torej, kako dobro gre Večnitno programiranje naučil, kako uporabljati niti? Najbolj spominja Java niti; njen glavni cilj je, da vas nauči, kaj je nit in kako jo uporabljati. Prav tako prikazuje, kako vse deluje pod pokrovom v Java VM, kako je vse razporejeno znotraj Java VM itd. Poleg tega dobite tudi značilne teme navojev, kot so sinhronizacija, mrtve točke in dirkalni pogoji. Lewis in Berg celo obravnavata vprašanja niti z RMI in optimizacijskimi tehnikami za izboljšanje zmogljivosti. Vse skupaj je dobra knjiga - le ne vaša tipična predstavitev niti Java.

Kar se tiče primerov iz knjige, pazite, da Elvisa ne bodo ujeli NLP-ji.

Visoko zmogljivo računalništvo Java Platform

Prijava z najdaljšim naslovom je Visoko zmogljivo računalništvo Java Platform: večnitno in omrežno programiranje, Thomas Christopher in George Thiruvathukal. Tudi priimki avtorjev so vsaj dvakrat daljši od konkurenčnih! Presežek se pri tem ne ustavi; ta knjiga stane tudi več kot 25 odstotkov več kot druge.

Dovolj o zunanjosti - kaj je notri? Visokozmogljivo skoči naravnost v razpravo o vzporednem računalništvu. Spoznali boste von Neumannovo napravo, Flynnovo taksonomijo, linearno pospeševanje in Amdahlov zakon, vse v poglavju 1. Poglavje 2 podrobneje raziskuje ustvarjanje niti kot večina predstavitev API-ja. Po predstavitvi dirkalnih pogojev 3. poglavje razpravlja o sinhronizaciji in zakaj jo potrebujete. Četrto poglavje se poglobi v monitorje s številnimi različicami težav z zaklepanjem bralcev in zapisovalcev. V 5. poglavju avtorji razpravljajo o uporabi skupnega pomnilnika - na kupu, ne pa o sistemski različici Unix - vse z namenom, da imajo področje niti. Preostali del knjige zajema vzorce za razvoj aplikacij za vzporedno izvajanje.

Tu je veliko dobrih informacij o vzporednem računalništvu, vendar Visokozmogljivo'Cilj v resnici ni poučevanje splošnega programiranja niti. Zdi se, da je razvit predvsem kot besedilo za vzporedni tečaj računalništva - vsako poglavje se konča z vrsto premišljenih vaj, na katere nisem uspel najti odgovorov.

Ali še naprej priporočam isto?

Prve izdaje Sočasno programiranje v Javi in Java niti izšel leta 1997 in so bili zelo priporočljivi. Ali le slepo priporočam njihove druge izdaje? Skratka, zdi se, da je Lea Sočasno programiranje je še vedno odličen vir za tiste, ki se učijo oblikovati programe za večnitni svet. Branje ni lahko, toda vzorčni vzorci in tehnike, razloženi v knjigi, so izvrstno orodje za resne razvijalce Java.

Po drugi strani pa se zdi Java niti je nasledil Samsov Programiranje niti Java kot najboljša knjiga za začetnike. S ponudbo O'Reilly tehnično ni nič narobe, ampak Programiranje niti Java deluje bolje kot uvod v niti Java. Hyde celo presega uvodni material in za doplačilo ponuja naprednejše tehnike.

Če imate prve izdaje Java niti in Sočasno programiranje v Javi, so posodobitve vredne dobiti? Priporočam, da si priskrbite Leino drugo izdajo in jo predate naprej Java niti. Če imate prvo izdajo Java niti, verjetno ste že presegli potrebo po drugem. Če še vedno potrebujete uvodno besedilo, izberite Samsovo Programiranje niti Java namesto tega.

Kaj storiti s preostalimi? To je res težaven klic in je odvisen od tega, čigav drobiž porabite. Če bi lahko dobil samo še eno knjigo niti, bi izbral Večnitno programiranje s tehnologijo Java. Pokritost niti je edinstvena in dovolj uporabna, da je lep dodatek knjižnici. Holubov Ukrotitev niti Java vsebuje nekaj lepih tehnik, kako kar najbolje izkoristiti programiranje niti. Nisem pa prepričan, ali je to nujen vir. Visoko zmogljivo računalništvo Java Platform se zdi primerno za tiste, ki jih zanima vzporedni računalniški svet. V nasprotnem primeru bi ga pustil na polici.

John Zukowski je neodvisni svetovalec za Javo, avtor dokončnega vodiča za Swing za Javo 2, druge izdaje Apressa, obvladovanja Jave 2 iz Sybexa in reference Java AWT pri O'Reilly ter vodnika About's Focus on Java.
$config[zx-auto] not found$config[zx-overlay] not found