Философия Java



         

Программирование на Java.Подробное руководство

В данном разделе представлены подробные материалы по языку Java и многочисленные примеры программирования на Java. Вы познакомитесь с принципами и технологиями, положенными в основу этого языка, изучите библиотеки классов Java, научитесь пользоваться современными визуальными средствами разработки приложений Java, такими как Java WorkShop и Java Studio.
Многочисленные примеры приложений и аплетов помогут вам в кратчайшие сроки освоиться в мире Java.

Введение в Java
Казалось бы, на сегодняшний день изобретены уже все языки программирования, какие только можно придумать. Но нет - появился еще один, с названием Java. Этот язык сумел получить весьма заметную известность за последние несколько лет, так как он ориентирован на самую популярную компьютерную среду - сеть Internet и серверы Web.

Инструментарий разработчика
Пакетные средства
Интегрированные средства разработки
Браузеры
Подключение к Internet
Документация и литература
Мобильность Java
Мобильность Java - 2
Мобильность Java - 3
Базовые типы данных

Первое приложение Java
Как мы уже говорили, приложение Java может выполняться под управлением специального интерпретатора, работающего в рамках отдельного процесса, либо под управлением браузера. В первом случае мы имеем дело с автономным приложением Java, в втором - с аплетом.

Первое приложение Java
Установка Java WorkShop
Запуск Java WorkShop
Создание нового проекта
Создание нового проекта - 2
Исходный текст приложения HelloJava
Hpic01
Hpic06

Первый аплет Java
В предыдущем разделе мы создавали автономное приложение Java, работающее под управлением виртуальной машины Java. Теперь мы создадим приложение другого типа - аплет. Аплет Java тоже выполняется под управлением виртуальной машины Java, но встроенной в браузер. Когда браузер загружает в свое окно документ HTML с аплетом, байт-код аплета начинает свою работу.

Создание проекта аплета
Исходный текст аплета
Методы в классе HelloApplet
Метод init
Метод destroy
Метод start
Метод stop
Исходный текст документа HTML
Изменяем исходный текст аплета
Метод paint

Рисование в окне аплета
Способ, которым аплет выполняет рисование в своем окне, полностью отличается от того, которым пользуются программы MS-DOS. Вместо того чтобы обращаться напрямую или через драйвер к регистрам видеоконтроллера, аплет пользуется методами из класса Graphics. Эти методы инкапсулируют все особенности аппаратуры, предоставляя в распоряжение программиста средство рисования, которое пригодно для любой компьютерной платформы.

Контекст отображения
Методы класса Graphics
Методы
Методы - 2
Методы - 3
Установка атрибутов контекста отображения
Выбор цвета
Выбор цвета - 2
Выбор шрифта
Класс Font

События
Когда пользователь выполняет операции с мышью или клавиатурой в окне аплета, возникают события, которые передаются соответствующим методам класса Applet. Переопределяя эти методы, вы можете организовать обработку событий, возникающих от мыши или клавиатуры.

Как обрабатываются события
Как обрабатываются события - 2
События от мыши
Нажатие клавиши мыши
Отпускание клавиши мыши
Перемещение курсора мыши
Выполнение операции Drag and Drop
Вход курсора мыши в область окна аплета
Выход курсора мыши из области окна аплета
Аплет LineDraw

Компоненты в окне аплета
Практически каждое приложение Windows, за исключением самых простейших, имеет такие органы управления, как меню, кнопки, поля редактирования текстовой информации, переключатели с независимой и зависимой фиксацией и списки. Кроме того, приложение Windows может создавать диалоговые панели, содержащие перечисленные выше и другие органы управления.

Кнопки
Конструкторы
Методы
Обработка событий от кнопки
Переключатели
Класс Checkbox
Конструкторы
Методы
Переключатели с независимой фиксацией
Переключатели с зависимой фиксацией

Работа с системой Layout Manager
К счастью, имеются способы, позволяющие контролировать размещение отдельных компонент в окне контейнера. И хотя эти способы не позволяют задавать конкретные координаты и размеры органов управления, использовнные схемы размещения компонент будут правильно работать на любой аппаратной платформе (не забывайте, что Java создавалась как средство разработки приложений, способных выполняться на любой платформе).

