Programmēšana

Java pavedieni: Salīdzinošs grāmatu apskats

Kopš. Gada pirmajiem izdevumiem Java pavedieni no O'Reilija un Vienlaicīga programmēšana Java no Addison-Wesley iznāca pirms vairākiem gadiem, es tos iesaku cilvēkiem, kuri vēlas iemācīties lietot pavedienus. Ar vairākām konkurējošām grāmatām un oriģinālu otrajiem izdevumiem, kas tagad ir pieejami, esmu nolēmis pārvērtēt savus ieteikumus. Šajā rakstā es apskatīšu sešas jaunākās Java pavedienu programmēšanas grāmatas.

Pārskatītas sešas grāmatas:

  1. Java Threads, otrais izdevums, Skots Oukss un Henrijs Vongs (O'Reilijs)
  2. Vienlaicīga programmēšana Java, 2. izdevums, Doug Lea (Adisona-Veslija)
  3. Pieradinot Java pavedienus, Alens Holubs (Apress)
  4. Java pavedienu programmēšana, Pols Haids (Sams)
  5. Daudzlīniju programmēšana ar Java tehnoloģiju, Bils Lūiss un Daniels Bergs (Prentice Hall, Sun Press)
  6. Augstas veiktspējas Java platformas skaitļošana: daudzlīniju un tīkla programmēšana, Tomass Kristofers un Džordžs Tiruvathukals (Prentice Hall, Sun Press)

Zemāk esošajā tabulā sniegts ātrs pārskats par sešu grāmatu galvenajiem raksturlielumiem.

Visas grāmatas ir balstītas uz Java 2. platformas 1.2.x izlaidumu.
Threads grāmatu pārskats
 Java pavedieniVienlaicīga programmēšanaPieradinot Java pavedienusJava pavedienu programmēšanaVairāku pavedienu programmēšanaAugstas veiktspējas Java
Cena2.959.954.954.999.999.99
Kopējais lapu skaits320410300510460410
CD-ROM / avots no tīmekļaNē JāNē JāNē JāNē JāNē JāNē Jā
Vītnes pamatiIzciliTaisnīgiNavIzciliIzciliTaisnīgi
TehnikaĻoti labiLabiĻoti labiIzciliLabiĻoti labi
Dizaina modeļiNavIzciliNabadzīgsNavNavLabi
Mērogs: nav, slikts, vidējs, labs, ļoti labs, izcils

Tabulai jābūt diezgan pašsaprotamai līdz CD-ROM atribūtam. Ļaujiet man sīkāk paskaidrot pēdējās rindas:

  • Atribūts Thread Basics norāda, cik lielā mērā grāmatas apraksta, kas ir pavediens un kā to izmantot: aprakstot Vītne klase un Skrienams interfeiss, Objekts metodes pagaidiet (), paziņot(), un paziņot visiem ()un sinhronizēts atslēgvārds.
  • Techniques atribūts novērtē, cik labi grāmatas pēta pavedienu izmantošanas paņēmienus.
  • Atribūts Dizaina modeļi mēra grāmatu skaidrojumu par to, kā izveidot uz pavedieniem balstītu programmēšanu pēc precīzi definētiem dizaina modeļiem.

Tālāk es pārskatīšu katru grāmatu. Blakus katras grāmatas nosaukumam ir zvaigznīšu vērtējums, pamatojoties uz pavedienu pārklājuma apgabalu, uz kuru šī grāmata apgalvo koncentrēšanos, nevis tikai uz vidējo no trim iepriekš uzskaitītajiem atribūtiem. Viena zvaigzne norāda uz sliktu darbu; augstākais vērtējums (piecas zvaigznes) norāda ārkārtas pārklājumu.

Java pavedieni

Pirmais izdevums Java pavedieni, Scott Oaks un Henry Wong, bija sākotnējais galīgais resurss, lai iemācītos programmēt ar pavedieniem. Kaut arī lielākajā daļā ievada grāmatu tika apskatīts, kas ir pavediens un kā to izmantot Vītne klase ar Skrienams saskarne, Java pavedieni sniedza papildu informāciju, kas nepieciešama to efektīvai izmantošanai. Otrais izdevums seko tā pēdās: tajā ir iekļauta atjaunināta informācija par pavedienu izmantošanu ar Java 2 platformu, informācija par novecojušajām API, I / O pārtraukšana un Java 2 drošības izmaiņas. Grāmata aptver arī daudzsavienojuma jautājumus ar Swing komponentu komplektu un sniedz palīdzību vietējā plānošanas atbalsta sniegšanā un darbā ar daudzprocesoru mašīnām.

Ja jūs esat jauns Java programmēšanas lietotājs un vēl neesat iekarojis pavedienus, Java pavedieni ir lielisks resurss. Jūs iepazīsities ar Java pavedienu pamatiem un uzzināsiet tehnikas, kas nepieciešamas, lai jūsu programmas darbotos pareizi daudzlīniju pasaulē.

Vienlaicīga programmēšana Java

Kamēr Java pavedieni izskaidro zemo informāciju par Threads API izmantošanu, Vienlaicīga programmēšana Java, autors: Doug Lea, pēta pareizu daudzpavedienu programmu noformējumu. Java pasaulē nepietiek ar to, kā lietot API; jums vajadzētu arī tērēt laiku un enerģiju, lai jūsu programma būtu pareiza. Šajā gaismā Vienlaicīga programmēšana galvenokārt ir dizaina modeļu grāmata. Ņemot vērā noteiktu problēmu, jūs varat meklēt grāmatā definēto modeli, un jūsu programma praktiski pati raksta.

Vienlaicīga programmēšana ir sadalīts četrās jomās, kas apraksta dažādus lietošanas modeļus. Sadaļā "Vienlaicīga objektorientēta programmēšana" jūs sākat ar pamatiem. Sadaļā "Izslēgšana" ir aprakstīti modeļa izmantošanas veidi sinhronizēts atslēgvārds. "Valsts atkarība" pēta problēmas un modeļus, kā to izmantot pagaidiet (), paziņot(), un paziņot visiem () metodes Objekts klasē. Pēdējā sadaļa "Vītņu veidošana" ir par modeļa izmantošanu Vītne klasē.

Šī grāmata noteikti ir paredzēta pieredzējušam lietotājam, un tā nav domāta vājš sirdij. Paredzams, ka jūs labi pārzīsit uz objektorientēto programmēšanu un Java programmēšanas valodu, un jums to pietrūks tikai programmēšanas programmās vienlaicīguma jautājumiem. Papildus grāmatai Lea padara pašreizējo bibliotēku brīvi pieejamu grāmatas vietnē. (Saiti skatiet sadaļā Resursi.) Bibliotēka palīdzēs jums izstrādāt un attīstīt daudzu pavedienu programmas.

Pieradinot Java pavedienus

Alena Holuba Pieradinot Java pavedienus, radies šeit plkst JavaWorld kā deviņu daļu Java Toolbox sērija. Raksti kopš tā laika ir atjaunināti, un tagad tie veido grāmatas saturu, kā arī jaunu interesantu nodaļu, kurā aprakstītas Java vītņu API problēmas. (Skatīt saiti uz šo sadaļu Resursi ar nosaukumu "Ja es būtu karalis".) Pieradināšana ir atšķirībā no pirmajām divām grāmatām, kuras es pārskatīju; runa ir tikai par metodēm, kā pareizi izmantot API. Tas nav ievads pavedieniem vai dizaina modeļu grāmata. Ir pieejama arī kodu bibliotēka (skatiet saites resursus), lai jūs varētu izmantot apgūto. Tomēr noteikti izlasiet licencēšanas līgumu; tas nav publiski pieejams vai atvērts avots.

Aprakstījis Java daudzšķiedru modeļa pamata arhitektūru, Holubs paskaidro vītņu izmantošanas riskus un paņēmienus, kā tos droši izmantot. Jūs iemācīsities izveidot un izmantot muteksus, semaforas un nosacītos mainīgos. Jūs iepazīsities ar atšķirībām starp šūpolēm invokeLater () un invokeAndWait () metodes. Holubs arī pēta AWTEventMulticaster klasē un parāda, kā tas ir drošs ar vītnēm ar minimālu pieskaitāmo daudzumu un kā jūs varat strādāt ar vītņu baseiniem. Galu galā ir pateikts un izdarīts, jums būs lieliska izpratne par Java vītņu modeļa ierobežojumiem un izmantošanu.

Es biju pārsteigts, ieraudzījis dažas tehniskas kļūdas grāmatā - ne mazāk priekšvārdā -, bet tas nemazināja grāmatas piedāvāto lielisko informāciju. Tomēr pēc tam, kad pastāvīgi redzēju Java kodu formatētu ar jaukajiem burtiem, es biju mazliet pārsteigts, ka Holuba kods tika formatēts ar pasvītrojuma rakstzīmi starp mainīgo lielumu vārdiem un metožu nosaukumiem. Jums var būt nepieciešams vairākas reizes izlasīt kodu blokus, pirms tos pilnībā saprotat, taču šeit sniegtās informācijas kvalitāte ir vērts neērtības. Pēdējā piezīme: viss pirmkods ir pilnībā komentēts javadoc.

Java pavedienu programmēšana

Java pavedienu programmēšana, Paul Hyde, tieši konkurē ar Java pavedieni. Tas nepārprotami ir orientēts uz iesācēju izstrādātāju un ietver papildu pārskatu par progresīvākām tēmām un paņēmieniem, kad šis izstrādātājs "izaug". Šī grāmata ir lielākā no ķekara, un telpa tiek labi izmantota.

Gada pirmā puse Java pavedienu programmēšana paskaidro, kas ir pavedieni un kā strādāt ar pamatiem. Jūs saņemat tipisku pavedienu izveidošanas un Skrienams interfeiss. Ir nodaļa par to, kā pārtraukt pavedienus, tostarp par to, kā tos pārtraukt un atsākt, neizmantojot novecojušās metodes - jaukas metodes produktivitātes palielināšanai. Papildus segšanai pagaidiet () un paziņot(), Haids sīki apraksta gaistošs atslēgvārdu un starpsavienojumu saziņa caur I / O caurulēm. Java pavedienu programmēšana ir arī vislabākais ThreadLocal un MantojamaThreadLocal klases, papildus parastajam pavedienu pārklājumam un Swing, kas atrodams citās grāmatās.

2. daļa Java pavedienu programmēšana apraksta paņēmienus darbam ar Java pavedieniem. Tas piedāvā vislabāko vītņu apvienošanas pārklājumu un lielisku nodaļu par bloķētu I / O izlaušanos. Jūs nebūsiet vīlušies par šo izvēli.

Vairāku pavedienu programmēšana ar Java tehnoloģiju

Šķiet, ka vienmēr atrodu vismaz vienu grāmatu, kas nav gluži tāda kā pārējās - Daudzlīniju programmēšana ar Java tehnoloģiju, Bil Lewis un Daniel Berg, ir tieši šāds zvērs. Es tam joprojām piešķiru zvaigznīšu vērtējumu, taču šī grāmata ir pelnījusi īpašu pieminēšanu. Pēc manām domām, Daudzšķiedru programmēšana ”Galvenais mērķis nav iemācīt jums programmēt ar Java pavedieniem. Tas jums palīdzēs šajā jomā, taču šķiet, ka tā galvenais mērķis ir iemācīt, kā darbojas pavedienu arhitektūra gan Java virtuālajā mašīnā (Java VM), gan pamatā esošajās operētājsistēmās. Patiesībā jūs saņemat ne tikai daudzus grāmatas kodu piemērus Java kodā, bet arī POSIX kodu un kodu Win32 API pavedienu apstrādei. Ja katras nodaļas beigās būtu lasītāju vingrinājumi, tas labi darbotos kā koledžas teksts.

Tas nozīmē, cik labi dara Vairāku pavedienu programmēšana iemācīt jums izmantot pavedienus? Tas visvairāk atgādina Java pavedieni; tā galvenais mērķis ir iemācīt, kas ir pavediens un kā to izmantot. Tas arī parāda, kā viss zem pārsega darbojas Java VM, kā viss ir ieplānots Java VM ietvaros utt. Turklāt jūs saņemat informāciju par tipiskām pavedienu tēmām, piemēram, sinhronizāciju, strupceļiem un sacensību apstākļiem. Lūiss un Bergs pat aptver pavedienu jautājumus ar RMI un optimizācijas metodēm, lai uzlabotu veiktspēju. Kopumā šī ir laba grāmata - tikai ne tipiska Java pavedienu prezentācija.

Ciktāl tas attiecas uz grāmatas piemēriem, uzmanieties, lai Elvis nokļūtu NLO.

Augstas veiktspējas Java platformas skaitļošana

Reģistrēšanās ar garāko nosaukumu ir Augstas veiktspējas Java platformas skaitļošana: daudzlīniju un tīkla programmēšana, autori Tomass Kristofers un Džordžs Tiruvathukals. Pat autoru uzvārdi ir vismaz divreiz garāki par viņu konkursu! Pārpalikums neapstājas tur; arī šī grāmata maksā vairāk nekā par 25 procentiem vairāk nekā citas.

Pietiek ar ārpusi - kas ir iekšā? Augsta veiktspēja lec tieši diskusijā par paralēlo skaitļošanu. Jūs uzzināsiet par fon Neimaņa mašīnu, Flinnas taksonomiju, lineāro ātruma palielināšanu un Amdāla likumu - viss 1. nodaļā. 2. nodaļā padziļināti tiek pētīta pavedienu izveide nekā lielākajā daļā API ievadu. Pēc sacensību apstākļu demonstrēšanas 3. nodaļā tiek apspriesta sinhronizācija un kāpēc tā jums nepieciešama. 4. nodaļā ir padziļināti iedziļināti monitori, ar daudzām variācijām par lasītāja un rakstītāja bloķēšanas problēmām. 5. nodaļā autori apspriež koplietojamās atmiņas izmantošanu uz kaudzes, nevis Unix sistēmas šķirnes - visu, lai izveidotu pavedienu kopu. Pārējā grāmata aptver modeļus paralēlu izpildījumu lietojumprogrammu izstrādei.

Šeit ir daudz labas informācijas par paralēlo skaitļošanu, bet Augsta veiktspēja'Mērķis patiesībā nav iemācīt vispārējas nozīmes pavedienu programmēšanu. Šķiet, ka tas galvenokārt tiek izstrādāts kā paralēla skaitļošanas kursa teksts - katra nodaļa beidzas ar pārdomātu vingrinājumu sēriju, uz kuriem man neizdevās atrast atbildes.

Vai es turpinu ieteikt to pašu?

Pirmie izdevumi Vienlaicīga programmēšana Java un Java pavedieni iznāca 1997. gadā un tika ļoti ieteikti. Vai es vienkārši akli iesaku viņu otros izdevumus? Īsāk sakot, šķiet, ka Lea Vienlaicīga programmēšana joprojām ir lielisks resurss tiem, kas mācās izstrādāt programmas daudzšķiedru pasaulei. Tas nav viegli lasāms, bet grāmatā izskaidrotie dizaina modeļi un paņēmieni ir lieliski instrumenti nopietniem Java izstrādātājiem.

No otras puses, tas parādās Java pavedieni ir sekojis Sams Java pavedienu programmēšana kā labākā grāmata iesācējiem. O'Reilly piedāvājumam nekas tehniski nav kārtībā, bet Java pavedienu programmēšana darbojas labāk kā ievads Java pavedieniem. Haids pat pārsniedz ievada materiālu, piedāvājot modernākus paņēmienus.

Ja jums ir pirmie izdevumi Java pavedieni un Vienlaicīga programmēšana Java, vai ir vērts saņemt atjauninājumus? Es varētu ieteikt iegūt Lea otro izdevumu un nodot to tālāk Java pavedieni. Ja jums ir pirmais Java pavedieni, jūs, iespējams, jau esat pārcēlies uz nepieciešamību pēc otra. Ja jums joprojām ir nepieciešams ievadteksts, paņemiet Sams Java pavedienu programmēšana tā vietā.

Ko darīt ar pārējo? Tas patiešām ir grūts zvans, un tas ir atkarīgs no tā, kura dimetānnaftalīna jūs tērējat. Ja es varētu iegūt tikai vēl vienu pavedienu grāmatu, es izvēlētos Vairāku pavedienu programmēšana ar Java tehnoloģiju. Tās pavedienu pārklājums ir pietiekami unikāls un noderīgs, lai padarītu to par jauku bibliotēkas papildinājumu. Holuba Pieradināt Java pavedienus satur dažas jaukas tehnikas, lai maksimāli izmantotu pavedienu programmēšanu. Tomēr neesmu pārliecināts, vai tas ir nepieciešams resurss. Augstas veiktspējas Java platformas skaitļošana šķiet piemērots tiem, kurus interesē paralēlā skaitļošanas pasaule. Pretējā gadījumā es to atstātu plauktā.

Džons Zukovskis ir neatkarīgs Java konsultants, autora “Definitive Guide to Swing for Java 2”, “Apress” otrais izdevums, “Java 2 apgūšana no“ Sybex ”un“ Java AWT Reference ”autors no“ O'Reilly ”, kā arī“ About's Focus on Java ”autors.
$config[zx-auto] not found$config[zx-overlay] not found