Много чудесни коментарии имаше за първото издание на тази книга, което естествено беше много радващо. Понякога обаче някой се оплаква и по някаква причина най-честото оплакване е “книгата е твърде голяма.” Някой припомни оплакването на австрийския император от работата на Моцарт: “Твърде много ноти!” (Не се сравнявам с Моцарт по никакъв начин). Освен това мога да предположа, че оплакването идва от някой, който тепърва има да се запознае с големината на езика и не е виждал останалите книги по темата – например любимата ми справочна книга е Core Java на Cay Horstmann и Gary Cornell (изд. Prentice-Hall) която толкова се разрасна, че беше разделена на два тома. Въпреки това аз съм се старал да махна частите, които са остарели или пон не основни. Това може да се направи без неудобства, защото стария вариант е в Мрежата (на адрес www.BruceEckel.com). Ако искате стария материал, той още е там и това е голямо облекчение за автора. Например може да забележите че главата “Проекти” вече я няма; два от проектите отидоха в други части и последния вече не бе подходящ да остане. Така че по всички правила книгата ще е по-тънка.
Да, ама не.
Разработването на езика продължава, в частност с разработването на всевъзможни потребителски интерфейси. Очевидно обхващането им не е в обсега на тази книга, но някои неща не могат да се пренебрегнат. Най голямото от тях е Java за сървъри (предимно Servlets и Java Server pages – JSPs) , което наистина е чудесно решение за Мрежата, във връзка с което намерихме, че много броузери не са достатъчно добри, за да изпълняват клиентската страна. В добавка има отделен проблем за лесно създаване на програми за работа с бази данни, транзакции, по сигурността и др. под., които са свързани с Enterprise Java Beans (EJBs). Тези теми са обхванати в нова глава Enterprise Programming, която не може да бъде игнорирана.
Ще намерите също, че главата за мрежи е разширена с Jini (произнася се “genie” (джини) и не е акроним, а име) и JavaSpaces, две технологии които промениха начина на мислене за мрежовото програмиране. И разбира се книгата беше променена да използва навсякъде Swing GUI – отново, ако искате старата Java 1.0/1.1 може да я вземете от мрежата на онзи адрес.
Освен няколкото нови черти добавени в Java 2 и корекциите правени по книгата, другата главна промяна е галата за колекции (8), която сега е фокусирана върху Java 2 колекциите, които се използуват в книгата. Подобрил съм също нея глава с по-дълбоко вникване в колекциите, в частност как работят хеш-функциите (така че сега знаете как правилно да създадете такава функция). Има и други размествания и промени, включващи премахването на някои приложения, които считам за ненужни повече, но ги имаше в излишък.
Извинявам се на онези, които пак не могат да понесат дължината на книгата. Вярвате или не, аз работих много за да направя книгата кратка. Напук на обема, има алтернативи, които могат да ви задоволят. Едната е, че има електронна форма и можете да я сложите в лаптоп и по този начин да не мъкнете много тежест. Ако отслабвате, има Palm Pilot версии на книгата. (Един ми каза, че би чел книгата на неговия Palm в леглото, със задно осветление, за да не ядоса жена си. Аз само мога да се надявам това да може го отнесе в страната на сънищата лесно.) Ако искате на хартия, аз знам хора, които си печатат една по една главите, слагат една в куфарчето си и я четат във влака.
Въведение
Като всеки човешки език Java дава начин за изразяване на концепции. Ако е успешен, той ще даде по-голяма леснота и гъвкавост във все по-нарастващите и усложняващи се проблеми за решаване.
Не може да гледате на езика като на сбор от различни характерни черти; някои неща са без определено значение, ако са изолирани от другите. Може да използувате сумата от частите само ако мислите за проектиране, не просто за кодиране. И за да разберете Java по този начин трябва да разбирате проблемите с езика и с програмирането изобщо. Тази книга дискутира програмните проблеми, защо са проблеми и начинът който Java дава за решаването им. По този начин нещата от езика дадени в някоя глава са продиктувани от възгледа ми за решаване на някой проблем. По този начин, по малко по малко, искам да ви придвижа до точката, където начинът на мислене с Java става ваш естествен език.
Във всеки случай, аз ще имам пред вид, че вие искате да си изградите модел и дълбоко разбиране на езика; ако намерите гатанка, вие ще можете да я пречупите през своя модел и да намерите отговора.
Необходими начални знания
Тази книга предполага, че имате известни начални знания за програмирането; знаете, че програмата се състои от оператори, идеите за подпрограма, функция и макрос,управляващи оператори като “if” и за цикъл като “while”и т.н. Вие обаче може да имате тази информация от много места, като например макроезици или работа с Perl. Щом сте достигнали точката да нямате проблеми с идеите на програмирането, вие ще можете спокойно да работите с тази книга. Разбира се, книгата ще бъде по-лесна за C програмистите и още повече за C++ програмистите, но не се притеснявайте, ако не сте работили с тези езици (но имате желание да работите здраво). Аз ще въвеждам идеите на обектно-ориентираното програмиране и основните управляващи механизми на Java, така че ще се запознаете с тях, а също и в първите упражнения – с операторите за управление.
Въпреки че често ще се правят справки с характеристиките на C и C++, това няма да е съществено за изложението, а за да се даде възможност програмистите да сравнят Java в перспектива с тези езици от които, в края на краищата, произлиза Java. Аз ще се опитам да направя тези справки лесни и да обясня всичко, което не би било ясно за не-C/C++ програмисти.
Учене Java
Приблизително по същото време, когато излезе моята първа книга Използване на C++ (Osborne/McGraw-Hill 1989) аз започнах да уча този език. Ученето на програмни езици беше станало моя професия; Виждал съм поклащане на глави, озадачени лица и загадъчни въпроси от сбушателите си по целия свят от 1989г. насам. Когато започнах да давам уроци на по-малки групи хора аз открих нещо по време на занятията. Даже ония които се есмихваха и си поклащаха главите не бяха наясно с много неща. Като председател по въпросите на C++ в Software Development Conference миналите няколко години (а сега също и за Java) забелязах, че лекторите имат тенденция да дават на обучаваните твърде много неща за твърде малко време. Така че независимо от вариациите в слушателския състав човек губи към края част от тях. Може би това поставя твърде много въпроси, но като един от хората, които са противници на традиционния начин на четене на лекции (и за повечето хора тази нагласа произтича, вярвам, от досада), аз исках да се опитам да държа всеки на темпото.
Създадох си различни начини на представяне на материята с времето. Така например приключвах учевено с упражнения и повторение (техника, която е добра и за проектирането на програми на Java). Накрая направих курс, използувайки целия си опит – опит, който радостно ще споделям дълго време. Той се заема с предмета в дискретни, лесни за смилане стъпки и на семинар с достъп до техниката (идеалната ситуация за учене) има упражнения след всеки урок. Аз сега чета този курс на публични Java семинари, за които може да се заинтересувате на http://www.BruceEckel.com . (въвеждащия семинар е достъпен също и на CD ROM. Информация – на същия адрес.)
Обратната връзка, която имам от семинарите ми дава възможност да променя и реорганизирам изложението докато то. Но тази книга не е точно семинар без частта, която се прави на машината – аз се опитах да включа колкото мога повече информация в тези страници и така да я структурирам, че да ви извлека до следващата тема. Най-вече книгата е предназначена за самотния читател, счепкал се с един нов за него език.
Сподели с приятели: |