Tải bản đầy đủ

OReilly java 1 5 tiger a developers notebook jun 2004 ISBN 0596007388











TableofContents
Index
Reviews
Examples
ReaderReviews
Errata
Academic

Java1.5Tiger:ADeveloper'sNotebook
ByDavidFlanagan,BrettMcLaughlin


Publisher :O'Reilly
PubDate :June2004
ISBN :0-596-00738-8
Pages :200


Thisno-nonsense,guidebybestsellingJava
authorsBrettMcLaughlinandDavidFlanagan
jumpsrightintoTiger.Usingthetaskorientedformatofthisnewseries,you'llget
completepracticalcoverageofgenerics,
boxingandunboxing,varargs,enums,
annotations,formatting,thefor/inloop,
concurrency,andmore.












TableofContents
Index
Reviews
Examples
ReaderReviews
Errata
Academic

Java1.5Tiger:ADeveloper'sNotebook
ByDavidFlanagan,BrettMcLaughlin

Publisher :O'Reilly
PubDate :June2004
ISBN :0-596-00738-8
Pages :200



Copyright

TheDeveloper'sNotebookSeries
NotebooksAre...

NotebooksAren't...

Organization


Preface
Organization




HowThisBookWasWritten




ConventionsUsedinThisBook




AcknowledgmentsfromBrett

AbouttheExamples
HowtoContactUs
AcknowledgmentsfromDavid




Chapter1.What'sNew?




Section1.1.WorkingwithArrays




Section1.3.OrderingQueuesUsingComparators




Section1.5.TakingAdvantageofBetterUnicode

Section1.2.UsingQueues
Section1.4.OverridingReturnTypes
Section1.6.AddingStringBuildertotheMix


Chapter2.Generics
Section2.1.UsingType-SafeLists

Section2.2.UsingType-SafeMaps




Section2.3.IteratingOverParameterizedTypes




Section2.5.ReturningParameterizedTypes




Section2.7.CheckingforLint




Section2.9.UsingTypeWildcards

Section2.4.AcceptingParameterizedTypesasArguments
Section2.6.UsingParameterizedTypesasTypeParameters
Section2.8.GenericsandTypeConversions
Section2.10.WritingGenericTypes

Section2.11.RestrictingTypeParameters


Chapter3.EnumeratedTypes
Section3.1.CreatinganEnum




Section3.2.DeclaringEnumsInline




Section3.4.SwitchingonEnums




Section3.6.SetsofEnums




Section3.8.ImplementingInterfaceswithEnums




Section3.10.ManuallyDefininganEnum

Section3.3.IteratingOverEnums
Section3.5.MapsofEnums
Section3.7.AddingMethodstoanEnum
Section3.9.Value-SpecificClassBodies
Section3.11.ExtendinganEnum


Chapter4.AutoboxingandUnboxing
Section4.1.ConvertingPrimitivestoWrapperTypes

Section4.2.ConvertingWrapperTypestoPrimitives




Section4.3.IncrementingandDecrementingWrapperTypes




Section4.5.ConditionalsandUnboxing



Section4.7.MethodOverloadResolution

Section4.4.BooleanVersusboolean
Section4.6.ControlStatementsandUnboxing




Chapter5.varargs




Section5.1.CreatingaVariable-LengthArgumentList




Section5.3.AllowingZero-LengthArgumentLists

Section5.2.IteratingOverVariable-LengthArgumentLists
Section5.4.SpecifyObjectArgumentsOverPrimitives

Section5.5.AvoidingAutomaticArrayConversion


Chapter6.Annotations
Section6.1.UsingStandardAnnotationTypes




Section6.2.AnnotatinganOverridingMethod




Section6.4.SuppressingWarnings




Section6.6.AnnotatingAnnotations




Section6.8.SettingtheRetentionofanAnnotationType




Section6.10.SettingUpInheritanceinAnnotations

