Мегаобучалка Главная | О нас | Обратная связь


О программировании графики в Java



2019-12-29 164 Обсуждений (0)
О программировании графики в Java 0.00 из 5.00 0 оценок




 

Сначала в Java появилась библиотека AWT (abstract window toolkit) (java.awt), которая использовала платформенно-зависимые средства для отображения элементов GUI. Позже появилась IFC (internet foundation classes), которая все элементы интерфейса рисовала в окне. Ее преемницей стала библиотека Swing (javax.swing), которая используется и сейчас. Swing не может работать самостоятельно, без опоры на AWT. Swing работает медленнее, чем AWT, но предоставляет более богатый набор средств, не зависит от платформы (меньше ошибок) и на всех платформах выглядит одинаково.

Окно верхнего уровня (не содержащееся внутри других окон) называется фреймом: классы Frame (AWT) и JFrame (Swing).

Отображать данные можно непосредственно на фрейме, но обычно он используется как контейнер для других GUI-компонентов. Фрейм состоит из нескольких слоев-областей (корневой области, область слоя, прозрачная область и область отображения). Компоненты размещаются на области отображения. Например, чтобы разместить компонент:

Container contentPane = frame.getContentPane();

Component c = …;

contentPane.add(c);

Для рисования на компоненте необходимо переопределить его метод void paintComponent(Graphics g). Graphics – набор настроек контекста для рисования. Метод paintComponent вызывается автоматически, когда требуется перерисовка компонента, но можно вызвать его принудительно с помощью метода repaint().

При обработке событий в библиотеке AWT события передаются от источников (например, кнопок) к обработчикам. Объект события – это объект подкласса java.util.EventObject, который несет в себе информацию о событии. Обработчик – это любой объект класса, реализующего специальный интерфейс.

Пример:

class MyListener implements ActionListener {

public void actionPerformed(ActionEvent event) {…}

}

ActionListener listener = new MyListener();

JButton button = new JButton(“OK”);

button.addActionListener(listener);

В качестве обработчиков часто используются вложенные классы.

 

Реализация технологии клиент-сервер на Java

 

Обмен данными между клиентом и сервером осуществляется посредством механизма сокетов. Для поключения к удаленному хосту используется класс Socket, конструктор которого принимает имя хоста и порт подключения. После подключения вызываются методы getInputStream() и getOutputStream() для получения входного и выходного потока сокета. Закрытие сокета осуществляет метод close().

Для создания сервера используется класс ServerSocket:

ServerSocket ss = new ServerSocket(1234); /* сокет для прослушивания порта */

Socket incoming = s.accept(); /* сокет для обмена данными с клиентом */

s.close();

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

Классы URL и URLConnection инкапсулируют подробности извлечения информации с удаленного узла.

URL url = new URL(“somehost”);

URLConnection con = url.openConnection();

// настроить подключение …

con.connect(); // запрос заголовка

// обработка полей заголовка …

InputStream is = con.getInputStream();

Для представления интернет-адресов используется класс java.net.InetAddress.

 

Апплеты в Java

 

Апплеты – это программы на Java, загружаемые с веб-сервера и выполняемые в браузере. Апплет представляет собой GUI-программу, написанную с помощью AWT и/или Swing с той разницей, что в данном случае программа запускается не из функции main, а путем создания объекта класса, унаследованного от класса Applet (JApplet). Applet является потомком класса Panel.

После компиляции программы создается HTML-файл, содержащий фрагмент:

<applet code=”MyFile.class” … />

В классе, унаследованном от Applet, есть методы, связанные с жизненным циклом апплета:

init() – выполняется при инициализации апплета, аналог функции main(). Должен быть перегружен.

start() – выполняется при запуске апплета.

stop() – выполняется, когда пользователь покидает страницу с апплетом.

destroy() – выполняется при завершении работы браузера.

Хотя обычно апплет не требует создания фреймов и выполняется на панели, тем не менее, можно создать фрейм. Он будет отображен в отдельном окне вне браузера, но при этом не будет самостоятельным приложением.

