Java-апплет - Java applet
Java-апплеты мы небольшие приложения написано в Ява язык программирования, или другой язык программирования что компилируется в Байт-код Java, и доставляется пользователям в виде Java байт-код. Пользователь запустил Java-апплет из страница в Интернете, а затем апплет был выполнен в Виртуальная машина Java (JVM) в процесс отдельно от веб-браузер сам. Апплет Java может появиться во фрейме веб-страницы, в новом окне приложения, солнце с AppletViewer или автономный инструмент для тестирования апплетов.
Аплеты Java были представлены в первой версии языка Java, выпущенной в 1995 году. Начиная с 2013 года, основные веб-браузеры начали постепенно отказываться от поддержки базовых технологических апплетов, используемых для запуска, и к 2015–2017 гг. апплеты станут полностью недоступными. Java-апплеты были устарел начиная с Java 9 в 2017 году и удалена из Java SE 11 (18.9), выпущенной в сентябре 2018 года.[6][7][8][9][10]
Аплеты Java обычно писались на Java, но другие языки, такие как Jython, JRuby, Паскаль,[11] Scala, или же Эйфель (через SmartEiffel ) также можно использовать.
Java-апплеты работают с очень высокой скоростью, и до 2011 года они были во много раз быстрее, чем JavaScript. В отличие от JavaScript, Java-апплеты имели доступ к 3D аппаратное ускорение, что делает их хорошо подходящими для нетривиальных, ресурсоемких визуализаций. Поскольку браузеры получили поддержку графики с аппаратным ускорением благодаря холст технологии (или конкретно WebGL в случае 3D-графики),[12][13] а также своевременная компиляция JavaScript,[14] разница в скорости стала менее заметной.[нужна цитата ]
Поскольку байт-код Java кросс-платформенный (или независимо от платформы), Java-апплеты могут выполняться браузерами (или другими клиенты ) для многих платформ, в том числе Майкрософт Виндоус, FreeBSD, Unix, macOS и Linux. Их невозможно запустить на современных мобильных устройствах, не поддерживающих Java.
Обзор
Апплеты используются для предоставления интерактивных функций веб-приложениям, которые не могут быть предоставлены HTML один. Они могут захватить ввод с помощью мыши а также есть такие элементы управления, как кнопки или же флажки. В ответ на действия пользователя апплет может изменять предоставленное графическое содержимое. Это делает апплеты удобными для демонстрации, визуализации и обучения. Есть онлайн-коллекции апплетов для изучения самых разных предметов, от физики до физиологии сердца.
Апплет также может быть только текстовой областью; предоставление, например, кроссплатформенного Интерфейс командной строки в какую-то удаленную систему. При необходимости апплет может покинуть выделенную область и работать как отдельное окно. Однако апплеты имеют очень слабый контроль над содержимым веб-страницы за пределами выделенной области апплета, поэтому они менее полезны для улучшения внешнего вида сайта в целом, в отличие от других типов расширения браузера (а апплеты вроде новостные ленты или же WYSIWYG редакторы также известны). Апплеты также могут воспроизводить медиа в форматах, которые изначально не поддерживаются браузером.
Страницы, закодированные в HTML, могут включать в себя параметры, которые передаются апплету. Из-за этого один и тот же апплет может иметь разный вид в зависимости от переданных параметров.
Поскольку апплеты были доступны раньше CSS и DHTML были стандартными, они также широко использовались для тривиальных эффектов, таких как перекатывать кнопки навигации. Этот подход, который создавал серьезные проблемы для доступности и неправильного использования системных ресурсов, больше не используется, и даже в то время его настоятельно не рекомендовали.
Техническая информация
Аплеты Java выполняются в песочница большинством веб-браузеров, не позволяя им получить доступ к локальным данным, таким как буфер обмена или же файловая система. Код апплета загружается из веб сервер, после чего браузер либо встраивает апплета на веб-страницу или открывает новое окно, показывающее апплет пользовательский интерфейс.
Апплет Java расширяет класс java.applet.Applet
, или в случае Качать апплет javax.swing.JApplet
. Класс, который должен переопределить методы из класса апплета, чтобы настроить пользовательский интерфейс внутри себя (Апплет
) является потомком Панель
который является потомком Контейнер
. Поскольку апплет наследуется от контейнера, он имеет в основном те же возможности пользовательского интерфейса, что и обычное приложение Java, включая области с пользовательской визуализацией.
Первые реализации включали загрузку класса апплета по классу. Хотя классы представляют собой небольшие файлы, их часто бывает много, поэтому апплеты получили репутацию медленно загружающихся компонентов. Однако, поскольку .jars были представлены, апплет обычно доставляется в виде отдельного файла, имеющего размер, аналогичный файлу изображения (от сотен килобайт до нескольких мегабайт).
В домен откуда был загружен исполняемый файл апплета, является единственным доменом, с которым обычному (неподписанному) апплету разрешено связываться. Этот домен может отличаться от домена, в котором размещен окружающий HTML-документ.
Ява системные библиотеки и время выполнения имеют обратную совместимость, что позволяет писать код, работающий как в текущей, так и в будущих версиях виртуальной машины Java.
Подобные технологии
Многие разработчики Java, блоги и журналы рекомендуют Запуск Java Web технологию можно использовать вместо апплетов.[15] Java Web Start позволяет запускать немодифицированный код апплета, который затем запускается в отдельном окне (не внутри вызывающего браузера).
А Сервлет Java иногда неофициально сравнивают с «подобием» серверного апплета, но он отличается по языку, функциям и каждой из характеристик, описанных здесь для апплетов.
Встраивание в веб-страницу
Апплет можно отобразить на веб-странице, используя устаревшую апплет
Элемент HTML,[16] или рекомендуемый объект
элемент.[17] В вставлять
элемент может быть использован[18] с браузерами семейства Mozilla (вставлять
устарела в HTML 4, но включена в HTML 5). Это указывает источник и расположение апплета. Обе объект
и вставлять
Теги также могут загружать и устанавливать виртуальную машину Java (при необходимости) или, по крайней мере, вести на страницу плагина. апплет
и объект
Теги также поддерживают загрузку сериализованных апплетов, которые запускаются в определенном (а не начальном) состоянии. Теги также определяют сообщение, которое появляется вместо апплета, если браузер не может запустить его по какой-либо причине.
Однако несмотря на объект
официально рекомендованный тег, с 2010 г. поддержка объект
теги еще не были согласованы между браузерами, и Sun продолжала рекомендовать более старые апплет
тег для развертывания в многобраузерных средах,[19] поскольку он оставался единственным тегом, постоянно поддерживаемым самыми популярными браузерами. Для поддержки нескольких браузеров объект
В настоящее время для тега требуется JavaScript (который распознает браузер и настраивает тег), использование дополнительных тегов для конкретного браузера или предоставление адаптированного вывода со стороны сервера. Устарело апплет
тег подвергся критике. Oracle теперь предоставляет поддерживаемый код JavaScript[20] для запуска апплетов с кроссплатформенными обходными путями.
Подключаемый модуль браузера Java полагается на NPAPI, который многие поставщики веб-браузеров не рекомендуют из-за его возраста и проблем с безопасностью. В январе 2016 года Oracle объявила, что среды выполнения Java на основе JDK 9 прекращают поддержку подключаемого модуля браузера.[21]
Пример
В следующем примере показано использование Java-апплетов через пакет java.applet. В примере также используются классы из Java Набор инструментов для абстрактного окна (AWT) для создания сообщения "Привет, мир! "как результат.
импорт java.applet. *;импорт java.awt. *;// Код апплета для "Hello, world!" пример.// Это должно быть сохранено в файле с именем "HelloWorld.java".общественный учебный класс Привет, мир расширяет Апплет { // Распечатать сообщение на экране (x = 20, y = 10). общественный пустота краска(Графика грамм) { грамм.drawString("Привет, мир!", 20, 10); // Рисуем круг на экране (x = 40, y = 30). грамм.drawArc(40, 30, 20, 20, 0, 360); // Рисует прямоугольник на экране (x1 = 100, y1 = 100, x2 = 300, y2 = 300). грамм.drawRect(100, 100, 300, 300); // Рисует квадрат на экране (x1 = 100, y1 = 100, x2 = 200, y2 = 200). грамм.drawRect(100, 100, 200, 200); }}
Простые апплеты свободно распространяются в Интернете для настройки приложений, поддерживающих плагины.
После сборник, результирующий .учебный класс файл может быть размещен на веб-сервере и вызван в HTML страницу с помощью <applet> или <object> тег. Например:
<!DOCTYPE html><html><голова> <заглавие>HelloWorld_example.html</заглавие></голова><тело> <h1>Пример Java-апплета</h1> <п> Вот: <апплет код="HelloWorld.class" высота="40" ширина="200"> Здесь запускается HelloWorld.class. </апплет> </п></тело></html>
Когда страница будет открыта, она будет выглядеть следующим образом:
- Пример Java-апплета
- Вот оно: Привет, мир!
Чтобы минимизировать время загрузки, апплеты могут быть доставлены в виде банка файл. В случае с этим примером, если все необходимые классы помещены в сжатый архив example.jarвместо этого можно использовать следующий код внедрения:
<п> Вот: <апплет архив="example.jar" код="Привет, мир" высота="40" ширина="200"> Здесь запускается HelloWorld.class. </апплет></п>
Включение апплета подробно описано на официальной странице Sun о теге APPLET.[22]
Преимущества
Аплет Java может иметь одно или все из следующих преимуществ:[23]
- Заставить его работать на FreeBSD, Linux, Microsoft Windows и macOS просто, то есть сделать его кроссплатформенным. Апплеты поддержали большинство веб-браузеры через первое десятилетие 21 века; Однако с тех пор большинство браузеров отказались от поддержки апплетов по соображениям безопасности.
- Один и тот же апплет может работать одновременно со "всеми" установленными версиями Java, а не только с последней. плагин только версия. Однако, если апплету требуется более поздняя версия Среда выполнения Java (JRE) клиент будет вынужден ждать во время большой загрузки.
- Большинство веб-браузеров тайник апплеты, чтобы их можно было быстро загрузить при возврате на веб-страницу. Апплеты также улучшаются при использовании: после запуска первого апплета JVM уже запущена и запускается быстро (JVM необходимо перезапускать каждый раз, когда браузер запускается заново). JRE версии 1.5 и выше останавливает JVM и перезапускает ее, когда браузер переходит с одной HTML-страницы, содержащей апплет, на другую, содержащую апплет.
- Он может переместить работу из сервер к клиент, что делает веб-решение более масштабируемым с учетом количества пользователей / клиентов.
- Если отдельная программа (например, Гугл Земля ) общается с веб-сервером, этот сервер обычно должен поддерживать все предыдущие версии для пользователей, которые не обновляли свое клиентское программное обеспечение. Напротив, правильно настроенный браузер загружает (и кэширует) последнюю версию апплета, поэтому нет необходимости поддерживать устаревшие версии.
- Апплет, естественно, поддерживает изменение состояния пользователя, например положения фигур на шахматной доске.
- Разработчики могут разрабатывать и отлаживать апплет напрямую, просто создавая основную процедуру (либо в классе апплета, либо в отдельном классе) и вызывая init () и start () в апплете, что позволяет разрабатывать в своем любимом Java SE среда разработки. Все, что нужно сделать после этого, - это повторно протестировать апплет в программе AppletViewer или в веб-браузере, чтобы убедиться, что он соответствует ограничениям безопасности.
- An ненадежный апплет не имеет доступа к локальной машине и может получить доступ только к серверу, с которого он пришел. Это делает такой апплет намного безопаснее для запуска, чем автономный исполняемый файл, который он может заменить. Однако подписанный апплет может иметь полный доступ к машине, на которой он работает, если пользователь соглашается.
- Аплеты Java работают быстро и даже могут иметь аналогичная производительность к изначально установленному программному обеспечению.
Недостатки
Эта секция нужны дополнительные цитаты для проверка.Август 2015 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
Аплет Java может иметь один из следующих недостатков по сравнению с другими веб-технологиями на стороне клиента:
- Аплеты Java зависят от среды выполнения Java (JRE), которая является достаточно сложным и тяжелым программным пакетом. Также обычно требуется плагин для веб-браузера. Некоторые организации разрешают установку программного обеспечения только администратором. В результате некоторые пользователи могут просматривать только апплеты, которые достаточно важны, чтобы оправдать обращение к администратору с просьбой об установке JRE и подключаемого модуля.
- Если апплету требуется более новая JRE, чем доступна в системе, или конкретная JRE, пользователю, запускающему его в первый раз, потребуется дождаться завершения большой загрузки JRE.
- Мобильные браузеры включены iOS или же Android, вообще не запускайте Java-апплеты.[24] Настольные браузеры прекратили поддержку Java-апплетов одновременно с появлением мобильных операционных систем.
- В отличие от более старых
апплет
тег,объект
Чтобы написать кроссбраузерный HTML-документ, нужны обходные пути. - Не существует стандарта, позволяющего сделать содержимое апплетов доступным для программ чтения с экрана. Следовательно, апплеты могут повредить доступность веб-сайта для пользователей с особыми потребностями.
- Как и в случае любого сценария на стороне клиента, ограничения безопасности могут затруднить или даже сделать невозможным для ненадежного апплета достижение желаемых целей. Однако, просто отредактировав файл java.policy в установке JAVA JRE, можно предоставить доступ, например, к локальной файловой системе или системному буферу обмена, или к другим сетевым источникам, кроме сетевого источника, который обслуживал апплет в браузере.
- Большинство пользователей не достаточно сообразительны, чтобы различать ненадежные и доверенные апплеты, и они не хотят учиться, так что это различие не сильно помогло с безопасностью - слишком многие пользователи игнорировали предупреждение «недоверенные», когда браузеры были готовы запускать такие апплеты. (Возможность запускать ненадежные апплеты была в конечном итоге полностью удалена, чтобы исправить это.)
солнце приложили значительные усилия для обеспечения совместимости между версиями Java по мере их развития, при необходимости обеспечивая переносимость Java по закону. Oracle, похоже, продолжает ту же стратегию.
1997: Sun против Microsoft
Иск 1997 года,[25] был подан после того, как Microsoft создала измененный Собственная виртуальная машина Java, который поставляется с Internet Explorer. Microsoft добавила около 50 методов и 50 полей[25] в классы внутри java.awt, java.lang, и java.io пакеты. Другие модификации включали удаление RMI возможность и замена Собственный интерфейс Java из JNI в RNI, другой стандарт. RMI был удален, потому что он легко поддерживает связь между Java и Java и конкурирует с Microsoft. DCOM технологии. Апплеты, которые полагались на эти изменения или просто случайно использовали их, работали только в системе Java от Microsoft. Sun подала в суд за нарушение товарный знак, поскольку суть Java заключалась в том, что не должно быть никаких проприетарных расширений и что код должен работать везде. Microsoft согласилась выплатить Sun 20 миллионов долларов, и Sun согласилась предоставить Microsoft ограниченную лицензию на использование Java только без модификаций и в течение ограниченного времени.[26]
2002: Sun против Microsoft
Microsoft продолжала выпускать собственную немодифицированную виртуальную машину Java. С годами он сильно устарел, но все еще используется по умолчанию для Internet Explorer. Более позднее исследование показало, что апплеты того времени часто содержат собственные классы, отражающие Качать и другие новые функции в ограниченном объеме.[27] В 2002 году Sun подала антимонопольное иск, в котором утверждается, что попытки незаконной монополизации Microsoft нанесли ущерб платформе Java. Sun потребовала от Microsoft распространить текущую бинарную реализацию технологии Java от Sun как часть Windows, распространить ее как рекомендуемое обновление для старых операционных систем Microsoft для настольных ПК и прекратить распространение виртуальной машины Microsoft (поскольку срок ее лицензирования, согласованный в предыдущем судебном иске, был истекший).[26] Microsoft заплатила 700 миллионов долларов за нерешенные вопросы антимонопольного законодательства, еще 900 миллионов долларов за выдачу патентов и 350 миллионов долларов роялти за использование программного обеспечения Sun в будущем.[28][неосновной источник необходим ]
Безопасность
Есть два типа апплетов с очень разными моделями безопасности: подписанные апплеты и неподписанные апплеты.[29] Начиная с Java SE 7 Update 21 (апрель 2013 г.) апплеты и приложения Web-Start рекомендуется подписывать с помощью доверенного сертификата, а при запуске неподписанных апплетов появляются предупреждающие сообщения.[30] Далее, начиная с Java 7 Update 51 неподписанные апплеты по умолчанию блокируются; их можно запустить, создав исключение в панели управления Java.[31]
Без подписи
Ограничения на неподписанные апплеты понимаются как «драконовские»: у них нет доступа к локальной файловой системе, а веб-доступ ограничен сайтом загрузки апплета; есть также много других важных ограничений. Например, они не могут получить доступ ко всем свойствам системы, использовать свои собственные загрузчик классов, вызов собственный код выполнять внешние команды в локальной системе или переопределять классы, принадлежащие базовым пакетам, включенным как часть выпуска Java. Хотя они могут работать в автономном фрейме, такой фрейм содержит заголовок, указывающий, что это ненадежный апплет. Успешный первоначальный вызов запрещенного метода не создает автоматически брешь в безопасности, поскольку контроллер доступа проверяет все куча кода вызова, чтобы убедиться, что звонок не из ненадлежащего места.
Как и в любой сложной системе, с момента первого выпуска Java было обнаружено и исправлено множество проблем безопасности. Некоторые из них (например, ошибка безопасности сериализации календаря) сохранялись в течение многих лет, о чем никто не знал. Другие были обнаружены в использовании вредоносным ПО в дикой природе.[нужна цитата ]
В некоторых исследованиях упоминается, что апплеты приводят к сбою браузера или чрезмерному использованию ЦПУ ресурсов, но они классифицируются как неудобства, а не как настоящие недостатки безопасности. Однако неподписанные апплеты могут быть вовлечены в комбинированные атаки, в которых используется комбинация нескольких серьезных ошибок конфигурации в других частях системы. Неподписанный апплет также может быть более опасным для запуска непосредственно на сервере, где он размещен, потому что, хотя кодовая база позволяет ему взаимодействовать с сервером, выполнение внутри него может обойти брандмауэр. Апплет также может попробовать DoS-атаки на сервере, на котором он размещен, но обычно люди, управляющие веб-сайтом, также управляют апплетом, что делает это неразумным. Сообщества могут решить эту проблему с помощью обзор исходного кода или запуск апплетов в выделенном домене.
Неподписанный апплет также может попытаться загрузить вредоносное ПО, размещенное на исходном сервере. Однако он может сохранить такой файл только во временной папке (поскольку это временные данные) и не имеет возможности завершить атаку, выполнив ее. Так были попытки использовать апплеты для распространения эксплойтов Phoenix и Siberia,[нужна цитата ] но эти эксплойты не используют Java внутри себя и также распространялись несколькими другими способами.
Подписано
Подписанный апплет[32] содержит подпись, которую браузер должен проверить с помощью удаленно запущенного независимого сервер центра сертификации. Для создания этой подписи требуются специализированные инструменты и взаимодействие с обслуживающим персоналом сервера. После того, как подпись проверена и пользователь текущего компьютера также подтвердит, подписанный апплет может получить больше прав, что станет эквивалентом обычной автономной программы. Причина в том, что автор апплета теперь известен и будет нести ответственность за любой умышленный ущерб.[нечеткий ] Этот подход позволяет использовать апплеты для многих задач, которые в противном случае были бы невозможны с помощью клиентских сценариев. Однако такой подход требует большей ответственности от пользователя, решающего, кому он или она доверяет. Связанные проблемы включают в себя неотвечающий сервер полномочий, неправильную оценку личности подписавшего при выдаче сертификатов, а также известные издатели апплетов, которые все еще делают что-то, что пользователь не одобрил бы. Следовательно, подписанные апплеты, появившиеся из Java 1.1, на самом деле могут иметь больше проблем с безопасностью.
Самоподписанный
Самоподписанные апплеты, которые являются апплетами, подписанными самим разработчиком, потенциально могут представлять угрозу безопасности; Плагины java выдают предупреждение при запросе авторизации для самоподписанного апплета, поскольку функция и безопасность апплета гарантируются только самим разработчиком и не были подтверждены независимыми организациями. Такие самозаверяющие сертификаты обычно используются только во время разработки перед выпуском, когда стороннее подтверждение безопасности неважно, но большинство разработчиков апплетов будут искать стороннюю подпись, чтобы гарантировать, что пользователи доверяют безопасности апплета.
Проблемы безопасности Java принципиально не отличаются от аналогичных проблем любой клиентской платформы сценариев.[33][нужна цитата ]. В частности, все вопросы, связанные с подписанными апплетами, также относятся к Microsoft. ActiveX составные части.
С 2014 года самозаверяющие и неподписанные апплеты больше не принимаются общедоступными подключаемыми модулями Java или Java Web Start. Следовательно, разработчикам, желающим развернуть Java-апплеты, не остается ничего другого, кроме как получить доверенные сертификаты из коммерческих источников.
Альтернативы
Существуют альтернативные технологии (например, WebAssembly[34] и JavaScript ), которые удовлетворяют всем или большему количеству возможностей апплета. JavaScript может сосуществовать с апплетами на одной странице, помогать запускать апплеты (например, в отдельном фрейме или предоставлять обходные пути платформы) и позже вызываться из кода апплета. JavaFX является расширением платформы Java и также может рассматриваться как альтернатива.
Смотрите также
- ActiveX
- Curl (язык программирования)
- Сервлет Джакарта
- Запуск Java Web
- JavaFX
- Богатое Интернет-приложение - несколько платформ для создания интерактивных и / или мультимедийных веб-сайтов
- WebGL
Рекомендации
- ^ «Домашний сайт программы просмотра белков 3D (Openastexviewer) под LGPL». Архивировано из оригинал 1 августа 2009 г.. Получено 21 сентября 2009.
- ^ «Виртуальный очаг».
- ^ "Домашний сайт апплета множества Мандельброта под GPL". Архивировано из оригинал 8 мая 2013 г.. Получено 29 июля 2013.
- ^ "Домашний сайт шахматного апплета под BSD". Архивировано из оригинал 7 сентября 2009 г.
- ^ "Java.Sun.com".
- ^ «Примечания к выпуску Java 9».
- ^ «JEP 289: отказ от API апплета».
- ^ «Блог JPG: переход на Интернет без плагинов».
- ^ "Блог JPG: Дальнейшие обновления" Переход на Интернет без плагинов'".
- ^ http://www.oracle.com/technetwork/java/javase/javaclientroadmapupdate2018mar-4414431.pdf
- ^ "Компилятор Free Pascal для JVM".
- ^ "холст - HTML". Сеть разработчиков Mozilla. Получено 15 августа 2015.
- ^ «WebGL - интерфейсы веб-API». Сеть разработчиков Mozilla. Получено 15 августа 2015.
- ^ «Элементы дизайна - Chrome V8». Получено 15 августа 2015.
- ^ Шринивас, Рагхаван Н. (6 июля 2001 г.). «Java Web Start приходит на помощь». JavaWorld. Получено 2020-07-13.
- ^ "W3.org".
- ^ "W3.org".
- ^ «Загрузки Java для всех операционных систем». Java.com. 14 августа 2012 г.. Получено 14 июн 2013.
- ^ "Положение Солнца в тегах апплета и объекта". Архивировано из оригинал 9 июня 2010 г.. Получено 14 января 2010.
- ^ Средство запуска Java-апплетов от Oracle - ссылка сломана![постоянная мертвая ссылка ]
- ^ «Oracle осуждает плагин для браузера Java и готовится к его прекращению». Ars Technica. Получено 15 апреля 2016.
- ^ Java.Sun.com Страница тега APPLET от Sun В архиве 5 января 2010 г. Wayback Machine
- ^ Официальный Oracle обзор технологии Java-апплетов
- ^ "Как мне получить Java для мобильного устройства?". 30 июля 2014 г.
- ^ а б Жуковски, Джон (1 октября 1997 г.). «Что иск Sun против Microsoft означает для разработчиков Java?». JavaWorld. Получено 2020-07-13.
- ^ а б «Страница Sun, посвященная искам против Microsoft».
- ^ Kenai.com (2011 г.) В архиве 23 августа 2011 г. Wayback Machine Наиболее частые проблемы, обнаруженные в коде рассмотренных апплетов.
- ^ Страница Microsoft, посвященная иску Sun - Microsoft 2002 В архиве 25 февраля 2010 г. Wayback Machine
- ^ "Объяснение Sun о безопасности апплета".
- ^ «Java Applet & Web Start - подпись кода». Oracle. Получено 28 февраля 2014.
- ^ «Что мне делать, когда я вижу запрос безопасности от Java?». Oracle. Получено 28 февраля 2014.
- ^ «Informit.com».
- ^ «Честно говоря, сегодня продукт Netscape используют значительно больше пользователей World Wide Web, чем продукт Microsoft, хотя этот разрыв, похоже, сокращается». www.wiley.com. Получено 17 марта 2017.
- ^ «Mozilla пытается сделать Java такой, какой она должна была быть - со спецификацией WASI для всех устройств, компьютеров и операционных систем». www.theregister.com. Получено 6 октября 2020.
внешняя ссылка
- Последняя версия виртуальной машины Java от Sun Microsystems (включает подключаемые модули браузера для запуска апплетов Java в большинстве веб-браузеров).
- Информация о написании апплетов из Oracle
- Демонстрационные апплеты от Sun Microsystems (JDK 1.4 - включить исходный код)