Pull to refresh

Applets reloaded

Reading time6 min
Views2.2K

Applets reloaded



предисловие


Ни для кого не секрет что Adobe Flash полноценно занял свою позицию в интернете. По общей статистики почти у 98% пользователей интернета установлен Flash плагин. Главное назначение которого — реализация «rich UI»(англ: богатый пользовательский интерфейс), проще говоря — красивый, динамический интерфейс. Однако в последнее время два гиганта решили пошатнуть его позицию — Microsoft и Sun. Microsoft выпустила технологию Silverligth, а Sun — решила нанести более серьезный удар. Выпустив сразу несколько продуктов с общей и довольно явной целью — пошатнуть Flash/Flex.



applets


Само по себе это не новое слово. А если более точно то довольно старое. Фактически возможность разработки «апплетов» появилась в далеком 1995 году. ПО прошествии 13 лет, технология фактически не приобрела массового характера. На самом деле это и не удивительно. Постоянные проблемы с безопасностью, постоянные проблемы с совместимостью в браузерах, проблемы с отображением апплетов, приводящие к зависанию браузера. Список недостатков можно продолжать довольно долго, и что самое интересное — сложно найти тех кто будет противоречить этому. Ken Russel(архитектор нового плагина) 28 августа 2008 года проводя презентацию для сотрудников Google четко дал понять что все эти проблемы были давно известны в Sun. Но больше всего времени отнял главный вопрос — «как все исправить?». Давайте посмотрим какой ответ они на него нашли.
По уверению Sun почти весь код плагина полностью переписан. Фактически не просто переписан, а сама архитектура плагина полностью перепроектирована. Теперь плагин почти полностью реализован на Java. Единственная платформо-зависемая часть это мост Java <-> JavaScript. По заверениям компании им удалось разработать интерфейс который требует минимальное количество браузер-зависимых методов для полноценной реализации этого моста. Это позволило им решить проблемы которые имелись раньше относительно стабильности связи Java-JavaScript, которая приемлемо работала только в Firefox Mozilla. Действительно большому изменению подверглись внутренности плагина. Теперь JVM которая выполняет апплет полностью отделена от процесса бруазера и связана с ним через небольшой асинхронный клиент который находится в процессе браузера. Это призвано гарантировать что зависание апплета не приведет к зависанию самого браузера. Помимо этого появились новые возможности которые с одной стороны сильно развязывают руки разработчикам, а с другой добавляют вопросов. Например аплеты на одной странице могут(но не обязаны) исполнятся в разных JVM, разработчик теперь может передавать параметры командной строки для JVM для каждого апплета. Дополнительно каждый апплет может исполнятся конкретной версией JRE.
Например интересным следствием передачи параметров для JVM является возможность увеличить размер виртуальной памяти доступной апплету. Звучит неплохо неправда? Однако у автора напрашивается вопрос — теперь при открытии веб-страницы мы должны быть готовы к тому что она займет 2-3 GB оперативной памяти только потому, что разработчик решил перестраховаться и выделил по 512 Mb на каждом апплете которых здесь 6-7?
Однако этот факт решает самую глобальную проблему присущую апплетом — зависание браузера на время загрузки и старта апплета. По обещаниям разработчиков это теперь история. Из-за того что апплет находится в отдельном процессе все время необходимое для запуска апплета браузер ведет себя нормально, а как только апплет запускается он фактически вставляется в веб страницу. Вот только эксперименты показывают что в реалиях это не совсем так…
image
image
image
JNLP