Section6.3.AnnotatingaDeprecatedMethod
Section6.5.CreatingCustomAnnotationTypes
Section6.7.DefininganAnnotationType'sTarget
Section6.9.DocumentingAnnotationTypes
Section6.11.ReflectingonAnnotations


Chapter7.Thefor/inStatement
Section7.1.DitchingIterators

Section7.2.IteratingoverArrays




Section7.3.IteratingoverCollections




Section7.5.MakingYourClassesWorkwithfor/in

Section7.4.AvoidingUnnecessaryTypecasts
Section7.6.DeterminingListPositionandVariableValue

Section7.7.RemovingListItemsinafor/inLoop


Chapter8.StaticImports
Section8.1.ImportingStaticMembers




Section8.2.UsingWildcardsinStaticImports




Section8.4.ImportingMultipleMemberswiththeSameName

Section8.3.ImportingEnumeratedTypeValues
Section8.5.ShadowingStaticImports


Chapter9.Formatting
Section9.1.CreatingaFormatter

Section9.2.WritingFormattedOutput





Section9.3.Usingtheformat()ConvenienceMethod
Section9.4.Usingtheprintf()ConvenienceMethod
Chapter10.Threading




Section10.1.HandlingUncaughtExceptionsinThreads




Section10.2.UsingThread-SafeCollections




Section10.4.SpecifyingTimeoutsforBlocking




Section10.6.UsingExecutorasaService




Section10.8.ExecutingTasksWithoutanExecutorService




Section10.10.AdvancedSynchronizing

Section10.3.UsingBlockingQueues
Section10.5.SeparatingThreadLogicfromExecutionLogic
Section10.7.UsingCallableObjects
Section10.9.SchedulingTasks
Section10.11.UsingAtomicTypes

Section10.12.LockingVersusSynchronization


Colophon

Index


Java1.5Tiger:ADeveloper'sNotebook™
byBrettMcLaughlinandDavidFlanagan
Copyright©2004O'ReillyMedia,Inc.Allrightsreserved.
PrintedintheUnitedStatesofAmerica.
PublishedbyO'ReillyMedia,Inc.,1005GravensteinHighway
North,Sebastopol,CA95472.
O'Reillybooksmaybepurchasedforeducational,business,or
salespromotionaluse.Onlineeditionsarealsoavailablefor
mosttitles(safari.oreilly.com).Formoreinformxation,contact
ourcorporate/institutionalsalesdepartment:(800)998-9938or
corporate@oreilly.com.
Editor:BrettMcLaughlin
ProductionEditor:RegAubry
CoverDesigner:EdieFreedman
InteriorDesigner:MelanieWang
PrintingHistory:
June2004:FirstEdition.
NutshellHandbook,theNutshellHandbooklogo,andthe
O'ReillylogoareregisteredtrademarksofO'ReillyMedia,Inc.
TheDeveloper'sNotebookseriesdesignations,Java1.5Tiger:A
Developer'sNotebook,thelookofalaboratorynotebook,and
relatedtradedressaretrademarksofO'ReillyMedia,Inc.
Java™andallJava-basedtrademarksandlogosaretrademarks
orregisteredtrademarksofSunMicrosystems,Inc.,inthe
UnitedStatesandothercountries.Manyofthedesignations
usedbymanufacturersandsellerstodistinguishtheirproducts
areclaimedastrademarks.Wherethosedesignationsappearin
thisbook,andO'ReillyMedia,Inc.wasawareofatrademark


claim,thedesignationshavebeenprintedincapsorinitialcaps.
Whileeveryprecautionhasbeentakeninthepreparationofthis
book,thepublisherandauthorsassumenoresponsibilityfor
errorsoromissions,orfordamagesresultingfromtheuseof
theinformationcontainedherein.
ISBN:0-596-00738-8
[M]


