Приложения Java, к которым можно получить доступ из веб-браузера

Обновлено: 05.07.2024

Несколько недель назад я написал небольшую программу на Java, показывающую график в реальном времени (т. е. записи с отслеживанием текущего времени), со скромной скоростью потоковой передачи 25 кбит/с, частотой кадров 20 кадров и без соответствующего взаимодействия с пользователем. Думая о его возможном развертывании в качестве мобильного приложения, диаграммы веб-сервера или просто в качестве программы для ПК, Java — идеальный выбор для меня.

Прежде чем запустить веб-версию этой программы, я начал исследовать и в соответствии с официальным документом Oracle 2016 г. «Миграция с Java-апплетов на технологии Java без подключаемых модулей»:

Устаревшая технология подключаемых модулей будет полностью удалена из Oracle Java Development Kit (JDK) и Java Runtime Environment (JRE) в будущем выпуске Java (подлежит уточнению). Приложения Java Web Start не зависят от подключаемого модуля браузера и не будут затронуты этими изменениями.

А согласно OpenWebStart 2019:

Java Web Start (JWS) устарела в Java 9, а начиная с Java 11 Oracle удалила JWS из своих дистрибутивов JDK

А потом я теряюсь.

Следовательно, как следует работать с такой Java-программой? Какой из способов Java для этого является устойчивым (и не зависит от того, что случилось с Java Web Start)?

Или я должен просто перейти к другому способу сделать это сейчас, когда программа находится в зачаточном состоянии, учитывая, что я не совсем поклонник Phyton, учитывая PHP не совсем подходит для программирования таких числовых вещей, и учитывая, что я не очень хочу давать шанс технологиям Microsoft?

Для меня не проблема адаптировать и переписать мой текущий код, если это необходимо, но, возможно, не делать это каждые 5 лет.

Какую статью вы бы мне порекомендовали, чтобы вернуться на правильный путь?

Заранее спасибо.

Если вы действительно хотите повторно использовать код из своей программы, информация о компонентах и ​​архитектуре будет полезна для любой рекомендации.

Обычно для этого используется служба HTTP на основе Java, которая вычисляет данные и передает их по протоколу HTTP, а также библиотека диаграмм на основе JavaScript, использующая и отображающая данные, предоставляемые сервером. Настольное или мобильное приложение может повторно использовать одни и те же веб-сервисы и отображать данные с помощью настольной или мобильной библиотеки диаграмм. «запуск Java-программы из браузера» фактически мертв уже много лет.

@seb.wired Я использовал JChart2D. Не совсем их поклонник, готов заменить его на любое лучшее решение для построения графиков в реальном времени (10 обновлений в секунду), но к настоящему времени оно сработало.

5 ответов 5

Самый простой и высокопроизводительный вариант — TeaVM, транспилятор, который преобразует классы Java в JavaScript. Затем ваш код запускается в браузере без каких-либо подключаемых модулей.

Думая о его возможном развертывании в качестве мобильного приложения, диаграммы веб-сервера или просто в качестве программы для ПК, Java - идеальный выбор для меня.
(..)
Следовательно, как следует работать с такой Java-программой? Какой правильный устойчивый способ Java сделать это (и не подвергаться чему-то вроде того, что случилось с Java Web Start)?

Две строчки Java

Случилось так, что наш старый друг, Java Standard Edition, разделился на две строки:

  1. Oracle Java SE ("коммерческая Java"): требуется платная лицензия для коммерческого использования для выпусков с 16 апреля 2019 г.
  2. OpenJDK ("Java с открытым исходным кодом"): исходный код с открытым исходным кодом (GPLv2 с исключением привязки), не содержит реализацию Oracle Java Web Start

В версии Oracle Java SE Java Web Start и Java FX доступны и поддерживаются только для Java SE 8. Более новые версии Java, в частности. В Java SE 11 они больше не поддерживаются.

Это не полное удаление технологии клиент/рабочий стол, поскольку Oracle, согласно обновлению дорожной карты клиента Java 2018, продолжает поддерживать AWT и Swing как минимум еще 5 лет как для Java SE 8, так и для Java SE 11.

Вы можете продолжить развертывание через Java Web Start

Java с открытым исходным кодом получил достойную реализацию Java Web Start, которая бесплатна и доступна для Java SE 8 и более новых версий Java, таких как Java SE 11.

Это OpenWebStart от Karakun, основанный на IcedTea-Web от Red Hat, версия выше 1.0, которую вы уже нашли.

Продолжение поддержки не гарантируется, но представляется вероятным. Так что вы можете продолжить в том же духе.

Или вы можете выполнить развертывание через магазин приложений

Компания Oracle объяснила отказ от Java Web Start тем, что они хотят изменить модель развертывания на приложения со встроенной средой выполнения:

