Клиентская Java против (Adobe) Flash для веб-приложений, что выбрать и когда

Несколько лет назад клиентская Java была непригодна для веб-разработки, потому что значительная часть веб-пользователей не установила Java. (Точные цифры не помню, больше 10%).

Теперь я вижу статистику Google Analytics для большого сайта, и она говорит, что> 98% пользователей установили Java.

Эта статистика сильно зависит от использования Javascript? Насколько я понимаю, Google Analytics измеряет только пользователей, у которых есть Javascript.

Похожая картина на других крупных сайтах?

Есть ли у клиентской Java действительно «стопорные» недостатки по сравнению с Flash?

Обновлено: в основном я имею в виду java-апплеты, java WebStart не подходит для обычного пользователя. Я упоминаю Javascript только для описания того, как работает Google Analytics.

Почему WebStart не подходит для обычных пользователей? Проблемы с укладкой окон?

Tom Hawtin - tackline 15.11.2008 13:54

@Tom Требуется, чтобы пользователь нажал "открыть" вместо немедленного запуска. Также он не так интегрирован с браузером, как апплеты.

Sergey 15.11.2008 14:02
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
4
2
3 644
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Ответ принят как подходящий

Когда я писал дипломный проект, мне приходилось выбирать между Flash и Java-апплетами. Вот несколько плюсов и минусов:

Апплеты Java:

  • [плюс] вы программируете на Java, которая является зрелой и стабильной
  • [плюс] вы можете использовать фреймворки Java GUI, которые содержат много возможностей
  • [минус] когда пользователь впервые попадает на страницу с апплетом, JVM должна быть инициализирована, и это может занять до нескольких минут даже на быстром компьютере
  • [минус] Апплеты не предназначены для использования в качестве анимационных носителей; конечно, вы можете делать что угодно, но это похоже на программирование на C - вы делаете все с нуля

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

Вспышка:

  • [плюс] действительно сфокусирован на анимации;
  • [плюс] ActionScript на самом деле является объектно-ориентированным языком
  • [минус] ActionScript неаккуратен, непонятен и имеет лишь несколько сторонников. Если вы застряли, будьте готовы искать решения на малоизвестных японских форумах.
  • [минус] ActionSCript может быть OO, но в нем отсутствуют многие функции, такие как Enums, полноценные интерфейсы, потоки (!!!!) и т. д.
  • [минус] Flash был разработан для использования людьми, не имеющими технических знаний - они просто используют инструмент для разработки; Я написал код для всего, и он работал, но это было больно.

Мой вывод:

Я с нетерпением жду парадигмы программирования для анимации и богатых клиентских интерфейсов.

ps: Silverlight пока кажется разочарованием, возможно, Microsoft вложит в него немного долларов.

Спасибо за подробный ответ. Когда вы примерно проводили это исследование?

Sergey 15.11.2008 15:19

Вопросы о доле на рынке все еще остаются без ответа. Ну, давайте подождем.

Sergey 15.11.2008 15:20

Я написал свой диплом в 2007 году. Я использовал ActionScript 2.0; Flex использует AS 3.0, толком ничего об этом не знаю.

Bogdan Gavril MSFT 15.11.2008 21:02

Не точный ответ, так как было бы очень самоуверенным, просто поделитесь своим опытом ...

В недавнем проекте, где мы создавали сайт, совместимый с WAI, нас попросили избегать flash-объектов, поскольку доступность была серьезной проблемой. Апплеты на другой ноте не очень подходят большинству веб-разработчиков;). Одной из причин может быть разница в парадигмах Rich UI и Web UI.

Однако мы обнаружили, что апплеты незаменимы (не говоря уже об элементах управления .NET и ActiveX), когда требовался мониторинг на стороне клиента. Приложение использует аутентификацию на основе смарт-карты, и в браузер загружаются апплеты для прослушивания событий на стороне клиента (удаление карты) и предупреждения сервера о завершении сеанса.

В этом контексте я склонен полагать, что Flash предназначен для того, чтобы радовать глаз (представление), в то время как апплет, хотя и спроектированный так, чтобы быть универсальным, берет на себя роль модели на стороне клиента. Следует отметить, что и апплеты, и флэш-память потребляют циклы ЦП на клиентской машине, поэтому традиционно подходят для задач, связанных с длительными вычислениями. Калькуляторы, генераторы отчетов, иллюстраторы трендов, генераторы астрологических диаграмм (да) и другие задачи, в которых данные могут вводиться пользователем и результаты которых отображаются немедленно, используют их.

Основная проблема связана с отсутствием программного обеспечения на стороне клиента (Java, флэш-плагины). Пользовательский опыт в таких случаях более чем раздражает.

Ммм, Java, похоже, поддерживается лучше, чем я, хотя я просмотрел некоторую статистику и обнаружил, что от 92 до 96% браузеров поддерживают Java (т.е. он достаточно включен, чтобы его обнаружить! Хотя я думаю, что многие алгоритмы обнаружения Java используют JavaScript для обнаружения & report - как вы указываете - но поддержка JS в любом случае тоже очень хороша, особенно в нашу эпоху Web 2.0) .
Adobe может похвастаться лучшей поддержкой, но в целом разница незначительна. В любом случае, кто-то действительно желающий увидеть / использовать приложение активирует / обновит / скачает необходимый движок.