TheDeveloper'sNotebookSeries
So,you'vemanagedtopickthisbookup.Cool.Really,I'm
excitedaboutthat!Ofcourse,youmaybewonderingwhythese
bookshavetheoddlooking,collegenotebooksortofcover.I
mean,thisisO'Reilly,right?Wherearetheanimals?And,really,
doyouneedanotherseries?Couldn'tthisjustbeacookbook?
Howaboutanutshell,oroneofthosecoolhacksbooksthat
seemstobeeverywhere?Theshortansweristhatadeveloper's
notebookisnoneofthosethingsinfact,it'ssuchanimportant
ideathatwecameupwithanentirelynewlookandfeel,
completewithcover,fonts,andevensomenotesinthemargin.
Thisisallaresultoftryingtogetsomethingintoyourhands
youcanactuallyuse.
It'smystrongbeliefthatwhiletheninetieswerecharacterized
byeveryonewantingtolearneverything(Whynot?Weallhad
six-figureincomesfromdot-comcompanies),thenew
millenniumisaboutinformationpain.Peopledon'thavetime
(ortheincome)toreadthrough600pagebooks,oftenlearning
200things,ofwhichonlyabout4applytotheircurrentjob.It
wouldbemuchnicertojustsitnearoneoftheubercodersand
lookoverhisshoulder,wouldn'tit?Toasktheguysthatare
neck-deepinthisstuffwhytheychoseaparticularmethod,how
theyperformedthisonetrickytask,orhowtheyavoidedthat
threadingissuewhenworkingwithpipedstreams.Thethinking
hasalwaysbeenthatbookscan'tservethatparticularneedthey
caninform,andletyoudecide,butultimatelyacoder'smind
wassomethingthatcouldn'treallybecapturedonapieceof
paper.
Thisseriessaysthatassumptionispatentlywrongandweaim
toproveit.
ADeveloper'sNotebookisjustwhatitclaimstobe:theoftenfranticscribblingandnotesthatatrue-bluealphageekmentally


makeswhenworkingwithanewlanguage,API,orproject.It's
theno-nonsensecodethatsolvesproblems,strippedofpagefillingcommentarythatoftenservesmoreasapaperweight
thananepiphany.It'shackery,focusednotonwhatisniftyor
mightbefuntodowhenyou'vegotsomefreetime(when'sthe
lasttimethathappened?),butonwhatyouneedtosimply
"makeitwork."Thisisn'talecture,folksit'salab.Ifyouwanta
lotofconcept,architecture,andUMLdiagrams,I'llhappilyand
proudlypointyoutoouranimalandnutshellbooks.Ifyouwant
everyanswertoeveryproblemunderthesun,ouromnibus
cookbooksarekiller.Andifyouareintoarcaneandoftenquirky
usesoftechnology,hacksbookssimplyrock.Butifyou'rea
coder,downtoyourcore,andyoujustwanttogetonwithit,
thenyouwantaDeveloper'sNotebook.Coffeestainsandall,
thisisfromthemindofadevelopertoyours,barelyeven
cleanedupenoughforprint.Ihopeyouenjoyit...wesurehada
goodtimewritingthem.


NotebooksAre...

Example-drivenguides
Asyou'llseeinOrganizationsection,developer'snotebooks
arebuiltentirelyaroundexamplecode.You'llseecodeon
nearlyeverypage,andit'scodethatdoessomethingnot
trivial"HelloWorld!"programsthataren'tworthmorethan
thepaperthey'reprintedon.

Aimedatdevelopers
Everreadabookthatseemstobeaimedatpointy-haired
bosses,filledwithbuzzwords,andfeelsmorelikea
marketingmanifestothanaprogrammingtext?Wehave
tooandthesebooksaretheantithesisofthat.Infact,a
goodnotebookisincomprehensibletosomeonewhocan't
program(don'tsaywedidn'twarnyou!),andthat'sjustthe
wayit'ssupposedtobe.Butfordevelopers...it'sasgoodas
itgets.

