Programavimas

„Java“ temos: lyginamoji knygų apžvalga

Nuo tada, kai pirmieji leidiniai buvo „Java“ gijos iš O'Reilly ir Lygiagretus programavimas „Java“ iš Addison-Wesley pasirodė prieš kelerius metus, aš juos rekomendavau žmonėms, norintiems išmokti naudoti gijas. Turėdamas kelias konkuruojančias knygas ir antrus originalų leidimus, nusprendžiau iš naujo įvertinti savo rekomendacijas. Šiame straipsnyje apžvelgsiu šešias naujausias „Java“ siūlų programavimo knygas.

Šešios peržiūrėtos knygos yra:

  1. „Java Threads“, antrasis leidimas, Scottas Oaksas ir Henry Wongas (O'Reilly)
  2. Lygiagretus programavimas „Java“, antrasis leidimas, Dougas Lea (Addisonas-Wesley)
  3. Prisijaukinti „Java“ gijas, Allenas Holubas (Apressas)
  4. „Java“ siūlų programavimas, Paulas Hyde'as (Samsas)
  5. Daugialypis programavimas su „Java“ technologija, Bil Lewis ir Daniel Berg („Prentice Hall“, „Sun Press“)
  6. Didelio našumo „Java“ platformos skaičiavimas: daugialypis ir tinklinis programavimas, Thomas Christopher ir George Thiruvathukal („Prentice Hall“, „Sun Press“)

Žemiau esančioje lentelėje pateikiama greita šešių knygų pagrindinių savybių apžvalga.

Visos knygos yra paremtos „Java 2“ platformos 1.2.x leidimu.
„Threads“ knygų apžvalga
 „Java“ gijosLygiagretus programavimasPrisijaukinti „Java“ gijas„Java“ siūlų programavimasDaugialypis programavimasDidelio našumo „Java“
Kaina2.959.954.954.999.999.99
Iš viso puslapių320410300510460410
CD-ROM / šaltinis iš internetoNe taipNe taipNe taipNe taipNe taipNe taip
Siūlų pagrindaiPuikuŠviesusNė vienasPuikuPuikuŠviesus
TechnikosLabai geraiGeraiLabai geraiPuikuGeraiLabai gerai
Dizaino modeliaiNė vienasPuikuVargšasNė vienasNė vienasGerai
Mastelis: nėra, prastas, vidutinis, geras, labai geras, puikus

Lentelė turėtų būti pakankamai aiški iki kompaktinių diskų atributo. Leiskite man paaiškinti kelias paskutines eilutes:

  • „Thread Basics“ atributas nurodo, kiek knygose aprašoma, kas yra gija ir kaip ją naudoti: apibūdinant Siūlas klasė ir Bėgama sąsaja, Objektas metodai laukti(), pranešti ()ir pranešti visiems (), ir sinchronizuotas raktinis žodis.
  • „Techniques“ atributas įvertina, kaip gerai knygose nagrinėjamos gijų naudojimo technikos.
  • Atributas „Dizaino modeliai“ vertina knygų paaiškinimą, kaip sukurti programavimą pagal temas pagal tiksliai apibrėžtus dizaino modelius.

Toliau apžvelgsiu kiekvieną knygą. Šalia kiekvienos knygos pavadinimo yra žvaigždžių įvertinimas, atsižvelgiant į siūlų aprėpties plotą, į kurį ši knyga pretenduoja sutelkti dėmesį, o ne tik trijų aukščiau išvardytų atributų vidurkį. Viena žvaigždė rodo prastą darbą; Aukščiausias įvertinimas (penkios žvaigždutės) nurodo išskirtinę aprėptį.

„Java“ gijos

Pirmasis leidimas „Java“ gijos, Scottas Oaksas ir Henry Wongas buvo originalus pagrindinis mokymosi programuoti gijomis šaltinis. Nors dauguma įvadinių knygų apžvelgė, kas yra gija ir kaip ją naudoti Siūlas klasė su Bėgama sąsaja, „Java“ gijos pateikė papildomą informaciją, reikalingą efektyviam jų naudojimui. Antrasis leidimas seka jo pėdomis: jame pateikiama atnaujinta informacija apie gijų naudojimą naudojant „Java 2“ platformą, informacija apie nebenaudojamas API, įvesties / išvesties nutraukimą ir „Java 2“ saugos pakeitimus. Knygoje taip pat aptariami „Swing“ komponentų rinkinio daugialypiai gijimo klausimai ir teikiama pagalba dėl natūralaus planavimo palaikymo ir darbo su daugiaprocesoriniais įrenginiais.

Jei dar nesinaudojote „Java“ programavimu ir dar neturite užkariauti temų, „Java“ gijos yra puikus šaltinis. Jūs susipažinsite su „Java“ sriegimo pagrindais ir išmoksite technikų, reikalingų norint, kad jūsų programos tinkamai veiktų daugiagijyje pasaulyje.

Lygiagretus programavimas „Java“

Nors „Java“ gijos paaiškina žemo lygio informaciją apie „Threads“ API naudojimą, Lygiagretus programavimas „Java“, autorius Dougas Lea, tiria tinkamą daugiagijų programų dizainą. Java pasaulyje nepakanka žinoti, kaip naudoti API; taip pat turėtumėte skirti laiko ir energijos, kad jūsų programos dizainas būtų teisingas. Atsižvelgiant į tai, Lygiagretus programavimas daugiausia yra dizaino modelių knyga. Atsižvelgdami į tam tikrą problemą, galite ieškoti knygoje apibrėžto modelio, o jūsų programa praktiškai parašo save.

Lygiagretus programavimas yra suskirstytas į keturias sritis, apibūdinančias skirtingus naudojimo modelius. Skyriuje „Vienalaikis objektų programavimas“ pradedate nuo pagrindų. Skyriuje „Išskyrimas“ aprašomi sinchronizuotas raktinis žodis. "Valstybės priklausomybė" nagrinėja problemas ir modelius, kaip naudoti laukti(), pranešti ()ir pranešti visiems () metodai Objektas klasė. Paskutiniame skyriuje „Temų kūrimas“ kalbama apie Siūlas klasė.

Ši knyga neabejotinai tinka pažengusiam vartotojui ir nėra skirta silpnai širdžiai. Tikimasi, kad gerai suprasite į objektą orientuotą programavimą ir „Java“ programavimo kalbą, ir jums trūksta tik kuriant programas dėl lygiagretumo problemų. Be knygos, Lea suteikia galimybę naudotis dabartine biblioteka knygos tinklalapyje. (Žr. Šaltinius, kur rasite nuorodą.) Biblioteka padės jums kurti ir plėtoti daugiagijas programas.

Prisijaukinti „Java“ gijas

Alleno Holubo Prisijaukinti „Java“ gijas, atsirado čia „JavaWorld“ kaip devynių dalių „Java Toolbox“ serija. Straipsniai nuo to laiko buvo atnaujinti ir dabar sudaro knygos turinį kartu su nauju įdomiu skyriumi, kuriame aprašomos „Java“ sriegimo API problemos. (Norėdami rasti nuorodą į tą skyrių „Jei aš būčiau karalius“, žr. Šaltinius). Prisijaukinimas skiriasi nuo pirmųjų dviejų knygų, kurias peržiūrėjau; griežtai kalbama apie tinkamo API naudojimo būdus. Tai nėra įvadas į gijas ar dizaino modelių knygą. Taip pat yra kodų biblioteka (žr. Nuorodos šaltinius), kad galėtumėte pasinaudoti tuo, ką išmokote. Vis dėlto būtinai perskaitykite licencijos sutartį; tai nėra viešoji nuosavybė ar atvirasis šaltinis.

Apibūdinęs pagrindinę „Java“ kelių gijų modelio architektūrą, Holubas paaiškina pavojus, susijusius su gijų naudojimu ir jų saugaus naudojimo metodika. Išmoksite kurti ir naudoti muteksus, semaforus ir sąlyginius kintamuosius. Jūs susipažinsite su „Swing“ skirtumais invokeLater () ir invokeAndWait () metodai. Holubas taip pat tyrinėja AWTEventMulticaster klasę ir parodo, kaip jis yra saugus siūlams su minimaliomis pridėtinėmis sąnaudomis, ir kaip jūs galite dirbti su siūlų baseinais. Juk viskas pasakyta ir padaryta, jūs turėsite puikų supratimą apie „Java“ siūlų modelio apribojimus ir naudojimą.

Nustebau pamačiusi keletą techninių klaidų knygoje - ne mažiau įžangoje, bet tai nesumažino puikios knygos siūlomos informacijos. Tačiau, nuolat matydamas „Java“ kodą, suformatuotą mišriomis raidėmis, buvau šiek tiek nustebęs, kad Holubo kodas buvo suformatuotas su pabraukimo ženklu tarp kintamųjų žodžių ir metodų pavadinimų. Jums gali tekti kelis kartus perskaityti kodų blokus, kol juos visiškai suprasite, tačiau čia pateiktos informacijos kokybė yra verta nepatogumų. Paskutinė pastaba: visas šaltinio kodas yra visiškai javadoc pakomentuotas.

„Java“ siūlų programavimas

„Java“ siūlų programavimas, Paul Hyde, tiesiogiai konkuruoja su „Java“ gijos. Jis aiškiai skirtas pradedančiam kūrėjui ir apima papildomą pažangesnių temų ir metodų aprašymą, kai tas kūrėjas „užaugs“. Ši knyga yra didžiausia iš krūvos, ir erdvė yra tinkamai naudojama.

Pirmoji pusė „Java“ siūlų programavimas paaiškina, kas yra gijos ir kaip dirbti su pagrindais. Gaunate tipišką gijų kūrimo ir Bėgama sąsaja. Yra skyrius, kaip sustabdyti gijas, įskaitant tai, kaip jas sustabdyti ir atnaujinti nenaudojant pasenusių metodų - puikių metodų produktyvumui padidinti. Be padengimo laukti() ir pranešti (), Hyde išsamiai aprašo nepastovus raktinių žodžių ir interthread komunikacija per įvesties / išvesties vamzdžius. „Java“ siūlų programavimas taip pat geriausiai aprėpia „ThreadLocal“ ir „InheritableThreadLocal“ klasės, be įprastų siūlų ir „Swing“ aprėpties, randamos kitose knygose.

2 dalis „Java“ siūlų programavimas aprašomos darbo su „Java“ gijomis technikos. Jis siūlo geriausią siūlų sujungimo aprėptį ir puikų skyrių apie užblokuotų I / O išlaisvinimą. Jūs nenusivilsite šiuo pasirinkimu.

Programavimas daugeliu sričių su „Java“ technologija

Atrodo, kad visuomet randu bent vieną knygą, kuri ne visai panaši į kitas - Daugialypis programavimas naudojant „Java“ technologiją, Bil Lewiso ir Danielio Bergo, yra būtent toks žvėris. Aš vis tiek suteikiau jai žvaigždžių įvertinimą, tačiau ši knyga nusipelno ypatingo paminėjimo. Mano nuomone, Daugialypis programavimas “Pagrindinis tikslas nėra išmokyti jus programuoti naudojant „Java“ gijas. Tai padės jums toje srityje, tačiau atrodo, kad jos pagrindinis tikslas yra išmokyti jus, kaip veikia pagrindinė gijų architektūra tiek „Java“ virtualioje mašinoje („Java VM“), tiek pagrindinėse operacinėse sistemose. Tiesą sakant, jūs gaunate ne tik daugybę knygos kodų pavyzdžių „Java“ kode, bet ir POSIX kodą bei „Win32“ API gijų tvarkymo kodą. Jei kiekvieno skyriaus pabaigoje būtų skaitytojo pratimai, tai gerai veiktų kaip kolegijos tekstas.

Tai pasakė, kaip sekasi Daugialypis programavimas išmokyti jus naudoti gijas? Tai labiausiai primena „Java“ gijos; jo pagrindinis tikslas yra išmokyti jus, kas yra gija ir kaip ją naudoti. Tai taip pat parodo, kaip viskas, kas yra po gaubtu, veikia „Java VM“, kaip viskas yra suplanuota „Java VM“ ir pan. Be to, gausite tipiškų temų, tokių kaip sinchronizavimas, aklavietės ir lenktynių sąlygos, aprėptį. Norėdami pagerinti našumą, Lewisas ir Bergas netgi aptaria siūlų problemas su RMI ir optimizavimo metodais. Apskritai tai yra gera knyga - tik ne tipiškas „Java“ gijų pristatymas.

Kiek yra knygos pavyzdžių, saugokitės, kad Elvis būtų įkliuvęs į NSO.

Didelio našumo „Java“ platformos skaičiavimas

Registracija su ilgiausiu pavadinimu yra Didelio našumo „Java“ platformos skaičiavimas: daugialypis ir tinklinis programavimas, pateikė Thomas Christopher ir George Thiruvathukal. Net autorių pavardės yra bent dvigubai ilgesnės už jų konkurso trukmę! Perteklius tuo nesibaigia; ši knyga taip pat kainuoja daugiau nei 25 procentais daugiau nei kitos.

Užtenka apie išorę - kas viduje? Didelis našumas pereina tiesiai į lygiagretaus skaičiavimo diskusiją. 1 skyriuje sužinosite apie „von Neumann Machine“, „Flynn“ taksonomiją, linijinį greitėjimą ir Amdahlio dėsnį. 2 skyriuje gijų kūrimas nuodugniau nei daugelyje API įvadų. Parodžius varžybų sąlygas, 3 skyriuje aptariama sinchronizacija ir kodėl jums to reikia. 4 skyriuje gilinamasi į monitorius, kuriuose pateikiama daugybė skaitytojų ir rašytojų užrakto problemų variantų. 5 skyriuje autoriai aptaria bendrosios atminties naudojimą, o ne „Unix“ sistemos atmainą, naudojimą tam, kad būtų sukurtas gijų telkinys. Likusioje knygos dalyje pateikiami lygiagrečiai vykdomų programų kūrimo modeliai.

Čia yra daug geros informacijos apie lygiagrečią skaičiavimą, bet Didelio našumo “Tikslas nėra išmokyti bendros paskirties siūlų programavimo. Atrodo, kad jis daugiausia sukurtas kaip lygiagretaus skaičiavimo kurso tekstas - kiekvienas skyrius baigiamas apgalvotų pratimų serija, į kurią man nepavyko rasti atsakymų.

Ar nuolat rekomenduoju tą patį?

Pirmieji leidimai Lygiagretus programavimas „Java“ ir „Java“ gijos pasirodė 1997 m. ir buvo labai rekomenduojami. Ar aš tiesiog aklai rekomenduoju jų antruosius leidimus? Trumpai tariant, atrodo, kad Lea Lygiagretus programavimas vis dar yra puikus šaltinis tiems, kurie mokosi kurti programas daugialypiam pasauliui. Tai nėra lengva skaityti, tačiau knygoje paaiškinti dizaino modeliai ir metodai yra puikus įrankis rimtiems „Java“ kūrėjams.

Kita vertus, pasirodo „Java“ gijos pavyko Samsui „Java“ siūlų programavimas kaip geriausia knyga pradedantiesiems. O'Reilly pasiūlyme nėra nieko techniškai blogo, bet „Java“ siūlų programavimas veikia geriau kaip „Java“ gijų įvadas. Hyde netgi pranoksta įžanginę medžiagą ir siūlo pažangesnes technologijas.

Jei turite pirmuosius leidimus „Java“ gijos ir Lygiagretus programavimas „Java“, ar verta gauti naujinius? Galbūt rekomenduočiau įsigyti antrąjį „Lea“ leidimą ir perduoti „Java“ gijos. Jei turite pirmąjį leidimą „Java“ gijos, jūs tikriausiai jau peržengėte antrojo poreikį. Jei jums vis dar reikia įvadinio teksto, pasiimkite „Sams“ „Java“ siūlų programavimas vietoj to.

Ką daryti su likusiais? Tai tikrai sunkus skambutis ir priklauso nuo to, kieno centą išleidžiate. Jei galėčiau gauti dar vieną gijų knygą, rinkčiausi Programavimas daugeliu sričių su „Java“ technologija. Jo gijų aprėptis yra unikali ir pakankamai naudinga, kad būtų gražus bibliotekos priedas. Holubo Prisijaukinti „Java“ gijas yra keletas gražių metodų, kaip maksimaliai išnaudoti siūlų programavimą. Vis dėlto nesu tikras, ar tai būtinas šaltinis. Didelio našumo „Java“ platformos skaičiavimas atrodo tinkama tiems, kurie domisi paralelinio skaičiavimo pasauliu. Kitu atveju palikčiau jį lentynoje.

John Zukowski yra nepriklausomas „Java“ konsultantas, „Galutinio„ Swing for Java 2 “,„ Apress “antrojo leidimo,„ Java 2 “valdymo iš„ Sybex “ir„ Java AWT Reference “iš„ O'Reilly “, taip pat„ About's Focus on Java “vadovas.
$config[zx-auto] not found$config[zx-overlay] not found