Режимы системы Layout Manager
Режим FlowLayout
Класс FlowLayout
Поля
Конструкторы
Методы
Режим GridLayout
Конструкторы
Методы
Режим BorderLayout

Работа с панелями
Панели, создаваемые на базе класса Panel, являются мощным средством организации диалогового интерфейса. Так как класс Panel произошел от класса Container, панель может содержать компоненты и другие панели. Для каждой панели можно определить режим размещения компонент, что позволяет создавать достаточно сложный пользовательский интерфейс.

Создание панелей
Добавление панелей
Добавление компонент в панели
Рисование в окне панели
Создание нового класса на базе класса Panel
Аплет Options
Исходный текст аплета Options
Исходный текст аплета Options - 2
Описание исходного текста аплета Options
Главный класс аплета Options

Окна и диалоговые панели
До сих пор мы рисовали только в окне аплета или в окнах панелей, расположенных внутри окна аплета. Однако есть и другая возможность - приложения Java, полноценные и аплеты, могут создавать обычные перекрывающиеся окна, такие, например, как окно браузера. Эти окна могут иметь меню (в отличие от окон аплетов). Пользователь может изменять размер таких окон при помощи мыши, перемещая рамку окна.

Окна класса Frame
Поля
Конструкторы
Методы
Применение класса Frame
Меню в окне класса Frame
Методы
Работа с классом MenuBar
Класс Menu
Конструкторы

Многопоточность
Наверное, сегодня уже нет необходимости объяснять, что такое многопоточность. Все современные операционные системы, такие как Windows 95, Windows NT, OS/2 или UNIX способны работать в многопоточном режиме, повышая общую производительность системы за счет эффективного распараллеливания выполняемых потоков. Пока один поток находится в состоянии ожидания, например, завершения операции обмена данными с медленным периферийным устройством, другой может продолжать выполнять свою работу.

Процессы, потоки и приоритеты
Процесс
Поток
Приоритеты потоков в приложениях Java
Реализация многопоточности в Java
Методы класса Thread
Поля
Конструкторы
Методы
Методы - 2

Работа с файлами
Библиотека классов языка программирования Java содержит многочисленные средства, предназначенные для работы с файлами. И хотя аплеты не имеют доступа к локальным файлам, расположенным на компьютере пользователя, они могут обращаться к файлам, которые находятся в каталоге сервера Web. Автономные приложения Java могут работать как с локальными, так и с удаленными файлами (через сеть Internet или Intranet).

Класс StringTokenizer
Работа с файлами и каталогами - File
Создание объекта класса File
Определение атрибутов файлов и каталогов
Проверка существования файла или каталога
Проверка возможности чтения и записи
Определение типа объекта - файл или каталог
Получение имени файла или каталога
Получение абсолютного пути к каталогу
Определение типа указанного пути

Создание сетевых приложений
Когда мы начинали разговор про язык программирования Java, то отмечали, что он специально ориентирован на глобальные сети, такие как Internet. В этой главе мы начнем знакомство с конкретными классами Java, разработанными для сетевого программирования. На примере наших приложений вы сможете убедиться, что классы Java действительно очень удобны для создания сетевых приложений.

Аплет ShowChart
Исходные тексты аплета ShowChart
Описание исходного текста аплета ShowChart
Поля класса ShowChart
Метод init
Метод paint
Приложения SocketServ и SocketClient
Исходный текст приложения SocketServ
Описание исходного текста - SocketServ
Описание исходного текста - SocketServ - 2

Растровые изображения и анимация
Одно из наиболее распространенный применений аплетов связано с рисованием простых или анимированных растровых изображений. На серверах Web изображения обычно хранятся в форматах GIF или JPEG. Оба эти формата обеспечивают сжатие изображения, что весьма актуально из-за невысокой скорости передачи данных в сети Internet.