Actuallyenjoyabletoworkthrough
Doyoureallyhavetimetositaroundreadingsomething
thatisn'tanyfun?Ifyoudo,thenmaybeyou'reinto
thousand-pagelanguagereferencesbutifyou'relikethe
restofus,notebooksareamuchbetterfit.Practicalcode
samples,tersedialoguecenteredaroundpractical
examples,andevensomehumorhereandtheretheseare
theingredientsofagooddeveloper'snotebook.


Aboutdoing,nottalkingaboutdoing
Ifyouwanttoreadabooklateatnightwithoutacomputer
nearby,thesebooksmightnotbethatuseful.Theintentis
thatyou'recodingasyougoalong,kneedeepinbytecode.
Forthatreason,notebookstalkcode,code,code.Fireup
youreditorbeforediggingin.


NotebooksAren't...

Lectures
Wedon'tletjustanyonewriteadeveloper'snotebookyou've
gottobeabonafideprogrammer,andpreferablyonewho
staysupalittletoolatecoding.Whilefull-timewriters,
academics,andtheoristsaregreatinsomeareas,these
booksareaboutprogramminginthetrenches,andarefilled
withinstruction,notlecture.

Filledwithconceptualdrawingsandclasshierarchies
Thisisn'tanutshell(there,wesaidit).Youwon'tfind100pageindiceswitheverymethodlisted,andyouwon'tsee
full-pageUMLdiagramswithmethods,inheritancetrees,
andflowcharts.Whatyouwillfindispageafterpageof
sourcecode.Areyoustartingtosensearecurringtheme?

Longonexplanation,lightonapplication
Itseemsthatmanyprogrammingbooksthesedayshave
three,four,ormorechaptersbeforeyouevenseeany
workingcode.I'mnotsurewhohasauthorsconvincedthat
it'sgoodtokeepareaderwaitingthislong,butit'snot
anybodyworkingonthisseries.Webelievethatifyou're
notcodingwithintenpages,something'swrong.These
booksarealsochock-fullofpracticalapplication,takingyou
fromanexampleinabooktoputtingthingstoworkon
yourjob,asquicklyaspossible.


Organization
Developer'sNotebookstrytocommunicatedifferentinformation
thanmostbooks,andasaresult,areorganizeddifferently.
Theydoindeedhavechapters,butthat'saboutasfarasthe
similaritybetweenanotebookandatraditionalprogramming
bookgoes.First,you'llfindthatalltheheadingsineachchapter
areorganizedaroundaspecifictask.You'llnotethatwesaid
task,notconcept.That'soneoftheimportantthingstoget
aboutthesebookstheyarefirstandforemostaboutdoing
something.Eachoftheseheadingsrepresentsasinglelab.A
labisjustwhatitsoundslikestepstoaccomplishaspecificgoal.
Infact,that'sthefirstheadingyou'llseeundereachlab:"How
doIdothat?"Thisisthecentralquestionofeachlab,andyou'll
findlotsofdown-and-dirtycodeanddetailinthesesections.
Somelabshavesomethingsnottodo(everplayedaroundwith
potassiuminhighschoolchemistry?),helpingyouavoid
commonpitfalls.Somelabsgiveyouagoodreasonforcaring
aboutthetopicinthefirstplace;wecallthisthe"WhydoI
care?"section,forobviousreasons.Forthosetimeswhencode
samplesdon'tclearlycommunicatewhat'sgoingon,you'llfind
a"Whatjusthappened"section.It'sinthesesectionsthatyou'll
findconceptsandtheorybuteventhen,theyaretightlyfocused
onthetaskathand,notexplanationforthesakeofpagecount.
Finally,manylabsofferalternatives,andaddresscommon
questionsaboutdifferentapproachestosimilarproblems.These
arethe"Whatabout..."sections,whichwillhelpgiveeachtask
somecontextwithintheprogrammingbigpicture.
Andonelastthingonmanypages,you'llfindnotesscrawledin
themarginsofthepage.Thesearen'tfordecoration;they
containtips,tricks,insightsfromthedevelopersofaproduct,
andsometimesevenalittlehumor,justtokeepyougoing.
Thesenotesrepresentpartoftheoverallcommunication
flowgettingyouasclosetoreadingthemindofthedeveloper-


