ebook img

Программирование в Интернет (Java) PDF

196 Pages·1.466 MB·Russian
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Программирование в Интернет (Java)

ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР) Кафедра промышленной электроники (ПрЭ) Юдахин Р.В. Программирование в Интернет (Java) Учебное пособие Томск 2011 Министерство образования и науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ Кафедра промышленной электроники Юдахин Р.В. Программирование в Интернет (Java) Учебное пособие 2011 Рецензент: к.ф.-м.н. Сидоренко Ю.Н. Юдахин Р.В. − Программирование в Интернет (Java): Учебное пособие. Томск: ТУСУР, − 2011. 195 с. Учебное пособие содержит теоретический материал по дисциплине "Програм- мирование в Интернет (Java)". Содержание пособия направлено на обучение основам программирования на языке Java. Предназначено для студентов, обучающихся на дневной форме обучения. © Юдахин Р.В., 2011 © ТУСУР, 2011 3 СОДЕРЖАНИЕ 1. Введение……………………………………………………………….. 6 2. История………………………………………………………………… 9 3. Классы…………………………………………………………………. 13 3.1. Классы и объекты……………………………………………….. 13 3.2. Хранение данных……………………………………………….. 16 3.3. Примитивные типы……………………………………………... 16 3.4. Области видимости……………………………………………... 17 3.5. Создание классов. Поля и методы классов……………………. 18 3.6. Создание приложения на Java………………………………….. 20 3.7. Статические члены……………………………………………… 22 3.8. Компиляция и выполнение……………………………………... 23 3.9. Комментарии и встроенная документация……………………. 24 3.10. Стиль определения имен……………………………………… 26 4. Операторы и управляющие конструкции…………………………… 28 4.1. Использование операторов……………………………………... 28 4.2. Логические операторы………………………………………….. 29 4.3. Поразрядные операторы………………………………………... 30 4.4. Операторы сдвига……………………………………………….. 31 4.5. Тройной оператор «если-то»…………………………………… 31 4.6. Операторы приведения…………………………………………. 32 4.7. Приоритет операторов………………………………………….. 32 4.8. Конструкция if-else……………………………………………… 33 4.9. Конструкция while и do-while……………………………………. 34 4.10. Цикл for…………………………………………………….….. 35 4.11. Ключевые слова break и continue……………………………… 36 4.12. Конструкция выбора switch…………………………………… 37 5. Объекты………………………………………………………………... 38 5.1. Перегрузка методов……………………………………………. 38 5.2. Создание объектов……………………………………………... 39 5.3. Удаление объектов……………………………………………... 42 5.4. Инициализация членов класса………………………………… 43 5.5. Инициализация массивов……………………………………… 44 5.6. Работа со строками……………………………………………... 47 5.7. Форматный вывод числовых значений……………………….. 49 6. Пакеты (packages). Спецификаторы доступа. ……………………... 52 6.1. Использование и создание пакетов…………………………… 52 6.2. Спецификаторы доступа членов классов……………………... 56 6.3. Доступ к классам……………………………………………….. 57 7. Композиция и наследование классов……………………………….. 59 7.1. Композиция………………………………………………………. 59 7.2. Наследование классов…………………………………………… 60 4 7.3. Инициализация классов при наследовании……………………. 64 7.4. Восходящее преобразование……………………………………. 65 7.5. Композиция или наследование…………………………………. 66 7.6. Ключевое слово final……………………………………………... 66 7.7. Полиморфизм……………………………………………………. 67 7.8. Абстрактные классы и методы…………………………………. 69 7.9. Конструкторы и полиморфизм…………………………………. 70 7.10. Наследование и метод finalize()………………………………… 72 8. Интерфейсы…………………………………………………………... 73 8.1. Понятие интерфейса. Создание интерфейса…………………... 73 8.2. Нисходящее преобразование…………………………………… 77 8.3. Внутренние классы……………………………………………… 79 8.4. Статические внутренние классы………………………………... 81 9. Обработка ошибок и исключения…………………………………… 82 10. Ввод и вывод данных в Java………………………………………… 86 10.1. Класс File……………………………………………………….. 86 10.2. Ввод и вывод данных………………………………………….. 87 10.3. Использования файловых потоков данных………………….. 90 10.4. Преобразование между байтовыми и символьными потоками……………………………………………………….. 92 10.5. Работа со стандартными потоками ввода/вывода…………... 93 10.6. Использование классов DataInputStream и DataOutputStream... 94 10.7. Сериализация объектов……………………………………….. 95 10.8. Чтение/запись файлов с произвольным доступом…………... 97 10.9. Что еще?………………………………………………………... 99 11. Создание графического пользовательского интерфейса………….. 100 11.1. AWT и Swing…………………………………………………… 100 11.2. Аплеты…………………………………………………………... 100 11.3. AWT-аплеты……………………………………………………. 101 11.4. Работа с библиотекой Swing…………………………………... 104 11.5. Обработка событий…………………………………………….. 106 11.6. Аплеты и Swing………………………………………………… 111 11.7. Менеджеры расположения (компоновки) компонентов…….. 111 11.7.1. Менеджер компоновки FlowLayout……………………….. 112 11.7.2. Менеджер компоновки BorderLayout……………………... 112 11.7.3. Менеджер компоновки GridLayout……………………….. 113 11.7.4. Менеджер компоновки BoxLayout………………………... 114 11.7.5. Менеджер компоновки GridBagLayout…………………… 116 11.7.6. Абсолютное расположение компонентов………………. 120 11.8. Создание кнопок и переключателей………………………….. 120 11.9. Текстовые компоненты………………………………………… 129 11.10. Панели прокрутки……………………………………………... 132 5 11.11. Выбор платформенного представления визуальных компонент……………………………………………………… 133 11.12. Всплывающие подсказки……………………………………... 133 11.13. Выпадающие списки…………………………………………... 133 11.14. Составные окна (вкладки)…………………………………….. 134 11.15. Создание границ……………………………………………….. 136 11.16. Создание меню………………………………………………… 137 11.17. Запуск аплета как обычного приложения……………………. 141 11.18. Создание дочерних окон (диалогов)…………………………. 141 11.19. Использование JAR-файлов…………………………………... 146 11.20. Рисование………………………………………………………. 148 12. Работа с многопоточными приложениями в Java………………….. 151 12.1. Создание потоков выполнения………………………………... 152 12.2. Синхронизация потоков……………………………………….. 157 12.3. «Не ошибается тот, кто не работает»………………………… 160 12.4. Группы потоков………………………………………………… 163 13. Сетевое программирование в Java…………………………………... 164 13.1. Основные сведения о сетевых протоколах…………………… 164 13.2. Сокеты…………………………………………………………... 165 13.3. Обслуживание нескольких клиентов…………………………. 169 13.4. URL-соединения……………………………………………….. 171 14. Работа с массивами и коллекциями………………………………… 174 14.1. Копирование массивов………………………………………… 175 14.2. Класс Arrays …………………………………………………….. 176 14.3. Коллекции………………………………………………………. 181 14.4. Интерфейсы коллекций………………………………………... 182 14.5. Реализации списка List ………………………………………… 184 14.6. Реализации множества Set ……………………………………. 186 14.7. Таблицы Map …………………………………………………… 189 14.8. Алгоритмы для работы с коллекциями……………………….. 190 14.9. Множества свойств…………………………………………….. 191 15. Список литературы………………………………………………….. 195 6 ВВЕДЕНИЕ Когда ты учишься - ты лишь открываешь для себя то, что ты давно уже знаешь. Когда ты совершаешь поступки - ты показыва- ешь, что ты действительно знаешь это. Когда ты учишь - ты лишь напоминаешь дру- гим, что они знают все это так же хорошо, как и ты. Мы все учимся, поступаем и учим. Р. Бах, «Иллюзии» Java – относительно новый объектно-ориентированный интерпрети- руемый язык программирования (ООП) (новый, например, по сравнению с С++). И, как правило, студенты, приступающие к его изучению, уже зна- комы с C++, что будет значительно облегчать изучение Java, т.к. он имеет схожий с С++ синтаксис. Хотя в то же время следует быть осторожным, , применяя навыки программирования, полученные при использовании С++, при написании программ на Java, т.к. зачастую сходство даже понятийных объектов этих языков является схожим лишь семантически, обладая при этом большими различиями как в механизмах их реализаций, так и в ре- зультатах их применения. Данное пособие, естественно, не является исчерпывающим источни- ком информации по Java, поэтому для успешного освоения его рекоменду- ется обращаться к уже ставшим классическим учебникам по Java, к on-line документации, к учебникам, доступным на сайте компании-разработчика Java (http://java.sun.com), а также, естественно, заниматься практикой, т.е. программировать. Java стал популярным в первую очередь из-за его возможностей про- граммирования для Интернет. Сеть Web представляет собой одну огром- ную систему «клиент-сервер». Основная идея клиент-серверных систем состоит в том, что у вас существует централизованное хранилище инфор- мации, и эту информацию вы распространяете по запросам каких-либо групп людей или компьютеров. Все вместе: хранилище информации, про- граммы, распространяющие эту информацию, и компьютер, на котором хранятся программы и данные, - называется сервером. Программное обес- печение, расположенное на удаленной машине, которое ведет связь с сер- вером, получает информацию, обрабатывает ее и затем показывает соот- ветствующим образом, называется клиентом. Для клиентов были разрабо- таны программы просмотра Web-страниц – браузеры. Изначально система 7 взаимодействия «сервер-браузер» была разработана для интерактивного обмена информацией, но поддержка этой интерактивности была полно- стью возложена на сервер, который генерировал статические страницы для браузера (клиента), который, в свою очередь, их просто обрабатывал и по- казывал. Функционирование множества Web-серверов сегодня основано на использовании CGI (Common Gateway Interface), но при современном уровне загрузки сетевых ресурсов CGI-программы стали не совсем удоб- ны. Например, любой вид динамического отображения графиков трудно осуществить, т.к. при каждом изменении ситуации сервер обязан создавать новый GIF-файл и передавать его клиенту. Решением проблемы стало программирование на стороне клиента. Одним из самых популярных подходов при этом является разработка мо- дулей расширения (plug-in). При использовании этого подхода к браузеру подсоединяется небольшая программа, которая позволяет поддерживать какие-нибудь новые свойства и функции, и, в итоге, это позволяет созда- вать новые языки и встраивать их в браузеры. Разработка модулей расширения дала толчок возникновению и раз- витию множества языков сценариев, используемых в Web-браузерах. Ис- пользуя язык сценария, вы встраиваете клиентскую программу непосред- ственно в HTML-страницу, а модуль браузера, обрабатывающий данный язык, автоматически активизируется при обработке данной страницы. Языки сценариев, используемые в Web-браузерах, предназначены для решения определенного класса задач – главным образом для создания интерактивного пользовательского интерфейса. Язык сценариев позволяет решать приблизительно 80% задач клиентского программирования. Для остальных 20% как раз одним из наиболее популярных решений на сего- дняшний день является Java. Клиентское программирование на Java осу- ществляется разработкой апплетов. Аплет – программа, которая может исполняться только внутри Web- браузера, она автоматически загружается как часть Web-страницы, и в случае активизации страницы аплет выполняется. Благодаря тому, что Java является полноценным языком программирования, программист может спроектировать аплет так, чтобы произвести максимум работы на стороне клиента – например, начертить какой-либо график, не ожидая, пока сервер сделает его и отошлет обратно файл с изображениям. Тем самым достига- ется выигрыш по скорости и уменьшение загрузки сетевого транспорта. При создании программ, работающих в Интернет, важным вопросом является вопрос безопасности (конечно, этот вопрос важен всегда, но в первую очередь при работе c продуктами неизвестных производителей). Из соображений безопасности аплеты работают в так называемой «песоч- нице». Интерпретатор Java, встроенный в Web-браузер, контролирует дея- тельность апплета и пресекает все нежелательные операции. Особенно 8 строго контролируются попытки записи и чтения аплетом файлов на дис- ке. В последних версиях Java поддерживается т.н. «подписанный аплет», позволяющий выполнять операции с дисковыми файлами в предположе- нии, что владелец этого аплета точно известен. Все большую популярность приобретают средства, предоставляемые Java для программирования на стороне сервера – сервлеты и серверные страницы Java (JSP). Явное преимущество сервлетов по сравнению с CGI- сценариями состоит в том, что для запуска CGI-сценария требуется созда- ние отдельного процесса, а для запуска сервлета создается поток выполне- ния, что требует гораздо меньше ресурсов компьютера. Что касается создания обыкновенных приложений, функционирую- щих на уединенных компьютерах, то преимуществом Java здесь является богатый набор языковых конструкций, значительно облегчающий труд программиста и позволяющий создавать надежные программы за меньший период времени по сравнению с предыдущими языками программирова- ния. Недостатком является более медленная скорость выполнения про- грамм Java по сравнению, например, с тем же С++. Впрочем, разработчики Java постоянно работают над усовершенствованием этого и других аспек- тов языка. Основные свойства Java: 1) объектно-ориентированный; 2) простой в использовании; 3) платформенно-независимый; 4) свободно распространяемый; 5) интерпретируемый. Определение «платформенно-независимый» иногда перефразируют как «написано однажды – работает везде». Это означает, что если создать и отладить программу на Java в операционной среде Windows, то эта про- грамма (за очень редким исключением) столь же успешно без малейших изменений будет работать на машинах, на которых установлены другие операционные среды. Причиной такой универсальности является то, что Java-программы работают только внутри так называемой виртуальной ма- шины Java, и, таким образом, программа на Java будет работать под любой операционной системой, в которой установлена виртуальная машина Java. Остальные определения свойств раскрываются в следующих главах, а здесь стоит добавить, что Java обладает мощной библиотекой готовых классов, поставляемых в составе стандартного пакета инструментария раз- работки программ на Java (Software Development Kit), поддерживает мно- гопоточность (multythreading), является более безопасным по сравнению с другими распространенными языками высокого уровня. 9 Глава 2 ИСТОРИЯ JAVA А-а! Вы историк? -- с большим облегчением и уважением спросил Берлиоз. (cid:132) Я -- историк, -- подтвердил ученый и до- бавил ни к селу ни к городу: (cid:132) Сегодня вечером на Патриарших прудах будет интересная история! М.Булгаков «Мастер и Маргарита» Бернерс-Ли положил начало World Wide Web, и перевернул тем са- мым мир. Он развил идею Теодора Хольме Нельсона, который считается отцом идеи гипертекста в том виде, в котором он сейчас существует, и ко- торый еще в 1965 году первым произнес слово «гипертекст». Бернерс-Ли предложил проект в 1989, и через год уже был готов первый вариант программного обеспечения для платформы NeXTstep. Он выпустил начальный протокол HTTP (протокол передачи гипертекстов), управляющий движением информации в Web. Он разработал концепцию URL (универсальный указатель ресурсов) как общую систему адресации, объединившую в себе большинство существующих в Internet технологий поиска и связи. Он создал HTML (язык разметки гипертекстов). Он заста- вил систему не реагировать на неудачи (Если Джо переместил данные, ва- ша система не зависнет). И, таким образом, вызвав навигатор, сегодня пользователь может вызвать любую информацию из любого места Internet, не задумываясь о том, будет ли производится передача файлов, поиск Gopher, отправка статьи в группу новостей, и вообще находится "это" в со- седней комнате или в Тасмании. В 1993 году Андреессен и Бина создали программу Mosaic, которая нынче выглядит архаично, но главное в ней уже было - графика стала пол- ноправной частью интерфейса, мышь - единственным средством работы, и Internet открыл свои просторы миллионам пользователей, не знающих ма- гических заклинаний UNIX. Первый сервер производства NCSA (Национальный Центр по супер- компьютерным приложениям) увидел свет 1 декабря 1992 года, и вскоре серверы WWW начали расти как грибы под осенним дождем. В начале 1993 года количество серверов удваивалось каждые три месяца. По неко- торым оценкам, в июне их было целых 130, а в декабре уже 623. События, породившие нынешний Java, начались в компании Sun в 1990 году. Тогда IBM PC господствовал на рынках, и многие считали, что компания Sun Microsystems упустила возможности на рынке настольных систем. Она добилась определенных успехов на рынке рабочих станций и серверов, но рынок desktop, казалось, был безвозвратно утерян. Поэтому, когда уважаемый в фирме 25-летний программист Патрик Ноутон заявил

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.