среда, 10 марта 2010 г.

[prog.flame] В свое время похерили Java-апплеты, чтобы сейчас писать Flash-ы?

На работе иногда устраиваем с коллегой словесные перепалки по поводу современного программирования вообще (C++ отстой и Java – наше все, естественно :), и о Web-программировании в частности. Разговоры о Web-программировании меня особенно радуют – поскольку к Web-у я отношения не имею и наблюдаю за всем происходящим со стороны.

Лично я распространение Web-приложений считаю штукой очень неоднозначной. Имхо, это какой-то маразм. В обычных Web-приложениях раздражает постоянное смаргивание экрана и тормознутость. В AJAX-овских приложениях этого нет, зато есть большие объемы насыщенных JavaScript-ом страничек (помню, как я был поражен, когда обнаружил, что странички в нашем корпоративном Confluence весят более мегабайта).

Когда я десять лет назад оказался в Web-проекте (после многих лет программирования GUI под DOS-ом, Windows и OS/2), я был поражен примитивностью возможностей тогдашнего инструментария и жуткой смеси разных технологий на одной страничке: HTML+Java (которое JSP) + CSS + JavaScript + пляски с бубном для унификации поведения странички под разными браузерами. Сейчас, говорят, дело наладилось, но все равно с моей колокольни все это выглядит примитивно. Еще 20 лет тому в DOS-овских Norton-овских утилитах и MultiEdit-е были многоэтажные менюшки,  накладывающиеся друг на друга модальные диалоговые окна и везде были горячие клавиши. Повторение всего этого сейчас под Web-технологиями вряд ли вообще возможно. Может быть, лет через несколько :)

Собственно, насколько я могу судить, процесс по наращиванию возможностей Web-приложений идет в сторону отказа от текстово-разметочной структуры в сочетании с JavaScript-ом в пользу Flash-евых апплетов. Вот там простор для разработчика, достаточно посмотреть на то, что вытворяют создатели Flash-евых игр (из последнего увиденного впечатлила вот эта: SteamBird). И если уж динамичные игры Flash-евых возможностей достаточно, по почему бы не делать на Flash-е нормальные GUI-интерфейсы для Web-приложений (с менюшками, диалоговыми окнами, горячими клавишами и пр.)?

Но если Flash – это такая удобная штука для Web-программирования, то лично у меня возникает вопрос – а почему Flash, а не Java-апплеты? Ведь когда-то давным-давно, когда Sun представила Java широкой публике, Java-апплеты были главным местом приложения самой Java. Но почему-то не срослось…

Десять лет назад я спрашивал у коллег, а почему Web-приложения разрабатываются в виде JSP-страничек с JavaScript-ом внутри, а не в виде Java-апплетов. Не помню уже всех деталей, но история была такой – мои коллеги до этого писали программулину на Java-апплетах и апплеты получались очень большими по тем временам – около 500Kb и более. По сравнению с загрузкой 10Kb страничек загрузка на машину Java-апплета была гораздо более долгой операцией. Ну и плюс к тому, из Java-апплетов, насколько я помню, было неудобно взаимодействовать с серверной частью, поскольку AJAX-а тогда не было.

Но сейчас-то ситуация иная. 500Kb апплет – это очень немного (стартовая страница международной федерации биатлона весит больше (редиски!), а это всего лишь стартовая страница). Плюс Java работает гораздо быстрее, чем в 90-х годах, да и техника сейчас гораздо мощнее. Плюс взаимодействие с сервером практически стандартизировано для Web-приложений.

Казалось бы, сделать кэширование Java-апплетов на стороне клиента, чтобы не грузить его лишний раз, если его версия с прошлой загрузки не изменилась – и вообще всеобщее шасте будзе :) Как раз главный аргумент приверженцев Web-программирования – централизованное распространение новых версий приложения – сработает и здесь. Можно было бы пойти и дальше – браузер выбросить! В JDK входит appletviewer, который позволяет автономно воспроизводить апплеты. Вот развили бы его и сделали бы из него среду для работы апплетных приложений. Даешь ему URL-ик приложения, он проверяет кэш, и запускает либо ранее загруженный апплет, либо скачивает новый. В него же можно будет добавить и необходимые средства для обеспечения оффлайновой работы приложения (например, для сохранения данных на машине пользователя).

Но этого не происходит. Вместо этого все идет к тому, что на обычной машине будет две операционки – одна работает на голом железе и обеспечивает запуск десктопных приложений и браузера. А второй операционкой будет сам браузер – он будет средой для работы Web-приложений. В случае же Chromium OS нас вообще заставят забыть о том, что есть еще какая-то другая операционка, кроме браузера.

Не знаю, может кому-то все это кажется логичным, но не мне.

Отправить комментарий