authoraswecan.Hopefullythey'llgetyouthatmuchcloserto
feelinglikeyouareindeedlearningfromamaster.
Andmostofall,rememberthesebooksare...
AllLab,NoLecture
BrettMcLaughlin,SeriesCreator


Preface
ProfessionalJava
EnterpriseJava
CommercialJava
Thesearealltermsthatarecommonplaceinprogramming
discussionsthesedaysandforgoodreason.Gonearethedays
whenJavawasconsideredatoylanguageforcreatingweb
games,futilelytryingtocatchuptoits"bigbrothers,"Cand
C++.WhileAWTandSwing(andnowSWT)areimportantparts
oftheJavalanguage,Javahasalsoevolvedtotakeonmore
far-rangingtasksdatabaseinteraction,financialmanagement,ecommerce,andmore.ItsspeediscomparabletoC,anditsAPIs
arefarreaching.Asaresult,thecorelanguagehasundergone
significantstabilization,andJava1.3,andthen1.4,were
largelystepstowardsmaturingtheplatform,ratherthan
radicallychangingit.
EnterJava1.5code-namedTiger.Actually,it'sJava5,version
1.5.Well,it'stheJ2SE,whichIsupposemakesitJava2,
StandardEdition,5,version1.5.Confusingenoughforyou?
Thankfully,whateverthethingiscalled,theadditionsare
worthyofallthehubbub;thisisn'tyourfather'sJava(ortobe
moreaccurate,it'snotyourslightlyolderbrother'sJava)
anymore.
Lookingmorelikeacompletelynewproductthanjustarevision
ofanolderlanguage,Tigerischock-fullofdramaticchangesto
whatyouknowassimplyJava.Youcan'tjustreadthroughthe
releasenotesandfigurethisoneout;andsincethenew
featuresarealotmoreimportantthanalltheodditiesaboutits
versioning,I'lljustcallitTigerthroughoutthebook,and
sidestepJava2version5...er...version1.5...well...asIsaid,
Tiger.


WhateverTigerendsupbeingcalledofficially,itintroducesso
manynewfeaturestothelanguagethatittooknearly200
pagestocoverthemandyou'llfindthateachpageofthisbook
isdensewithcode,example,andterseexplanation.Thereisn't
anywastedspace.Infact,that'spreciselywhatyou'reholding
inyourhandsaconcisecrashcourseinthenextevolutionof
Java,Tiger.Bythetimeyou'rethrough,you'llbetypingyour
lists,takingyouroverloadingtoanentirelynewlevel,writing
compile-timecheckedannotations,andthreadingmore
efficientlythanever.Andthatdoesn'ttakeintoaccounthow
muchfunitistotypeallsortsofnewcharactersintoyour
sourcecode.Youhaven'tliveduntil@,<,>,and%arestrewn
throughoutyoureditor...well,maybethat'sjustmewantingto
havealittlemorefunattheworkplace.Whateveryourreason
forgettingintoTiger,though,you'llfindmoretoolsatyour
disposalthaneverbefore,andfarmorechangeinanyversion
ofJavasinceitsinitial1.0release.Fireupyourcodeeditor,
buckleyourseatbelts,andgetreadytohitthegroundrunning.
Let'stametheTiger.


Organization
Thisbookissetuptobesomethingofacrossbetweena
learningexercise(whereyouwouldreadfromfronttoback),
andacookbook(whereyoucanskiparoundwithoutconcern).
Forthemostpart,youcanfeelfreetolookthroughthetableof
contentsorindex,andfindwhatyou'relookingfor.However,as
manyofthesubjectsinthisbookareinterrelated(suchas
generics,thefor/instatement,andautoboxing),youmayfind
yourselfreadinganarticlethatassumesknowledgefroma
previoussectionofthebook.Inthesecases,justbrowsethe
referencedchapter,andyoushouldbeallset.Alittleextra
learningisagoodthinganyway,right?


