KnigaRead.com/

Брюс Эккель - Философия Java3

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Брюс Эккель, "Философия Java3" бесплатно, без регистрации.
Перейти на страницу:

операций, 72 потоков, 565 присвоение, 73 программист-клиент, 152 производные классы, 25 производный класс, инициализация, 174 пространство

имен, 153 пустые константы, 190

Р

разделение

интерфейса и реализации, 164 раннее связывание, 201 распечатка в двоичном формате, 88 расширяемая программа, 205 реализация

сокрытие, 163, 249 рефлексия, 376, 468

отличие от RTTI, 377

С

С++, 48

сборка мусора, 130, 132

как работает сборщик мусора, 134 порядок удаления объектов, 182 сборщик мусора, 54 связуемость, 22 связывание

во время выполнения , 198, 202 динамическое, 198 позднее, 198

позднее (динамическое), 202 раннее, 202 сервлеты, 47 сериализация

и ключевое слово transient, 544 и хранение объектов, 548 управление процессом сериализации, 540 сигнатура, 57 синонимией, 74

синхронизированная блокировка, 591

система управления, 266

события

система, управляемая по событиям, 266 совмещение имен, 74 сокрытие реализации, 163 сообщения, 20 спецификатор

protected, 185 спецификатор доступа, 152, 159 private, 152, 162 protected, 152, 163 public, 152, 160 интерфейс, 225 список, 280 ссылки, 49

статический блок, 144 стек, 292

стиль написания классов, 164 строка

перегрузка оператора + 173

т

удаленный вызов методов, 536 указатели, отсутствие в Java, 264

С++, деструктор, 130 Java, компиляция и запуск программы, 63

хранение данных, 50

Брюс Эккель

Философия Java. Библиотека программиста 4-е издание

Перевел с английского Е. Матвеев

Заведующий редакцией Руководитель проекта Ведущий редактор Научные редакторы Художественный редактор Корректоры Верстка

А. Сандрыкин П. Маннинен А. Пасечник Е. Матвеев, А. Пасечник А. Татарко Е. Каюрова, И. Тимофеева Л. Харитонов

Подписано в печать 29.08.08. Формат 70x100/16. Усл. п. л. 51,6. Тираж 2000. Заказ № 829. ООО «Питер Пресс», 198206, Санкт-Петербург, Петергофское шоссе, д. 73, лит. А29. Налоговая льгота — общероссийский классификатор продукции OK 005-93,

том 2;95 3005 — литература учебная. Отпечатано по технологии CtP в в ГП ПО «Псковская областная типография». 180004, г. Псков, ул. Ротная, 34.

Некоторые разработчики языков считают, что объектно-ориентированное программирование плохо подходит для решения некоторых задач, и выступают за объединение разных подходов в муль-типарадигменных языках программирования.

Для большинства диаграмм этого вполне достаточно. Не обязательно уточнять, что именно используется в данном случае — композиция или агрегирование.

На самом деле это слишком сильное утверждение, поскольку объекты могут существовать на разных компьютерах и адресных пространствах, а также храниться на диске. В таких случаях для идентификации объекта приходится использовать не адрес памяти, а что-то другое.

Некоторые специалисты различают эти два понятия: они считают, что тип определяет интерфейс, а класс — конкретную реализацию этого интерфейса.

Примитивные типы в контейнерах храниться не могут, но благодаря механизму автоматической упаковки Java SE5 это ограничение почти несущественно. Далее в книге эта тема будет рассмотрена более подробно.

Примитивные типы, о которых речь пойдет далее, являются особым случаем.

Этот вопрос очень важен. Существуют люди, утверждающие: «Ясно, это указатель», но это предполагает соответствующую реализацию. Также ссылки Java по синтаксису более похожи на ссылки С++, чем на его указатели. В первом издании книги я решил ввести новый термин «дескриптор» (handle), потому что ссылки Java и С++ имеют несколько значительных различий. Я основывался на опыте С++ и не хотел сбивать с толку программистов на этом языке, так как большей частью именно они будут изучать Java. Во втором издании я решил прибегнуть к более традиционному термину «ссылка», предположив, что это поможет быстрее освоить новые особенности языка, в котором и без моих новых терминов много необычного. Однако есть люди, возражающие против термина «ссылка». Я прочитал в одной книге, что «совершенно неверно говорить, что Java поддерживает передачу объектов по ссылке», потому что идентификаторы объектов Java на самом деле (согласно автору) являются ссылками на объекты. И (он продолжает) все фактически передается по значению. Так что передача идет не по ссылке, а «ссылка на объект передается по значению». Можно поспорить с тем, насколько точны столь запутанные рассуждения, но я полагаю, что мое объяснение упрощает понимание концепции и ничему не вредит (блюстители нравственности могут сказать, что я лгу вам, но я всегда могу возразить, что речь идет всего лишь о подходящей абстракции).