Загрузка и рисование растрового изображения
Загрузка и рисование растрового изображения - 2
Класс Image
Ожидание загрузки изображений
Применение класса MediaTracker
Создание объекта класса MediaTracker
Добавление изображений в объект - MediaTracker
Ожидание загрузки добавленных изображений
Другие методы класса MediaTracker
Применение интерфейса ImageObserver

Звук в аплетах Java
Нельзя сказать, что звуковые возможности аплетов Java чрезмерно велики. Скорее наоборот, они минимальны. Тем не менее, аплеты могут проигрывать звуковые клипы, записанные в файлах формата AU, который пришел из мира компьютеров фирмы Sun.

Загрузка и проигрывание звуковых файлов
Аплет PlayClip
Исходные тексты приложения
Описание исходного текста
Поля классаPlayClip
Метод getParameterInfo
Метод init
Метод action
Метод start
Метод stop

Философия Java

Как и любой другой язык, Java есть способ выражения каких-либо понятий. При правильном подходе определенный способ выражения будет гораздо проще и более гибок применительно к растущим и становящимся сложнее задачам, чем другой. Также нельзя рассматривать Java с точки зрения простого набора конструкций языка, поскольку некоторые из них не имеют смысла в отдельности. Вы сможете использовать разрозненные части языка вместе только в том случае если вы думаете о концепции в целом, а не о простом кодировании. И чтобы понять Java с данной позиции необходимо понять и основные задачи Java, и задачи программирования в целом. В данной книги мы остановимся на последних, рассмотрим необходимость их решения и пути решения с использованием Java. Так, набор конструкций, описываемый в каждой главе, применен к конкретной задаче, которая решена с помощью данного языка. Именно таким образом, я надеюсь в кратчайшее время подвести вас к той черте, когда концепции Java станут чуть ли не вторым вашим языком. Где возможно, я буду придерживаться мнения, что вы образно представляете модель, позволяющую глубже понять язык; и в случае решения какой-то слишком сложной задачи вы сможете сравнить ее с вашей моделью и найти ответ.

Развитие абстракции
Предполагается, что вы уже знакомы с базовыми концепциями программирования: вы знаете, что программа есть набор инструкций, что бывают процедуры/функции/макросы, что бывают управляющие конструкции такие как "if", а также конструкции построения цикла как "while" и т.п. Однако, вы могли почерпнуть эти знания из разных источников, таких как макро-языки или средства разработки типа Perl.

Объект имеет интерфейс
Объект имеет интерфейс - 2
Объект имеет интерфейс - 3
Спрятанная реализация
Спрятанная реализация - 2
Повторное использование реализации
Повторное использование интерфейса
Повторное использование интерфейса - 2
Повторное использование интерфейса - 3
Отношения ЯВЛЯЕТСЯ против ПОХОЖ НА

Математические операторы
Основные математические операторы те же, что и допустимые в большинстве языков программирования: сложение (+), вычитание (-), деление (/), умножение (*) и остаток от деления (%, которое производит остаток от целочисленнгого деления). Целочисленное деление в результате выполняет отсечение, а не округление.

Операторы унарного минуса и плюса
Автоинкремент и автодекремент
Операторы сравнения
Проверка равенства объектов
Логические операторы
Короткое замыкание
Битовые операторы
Операторы сдвига
Операторы сдвига - 2
Операторы сдвига - 3

Конструкторы и полиморфизм
Обычно конструкторы отличаются для разных методов. Это так же верно когда используется полиморфизм. Поскольку конструкторы не полиморфичны (но Вы можете получить разновидность виртуального конструктора, об этом Вы узнаете в главе 12), то важно понять способы работы конструкторов составной иерархии и с полиморфизмом. Понятие этого позволит вам устранить неприятную запутанность, связанную с конструкторами.

Порядок вызова конструкторов
Порядок вызова конструкторов - 2
Наследование и finalize( )
Наследование и finalize( ) - 2
Поведение полиморфных методов
Поведение полиморфных методов - 2
Проектировка с наследованием
Чистое наследование против расширения
Приведение к дочернему типу
Приведение к дочернему типу - 2

