Несмотря на отсутствие прямой связи с языком Java, JavaScript может обращаться к внешним свойствам и методам Java- апплетов, встроенных в страницу HTML. Java is a set of computer software and specifications developed by Sun Microsystems, which was later acquired by the Oracle Corporation, that provides a . Доступ к окружению из программы Java. Как запустить из Java другую программу? Менеджер безопасности. Можно ли запустить из апплета другое окно? Java (Джава) — объектно-ориентированный язык программирования, разрабатываемый компанией Sun Microsystems с 1991 года и официально выпущенный года. Язык разрабатывался для программирования бытовой электроники.
Оболочка времени выполнения Java Процессы компиляции и выполнения Сборка мусора. Создание Java-апплетов Ваш первый апплет. Java is a general-purpose computer programming language that is concurrent, class-based, object-oriented, and specifically designed to have as few .
Учимся программировать на JAVA. Часть 3. Модуль поиска не установлен. Классы Frame и Applet.
Связь Java c окружением. Цели главы. Класс Applet и передача ему параметров. Размещение апплетов. Связь апплетов через Applet. Context. Класс Frame и передача ему параметров. Доступ к окружению из программы Java.
Как запустить из Java другую программу? Менеджер безопасности. Можно ли запустить из апплета другое окно?
Класс Applet и передача ему параметров. При программировании на Java вы можете получать программы двух типов v самостоятельные приложения и апплеты. Апплеты отличаются от самостоятельных приложений тем, что они не запускаются из командной строки, а выполняются в броузере Web, т. Так же, как и у самостоятельного приложения, байт- код апплета имеет расширение class. Броузер загружает апплет, когда встречает HTML таг < applet> . Например: < applet code=My.
Applet. class height=4. В приведенном выше коде броузеру предлагается запустить апплет My. Applet в квадратной области 4. Апплет несет ответственность за рисование в этой области. Все апплеты являются потомками класса Applet и не имеют метода main. Давайте посмотрим на пример апплета: import java. My. Applet extends Applet {.
String s. private int x, y. This is applet!|.
Graphics g) {. g. String(s,x,y). } Первым запускаемым при старте апплета методом будет метод init. Класс My. Applet перекрывает метод init своего предка Applet для того, чтобы проинициализировать переменные s, x и y. Класс My. Applet перекрывает метод paint своего предка Applet для рисования текста ?
This is applet!|. Это сильно отличается от распечатки в стандартный выводной поток. My. Applet получает экземпляр класса Graphics. Этот класс содержит методы для воспроизведения графики. При помощи метода draw. String класса Graphics строка ? This is applet!| выводится в область апплета в окне броузера.
Область апплета не является окном, подобным окнам других программ в вашей операционной системе. Она не имеет кнопок максимизации, минимизации и не может быть свернута в пиктограмму. Настоящим окном программы будет окно броузера. Может ли такая программа (апплет) получать параметры из внешнего окружения? Да, может. Для этого используется HTML таг . Рассмотрим пример: < applet code=My.
Applet. class height=4. Name| value=|This is applet!|> < /applet> import java. My. Applet extends Applet {. String s. private int x, y. Parameter(? s. Name|).
Graphics g) {. g. String(s,x,y). } В этом примере строка ? This is applet!| передается переменной s при запуске апплета при помощи метода get. Parameter класса Applet. Если параметров несколько, то между тагами < applet> и < /applet> будет несколько тагов < param>.
Размещение апплетов. Апплеты предназначены для работы в сети Web, поэтому они обычно размещаются на Web- сервере. При этом апплет и HTML- страница для его запуска, могут быть размещены на разных серверах. Для указания места нахождения апплета в таге < applet> есть поле codebase. В этом поле можно указать http адрес сервера, на котором находится апплет. Например: < applet codebase=|http: //www.
My. Applet. class height=4. Связь апплетов через Applet. Context. Из апплета, через класс Applet. Context, вам доступно его окружение. Через окружение апплета вы можете получить доступ к другому апплету текущей страницы или переадресовать броузер на другую страницу.
Пусть у нас на HTML странице будет четыре апплета (My. Applet. 1, My. Applet. My. Applet. 3, My. Applet. 4). Рассмотрим пример, как из апплета My. Applet. 1 получить доступ к методам остальных: import java.
My. Applet. 1 extends Applet {. Applet. Context ap = super. Applet. Context(); //получить Applet. Context. for (Enumeration e=ap. Applets(); e. has.
More. Elements(); ) { //получить все апплеты. Applet applet = (Applet) e. Element(); //перебираем апплеты, пока не кончатся.
My. Applet. 2) {. My. Applet. 2 applet. My. Applet. 2) applet; //получить экземпляр апплета My. Applet. 2. } else if (applet instanceof My.
Applet. 3) {. My. Applet. 3 applet. My. Applet. 3) applet; //получить экземпляр апплета My. Applet. 3. } else if (applet instanceof My. Applet. 4) {. My.
Applet. 4 applet. My. Applet. 4) applet; //получить экземпляр апплета My.
Applet. 4. } При помощи указателя super получаем экземпляр класса Applet из его текущего потомка (указатель super всегда возвращает предка текущего класса). Затемvvvvv получаем класс Applet. Context, и наконец, используя instanceof, мы определяем потомка класса Applet и создаем его экземпляр.
Ну, а когда вы получаете экземпляр класса, v вы получаете доступ ко всем его методам. Переадресовать броузер на другую страницу можно, например, с помощью такого кода: Applet.
Context ap = super. Applet. Context(); //получить Applet. Context. ap. show. Document(new URL(?
Malformed. URLException e) {. System. err. println(e). Конструкция try {} catch {} нужна для обработки исключительной ситуации Malformed. URLException. О try {} catch {} и исключительных ситуациях мы поговорим попозже, а пока имейте в виду, что при помощи метода show. Document класса Applet. Context вы можете переключить броузер на любую страницу Web (правда сделать это вы можете только один раз).
Класс Frame и передача ему параметров. Можем ли мы создать полноценное окно (как в Windows) из программы, написанной на языке Java? Для этого существует класс Frame (рамка). Если ваш класс является потомком класса Frame, то вы получаете окно со всеми его атрибутами. Запуск на выполнение потомка класса Frame происходит из функции main. Никакого кода HTML не требуется. Программа полностью автономна и броузер для нее не нужен.
Давайте реализуем приведенный выше пример, как полностью самостоятельную автономную программу с окном: import java. My. Frame extends Frame {. String s. private int x, y. My. Frame () {. s = ?
This is frame!|. set. Size(4. 00,4. 00); //устанавливаем размеры окна.
Graphics g) {. g. String(s,x,y); // нарисовать строку s. String[] args) {. My. Frame my. Frame. My. Frame(). } Так же, как и в апплете, строка ? This is frame!| рисуется методом paint, но устанавливает размеры окна уже метод set. Size, а видимость окна обеспечивает метод show.
Уберите метод show v и вы при отсутствии ошибок не увидите окна. Оно будет просто невидимым. Вы заметили, когда мы реализуем функцию main, в качестве параметров ей передается String[] args. Что это такое? Это массив строк, который вы можете передать программе на Java, в качестве параметров из командной строки. Рассмотрим пример: import java. My. Frame. 1 extends Frame {. String s. private int x, y.
My. Frame. 1 () {. Size(4. 00,4. 00); //устанавливаем размеры окна.
Graphics g) {. g. String(s,x,y). public static void main(String[] args) {. This is frame!|; //параметров нет в командной строке. My. Frame. 1 my. Frame. My. Frame. 1(). } Если вы для запуска этой программы на выполнение наберете: java My. Frame. 1 ? Anybody string|, то в окне программы будет нарисована строка ? Anybody string|. Доступ к окружению из программы Java.
Для связи самостоятельной программы Java с окружением служит класс Properties. Класс Properties является хэшированной таблицей, где имя какого- нибудь системного свойства ассоциируется с его значением. Доступ к классу Properties можно получить через его экземпляр, который возвращается методом get. Properties класса System.
Рассмотрим пример: import java. String[] args) {. Properties p = System. Properties(); // получение класса Properties. System. out); //распечатка в стандартный выводной поток.
В результате выполнения этой программы на моем компьютере получилось: = listing properties =. Java Platform API Specification. WToolkit. java. version=1. Win. 32. Graphics.
Environment. user. Asia/Krasnoyarsk. Sun Microsystems Inc.
C: \WINDOWS. java. RU. file. encoding. C: \JBUILDER3\JAVA\JRE. C: \JBUILDER3\myclasses; C: \JBUILDER3\l..
C: \JBUILDER3\JAVA\JRE\lib\ext. C: \WINDOWS\TEMP\. Windows 9. 5. java. Sun Microsystems Inc. WPrinter. Job. java.
C: \JBUILDER3\JAVA\BIN.; C: \WINDOWS\SY.. Sun Microsystems Inc.
Unicode. Little. file. Cp. 12. 51. java. Sun Microsystems Inc. Home. java. vendor.
Classic VM. java. Java Virtual Machine Specification. C: \JBUILDER3\JAVA\JRE\bin.
JDK- 1. 2- V, native threads, java.. C: \JBuilder. 3\myprojects\properties. C: \JBUILDER3\JAVA\JRE\lib\rt. C: \J.. До знака ?=| стоят названия свойств (ключ в хэшированной таблице), а после него стоят сами значения. Так, например, чтобы узнать название операционной системы, вы можете написать: String osname = System.
Property. (? os. name ?); В этом случае метод get. Property вернет вам значение свойства ? Рассмотрим еще несколько полезных приемов. Для определения количества памяти на компьютере можно использовать экземпляр класса Runtime. Например: Runtime runtime = Runtime. Runtime(). System.
Total Memory: ? + runtime. Memory()); // всего памяти. System. out. println(? Free Memory: ? + runtime. Memory()); // свободно памяти Как запустить из Java другую программу? Для запуска из программы на языке Java другой программы также можно использовать экземпляр класса Runtime.
Например: Runtime runtime = Runtime. Runtime(). runtime. IOException e) {. System. out. println(e).
Запуск ? notepad. Runtime Менеджер безопасности. Не все, что вы можете сделать с помощью автономной самостоятельной программы, вы можете сделать с помощью апплета. Теоретически, в апплетах нет ограничений на использование любых классов Java, а практически, многие классы не будут работать в апплете. Это происходит из- за вмешательства Менеджера безопасности. Менеджер безопасности запрещает загруженному по сети апплету: Чтение- запись файлов. Остановку- запуск задач.
Чтение свойств Properties. Работу с портом. Загрузку динамических библиотек. На самом деле, чтение десяти свойств Properties все же разрешено. При помощи апплета вы можете прочесть следующие Properties: java. Если вы запустите апплет с локальной машины, то Менеджер безопасности будет позволять вам гораздо больше, чем если апплет придет на вашу машину из сети.
Полностью актуальные вопросы безопасности вы можете прочитать на http: //java. Все ограничения v это общая политика в вопросе безопасности апплетов java.