Теперь плагин полностью поддерживает новый способ размещения апплета на странице. Плагин полностью поддерживает JNLP который применяется в Java WebStart. На самом деле именно этот факт является наиболее значимым во всем обновлении. Это фактически развязывает руки программистам. Во первых апплет перестает быть просто апплетом, фактически это означает что один и тот же компонент может быть как апплетом так и просто приложением устанавливаемым через WebStart. Но даже это не самое главное новшество. А самым значительным является то что теперь можно использовать сторонние библиотеки и подгружать их для аплета. Например можно подключать JOGl. То есть в апплете можно полноценно пользоваться аппаратно ускоренным OpenGL. Но аппаратное ускорение можно использовать не только для 3D но также можно управлять аппаратным ускорением в 2D графике. Бесспорно доступность 3D графики на веб странице это интересная перспектива. Особенно это будет интересно для on-line игр. Например энтузиасты портировали знаменитую игру Quke 2 на Java и с новым плагином ее можно запускать прямо из браузера, проект теперь называется Jake 2(http://download.java.net/javadesktop/plugin2/jake2/). Также интересной разработкой является апплет разработанный NASA — это фактически аналог Google Earth, который можно свободно использовать для показа трехмерной карты планеты на веб странице. (http://download.java.net/javadesktop/plugin2/wwj/).
Интересным является также обратно совместимая модель встраивания апплета на странице. Фактически можно встроит апплет таким образом что он будет распознан и старым и новым плагином, более того можно запускать один апплет если установлен старый плагин, и другой апплет если установлен новый. Это все доступно стандартными средствами без необходимости динамически изменять код вставки апплета.
Интересным является то что теперь фактически каждый апплет можно просто «вытащить» из браузера мышкой и он действительно установится и запустится через Java WebStart. Причем это произойдет даже без перезапуска аплета. Это довольно интересный факт и бесспорно довольно удобный в теории. Но больше всего интересно как этим воспользуются наши «друзья» нечестные рекламщики которые используют малейшую возможность открыть всплывающие окно. Почему то у автора нет сомнения что они придумают способ как заставить пользователя «вытащить» апплет из браузера и полноценно развернутся на компьютере пользователя. Немаловажным фактом является то что апплет вытащенный из браузера уже является фактически «trusted», и ему доступны все данные пользователя под которым запущена JVM. Сам факт того что апплет может создавать свои окна уже кажется довольно опасным. Конечно разработчики подумали об этом и все окна созданные апплетом помечены звездочкой и дополнительной кнопкой «закрыть». Насколько это действительно эффективно оповещает простого пользователя об опасности — вопрос спорный.
Еще один интересный факт это новое хранилище данных доступное для апплетов. У этого хранилища очень ограниченный объем. Но это открывает интересные перспективы для «маркировки» пользовательского компьютера. Да этот функционал присутствует и в Flash, но все же, апплет получает возможность без каких либо уведомлений пользователя сохранять данные. И если довольно много пользователей знают как удалить данные сохраненные в браузере, то сколько знают как удалить кеш Java плагина?

Java FX

Новый плагин полноценно поддерживает JavaFX. Это новый скриптовый язык разработанный Sun для создания насыщенного динамического интерфейса. Фактически это прямой ответ на Flash. Язык действительно довольно простой и при этом функциональный. Апплеты созданные с использованием JavaFX действительно изначально кажутся просто Flash'ом и только при детальном взгляде можно заметить что это не так. Довольно интересным является то что по заверению Sun, JavaFX превосходит конкурентов по скорости.
image
Очень приятно что JavaFX является декларативным языком. Учитывая успех других декларативных языков(HTML, XHTML, XML) можно предположит успех и для него. При этом технология позволяет очень хорошо разделить работу программиста и дизайнера, что само по себе всегда представляет главную проблему в разработке веб приложений. Дополнительным плюсом является переносимость на разные платформы, и здесь речь идет не о программных платформах, а именно об аппаратных. В данный момент сюда входят мобильные устройства и телевизоры(фактически все устройства для которых доступна Java ME). Однако есть и основное различие между решениями Sun и Adobe, JavaFX ориентирована не просто на красивый интерфейс, а именно на интерфейсы с большим количеством анимации. И эта фраза несет в себе очень глубокий смысл. Фактически ядро рендеринга оптимизировано именно под анимацию, а не только под рендеринг сложных сцен.

Заключение


Sun довольно серьезно поработала над новыми технологиями, и их связью между собой. Технологии действительно продуманы и поэтому удобны в применении. Основной проблемой для них однако станет не их собственные недостатки, а именно то как относятся к апплетам разработчики. Именно поэтому само слово «апплет» Sun пытается нигде не использовать. Что по мнению автора действительно обосновано, так как фактически ничего общего с предыдущими реализациями не осталось. Теперь дело осталось исключительно за индустрией которая либо решит отказаться от предубеждений и тогда будущее для всех этих технологий обеспечено, либо заголовки со временем исчезнут и все останется так как оно и есть.
Tags:
Hubs:
+57
Comments42

Articles

Change theme settings