HowThisBookWasWritten
Thisbookistheresultofanunusual,butfruitfulcollaboration
betweenDavidFlanaganandBrettMcLaughlin.Davidwasat
workonthefiftheditionofJavainaNutshell,butwaseagerto
getcoverageofthemajorlanguagechangesinTigeroutsooner
thantheproductionscheduleforthatbookallowed.Brett,
meanwhile,wasthedrivingeditorialforcebehindthisinnovative
newseriesofDeveloper'sNotebooks,andwaseagertoinclude
atitleonTigerintheseries.
Theprocesswentlikethis:
DavidresearchedthenewfeaturesofTigerandwroteabout
themforJavainaNutshell.Hesentdraftsofhisnew
materialtoBrett.
Brettfeverishlyrippedthosechaptersapart,rewrotealmost
everything,addednewexamples,andreassembled
everythingintotheDeveloper'sNotebookformat.
TheresultisabookalmostentirelywrittenbyBrett,basedon
researchdonebyDavid.Thetoneofthewritingandthe
engagingstyleofthebookisBrett's,andreadersofthisbook
andJavainaNutshellwillbehard-pressedtofindany
duplicationofprose.Inafewcases,Bretthasusedcode
samplesthatalsoappearinJavainaNutshell,andineachcase
thatfactismentionedinthemargin.