Теперь нам нужно посмотреть, какая JRE поддерживается! Увы, статистики по этому поводу я не нашел. Здесь у Adobe есть преимущество: не у всех есть Flash 9 или 10, но обновление происходит довольно быстро. Хотя загрузка и установка новой JRE представляет собой довольно сложную задачу ... Конечно, вы можете нацеливаться на самый низкий общий знаменатель в истории, Java 1.1 или, что более реалистично, Java 2 (1.4), но все равно неприятно не иметь возможности использовать все 1.6 особенности ...

Я видел, как некоторые люди жалуются, что апплеты Java вызывают сбой в их браузере (по-видимому, в системах Unix), но это больше проблема небольшого количества браузеров / систем, чем что-либо еще.

И, как уже отмечалось, время запуска Java-апплета значительно больше, чем для Flash (хотя некоторые большие Flash-игры тоже загружаются медленно). Я видел несколько апплетов Обработка, таких как пресловутый Веб-страницы в виде графиков, большинство из которых загружаются быстро: большая часть мощности уже находится на жестком диске пользователя в обширной библиотеке Java. Обработка генерирует довольно легкие jar-файлы, в то время как многие апплеты Flash должны включать сторонние библиотеки ... или изобретайте велосипед!

Хороший момент о версии JRE! Можете ли вы поделиться этой статистикой, ссылками или ключевыми словами для поиска?

Sergey 16.11.2008 01:30

Заметил некоторые комментарии о том, что Java не обновляется. Теперь 1.6.0_10 отсутствует, и он обновляется более легко и автоматически, чем раньше, и у вас есть возможность нового метода установки, метода ядра Java. Это автоматизирует установку компонентов Java по мере необходимости.

Немного текста об этом: http://java.sun.com/javase/6/6u10faq.jsp

Так что есть изменения, Сан просто просыпается с новым генеральным директором, я думаю. Я знаю, что до распространения этой новой системы пройдет 1-2 года, но вы можете начать свой проект и повеселиться, когда он будет готов. :) Кто знает.

В любом случае, возможно, вы работаете + 500% для простых анимированных функций, чем flash, но если ваше приложение не является простой анимацией, тогда вы работаете + 500% с flash для какой-то простой замены трехстрочного кода java :) Зависит от вашего приложения.

Некоторые предыдущие публикации устарели в отношении комментариев к ActionScript. ActionScript3. стал доступен во время Flex 2, то есть в январе 2007 года, когда были выпущены Flex 2.0 и Flash Player 9.

AS3 - это полноценный язык программирования ООП, сопоставимый с Java. В нем есть классы и интерфейсы, наследование, ключевые слова защиты доступа для членов класса, конструкторы, статика, а также некоторые приятные вещи, которых нет в Java: свойства, события, декларативная привязка данных и замыкания.

По умолчанию AS3 компилируется статически, поэтому объявляется тип членов и переменных. Это можно смягчить, чтобы AS3 мог вернуться к динамической типизации, например, JavaScript. Однако он менее эффективен во время выполнения. Иногда при работе с динамическими данными, тем не менее, полезно выборочно использовать динамические классы. (Хорошим преимуществом языка с проверкой статического типа является автозавершение кода в среде разработки Flex Builder.)

Большая часть разработки Flex выполняется с использованием MXML. Это декларативный DSL на основе XML для Flex. Однако MXML компилируется в код ActionScript3. Таким образом, то, что вы делаете в MXML, эквивалентно императивному кодированию AS3, но часто может быть более кратким, ясным и более подходящим по структуре относительно базовой графической формы Flex, которую он представляет (т. Е. MXML хорош для кодирования представлений шаблона MVC. ).

Суть в том, что программирование Flex на ActionScript3 легко и естественно для программиста на Java или C#. Проблема вовсе не в языке. Сила Flex заключается в том, что он тесно связан с Flex SDK и множеством имеющихся там возможностей.

Я работал на Java в течение последних 7 лет, а затем я недавно начал использовать AS3 в своем новейшем проекте (1,5 года и больше). Я люблю AS3 и Flash, и вот почему:

  • Сам язык очень похож на Java. Документация Adobe не хуже JavaDocs или даже лучше.
  • Язык AS3 поддерживает XML как собственный тип. Разбор XML в Java - это кошмар.
  • Для Flash есть хорошие анимационные и графические фреймворки, такие как papervision 3D и tweener.
  • Если вы используете платформу Flex 3 и Flex Builder 3, создание интерфейсов, которые выглядят так же хорошо или лучше, чем Swing, является тривиальным. Мне нравилось писать пользовательские интерфейсы на Swing, но создание пользовательских интерфейсов в визуальном Flex Designer похоже на глоток свежего воздуха.
  • Я почти уверен, что браузеры больше поддерживают Flash.
  • Вы когда-нибудь видели, как загружается Flash-апплет? У него действительно плохое удобство использования, и пользователь заставляет пользователя щелкать два или три диалоговых окна перед запуском апплета. Flash-приложения просто работают.

Удачи с проектом!

Другие вопросы по теме