Страницы

Поиск по вопросам

Показаны сообщения с ярлыком applet. Показать все сообщения
Показаны сообщения с ярлыком applet. Показать все сообщения

пятница, 13 марта 2020 г.

Можно ли обращаться (чтение/запись) к файлам из апплета?

#java #applet


Разбираюсь с апплетами. Написал апплет, который должен сохранять своё состояние.
Делаю это с помощью класса Properties. Файл свойств находиться по адресу C:\Users\UserName\.ShapeAppletData\.properties
Когда тестирую апплет в IDE (Eclipse) всё работает. Когда запускаю в браузере (Mozilla)
появляется исключение InvocationTargetException. Вывел сообщение об ошибке, оно такое:


  acess denied ("java.util.PropertyPermission" "user.home" "read")


Почему возникает такая ошибка? Может ли апплет обращаться к файлам на компьютере?
Как управлять разрешением на чтение/запись апплетом?

UPD :
Локализовал ошибку. Ошибка возникает на этой строчке кода:

userDir = System.getProperty("user.home");

    


Ответы

Ответ 1



Sun в свое время постарались сделать технологию апплетов безопасной для конечного пользователя. Обычные Java-апплеты запускаются в песочнице с ограниченными возможностями. Вы можете подписать апплет сертификатом от доверенного издателя и, если пользователь примет сертификат и подтвердит запрос полномочий, запустить его вне песочницы. В песочнице вам доступны: сетевые подключения на тот же хост и порт, откуда был получен апплет (у апплетов, загруженных с локальной файловой системы, ограничений нет); загрузка HTML-документов вызов публичных методов апплетов-соседей по странице; чтение системных свойств: java.class.version java.vendor java.vendor.url java.version os.name os.arch os.version file.separator path.separator line.separator и некоторых других при старте через JNLP. В песочнице в общем случае вы НЕ можете: обращаться к файловой системе (доступно через JNLP); запускать процессы; использовать буфер обмена (доступно через JNLP); отправлять задания на принтеры (доступно через JNLP); загружать нативные библиотеки (JNI); подменять SecurityManager; создавать альтернативные загрузчики классов; читать некоторые системные свойства: java.class.path java.home user.dir user.home user.name

суббота, 28 декабря 2019 г.

Актуальность аплетов

#java #java_8 #applet


В книге Шилда "Java 8 для начинающих" пару раз разбирается создание аплетов разными
средствами. Разве сейчас, эти аплеты не вытеснены JavaScript'ом? Другими словами, есть
ли толк вникать в эту область, или же это стоит изучить для общего развития?
    


Ответы

Ответ 1



Нет. Насколько я знаю, современными браузерами апплеты не поддерживаются (без специального шаманства).

Ответ 2



С 2015-го года многие браузеры перестали поддерживать апплеты. С сентября 2017 Oracle объявили технологию устаревшей. Скорее всего, в 2019-м её окончательно уберут из Java.

среда, 27 ноября 2019 г.

Настройки безопасности блокируют подписанный апплет запущеный через Javascript

#javascript #java #html #applet


Имеется подписанный апплет. Запускается таким образом через HTML и работает:




Applet-Test



    

Hi html works

Теперь пробую сделать то же самое через javascript с использованием jnlp: OTC-Applet BBraun И сам скрипт внутри HTML: OTC-Applet Page

OTC Applet

В таком варианте блокируется настройками безопаcности java. Что не так здесь? В чем отличие от первого варианта? Версия Java 1.7.0_67.


Ответы

Ответ 1



Для запуска, апплеты должны быть подписанными. Есть тестовые и безплатные сертификаты, но для использования на сайте следует купить сертификат, например, verysign (разные есть, по разным ценам). Вот пример, как подписать апплет: https://docs.oracle.com/javase/7/docs/technotes/guides/jweb/security/rsa_signing.html И еще ссылки, может поможет в трудности: https://habrahabr.ru/post/201210/ http://www.codejava.net/java-se/applet/how-to-sign-a-java-applet?showall=1 https://habrahabr.ru/post/204984/

Ответ 2



Из комментария пользователя @lospejos: В современных версиях браузеров (Chrome, Firefox и их клоны) JAVA апплеты считаются устаревшей и небезопасной технологией и по умолчанию блокируются, так что иногда не помогает даже корректная подпись. А учитывая общую тенденцию, пожалуй имеет смысл обновить технологию (перейти от апплетов в браузерах на Bootstrap + Angular (или аналоги) и backend на Java/Microservices с обменом данными по REST). Конечно, это потребует изучения нового материала.

Ответ 3



В современных версиях браузеров (Chrome, Firefox и их клоны) JAVA апплеты считаются устаревшей и небезопасной технологией и по умолчанию блокируются Для сдачи лабораторных работ в универе виртуальный сервер поместил в исключение. Это можно сделать так: панель управления -> Java -> вкладка security Edit Site List... (кнопка справа внизу)

суббота, 1 июня 2019 г.

Можно ли обращаться (чтение/запись) к файлам из апплета?

Разбираюсь с апплетами. Написал апплет, который должен сохранять своё состояние. Делаю это с помощью класса Properties. Файл свойств находиться по адресу C:\Users\UserName\.ShapeAppletData\.properties Когда тестирую апплет в IDE (Eclipse) всё работает. Когда запускаю в браузере (Mozilla) появляется исключение InvocationTargetException. Вывел сообщение об ошибке, оно такое:
acess denied ("java.util.PropertyPermission" "user.home" "read")
Почему возникает такая ошибка? Может ли апплет обращаться к файлам на компьютере? Как управлять разрешением на чтение/запись апплетом?
UPD : Локализовал ошибку. Ошибка возникает на этой строчке кода:
userDir = System.getProperty("user.home");


Ответ

Sun в свое время постарались сделать технологию апплетов безопасной для конечного пользователя. Обычные Java-апплеты запускаются в песочнице с ограниченными возможностями. Вы можете подписать апплет сертификатом от доверенного издателя и, если пользователь примет сертификат и подтвердит запрос полномочий, запустить его вне песочницы.
В песочнице вам доступны
сетевые подключения на тот же хост и порт, откуда был получен апплет (у апплетов, загруженных с локальной файловой системы, ограничений нет); загрузка HTML-документов вызов публичных методов апплетов-соседей по странице; чтение системных свойств:
java.class.version java.vendor java.vendor.url java.version os.name os.arch os.version file.separator path.separator line.separator
и некоторых других при старте через JNLP.
В песочнице в общем случае вы НЕ можете
обращаться к файловой системе (доступно через JNLP); запускать процессы; использовать буфер обмена (доступно через JNLP); отправлять задания на принтеры (доступно через JNLP); загружать нативные библиотеки (JNI); подменять SecurityManager; создавать альтернативные загрузчики классов; читать некоторые системные свойства:
java.class.path java.home user.dir user.home user.name