- •Методические указания по выполнению срс Программирование на языке java
- •Введение
- •1. Java - объектно-ориентированный язык программирования
- •1.1. Базовые типы данных
- •1.2. Операции (operators) в языке Java
- •1.2.1. Операции сравнения
- •1.2.2. Операции инкремента, декремента
- •1.3. Литералы (константы)
- •1.5. Массивы в Java
- •1.4. Операторы
- •1.6. Комментарии
- •1.7. Первая программа на языке Java
- •1.8. Цель, требования и рекомендации к выполнению задания
- •1.9. Задания
- •2. Абстрактные классы и Интерфейсы
- •2.1. Абстрактные классы
- •2.2. Интерфейсы
- •2.3. Цель, требования и рекомендации к выполнению задания
- •2.4. Задания
- •2.5. Пример выполнения задания.
- •3. Знакомство с библиотекой Swing
- •3.1. Основы оконной графики
- •3.2. Модель событий в Swing
- •3.3. Цель, требования и рекомендации к выполнению задания
- •3.4. Задания
- •3.5. Пример выполнения задания.
- •4. Апплеты
- •4.1. Проблема безопасности
- •4.2. Создание апплетов
- •4.3. Апплеты и приложения
- •4.4. Цель, требования и рекомендации к выполнению задания
- •4.5. Задания
- •4.6. Пример выполнения задания.
- •4.6.1. Запуск апплетов
- •4.6.2. Пример выполнения задания 2
- •5. Множественные нити выполнения (Multiple threads).
- •5.1. Реализация многопоточности в Java
- •5.1.1. Методы класса Thread
- •5.1.2. Реализация интерфейса Runnable
- •5.3. Завершение и останов нити
- •5.4. Приоритеты нитей
- •5.5. Средства синхронизации нитей в Java
- •5.6. Применение многопоточности для анимации
- •5.7. Цель, требования и рекомендации к выполнению задания
- •5.8. Задания
- •5.9. Пример выполнения задания.
- •Дополнительная информация и список литературы
- •Оглавление
4.1. Проблема безопасности
Суть проблемы в том, что апплет - это, как правило, программа, полученная из внешнего источника. Соответственно, она опасна. По злому умыслу или из-за ошибки она может нанести вред. Более того, апплет как бы составляет одно целое с web-страничкой и для пользователя может быть даже не совсем очевидно, что безобидная web-страница скрывает за собой потенциально опасный программный код.
В целях безопасности апплеты, по умолчанию, сильно ограничены в своих правах. Эти ограничения определяются настройками конкретного браузера. Они могут быть ослаблены самим пользователем как в отношении всех апплетов, так и для конкретных апплетов.
Ограничений достаточно много, но мы рассмотрим только основные из них.
Апплеты не могут ни читать, ни писать на локальный диск. Они могут передавать информацию только в тот адрес, откуда загружен апплет. Окно апплета специально выделяется или делается какая-то другая пометка для того, чтобы пользователь представлял себе, что он имеет дело с апплетом, а не с обычной web-страницей.
4.2. Создание апплетов
Техника написания апплетов базируется на классе JApplet пакета javax.swing.
Этот класс имеет много своих методов и ряд методов, унаследованных от класса Applet. Однако, их изучение по документации мало что даст для овладения техникой построения апплетов. Просто нужно знать, как построить апплет при помощи этих методов.
Для построения апплета нужно создать класс - наследник класса JApplet и переопределить в нем ряд методов класса Applet. В классе JApplet эти методы реализованы как пустые заглушки, которые ничего не делают. При работе апплета внутри браузера он вызывает эти методы в определенных ситуациях. Если мы определим свои методы, то браузер вызовет их, а не методы класса Applet.
Рассмотрим эти методы.
public void init()
Вызывается браузером сразу после загрузки аплета перед первым вызовом метода start(). Этот метод нужно переопределять практически всегда, если в аплете требуется хоть какая-то инициализация.
public void start()
Вызывается браузером при каждом "посещении" данной страницы. Имеется в виду, что можно загрузить данную страницу, потом загрузить другую, не убирая данную, а потом вернуться к данной. Используется обычно в комбинации с методом stop для экономии ресурсов в том случае, например, если апплет выполняет некоторую анимацию. Тогда stop может ее остановить, а start запустить снова.
public void stop()
Вызывается браузером при деактивизации данной страницы как в случае загрузки новой страницы без выгрузки данной, так и в случае выгрузки данной. В последнем случае stop вызывается перед destroy.
public void destroy()
Вызывается браузером перед выгрузкой данной страницы.
Обычно при создании аплета переопределяют метод init() и реализуют в нем формирование экрана. При этом вся функциональность апплета обеспечивается слушателями (listeners) полей, кнопок и других активных визуальных компонент.
4.3. Апплеты и приложения
Практически любое диалоговое приложение на Java может быть реализовано так, что оно сможет работать и как программа и как апплет (не нужно только забывать об ограничениях, налагаемых на аплпеты по доступу к ресурсам машины).
Ниже приведен порядок, в котором вызываются методы класса Applet, с пояснениями, нужно или нет переопределять данный метод.
init
Метод init вызывается первым. В нем вы должны инициализировать свои переменные.
start
Метод start вызывается сразу же после метода init. Он также используется в качестве стартовой точки для возобновления работы после того, как апплет был остановлен. В
то время, как метод init вызывается только однажды—при загрузке апплета, start вызывается каждый раз при выводе HTML-документа, содержащего апплет, на экран. Так, например, если пользователь перейдет к новой WWW-странице, а затем вернется назад к странице с апплетом, апплет продолжит работу с метода start.
paint
Метод paint вызывается каждый раз при повреждении апплета. AWT следит за состоянием окон в системе и замечает такие случаи, как, например, перекрытие окна апплета другим окном. В таких случаях, после того, как апплет снова оказывается видимым, для восстановления его изображения вызывается метод paint.
update
Используемый по умолчанию метод update класса Applet сначала закрашивает апплет цветом фона по умолчанию, после чего вызывает метод paint. Если вы в методе paint заполняете фон другим цветом, пользователь будет видеть вспышку цвета по умолчанию при каждом вызове метода update—то есть, всякий раз, когда вы перерисовываете апплет. Чтобы избежать этого, нужно заместить метод update. В общем случае нужно выполнять операции рисования в методе update, а в методе paint, к которому будет обращаться AWT, просто вызвать update.
stop
Метод stop вызывается в тот момент, когда браузер покидает HTML-документ, содержащий апплет. При вызове метода stop апплет еще работает. Вы должны использовать этот метод для приостановки тех подпроцессов, работа которых необязательна при невидимом апплете. После того, как пользователь снова обратится к этой странице, вы должны будете возобновить их работу в методе start.
destroy
Метод destroy вызывается тогда, когда среда (например, браузер Netscape) решает, что апплет нужно полностью удалить из памяти. В этом методе нужно освободить все ресурсы, которые использовал апплет.
repaint
Метод repaint используется для принудительного перерисовывания апплета. Этот метод, в свою очередь, вызывает метод update. Однако, если ваша система медленная или сильно загружена, метод update может и не вызваться. Близкие по времени запросы на перерисовку могут объединяться AWT, так что метод update может вызываться спорадически. Если вы хотите добиться ритмичной смены кадров изображения, воспользуйтесь методом repaint (time)—это позволит уменьшить количество кадров, нарисованных не вовремя.
repaint(time)
Вы можете вызывать метод repaint, устанавливая крайний срок для перерисовки (этот период задается в миллисекундах относительно времени вызова repaint).
repaint (x, у, w, h)
Эта версия ограничивает обновление экрана заданным прямоугольником, изменены будут только те части экрана, которые в нем находятся.
repaint(time, x, у, w, h)
Этот метод—комбинация двух предыдущих.