Документация JDK и компилятор Java не включены в состав компакт-диска, поставляемого с этой книгой, потому что они регулярно обновляются. Загрузив их самостоятельно, вы получите самые свежие версии.

 Статические методы, о которых вы узнаете немного позже, вызываются для класса, а не для объекта.

Часто используется компилятор IBM jikes, так как он работает намного быстрее компилятора javac от Sun. Также существуют проекты с открытыми исходными текстами, направленные на создание компиляторов, сред времени исполнения и библиотек Java.

Существует один фактор, который следует учитывать при работе с JVM на платформе MS Windows. Для вывода сообщений на консоль используется кодировка символов DOS (ср866). Так как для Windows по умолчанию принята кодировка Windows-1251, то очень часто бывает так, что русскоязычные сообщения не удается прочитать с экрана, они будут казаться иероглифами. Для исправления ситуации можно перенаправлять поток вывода следующим способом: java HelloDate > result, txt, тогда вывод программы окажется в файле result.txt (годится любое другое имя) и его можно будет прочитать. Этот подход применим к любой программе. Или же просто используйте одну из множества программ-«знакогенераторов» (например, keyrus), работая с экраном MS-DOS. Тогда вам не потребуются дополнительные действия по перенаправлению. Плюс станет возможной работа под отладчиком JDB. Третий вариант, более сложный, но обеспечивающий вам независимость от машины, заключается во встраивании перекодирования в свою программу посредством методов setOut и setErr (обходит байт-ориентированность потока PrintStream). Российские программисты давно (а отсчет идет с 1997 года) приспособились к этой ситуации. Одно из решений, позволяющее печатать на консоль в правильной кодировке, можно найти на сайте www.javaportal.ru (статья «Русские буквы и не только...»). (Нужно загрузить класс http://www.javaportal.ru/java/articles/ruschars/ CodepagePrintStream.java, скомпилировать его и описать в переменной окружения. Данный путь лучше отложить до ознакомления с соответствующей темой (глава 12).) — Примеч. ред.

Инструмент, который я создал на языке Python (подробнее на www.Python.org), распоряжается этой информацией для распределения файлов по папкам и создания файлов сборки. Вдобавок все файлы хранятся в системе CVS и автоматически вставляются в книгу с помощью макроса VBA (Visual Basic For Applications). Такой подход позволяет улучшить поддержку кода, особенно из-за использования CVS.

Находится по адресу java.sun.com/docs/codeconv/index.htmL Для экономии места в данной книге и на слайдах для семинаров я следовал не всем рекомендациям.

Джон Кирхем пишет: «Я начал программировать в 1960 году на FORTRAN II, используя компьютер IBM 1620. В то время, в 60-е и 70-е годы, FORTRAN использовал только заглавные буквы. Возможно, это произошло потому, что большинство старых устройств ввода были телетайпами, работавшими с 5-битовым кодом Бодо, который не поддерживал строчные буквы. Буква Е в экспоненциальной записи также была заглавной и не смешивалась с основанием натурального логарифма е, которое всегда записывается маленькой буквой. Символ Е просто выражал экспоненциальный характер, то есть обозначал основание системы счисления — обычно таким было 10. В те годы программисты широко использовали восьмеричную систему. И хотя я и не замечал такого, но если бы я увидел восьмеричное число в экспоненциальной форме, я бы предположил, что имеется в виду основание 8. Первый раз я встретился с использованием маленькой е в экспоненциальной записи в конце 70-х годов, и это было очень неудобно. Проблемы появились потом, когда строчные буквы по инерции перешли в FORTRAN. У нас существовали все нужные функции для действий с натуральными логарифмами, но все они записывались прописными буквами».

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*