Поскольку разработка клиентских приложений продолжает переходить от старого мира «плагинов» к современному развертыванию, потребность в автономной среде выполнения Java (JRE), которая устанавливается централизованно, отдельно от приложений Java, уменьшается.Использование инструмента «jlink», представленного в JDK 9, еще больше упростит разработчикам приложений процесс упаковки и развертывания выделенных сред выполнения вместо того, чтобы полагаться на предустановленную системную JRE.

(Источник: Более быстрое и простое использование и Распространение Java SE)

Без сомнения, это было правдой, но операционные системы резко и быстро отошли от этой модели. Модель «магазина приложений» — это то, что нужно. macOS уже несколько лет упорно борется с этим. MSFT — даже на корпоративном рынке — также указала это направление. Конечно, нам нужно найти варианты для поддержки наследия, но будущее здесь ограничено.

(Источник: список рассылки обсуждения OpenJDK)

Обратите внимание, что Java Start Web Start обрабатывает обновление доступных новых версий приложений на клиентских компьютерах, как и обычные магазины приложений.

Конечно, вы можете разместить версию своего приложения со встроенной средой выполнения на своем веб-сайте, но тогда вам, как правило, придется реализовать некоторый механизм для обработки обновлений вашего приложения на компьютерах ваших пользователей самостоятельно.

Что выбрать?

Действительно, у отдельной установки JRE есть недостатки, например. Недавно я изменил свою JRE, и внезапно IDE для Java перестала работать. :-)

Перенос развертывания с веб-сайта, которым вы управляете, в магазин приложений, контролируемый поставщиком ОС или влиятельными игроками, такими как Valve, имеет свои проблемы. Например. ограничения доступа, сборы, задержки выпуска из-за процесса проверки или им может по какой-то причине не понравиться ваше приложение, и они не будут его публиковать.

Затем внедрение. Лично я видел, как магазины приложений использовались в личных целях в основном на мобильных устройствах и компьютерах Mac, но пока не использовались в компаниях. Это может повлиять на ваше решение, какой путь выбрать.

Получите полный доступ к Learning Java и более чем 60 000 другим играм с бесплатной 10-дневной пробной версией O'Reilly.

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

Функции безопасности Java на уровне приложений позволяют разрабатывать новые типы приложений, которые раньше были невозможны. Веб-браузер, который реализует систему времени выполнения Java, может включать апплеты Java в качестве исполняемого содержимого внутри документов. Это означает, что веб-страницы могут содержать не только статическую гипертекстовую информацию, но и полноценные интерактивные приложения. Дополнительный потенциал для использования Интернета огромен. Пользователь может извлекать и использовать программное обеспечение, просто перемещаясь с помощью веб-браузера. Ранее статическая информация может быть объединена с портативным программным обеспечением для интерпретации и использования информации. Например, вместо того, чтобы просто предоставлять некоторые данные для электронной таблицы, веб-документ может содержать встроенное в него полнофункциональное приложение для работы с электронными таблицами, которое позволяет пользователям просматривать информацию и управлять ею.

Апплеты

Термин "апплет" используется для обозначения небольшого подчиненного или встраиваемого приложения. Под «встраиваемым» мы подразумеваем, что он предназначен для запуска и использования в контексте более крупной системы. В этом смысле большинство программ встроены в операционную систему компьютера. Операционная система управляет собственными приложениями различными способами: запускает, останавливает, приостанавливает и синхронизирует приложения; он предоставляет им определенные стандартные ресурсы; и защищает их друг от друга, разделяя их среды.

Что касается модели веб-браузера, апплет — это всего лишь еще один тип отображаемого объекта; он встроен в HTML-страницу с помощью специального тега. Браузеры проводят различие между элементами, представленными встроенными, и элементами, привязанными через гипертекстовые ссылки и доступными внешними средствами, такими как программа просмотра или вспомогательное приложение. Например, если вы загружаете видеоклип MPEG, а ваш браузер изначально не понимает MPEG, он будет искать вспомогательное приложение (проигрыватель MPEG) для передачи информации. Веб-браузеры с поддержкой Java обычно выполняют встроенные апплеты в контексте конкретного документа, как показано на рис. 1.4. Однако браузеры с меньшими возможностями изначально могли обеспечивать некоторую поддержку апплетов Java через внешнее средство просмотра.

Апплеты в веб-документе

Рисунок 1-4. Апплеты в веб-документе