Обработчики исключений
Каждое catch предложение (обработчик исключения) как меленький метод, который принимает один и только один аргумент определенного типа. Идентификаторы (id1, id2 и так далее) могут быть использованы внутри обработчика, как аргумент метода. Иногда вы нигде не используете идентификатор, потому что тип исключения дает вам достаточно информации, чтобы разобраться с исключением, но идентификатор все равно должен быть.

Спецификация исключения
Перехват любого исключения
Перехват любого исключения - 2
Повторное выбрасывание исключений
Повторное выбрасывание исключений - 2
Повторное выбрасывание исключений - 3
Стандартные исключения Java
Особый случай RuntimeException
Особый случай RuntimeException - 2
Выполнение очистки с помощью finally

События и типы слушателей
Все компоненты Swing включают методы addXXXListener( ) и removeXXXListener( ), так что подходящий тип слушателя может быть добавлен и удален для каждого компонента. Вы заметите, что “XXX” в каждом случае также представляет аргумент метода, например: addMyListener(MyListener m). Приведенная ниже таблица включает основные ассоциированные события, слушатели и методы, наряду с основными компонентами, которые поддерживают эти определенные события, обеспечивая методы addXXXListener( ) и removeXXXListener( ).

Использование слушающих адаптеров
Отслеживание множественных событий
Отслеживание множественных событий - 2
Каталог компонентов Swing
Кнопки
Группы кнопок
Группы кнопок - 2
Иконки
Инструмент подсказки
Текстовые поля

Почему JDBC API выглядит так сложно
Как упоминалось ранее, базы данных от начала до конца выглядят беспорядочно, в основном поэтому требуются прилажения и инструменты по работе с базами данных. Только недавно появились общие соглашения по языку SQL (и в общем употреблении существует множество других языков работы с базами данных). Но даже при существовании “стандартного” SQL есть так много вариаций этой темы, из-за чего JDBC должен предоставлять такой огромный интерфейс DatabaseMetaData, чтобы ваш код мог обнаруживать совместимость подключенной в настоящее время базы данных с определенным “стандартом” SQL.

Более изощренный пример
Более изощренный пример - 2
Более изощренный пример - 3
Более изощренный пример - 4
Более изощренный пример - 5
Более изощренный пример - 6
Сервлеты
Основы сервлетов
Основы сервлетов - 2
Основы сервлетов - 3

Полное руководство по терминальным службам Windows Server 2003

Описываются новые возможности и улучшения WS2K3 Terminal Services. Здесь также будет обсуждаться наилучшая практика настройки и управления терминальными службами с точки зрения новых технологий, доступных системным администраторам в WS2K3. С помощью Remote Desktop Protocol (RDP) 5.2, интерфейса ADSI для доступа к атрибутам объекта пользователя, относящихся к терминальным службам, новых элементов управления групповыми политиками, каталога сеансов, мы можем использовать Terminal Services для решения сложных задач предоставления пользователям рабочих столов на базе терминальных служб.

Продолжение

Windows Help Guide. Вопросы о Windows. Версия 1.5

Если в панели управления выбрать "Экран", а в нем "оформление", то помимо шрифтов и цветов, используемых в качестве стандартных, Вы сможете изменить толщину линеек прокрутки и заголовков окон...
Если Вам требуется открыть файл с помощью программы, отличной от той, которая сопоставлена данному типу файлов, то щелкните по нему правой кнопкой мыши, удерживая нажатой клавишу SHIFT. В появившемся контекстном меню Вы увидите пункт "открыть с помощью..." (open with...)
Если во время перетаскивания файла в мусорную корзину (или выбора пункта меню "удалить") Вы будете держать нажатой кнопку SHIFT, то файл будет удален, а не помещен в корзину.
Вы можете отменить действия произведенные в Windows (например удаление или перемещение файла) нажав комбинацию клавиш Ctrl-Z.
Если перетаскивать файлы или папки с нажатой ПРАВОЙ кнопкой мыши, то когда Вы ее отпустите - увидите меню, из которого сможете выбрать хотите ли Вы копировать файл, переместить или создать ярлык.

Дополнительное оснащение Windows
Структура системного реестра
Советы пользователей
Советы от Microsoft