Предисловие Thinking in Java 4th edition |
ПРЕДИСЛОВИЕ
Поначалу я рассматривал Java как «очередной язык программирования»... которым он и является во многих отношениях.
Поначалу я рассматривал Java как «очередной язык программирования»... которым он и является во многих отношениях.
Но время шло, я изучил Java глубже и начал понимать, что основной замысел этого языка отличается от всех других, известных мне.
Все программирование в той или иной степени связано с управлением сложными задачами: сложность решаемой проблемы накладывается на сложность системы, в которой она решается. Именно из-за этих трудностей большинство программных проектов завершаются неудачей. И до сих пор ни один из языков, которые я знаю, не был смоделирован и создан в расчете на преодоление сложности разработки и поддержки программ. Конечно, многие решения при создании языков принимались в расчете на разрешение сложностей, но при этом всегда находилось еще что-то, считаемое достаточно важным, чтобы учитывать это при планировании языка. Все это неизбежно заставляло программистов «биться головой о стену» при столкновении с проблемами. Например, С++ создавался в расчете на эффективность и совместимость с С (чтобы легко переходить с этого языка на С++). Оба решения, несомненно, полезны и стали одними из причин успеха С++, но также привели к дополнительным трудностям, что не позволило успешно воплотить в жизнь некоторые проекты (конечно, можно винить программистов и руководителей проектов, но, если язык в силах помочь в устранении ошибок, почему этим не воспользоваться?). Или другой пример: Visual Basic (VB) изначально был привязан к BASIC, в который не была заложена возможность расширения, из-за чего все дополнения, созданные для VB, имеют ужасный и сложно поддерживаемый синтаксис. С другой стороны, С++, VB, Perl и другие языки, подобные Smalltalk, частично фокусировались на преодолении трудностей и, как результат, стали успешными в решении определенных типов задач.
Больше всего удивило меня при ознакомлении с Java то, что его создатели из Sun, похоже, наряду с другими целями хотели по возможности облегчить работу программиста. Они словно говорили: «Мы хотим, чтобы вы могли быстрее и проще написать надежный код». Раньше такое намерение приводило к тому, что быстродействие программ оставляло желать лучшего (хотя со временем ситуация улучшилась). И все же такой подход изумительно повлиял на сроки разработки программ; для разработки эквивалентной программы на С++ требуется вдвое или еще больше человеко-часов. Уже одно это приводит к экономии колоссальных денег и уймы времени, но Java не «застывает» в упоении достигнутым. Творцы языка идут дальше, встраивая поддержку технологии, ставших важными в последнее время (многозадачность, сетевое программирование), в сам язык или его библиотеки, что значительно упрощает решение этих задач. Наконец, Java энергично берется за действительно сложные проблемы: платформно-независимые программы, динамическое изменение кода и даже безопасность. Каждая из этих проблем способна задержать сроки сдачи вашего проекта, а может легко стать непреодолимым препятствием. Таким образом, несмотря на прошлые проблемы с производительностью, перспективы Java потрясают: он значительно повышает продуктивность нашей работы.
Во всех случаях — при создании программ, командной разработке проектов, конструировании пользовательских интерфейсов для общения программы с потребителем, запуске программ на разных типах компьютеров, простом написании программ, использующих Интернет, — Java расширяет «полосу пропускания» информации при коммуникациях между людьми. Я полагаю, что перегонка туда-сюда большого объема битов не есть главный результат информационной революции; нас ожидает истинный переворот, когда мы сможем с легкостью общаться друг с другом: один на один, в группах и, наконец, всепланетно. Я слышал предположение, что следующей революцией будет появление единого разума, образованного из критической массы людей и взаимосвязей между ними. Java может быть катализатором этой революции, а может и не быть, но, по крайней мере, вероятность такого влияния заставляет меня чувствовать, что я делаю что-то значимое, пытаясь обучать этому языку.
Java SE5 и SE6
В этом издании книги были учтены изменения, внесенные в Java в версии, которую фирма Sun изначально назвала JDK 1.5, затем переименовала в JDK5 или J2SE5 и наконец в Java SE5. Многие изменения Java SE5 создавались для удобства программиста. Как вы увидите, создатели Java не полностью преуспели на этом пути, но в общем сделали большие шаги в правильном направлении.
В этом издании я постарался полностью интегрировать усовершенствования Java SE5/6, включить и использовать их во всей книге. Таким образом, это издание «предназначено только для Java SE5/6», и большинство примеров не будет компилироваться в других версиях. Шаг довольно рискованный, и все же я полагаю, что преимущества того стоили.
Благодарности
Прежде всего выражаю благодарность моим друзьям и помощникам, которые работали со мной на семинарах и помогали создавать учебные проекты: это Дэйв Бартлетт (Dave Bartlett), Билл Веннерс (Bill Venners), Чак Аллисон (Chuck Allison), Джереми Майер (Jeremy Meyer) и Джейми Кинг (Jamie King). Я благодарен им за терпение, с которым они относятся к моим попыткам построить наилучшую модель совместного существования нашего коллектива.
За последнее время (несомненно, из-за широкого распространения Интернета) ко мне обращалось множество людей, которые мне помогали, — особенно те, кто работает на дому. В прошлом мне пришлось бы нанимать огромный офис, чтобы вместить всех этих людей, но благодаря Сети, курьерской почте и телефону я мог пользоваться их содействием без дополнительных затрат. Пола Стойер (Paula Steuer) оказала неоценимую помощь: она взяла под свой контроль мой сомнительный трудовой график и привела его к нормальному виду (спасибо за то, что подталкивала меня, когда я чего-то не хотел делать, Пола). Джонатан Уилкокс (Jonathan Wilcox) просеял всю мою корпоративную структуру и отыскал все скрытые ловушки, которые могли помешать нормальному ходу дел (с юридической точки зрения). Спасибо за внимание и настойчивость. Шарлин Кобо (Sharlynn Cobaugh), эксперт по обработке звука, играла важную роль при создании мультимедийных семинаров, а также решении других проблем. Спасибо за скрупулезность, с которой она подходила к решению совершенно необъяснимых компьютерных проблем. Группа Amaio из Праги помогла мне в работе над некоторыми проектами. Дэниел Уилл-Харрис (Daniel Will-Harris) предложил изначальную идею «работы по Интернету»; и конечно, именно ему принадлежит решающее слово во всех решениях из области графического дизайна.
За прошедшие годы Джеральд Уайнберг (Gerald Weinberg) стал моим «неофициальным» учителем, и за это я благодарен ему.
Эрвин Варга (Ervin Varga) очень помог мне с технической правкой 4-го издания — хотя разные люди помогали мне с другими главами и примерами, Эрвин был главным техническим рецензентом книги. Он нашел многие ошибки и внес дополнения, значительно улучшившие мой текст. Его педантичность и внимание к деталям просто потрясают; бесспорно, это лучший технический редактор, с которым мне доводилось работать.
Мой блог на сайте Билла Веннерса www.Artima.com помог мне организовать обратную связь с читателями. Спасибо всем, кто помог мне прояснить некоторые концепции, — Джеймс Уотсон (James Watson), Говард Ловатт (Howard Lovatt), Майкл Баркер (Michael Barker) и многие другие... особенно те, кто помогал мне с проработкой темы параметризации.
Большое спасибо Марку Уэлшу (Mark Welsh) за его постоянную помощь.
Эван Кофски (Evan Cofsky), знаток всех тонкостей установки и сопровождения веб-серверов на базе Linux, помогает мне организовать нормальную работу сервера MindView.
Кафетерий Camp4 Coffee в Крестед-Бьют, штат Колорадо, стал стандартным местом проведения досуга посетителей семинаров MindView, а во время перерывов они обеспечивают отличное выездное обслуживание. Спасибо моему другу Элу Смиту (А1 Smith) за то, что создал это заведение и сделал его таким отличным местом. Я также благодарен всем баристам Сатр4, таким приветливым и дружелюбным.
Я благодарен всем сотрудникам Prentice Hall, которые снабжали меня всем необходимым и мирились с моими особыми запросами.
Некоторые программы оказались воистину бесценными в ходе работы над примерами, и я очень благодарен их создателям. Cygwin (www.cygwin.com) решает бесчисленные проблемы, которые Windows решить не может (не хочет), и я с каждым днем привязываюсь к этому пакету все сильнее. IBM Eclipse (www. eclipse.org) — совершенно замечательное творение для сообщества разработчиков. JetBrains IntelliJ Idea продолжает прокладывать новые творческие пути в области инструментариев разработчика.
Я начал использовать Enterprise Architect от Sparxsystems во время работы над этой книгой, и программа быстро стала моим основным UML-инструментом. Форматер кода Jalopy, созданный Марко Ханзикером (Marco Hunsicker) (www.triemax.com), часто оказывался очень полезным, а Марко помог настроить его под мои специфические потребности. Я также обнаружил, что J Edit с плагинами Славы Пестова (Slava Pestov) (www.jedit.org) оказывается весьма полезным в некоторых случаях; это вполне достойный редактор для начинающих Java-программистов.
И конечно, я постоянно использую в своей повседневной работе Python (www.Python.org), творение моего друга Гидо Ван Россума (Guido Van Rossum) и группы безумных гениев, с которыми я провел множество замечательных дней. Спасибо всему сообществу Python, объединившему таких выдающихся людей!
Хочу отдельно поблагодарить всех своих учителей и учеников (которые на самом деле тоже являются учителями).
Кошка Молли часто сидела у меня на коленях, пока я работал над книгой. Так она вносила свой теплый, пушистый вклад в мою работу.
Напоследок перечислю лишь некоторых из моих друзей и помощников: Пэтти Гаст (Patty Gast) — ас в области массажа, Эндрю Бинсток (Andrew Binstock), Стив Синоски (Steve Sinoski), Джей Ди Хильдебрандт (JD Hildebrandt), Том Кеффер (Tom Keffer), Брайан Макэлхинни (Brian McElhinney), Бринкли Барр (Brinkley Barr), Билл Гейтс из «Midnight Engineering Magazine», Ларри Константин (Larry Constantine) и Люси Локвуд (Lucy Lockwood), Джин Ванг (Gene Wang), Дэйв Мейер (Dave Mayer), Дэвид Интерсимон (David Intersimone), Крис и Лора Стрэнд (Chris and Laura Strand), Элмквисты (Almquists), Брэд Джербик (Brad Jerbic), Мэрилин Цвитанич (Marylin Cvitanic), Марк Мабри (Mark Mabry), семья Роббинс (Robbins), семьи Мелтер (Moelter) и Макмиллан (McMillan), Майкл Вилк (Michael Wilk), Дэйв Стонер (Dave Stoner), Крэнстоны (Cranstons), Ларри Фогг (Larry Fogg), Майк Секейра (Mike Sequeira), Гэри Энтсмингер (Gary Entsminger), Кевин и Сонда Донован (Kevin and Sonda Donovan), Джо Лорди (Joe Lordi), Дэйв и Бренда Бартлетт (Dave and Brenda Bartlett), Блейк, Эннет и Джейд (Blacke, Annette & Jade), Рентшлеры (Rentschlers), Судеки (Sudeks), Дик (Dick), Патти (Patty) и Ли Экель (Lee Eckel), Линн и Тодд (Lynn and Todd) и их семьи. Ну и, конечно, мама с папой.
------------------------
ТРИО теплый пол отзыв
Заработок на сокращении ссылок
Earnings on reducing links
Код PHP на HTML сайты
Категория: Книги по Java
Комментарии |