Апплет Java — это скомпилированная программа Java, состоящая из классов, как и любая программа Java. В то время как простой апплет может состоять только из одного класса, большинство больших апплетов следует разбивать на множество классов. Каждый класс хранится в отдельном файле класса. Файлы классов для апплета извлекаются из сети по мере необходимости. Большому апплету не нужно извлекать все свои части или все данные, прежде чем начать взаимодействовать с пользователем. Хорошо спроектированные апплеты могут использовать преимущества многопоточности для ожидания определенных ресурсов в фоновом режиме при выполнении других действий.

Жизненный цикл апплета состоит из четырех частей. Когда апплет первоначально загружается веб-браузером, его просят инициализировать себя. Затем апплет информируется каждый раз, когда он отображается и каждый раз, когда он больше не виден пользователю. Наконец, апплет сообщается, когда он больше не нужен, чтобы он мог убрать за собой. В течение своего существования апплет может запускаться и приостанавливать себя, выполнять работу, связываться с другими приложениями и взаимодействовать с веб-браузером.

Апплеты — это автономные программы, но они ограничены рамками веб-браузера или средства просмотра аплетов и должны работать по его правилам. Мы будем обсуждать детали того, что апплеты могут и чего не могут делать, по мере изучения возможностей языка Java. Однако при самых консервативных политиках безопасности апплет может взаимодействовать только с пользователем и может связываться только по сети с хостом, с которого он был создан. Другие типы действий, такие как доступ к файлам или непосредственное взаимодействие с внешними приложениями, обычно предотвращаются диспетчером безопасности, который является частью веб-браузера или средства просмотра апплета. Но если не считать этих ограничений, между апплетом Java и автономным приложением Java нет принципиальной разницы.

Новые виды медиа

При первом выпуске Java быстро завоевала репутацию благодаря своим мультимедийным возможностям. Честно говоря, это было не совсем заслуженно. На тот момент Java предоставляла средства для выполнения простых анимаций и воспроизведения звука. Вы могли анимировать и воспроизводить звук одновременно, но не могли синхронизировать их. Тем не менее, это был значительный прогресс для Интернета, и люди сочли его весьма впечатляющим.

Мультимедийные возможности Java теперь обрели форму. Теперь в Java есть звук CD-качества, 3D-анимация, медиаплееры, синхронизирующие аудио и видео, синтез и распознавание речи и многое другое. Java Media Framework теперь поддерживает большинство распространенных форматов аудио- и видеофайлов; Java Sound API (часть основных классов) позволяет записывать звук с микрофона компьютера.

Новые модели разработки программного обеспечения

В течение некоторого времени люди использовали визуальные среды разработки для разработки пользовательских интерфейсов. Эти среды позволяют создавать приложения, перемещая компоненты по экрану, соединяя компоненты друг с другом и так далее. Короче говоря, разработка пользовательского интерфейса больше похожа на рисование картинки, чем на написание кода.

Чтобы визуальные среды разработки работали должным образом, необходимо иметь возможность создавать повторно используемые программные компоненты. В этом вся суть архитектуры JavaBeans: она определяет способ упаковки программного обеспечения в виде многократно используемых строительных блоков. Графический инструмент разработки может определять возможности компонента, настраивать компонент и подключать его к другим компонентам для создания приложений. JavaBeans продвигает идею графической разработки на шаг вперед. Компоненты JavaBeans, называемые Beans, не ограничиваются видимыми компонентами пользовательского интерфейса: вы можете иметь Bean-объекты, которые полностью невидимы и чья работа является чисто вычислительной. Например, у вас может быть Бин, который осуществляет доступ к базе данных; вы можете подключить это к Bean, который позволяет пользователю запрашивать информацию из базы данных; и вы можете использовать другой компонент для отображения результата. Или у вас может быть набор Bean-компонентов, реализующих функции математической библиотеки; затем вы можете провести численный анализ, соединив различные функции друг с другом. В любом случае вы могли бы «писать» программы, не написав ни одной строчки кода. Конечно, кто-то должен был написать Beans в первую очередь; но это гораздо меньшая задача, и мы ожидаем, что рынки готовых коллекций бобов будут развиваться.

Прежде чем использовать Bean, разработчик приложения должен выяснить возможности Bean. Есть несколько способов сделать это; самый простой называется reflection . Чтобы написать Бин, использующий отражение, все, что вам нужно сделать, это следовать некоторым четко определенным соглашениям (шаблонам проектирования), которые позволяют разработчику графического интерфейса (или любому другому инструменту, который хочет выполнять эту работу) анализировать Бин.

При необходимости Beans может предоставить дополнительную информацию с помощью процесса, называемого самоанализ . Но даже без самоанализа графический инструмент разработки может проанализировать Бин, выяснить, что он может сделать, и позволить пользователю изменить свойства Бин без написания кода.

Конечно, после того как средство разработки настроило компонент Bean и подключило его к другим компонентам Bean, ему нужен способ сохранить результат. Процесс, называемый сериализацией, позволяет инструменту сохранять текущее состояние Bean-компонента вместе с любым дополнительным кодом, написанным для объединения Bean-компонентов в приложении.