Если в классе апплета, унаследованном от Applet, определить функцию main, можно добиться работы приложения как в виде апплета, так и в виде обособленного приложения.

Апплеты работают в обособленной «песочнице» (sandbox). При выполнении апплетов действуют строгие правила безопасности: нельзя запускать исполняемые файлы на компьютере пользователя, нельзя взаимодействовать ни с какими компьютерами, кроме сервера, нельзя обращаться к локальной файловой системе, нельзя получать информацию о локальном компьютере (за исключением минимальной). Нарушение этих правил ведет к генерации исключения SecurityException. Некоторые правила можно обойти, если подписать апплет электронной подписью.

 

Технология RMI в Java

 

RMI (remote method invocation) – технология удаленного вызова методов объектов, написанных на Java. Клиент – тот, кто вызывает метод. Сервер – тот, чей метод вызывается. На клиентской стороне представителем серверного объекта является заглушка (stub), метод которой фактически вызывает клиент. При вызове метода заглушка осуществляет сериализацию объектов, их кодирование (маршалинг), упаковывает их в блок вместе с информацией о вызываемом методе и передает серверу. На сервере объект-получатель (скелетон) выполняет обратные действия, осуществляет выполнение метода, и таким же образом передает результаты обратно клиенту.

Для удаленного вызова клиент использует интерфейсную переменную (которая на самом деле ссылается на заглушку).

При передаче объекта между виртуальными машинами обе машины должны иметь доступ к файлу класса.

Совместно используемый интерфейс должен расширять интерфейс java.rmi.Remote, а все методы интерфейса должны сообщать о том, что при их выполнении может возникнуть исключение RemoteException. Соответственно, при любом вызове удаленного метода надо перехватывать RemoteException. Серверный объект должен наследовать java.rmi.server.RemoteServer (абстрактный класс), но можно и конкретную реализацию – UnicastRemoteObject.

В JDK классы заглушки и каркасы (скелетоны) генерируются автоматически, раньше нужно было использовать утилиту rmic.

Для получения ссылки на заглушку на клиентской стороне используется служба регистрации самозагрузки (bootstrap registry service). Сервер регистрирует удаленный объект под определенным именем, а клиент его получает. Например:

// сервер

IfaceImpl pl = new IfaceImpl();

Context namingContext = new InitialContext();

namingContext.bind(“rmi:myobject”m pl);

// клиент

Iface p = (Iface)namingContext.lookup(“rmi://myserver.com/toaster”);

Служба регистрации автозагрузки должна быть запущена в операционной системе отдельно

 

Об интерфейсе JDBC

 

Модель JDBC основана на ODBC: программа взаимодействует с диспетчером драйверов JDBC, который выбирает подходящий в данном случае драйвер (например, драйвер Oracle) или мост (например, мост JDBC/ODBC). Целью разработки JDBC была разработка модели, работающей одинаково независимо от платформы и от поставщика данных. Предполагалось, что вся работа с БД будет осуществляться с помощью SQL и Java. Классы JDBC располагаются в пакетах java.sql и javax.sql.

Подключение к БД:

Connection con = DriverManager.getConnection(url, username, password);

Выполнение запроса:

Statement st = con.createStatement();

ResultSet rs = st.executeQuery(“SELECT …”);

ResultSet может быть сделан обновляемым (то есть вносимые изменения отражаются в БД), если указать особые параметры при создании Statement.

По умолчанию каждая SQL-команда выполняется в своей транзакции, но можно это отключить:

con.setAutoCommit(false);

con.commit();

con.rollback();

 



2019-12-29 164 Обсуждений (0)
О программировании графики в Java 0.00 из 5.00 0 оценок









Обсуждение в статье: О программировании графики в Java

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Почему люди поддаются рекламе?: Только не надо искать ответы в качестве или количестве рекламы...
Личность ребенка как объект и субъект в образовательной технологии: В настоящее время в России идет становление новой системы образования, ориентированного на вхождение...
Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (164)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.011 сек.)