AbouttheExamples
Thisbookhashundredsofcodeexamples,spreadthroughout
itspages.Whilesomecompletecodelistingsareshowninthe
text,otherexamplesareshownonlyinpart.Whilesome
readersmayenjoytypingintheseprogramsontheirown,
manyofusjustdon'thavethetime.Becauseofthis,every
singleexample,andalmostallofthepartialexamples,are
readyforcompilationinJavasourcefiles,readyfordownload.
Additionally,theprocessofcompilation(especiallyclasspath
issues)remainsoneofJava'smostproblematicfeatures.To
helpyouout,anAntbuildfileisincludedwiththesamples,
calledbuild.xml.You'llneedtodownloadandinstallAnt
(availableatant.apache.org)totakeadvantageofthis
buildfile,andIstronglyurgeyoutodojustthat.Antinstallation
iseasy,andyoucanalwaysrefertoAnt:TheDefinitiveGuide
(O'Reilly)ifyouneedassistance.Yourdirectorystructureshould
looksomethinglikethis:

|
+--src(containsbuild.xml)
|
+--classes

Thisisalltakencareofforyouifyoujustdownloadthecodeandunzip


it.

Navigatetoyourlocalsrcdirectory,andtypeant.You'llgetan
errorifyoudon'thaveAntsetupproperly.Otherwise,you
shouldseesomethinglikethefollowing:
${basedir}\code\src>ant
Buildfile:build.xml

compile:
[echo]CompilingallJavafiles...
[javac]Compiling41sourcefilestocode\classes

[javac]Note:code\src\com\oreilly\tiger\ch06\Deprecated
usesoroverridesadeprecatedAPI.

[javac]Note:Recompilewith-Xlint:deprecationfordeta

[javac]Note:Someinputfilesuseuncheckedorunsafeo

[javac]Note:Recompilewith-Xlint:uncheckedfordetail

BUILDSUCCESSFUL


Totaltime:9seconds

I'llleaveittoyoutoexploretheothertargetswithinbuild.xml;
therearealsonotesinmostchaptersabouttargetsthatapply
tothatchapter,ortoaspecificexample.Allthiscodeisheavily
tested,andmildlydocumented.Justmakesureyou'vegotTiger
asthefirstJavacompileronyourclasspath,oryou'llgetall
sortsofnastyerrors!
Youmaydownloadthissamplecode,aswellascheckout
errata,viewrelatedresourcesandonlinearticles,andseethe
latestonthisbook,atwww.oreilly.com/catalog/javaadn/.
Checkthissiteoften,aslotsofnewcontentmaybeavailableas
timegoesbyandweupdatetheexamples.


ConventionsUsedinThisBook

Italicisusedfor:
Pathnames,filenames,programnames,compilers,
options,andcommands
Newtermswheretheyaredefined
Internetaddresses,suchasdomainnamesand
exampleURLs

Boldfaceisusedfor:
Particularkeysonacomputerkeyboard
Namesofuserinterfacebuttonsandmenus

Constantwidthisusedfor:
AnythingthatappearsliterallyinaJSPpageoraJava
program,includingkeywords,datatypes,constants,
methodnames,variables,classnames,andinterface
names
Commandlinesandoptionsthatshouldbetyped
verbatimonthescreen
AllJSPandJavacodelistings
HTMLdocuments,tags,andattributes


Constantwidthitalicisusedfor:
Generalplaceholdersthatindicatethatanitemis
replacedbysomeactualvalueinyourownprogram

Constantwidthboldisusedfor:
Textthatistypedincodeexamplesbytheuser

Thisicondesignatesanote,whichisanimportantasidetothenearby
text.

Thisicondesignatesawarningrelatingtothenearbytext.


HowtoContactUs
Pleaseaddresscommentsandquestionsconcerningthisbookto
thepublisher:
O'ReillyMedia,Inc.
1005GravensteinHighwayNorth
Sebastopol,CA95472
(800)998-9938(intheUnitedStatesorCanada)
(707)829-0515(internationalorlocal)
(707)829-0104(fax)
Wehaveawebpageforthisbook,wherewelisterrata,
examples,oranyadditionalinformation.Youcanaccessthis
pageat:
www.oreilly.com/catalog/javaadn/
Tocommentorasktechnicalquestionsaboutthisbook,send
emailto:
bookquestions@oreilly.com
Formoreinformationaboutourbooks,conferences,Resource
Centers,andtheO'ReillyNetwork,seeourwebsiteat:
www.oreilly.com/


AcknowledgmentsfromBrett
The"I"youseeinthesepagesismeforbetterorforworse,I
cameupwiththisseries,andamthrilledtobeabletobringone
ofthefirstbooksintheseriestoyou.But,thatleadsmetothe
enormouslytalentedgroupoffolkswhomadethatpossible.
TherewasatimewhenIlovedwritingacknowledgements,
becauseIgottothankeverybodyinvolvedinhelpingmeget
throughanotherbook.Ofcourse,nowIrealizethatthereareso
manypeopleIforgettothank,thatI'malittlescared...Iguess
that'stheOscar-acceptance-paranoiaworkingitselfout.Inany
case,anybooksuchasthistrulyisatremendouseffortbya
tonofpeople,andIcouldn'tgowithoutatleasttryingtoname
mostofthem.
ToMikeLoukides,whoeditsmostofmybooks(thisbeingthe
exception),andMikeHendrickson,who'sjustall-around
smartthanksforpavingthewayforthesenew,inventive,cool
littlenotebooks.Ithinkyou'vedonetheprogrammingworlda
realservicewiththem.IneedtothankDavidFlanaganfor
doingalltheheavylifting;theSunfolks,especiallyatCAP,for
lettingmeseeJDK1.5earlyon;andguyslikeHansBergsten,
BrucePerry,BobMcWhirter,andSteveHolznerforwritinggood
booksandlettingmespendlesstimeeditingthanIdeserveto.
Finally,intryingtokeepthingsbrief(you'llthinkI'mfunny
becauseofthat,right?),Iowethebiggestdebttomyfamily,as
isalwaysthecase.Mywife,Leigh,onlygripesoccasionally
whenI'mworkingat9:00atnight.Ofcourse,that'smostly
becauseshe'sexhaustedfromchasingthetwobitsof
inspirationIhave;myolderson,Dean,andmyyoungerson,
Robbie.Whenyouguyscanread,you'llseeyournameshere,
sothankthereadersforthecollegefund,OK?


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay

×

×