Начните Изучать Java прямо сейчас с онлайн-обучением O’Reilly.

Члены O’Reilly проходят онлайн-обучение в режиме реального времени, а также получают книги, видео и цифровой контент от более чем 200 издателей.

Эта статья посвящена поддержке Java в браузерах.

Зачем нужна поддержка Java в браузере?

Если вы изучали или имеете некоторые знания или работали с Java, то, вероятно, вы уже сталкивались с концепцией Java-апплета. Таким образом, апплет — это не что иное, как программа Java, но с той лишь разницей, что он не может работать напрямую на отдельной машине. Для запуска нужен веб-браузер. Он легко встраивается в HTML-страницу и является клиентской концепцией, т. е. выполняется на стороне клиента.

Итак, для запуска апплета нам нужен браузер с поддержкой Java. Браузеры поставляются с подключаемым модулем Java, который позволяет выполнять на нем апплет. Итак, браузеры, поддерживающие Java, могут без проблем запускать Applet.

Итак, теперь, когда мы знаем, зачем нужна поддержка Java в браузерах, давайте начнем со списка браузеров, которые поддерживают ее на сегодняшний день.

Браузер, поддерживающий Java:
Для браузеров требуется подключаемый модуль Java, который зависит от NPAPI (интерфейс прикладного программирования подключаемых модулей Netscape). Сегодня большинство известных браузеров отказались от этой поддержки.

  • Google Chrome
  • Файрфокс
  • Сафари
  • Майкрософт Эдж
  • Опера

Итак, как видите, все эти браузеры больше не поддерживают Applet. Даже новые версии Oracle JDK не поддерживают подключаемый модуль Java для браузера.

Причина отказа от поддержки связана с обнаруженными проблемами безопасности и рисками.

Но есть Internet Explorer, который по-прежнему поддерживает Java Applet. Итак, на сегодняшний день Internet Explorer — единственный браузер, поддерживающий Java Applet.

  1. Нажмите значок "Инструменты" в правом верхнем углу окна или нажмите клавиши ALT+X, если вы работаете в Windows.
  2. Затем в меню выберите «Свойства обозревателя».
  3. Затем на вкладке "Безопасность" нажмите "Пользовательский уровень".
  4. Теперь во всплывающем окне прокрутите вниз и найдите «Scripting of Java applet», убедитесь, что он включен, и нажмите «ОК».

Примечание. Есть еще один способ, если вы все еще хотите запускать апплет, а безопасность вас не беспокоит, и если вы не хотите использовать Internet Explorer, вы загружаете более старую версию любого браузера, который поддерживал Java-апплет.< /p>

Nvidia запустила облачную версию своей платформы Omniverse для 3D-моделирования. Компания также представила Omniverse .

Преодолейте сбои AWS, научившись создавать многорегиональную архитектуру, обеспечивающую отказоустойчивость в случае аварии.

Чтобы добиться высокой доступности и отказоустойчивости в AWS, ИТ-администраторы должны сначала понять различия между двумя моделями.

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

На первый взгляд, разница между микроприложениями и микросервисами просто связана с проблемами внешнего интерфейса и серверной части. Но .

IDP могут предоставить продуктивную и безопасную среду для групп разработчиков. Рассмотрите все за и против, чтобы увидеть, является ли внутренний .

Опытные SRE делятся опытом эффективного использования больших объемов наблюдаемых данных из предварительной коллекции.

Преднамеренный саботаж пакета NPM в знак протеста против войны в Украине усугубляет и без того сложную угрозу цепочке поставок программного обеспечения.

Будь то создание автоматизированных инструментов для сертификации ОС или изучение eBPF как способа обеспечения безопасности цепочки поставок в домене .

Насколько хорошо вы знаете обработку исключений в Java? Эти 10 сложных вопросов с несколькими вариантами ответов для проверенных и непроверенных .

Не позволяйте возникновению RuntimeException в Java привести к остановке вашего кода. Вот 10 примеров того, как избежать .

Ключом к коду без ошибок является знание наиболее распространенных типов ошибок во время выполнения в Java, а также знание того, как их .

Считаете, что готовы к сертификационному экзамену AWS Certified Solutions Architect? Проверьте свои знания, ответив на эти 12 вопросов и.

Amazon заявила, что ее система мониторинга микроавтобусов предназначена исключительно для обеспечения безопасности водителей. Но многие отраслевые эксперты обеспокоены этим.

Amazon хотела бы укрепить свое глобальное присутствие, но гигант электронной коммерции сегодня сталкивается с препятствиями и проблемами, которых у него не было.

Читайте также: