Pull to refresh

Comments 250

>малая распространенность
, к тому же сильная зависимость от продуктов Microsoft
>малая распространенность
уже перевалило за 50%

>к тому же сильная зависимость от продуктов Microsoft
Flash, к тому же сильная зависимость от продуктов Adobe… какой скрытый подтекст вы тут пытались выразить?
Да я видел, график где было 50%, но пока в реальном мире я этого не вижу. Из 30 моих знакомых которые связанны с вэбом, silverlight стоит только у 4. Они .Net разработчики.

Сильная? Я могу скачать компилятор для AS3 и писать код в блокноте, а рисовать все в GIMP. Я могу так же работать с silverlight?
Пользователь поставит плагин, как только его об этом попросят, как и флеш, вы его ставите при первом запросе браузера. Просто сейчас еще не столь громадное количество сайтов работают на SL, следовательно ваши знакомые просто на них не попадали :)

>могу скачать компилятор для AS3 и писать код в блокноте, а рисовать все в GIMP
Без проблем, разметка вся, даже анимация хранятся в XAML виде, аналог MXML, код отдельно в .CS файлах, аналог .AS =)
Что вы, я всегда прежде чем что-то установить, я задрот в этом плане. Устройте опрос на хабре, если будет больше 50% я уберу текст про распространенность из статьи.

Эм… Я тут скачал пример с silverlight.net. Вот его иерархия. Вы реально думаете, что я смогу с ним работать без Visual Studio и Exspression Web?
>Устройте опрос на хабре,
Это бессмысленно, в данном месте.

>Вот его иерархия
Тут вы лукавите, во-первых видно, что вы взяли solution, который состоит из 3 проектов, проект использует MVC, что за собой уже ведет к обильному количеству файлов в любой технологии. Папки bin, debug, obj, генерируются компилятором. В результате если все это смотреть в исходно виде, то выходит:
| MEF1.sln
| ier.txt
|
+---MEF1
| | App.xaml
| | App.xaml.cs
| | MainPage.xaml
| | MainPage.xaml.cs
| | MEF1.csproj
| | MEF1.csproj.user
| |
| +---Assets
| | | Styles.xaml
| | |
| | \---Resources
| | ApplicationStrings.Designer.cs
| | ApplicationStrings.resx
| | SecurityQuestions.Designer.cs
| | SecurityQuestions.resx
| +---Controls
| | CustomDataForm.cs
| |
| +---Generated_Code
| | | MEF1.Web.g.cs
| | |
| | \---Models
| | \---Shared
| | User.shared.cs
| |
| +---Helpers
| | DataBindingExtensions.cs
| | DataFieldExtensions.cs
| | NotOperatorValueConverter.cs
| | ResourceWrapper.cs
| | StringFormatValueConverter.cs
| | TargetNullValueConverter.cs
| |
| +---Libs
| | ActivityControl.dll
| | System.Windows.Controls.Data.DataForm.Toolkit.dll
| |
| +---Models
| | LoginInfo.cs
| | RegistrationDataExtensions.cs
| +---Properties
| | AppManifest.xml
| | AssemblyInfo.cs
| | OutOfBrowserSettings.xml
| |
| +---Views
| | | About.xaml
| | | About.xaml.cs
| | | ErrorWindow.xaml
| | | ErrorWindow.xaml.cs
| | | Home.xaml
| | | Home.xaml.cs
| | |
| | \---Login
| | LoginForm.xaml
| | LoginForm.xaml.cs
| | LoginRegistrationWindow.xaml
| | LoginRegistrationWindow.xaml.cs
| | LoginStatus.xaml
| | LoginStatus.xaml.cs
| | RegistrationForm.xaml
| | RegistrationForm.xaml.cs
| |
| \---Web
| \---Resources
+---MEF1.Web
| | Default.aspx
| | Default.aspx.cs
| | Default.aspx.designer.cs
| | MEF1.Web.csproj
| | MEF1.Web.csproj.user
| | MEF1TestPage.aspx
| | MEF1TestPage.html
| | Silverlight.js
| | Web.config
| |
| +---App_Data
| +---ClientBin
| | MEF1.xap
| |
| +---Models
| | | RegistrationData.cs
| | | User.cs
| | |
| | \---Shared
| | User.shared.cs
| |
| +---Properties
| | AssemblyInfo.cs
| |
| +---Resources
| | ClientCultureBasedResources.cs
| | ErrorResources.Designer.cs
| | ErrorResources.resx
| | RegistrationDataResources.Designer.cs
| | RegistrationDataResources.resx
| |
| \---Services
| AuthenticationService.cs
| UserRegistrationService.cs
|
+---MEF1_Extensions
| | MEF1_Extensions.csproj
| | MEF1_Extensions.csproj.user
| | NoteWriter.xaml
| | NoteWriter.xaml.cs
| |
| \---Properties
| AssemblyInfo.cs
|
\---MEF_Contracts
| IPart.cs
| MEF_Contracts.csproj
| MEF_Contracts.csproj.user
|
\---Properties
AssemblyInfo.cs
> Это бессмысленно, в данном месте.

Вы думаете моими проектами пользуются какие-то специальные люди?
% людей, который ненавидят MS в данном сообществе переваливает за 50%, любую технологию воспримут в штыки :)
лучше спросить сколько из ненавистников реально программируют … многие не понимают преимуществ переносимости кода, поддержки сообщества… Да, «переносимость платформы» минус, но с т.з. менеджмента потеря «какого-то линугс» — фигня. (вот, я наехал на линукс, можете минусовать).
В том и дело, что они пытаются свести воедино 2 сектора — бизнес и домашнего пользователя, а там разные цели, Adobe для этого вынесла Flash в отдельный продукт (Flex), кстати довольно не плохо получилось, я проштудировал их родной видео-курс недельный.
Переносимость это не такая простая вещь как кажется и если кто-то живет в мире Windows и думает что страшное слово его это не касается — сам дурак себе буратино. Разработчики игнорировали здравый смысл и писали конфиги в Program Files — получили несовместимость с вистой; какая мол разница, всё равно в Windows моя программа запустится — а нет. Прямо сейчас на хабре циклы статей про перенос ужасного унаследованного кода на 64-битные системы, и Windows рассматривается там в первую очередь (спекулирую: из-за беспечности разработчиков «один процессор, одна ОС» получили код низкого качества с кучей хаков, так как критерием было работает — ОК).
главное в silverlight это учет запросов крупного бизнеса (RIA приложения)… если пойдет крупный бизнес, подтянутся и рядовые юзеры (кроме того, если у вас винда обновляется, то SL у вас уже стоит). А еще там можно использовать уже оттестированный код, используемый например, в настольных приложениях… Скоро (ждем sl4) можно будет полноценно ставить приложения на десктоп из браузера (сейчас можно, но нет поддержки DOM оснастки (проще говоря браузера))…

В общем использование SL на мой взгляд более предпочительно для крупной разработки, и главное преимущество — переносимость большинства кода из сервисов\настольных приложений в SL БЕЗ изменений (я недавно делал SL морду к Win приложению, работающему через soap c сервисом, я даже не задумывался «как работают классы win приложения с soap» — экономия $ очевидна).
Мы тоже делаем RIA-морду для нашей системы на Silverlight. Оказалось на удивление комфортно разрабатывать под него, с удобной IDE и большим количеством встроенных классов, которые помещаются в дистрибутив Silverlight размером 5 мегабайт и не утяжеляют конечный xap-файл.

Так что для бизнес-приложений это вполне приемлемое решение.

Жаль только, что Silverlight 4 в 2008-й студии не работает, требует 2010-ю.
UFO just landed and posted this here
Без обид, но «чья бы корова мычала», дыр во flash полным полно
UFO just landed and posted this here
Тут уже нужно пинать разработчиков браузеров, видео — html5 «спасет» нас. Сообщения между окнами, все это есть в SL. Через годика 3 уже и никто не будет думать, о вопросе ставить SL или нет. Да и в первую очередь SL предназначен для RIA, бизнеса и т.п. Не для простого пользователя в первую очередь.
Давайте без холиваров. Будем считать Silverlight и Flash братья навек.
No holywar, я поддержал ваш топик, потому что вы трезво оценили негативные стороны технологии, являясь разработчиком на этой технологии. Я просто про то, что немного разные стороны занимают Flash, Flex, Silverlight. Я даже считаю глупым сравнивать Flash и Flex. И когда доходит до разработки серьезного бизнес-инструмента на Flex, то без IDE, ну никак :).
Flash и flax может и не стоит сравнивать. Но не надо делать вид, что флеш (хорошо, пусть флекс) не конкурент сильверлайту.
Они конкуренты, потому что работают на одном рынке но на разных хозяев, и от конкуренции ни куда не уйти.
А кто делает вид? Я нет, Flex конкурент, просто давай-те согласимся, Flash делался не из расчета на программеров. Flex уже да, но опыта в данном плане у MS больше, вот и все. Сейчас Flex должен развиваться самостоятельно + возможности самого AS. А вот MS уже имеет .net платформу, может быстро добавить туда новую фичу, например linq, и наклепать поверх сотни надстроек, которые еще больше упростят работу. А так же, мы благодарим VS за ее возможности, Flex также стоит развивать и IDE. Меня правда Eclipse по скорости не устраивает :(
Ну, значит мы об одном и том же говорим.
Вы были правы. Прошло 3 года. Никто даже и не думает ставить SL :)
Данный факт не сделал SL плохой технологией, дальше просто бизнес.
это всё делается без Flash, в современных браузерах.
UFO just landed and posted this here
Вы правы, тут нужен костыль на Flash. Забыл совсем, ибо использую для этого библиотеку на Javascript, а она уже внутри использует для этого Flash для этих браузеров.
типа без флеша сообщение другому окну не послать? х)))
Так нахрен миру второй Flash? Еще и проблемный, без реализации оригинальной под *nix? Или вы просто принципиально любите .NET?

Про 50% я просто-напросто не верю. Ни у кого из моих знакомых разработчиков (молчу про пользователей, которым даже не интересно) нет silverlight. В принципе. А Флеш есть у всех.

Кстати, мой проект под Flex выглядит примерно как:

1) main.swf
2) main.mxml
3) десяток файлов .as
4) несколько медиа файлов в папочке media.

Все по существу. Плюс есть классные консольные утилиты. А вы чуть ниже мне привели типичную проектную мусорку.
>>>Так нахрен миру второй Flash?

Признаюсь, мне не понятны вопросы типа — Ну есть же флеш, зачем еще один плагин нужен? Вот не могу понять такие вопросы. Потому что еще один плагин нужен всем.

1. Он нужен МС, потому что это бизнес, а МС, как это не странно коммерческая конторка, и делать деньги ее прямая задача.

2. Он нужен армии разработчиков которые сегодня пишут на .Net. Для них это еще одна ниша где можно реализоваться. Для них это еще одна возможность получить работу.

3. Он нужен флешерам. Как это не странно, но здоровая конкуренция идет на пользу всем, в том числе и флешу. Монополия — это болото, рынок — это развитие. Есть здоровый конкурент — флеш будет развиваться, а не почивать на лаврах.
каждому своё. большие вещи без строгого разделения сущностей не построить.

а для мелких вещей можно и на Silverlight всё в одном сделать.

Просто на Silverlight удобно делать приложения и большого объёма.
Silverlight проектировался с учетом всех болячек и костылей Flash-а, а также производственных мозолей агонизирующих программистов на Flash, к которым ОП относится не понаслышке…

Уже сейчас возможности SL4 в разы больше еще только стандартизирующегося HTML5. И canvas, и video, и sockets, и web-services, и linq, и hardware acceleration, и динамическая подгрузка частей вашего приложения, и печать, и доступ к файловой системе, и isolated storage, и trusted приложения, и out-of-browser, и автоматическое обновление приложений — все это есть уже сейчас. Через годик mono подтянется, накроет оставшийся 1% рынка, и HTML5 в стадии рекомендации станет уже просто никому не нужным.

Кроме того, MS тесно сотрудничают с Apple, не удивлюсь, если Silverlight заработает на iPhone и iPad.
Мордочка Windows Mobile 7 уже на Silverlight написана (судя по слухам).

C# 4.0 vs AS3/ECMAscript, CLR vs AVM/V8/etc., VS.NET vs FlashIDE/etc — тут Microsoft в отрыве лет на 5 от конкурентов.

Главная задача у Микрософта набрать критическую массу разработчиков под SL, чтобы началась повальная миграция на SL.

Извините, если оскорбил чьи-то чувства, это просто личный анализ ситуации.
А в основе лежит всё тот же костыльный XAML… Впрочем в основе HTML5 тоже лежат костыли. Все эти XML, HTML и тд были разработаны для описания статических страниц.
Поэтому особой революции SL не принесёт, хотя флеш и потеснит.
Ну XAML никто не заставляет использовать.

Можно по старинке — в конструкторе весь интерфейс кодом налепить :) Но это как бы уже немодно.

Сейчас модно, когда дизайнер свой файл мусолит, а разраб — свой…

P.S. к XML у меня только одна притензия — в печенках сидит эскейпинг типо > < &…
Почему вы называете XAML костыльным?
Тут все просто. Автор недавно попробовал QML, в котором есть динамика в виде аналога jscript, и теперь на HTML смотрит как на г#вно критически :)
Ну чего-чего, а динамики в XAMLе с C# хватает.

Или я не так понимаю вашу «динамику»?
Чью «вашу»? Вы нас не путаете?
Или это прикол такой прямо в разметке страницы код монстрячить? Аля PHP
Понятия не имею. Попробуйте спросить у Gorthauer87. Насколько я видел, там (QML) так и пишется
В SL структура выглядит таким же способом. Только если несколько форм или usercontrol то отдельный файл разметки и кода. Но простите я указал, что разметка выше кода, это 3! проекта в одном, а ОДИН из них использует паттерн MVC, который подразумевает разбитие проекта на модель, вид и контроллер, даже во Flex.

>Ни у кого из моих знакомых разработчиков (молчу про пользователей, которым даже не интересно) нет silverlight
Как только человек попадет на сайт и его попросят, он установит. У меня не стоит Java, как и у тысячи людей, что ей от этого хуже? — Нет. Хотя вру Java у меня установлена ;)
Ну и как я при заходе на соответствущий сайт поставлю Silverlight, если у меня не windoze?

Да и признайте, что даже Java ставят очень и очень неохотно.
Java никак не продвигается пользователям, много знают о JavaFX? MS выгодна, она как паровоз продвигает, тратит деньги на рекламу.

>Silverlight, если у меня не windoze
Да ладно, Flash в некоторых местах глючит и в маках и линуксе.

А если я скажу проще, что MS пофигу, если не грубее, на линукс, и все что с ним связано и что с вас (1%), как с воды. Что вы скажете? Ничего. Потому что вас мало, потому что SL ориентирован на бизнес в первую очередь, а там все равно на клиентскую ось, нужно винда, будет винда. В конце концов, у нас проблем больше, SL по x64 нету и не планируется и есть некоторые неудобства с этим.
Я просто так и не понял к чему все крики про линукс, если пользователей!(не админов, не прогаммистов) под линукс, как кот наплакал.
Вот вы немножко ситуацию не понимаете. Это процент — активнейшие члены сообщества разработчиков. Завоевать их признание — читай, обеспечить технологию кучей приложений.

А не будет приложений — не будет пользователей.

Не будет пользователей? не будет profit.
>Это процент — активнейшие члены сообщества разработчиков
забыли дописать в конце, «под линукс» =)

Флешеров много на линуксе сидит? Я вот сколько не спрашивал, все под win.

>активнейшие члены сообщества разработчиков
А те, кто деньги получает и делает коммерческие продукты, нет? :)
Вы пытаетесь сказать, что я не получаю денег и не делаю коммерческих продуктов? или что? :-D

Я пишу на Флексе под линуксом. FlexBuilder основан на Eclipse, что делает его кроссплатформенным. Разработчики и аниматоры на Флеше — это не одни и те же люди, уверяю вас.
Нет, вы просто утверждаете, что на линуксе элита :D. Так ставить вопрос вообще не корректно. Мы с вами давайте поговорим за большинство, раз вы любите такую тему, разработчиков под Flex/Flash больше на linux или win?
Ну почему же? Не совсем.

Я просто говорю, что среди пользователей Линукса очень много высококвалифицированных разработчиков, если не большинство. И опросы на Хабре показывают, что в усредненной тусовке айтишников будет по крайней мере половина пользователей Линукса (могу даже ссылку на опрос привести).

Про доли разработчиков на Флексе я просто-напросто не знаю. Флеша в смысле анимации, сами понимаете, быть не может.
>что среди пользователей Линукса очень много высококвалифицированных разработчиков, если не большинство.
если не 99% =)

>могу даже ссылку на опрос привести
не нужно, это прекрасно заметно по рейтингам статей, которые я здесь размещаю, и у меня складывается впечатление, что большинство линуксоидов, эдакие паразиты, не дающие развиваться другим. Их цель, найти и уничтожить другие технологии, которые не open source. Не смотря на то, что разрабатываю на php и сревера на linux, я не веду себя, как отморозок и уважаю другие технологии.
«Отморозок»? Open source?

А что, кому-то хуже стало от появления на рынке открытых технологий? вот вам?
Нет, это отлично, но это не значит, что open source должно заменить все, что и пропагандируют многие «спецы». Всему свое место, и без денег даже open source загнется, потому что в многие проекты вкладывают деньги корпорации.
Для большинства независимых разработчиков ЖИЗНЕННО важно, чтобы давление open sources изменило общую ситуацию в сторону большего, а лучше подавляющего применения открытых бесплатных стандартов и открытых исходников.
С компаниями-гигантомонополистами это плохо совместимо.
Хм, вы хотите писать сервисы и т.п., чтобы зарабатывать, но делится куском пирога не хотите?
Я хочу как раз за то, чтобы делиться, но не на тех условиях, которые так любят монополисты.
Пока ситуация сильно перекошена в их сторону.
Я не против, но чуточку выше, я описал отношения oo разработчиков и линуксоидов к другим технологиям, они пытаются заткнуть рот людям, которые пишут о .net, какой бы она не была. У нас же нет мании загонять в минуса топики про php, python и т.п. Думаю не нужно еще раз писать, как это характеризует их.
А Вы никогда не думали, что минусуют именно мнение, которое Вы высказываете, а не личность или технологию?
Вот Вы например пишете:

> Нет, это отлично, но это не значит, что open source должно заменить все, что и пропагандируют многие «спецы». Всему свое место, и без денег даже open source загнется, потому что в многие проекты вкладывают деньги корпорации.

Во первых — пренебрежительное отношение к противоположной стороне.
Во-вторых путаница (или сознательная подмена) понятий.
В чем подмена? В том, что опен-сорс вовсе на значит «без денег», или «не корпорации».
Опен сорс значит, что должны быть доступны исходники распространяемого/продаваемого продукта. Причем совершенно необязательно под GPL или BSD или другой свободной лицензией.
Многие же закрытые же продукты (противоположность опен сорс) сегодня распространяются на совершенно бандитских основаниях.
Мало того, что заплативший за них очень серьезные деньги фактически получает их на условиях близких к аренде, а не в собственность, но во многих случаях даже подсмотреть как оно работает нельзя (реверс инжинеринг).
>А Вы никогда не думали, что минусуют именно мнение, которое Вы высказываете, а не личность или технологию?

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

>Во-вторых путаница (или сознательная подмена) понятий.
И так везде, все мы начинаем говорить об одном, а заканчиваем другим. То линуксоиды выступают в роли пользователей и тут же требуют для себя инструменты разработчиков и т.п. И так смысл каждого сообщения перетекает из одного в другое сотни раз. Вот и мы с вами не поняли друг друга. Я говорю в первую очередь за толерантность между приверженцах разных технологий. На данный момент, рассказывать на хабре о microsoft технологиях почти не возможно. И разницы нет открытые или закрытые. Мы просто говорим, что нового появилось, как реализовать определенный алгоритм. И все равно идут минуса, и вы знаете прекрасно с какой стороны. Но оснований для этого я не вижу, ведь если не нравится не читай/используй.
Я с вами согласен, что разработчики должны давить на гигантов, для рыскрытия кодов. Но не на своих собратьев, которые используют данные продукт у себя в разработках.
Проблема, не с нами, проблема с Вашими технологиями. Они при распространении стремятся убить всех, до кого дотягиваются руки. Поэтому и неприязнь.
А линуксоиды, они и пользователи и разработчики. Что тут удивительного?
Да еще и привыкли к тому, что вся тулчейн открыта и доступна.
Деньги правят миром, что-то я не вижу достойного сопротивления apple технологиям, ObjectC, ихней закрытости, побились в закрытые двери и все, сказала apple нет flash, и никого не..., вот так :)
Каждый выбирает то, что ему нравится, вы пытаетесь навязать свое, ms свое. Я с успехом применяю технологии обеих компаний. И прошу не Вы-кать, технология не моя, она мне просто нравится, как и RoR и Python, но не прыгать же туда сюда. Тут конечно вы скажите, что МС убивает и их, создав IronRuby и IronPython.
В общем я думал, что вы скажете вне что-то новое, а вы оказывается из тех минусующих.

Я уважаю все стороны, вы нет, и тут я красноречиво говорю -«так кто же из нас проявляет неуважение»? ;)

Давай-те завершим наш диалог, вы мне напоминаете Столлмана, а ему что не скажешь, он все в штыки. Кто из нас не прав рассудит история и опыт.
Я в штыки? Просто у меня есть определенная позиция.
Так же как и у Столлмана.
Дело не в технологиях, дело в способе их распространения и в каком мире будем жить.
Митинговать против закрытого ПО, MS, Apple, ничего не даст, это больше для показухи. Почему нет конструктивных предложений. Давайте представим разработчика, как наркомана, к нему приходит диллер и подсаживает, постоянно дают новое, улучшенное. Чуть позже, приходит другой диллер и говорит, пошли ко мне, у меня лучше, у меня даже бесплатно. Человек попробовал — не понравилось. Второй дилер начал устраивать забастовки, кричать что первый его обманывает.
Почему вы не направите свои усилия в пропагандирование технологий? Почему на хабре редко появляются интересные статьи о PHP, почему PHP развивается ужасно медленно? Потому что все сидят и тихо кодят, и иногда выходят помитинговать. Кто будет рассказывать новым программерам о технологиях — никто. Где бесплатные IDE под PHP, где хоть одна нормальная платная?
Да, возможно для вас покажутся 3 года опыта не большим сроком, но за это время, я не нашел хорошей IDE, не монстров ZendEclipse,Aptana, PDT, а нормальных — платно/бесплатных, которые бы сравнились с Visual Studio. ZendDebuger с завидным постоянством перестает работать даже с родной ZendEclipse(он 5 минут назад работал), вы скажете кривые руки? Возможно, я выкручусь, но представьте тоску начинающего. Он подумает «зачем мне все это?». Netbeans хорошая штука, но не хватает ее мне, WebIDE понравилась, но XDebug никак не хочет с ней в тандеме работать, ладно кривые руки, а так хочется одну галочку поставить и чтобы хоть это заработало, а нет, простых путей- нет.
> Почему нет конструктивных предложений.

Конструктив может быть такой например, как должен выпускать Майкрософт, или Эппл свои продукты, чтобы мы сказали: Ну все, теперь он гладкий и пушистый.

Насчет IDE пропускаю, раз нет, значит не нужно. Лично я IDE не пользуюсь.
>раз нет, значит не нужно
поработайте с Magento, 35000 файлов, mc вам в помощь.
Глянул из любопытства простенький свой проект на Django — 7500 файлов. И вроде никаких затруднений. Правда я в MC редко вылажу, в основном в emacs сижу.
А чем Вам IDE помогает разруливать 35000 файлов?
Как по мне если есть порядок, то легко, а если бардак, то никакой IDE не поможет.
вот это верно, главное порядок и четкая иерархия
помню чуть ли не года два-три назад уже был плагин, позволяющий переносить рисунок из Adobe Illustrator в разметку XAML, правда в контексте WPF. Но суть от этого не меняется — можно поручить дизайнеру нарисовать макет сайта/контрола/чеготоеще, а потом отдать прогеру сгенерированный XAML для дальнейшей прикрутки логики.
Можно себя уж и блокнотом не мучать, скачать бесплатный FlashDevelop ;)
Поддерживаю. FlashDevelop отличная IDE, как для flex, так и для flash проектов. Для flash проектов вообще почти незаменим, поскольку в самой среде редактор для дизайнеров, а не программистов.
Еще бы visual designer в него для flex проектов и FlashDevelop был бы вне конкуренции.
Счас я вам скажу, что FlashDevelop написан на .net, и вы будете плеваться
Я знаю на чем он написан, но 1. я не вижу причин плеваться на .Net 2. это не важно. Совсем не важно. Важно как он работает.
Silverlight — это тоже .net (в настоящее .net Compact Framework 2.0, если быть совсем точным). В комментариях выше плюются, как видите.

При помощи FlashDevelop (ну и при помощи блокнота тоже, конечно) вы не сможете редактировать и импортировать в проект векторную графику — для этого нужна Flash IDE, т.к. формат файла проекта бинарный и закрытый. Поэтому говорить о том, что можно полноценно делать серьезные проекты — преувеличение: ни встроенные контролы, ни векторная графика недоступны.
> комментариях выше плюются, как видите.
На хабре сложно что-то написать, чтобы никто не плевался =) На вкус и цвет все фломастеры разные.
> Поэтому говорить о том, что можно полноценно делать
> серьезные проекты — преувеличение
Для flash проектов его можно использовать не вместо, а в дополнение к Flash IDE, просто как удобный редактор кода. Есть еще варианты с swfmill, как способ уйти от Flash IDE, но я всё никак не выберусь посмотреть его, насколько он адекватен, потому не могу судить.
Для Flex проектов — на данный момент один из оптимальных вариантов, как мне кажется. Как раз сейчас стою перед выбором. Flex Builder штука удобная, но цена у него не слишком гуманная, а триал беты заканчивается. Amethyst — вроде по фичам довольно неплох, но пока находится в стадии глубокой беты и немного бесит, когда шаг влево-вправо и что-то не работает. Если подскажете, что-то удобное и бесплатное или с гуманной ценой, то буду очень благодарен.
Как по мне, swfmill слишком низкоуровневый. Т.е., на нем можно сделать упаковку ресурсов, но если их много, это становится неинтересным.

Как аналог Amethyst могу предложить Tofino: www.ensemble.com/products/tofino.shtml. Правда, я не делал в нем ничего сложнее, чем делал в FlashDevelop + haxe, но кажется работает :)
Спасибо! Tofino попробую.
Мне идея с swfmill понравилась еще тем, что текстовый формат описания ресурсов и некая атомарность ресурсов позволяет более детально контролировать изменения при использовании системы контроля версий. Поскольку «изменился fla файл» слишком глобальное изменение, и я не знаю, как быть, когда над проектом работает несколько человек, и каждый хочет добавить по картинке?
справедливости ради, в том же SL файл проекта с самого начала текстовый (xml), в том числе и обработанный в Expression Studio, так что проблемы с тем, что несколько человек одновременно работают над проектом, не возникает.

Во Flex, как и во FlashDevelop, такая же ситуация, но нет векторной рисовалки.

Ну и если я правильно понял, очень скоро Flash и Flex Builder IDE соединят в одно — Flash Builder IDE
Я сейчас активно пользуюсь flash builder 4 beta 2 тот же flex builder 3 только с поддержкой sdk4 и более отзывчивым редактором.
Нет, не правильно. Но теперь as3 из проекта от Flash Prof. CS5 можно будет редактировать и пр. во Flash Builder IDE. А потом передавать команду на запуск во Flash Prof.
Так же, как VS -> Expression Studio, и обратно? Спасибо, буду знать!
Ни разу не сталкивался с VS, посему не в курсе. Подробнее о чем я говорил тут (видео с Adobe Max 2009)
А наверное можно было бы сделать во flash-плеере шейпер на cpu — и пусть тормозные баннеры либо «медленно» показываются (frame-drop что ли), либо просто не показываются. Шейпер сделать настраиваемым.
а как тогда смотреть ролики с ютуба?
Дать право пользователю самому решать, какие ролики и как шейпить. Аналог adblock, только более умный.
flash block и ни каких костылей не требуется
flash block и есть костыль.
White list по доменам устроить…
flash block как раз этим и занимается
В Qtшных браузерах сделали такую штуку Click-to flash, вместо ролика показывается кнопка, ролик показывается только по её нажатию
Точно! В gnash ведь так сделано!
Спасибо, очень интересная и познавательная статья получилась.
А как вы считаете, что сейчас предпочтительнее начать учить flash или silverlight или что то другое?
Учите всё, с вас не убудет. В принципе достаточно основ ООП, и оба языка дадутся достаточно просто. Взгляните на haxe, возможно он придется вам по душе.
Спасибо! Отличный материал. Даже не программеру более ли менее понятно что к чему и где мы все завтра будем.
Странно, что Google Web Toolkit не попал в список альтернатив.
Казалось бы, та же ЦА — RichInternetApplications, чуток лучше с производительностью, заметно лучше с кроссплатформенностью.
Нет поддержки video (на некоторых браузерах — есть, через canvas), зато назревает поддержка 3d.

Что про это думает симулякр Адама-и-Джейми, написавший обзор в посте?
GWT мне нравится, но это же просто навороченный javascript.
Внимание, вопрос:
А что такого есть в flash, чего нет в gwt?

Я не очень хорош в flash, и наверное поэтому таких преимуществ я не встречал.
Собственно, в данной нити я как раз и собираюсь их повыяснять.
Думаю вам проще будет прочитать какое-нибудь введение во Flash. Для веб-разработчика знать общий смысл оной технологии и её возможности/ограничения практически обязательно.
Дело в том, что на уровне «Нарисовать на flash часы, идущие по текущему времени пользователя» я с флешем знаком.
И арканоид писал
Но это всё можно и на gwt->js сделать легко.

Тут вопрос скорее в тонкостях, о которых я вряд ли прочитаю в каком-либо _вводном_ курсе.

Я бы хотел узнать основные пряники flash- супротив ajax-приложений.
Даже просто перечисление изюминок flash было бы полезно. Не в духе «можно программировать перемещение объектов по экрану с учётом физики», а скорее «копирование в буфер — сильная сторона flash, есть даже javascript-биндинги для copy/paste, использующие невидимые flash-элементы».
Пока на стороне Flash всё, что требует повышенной близости к железу: clipboard, видео, аудио, продвинутая анимация, зачатки 3D и т.п., а также sockets. HTML5 отхапает немалую часть этого царства, но до его массовости ещё далеко, а Flash уже почти у всех есть.
Sockets — принято (будет в html5)
Видео-аудио — принято (будет в html5)
Clipboard — уже есть решение, использующее flash только в качестве graceful degradation
Зачатки3D — на мой вкус 3Dflash ровно такая же экзотика, как какой-нибудь o3d, но плагин для последнего гораздо шустрее.
Продвинутая анимация — а вот этот пункт можете пояснить, о чём речь?
Да-да, я тоже всей душой за HTML5 и быстрые JS-движки (IE 9, ау!!!). ;)

На Flash не писал, каюсь, но вроде он из коробки поддерживает векторную анимацию.
Canvas (правда, с использованием дополнительного файла excanvas.js) поддерживается в ie6+.
Соответственно, рисование кривых Безье и прочее всякое доступны из js во всех распространённых браузерах, без доп. плагинов.
(Или под «из коробки» имелась в виду «из коробки для разработчика»? Ну так скачать gwt-g2d.jar не так уж долго и сложно, по крайней мере меня это не травмировало.)
Excanvas — сильно медленно для продвинутой анимации. Увы.
Вообще сама идеология GWT костыльна, транслировать java код в javascript код да еще и потом склеивать всё это скотчем… Это скорее некая утилита помогающая быстренько что-то наклепать Java программисту, не залезая в незнакомую ему технологию.
Почему же? Вполне нормальная технология, со своими недостатками и преимуществами. То, что вы называете костыльностью, вполне возможно наоборот является попыткой преодолеть недостатки Javascript для создания и поддержки сложных приложений. Т.е. статически типизованная Java проигрывает в гибкости, но позволяет выигрывать в организованности.
Языки программирования высокого уровня — костыльны. Они лишь позволяют не знающему ассемблер программисту быстренько что-то наклепать, не залезая в ассемблер и тонкости аппаратной реализации.
GWT крут, но это скорее не технология как Flash или html5, а инструментарий. При чем очень крутой, но он все-таки базируется на фичах html5. Там дела лучше потому, что приличную част работы делают ребята из webkit и mozilla. Нужно разработчиков Flash плеера отправить к ним учиться.
Ээээээ.
Моя школа гулял, мало-мало знаю.
Да, GWT — это инструментарий, а технология — это javascript.

Так вот. Какие преимущества у технологии flex перед технологией javascript?
Давным-давно была простота разработки (на js писать не сахар, согласен). Но теперь есть GWT, и этого минуса нет, и даже наоборот (мне вот писать для GWT в IDEA очень нравится, тьма всяких рефакторингов и инспекций. И дебаггер не в пример флешовому).
В чём же преимущества flex'а?
(Не то чтобы я холиварил, просто плохо и мало знаком с flex, и пытаюсь понять, стоит ли оно изучения.)
в ваших терминах flex — инструментарий. Технология — flash.

Серьезное преимущество у flash перед javascript на данный момент одно — однородная реализация на всем спектре поддерживаемых браузеров/устройств.
Если говорить о преимуществах флекса над GWT (т.е. javascript/html), то это более продвинутые виджеты, скиннинг, более продвинутые средства (для) дизайна — немаловажный фактор для армии дизайнеров, который, почему-то, программисты в упор не замечают и предпочитают обходить стороной. Опять же, преимущества флекса, собственно говоря, проистекают в первую очередь из преимуществ флеша как платформы — однородность.
>более продвинутые виджеты
А можно поподробнее, чего такого есть особенного?

>скиннинг
Имеется в виду, возможность присвоить различные скины одному объекту?
Неужели возможно нечто большее, чем возможно с css?

>более продвинутые средства (для) дизайна
Это да, рисовать в flash ide приятно (cs1 я пользовал, кажися).
Зато со стороны gwt — такая же армия html-верстальщиков и веб-технологов, так что спорно.

Про однородность — да, понимаю о чём вы. Хотя как раз GWT компилирует переносимый (а где надо, раздельный) код, и особо париться об этом мне лично не приходилось.
> А можно поподробнее, чего такого есть особенного?
это как бы больше с программной точки зрения, причем совместно с возможностью скиннинга

> Имеется в виду, возможность присвоить различные скины одному объекту?
> Неужели возможно нечто большее, чем возможно с css?

скины во флексе — программный кусок кода. Можно сделать вообще все, что душа пожелает, при этом логика работы контролов от скинов отделена. Аналогом в HTML была бы отрисовка внешнего вида компонентов с помощью canvas api, но я не уверен, что это есть в каком либо js тулките. Аналог CSS для флекса тоже имеется, позволяет скинить скины (простите за каламбур) — т.е., например, передавать параметры в свой кастомный скин.

> Это да, рисовать в flash ide приятно (cs1 я пользовал, кажися).
> Зато со стороны gwt — такая же армия html-верстальщиков и веб-технологов, так что спорно.

flash ide — немного не из той оперы. Аналогов «флешевым мультикам» в мире JS/HTML я пока не вижу, SVG это совсем не то.

Что бы не было путаницы — есть flash ide, (упрощая) — инструмент для дизайнеров, позволяющий «рисовать» векторные «мультики» и прикручивать скрипты на события/фреймы. И есть flash builder, бывший flex builder, который является полноценной средой разработки (на базе эклипса) для программистов. Оба эти инструмента на выходе дают swf файл, проигрываемый флеш плеером, но предназначение инструментов принципиально разное.

Для флекса так же есть такая штука, пока что в бете, flash catalyst, которая позволяет в буквальном смысле нарисовать дизайн в фотошопе или иллюстраторе и перевести в работающий код, не прибегая к услугам программиста/технолога/etc. Подразумевается, что это упростит процесс разработки сайта/приложения, дизайнер рисует и генерирует костяк с работающим gui, программист дописывает логику и внутренности.
UFO just landed and posted this here
вы, мягко говоря, не правы. «Эти фичи», т.е. программный скиннинг доступны и в 3-й версии SDK. Просто там они реализованы через одно место. И не путайте флеш билдер с flex sdk. Использовать 4-ю версию sdk можно и в старом билдере.
Мы в работе используем бету 4-го sdk с лета прошлого года, полет нормальный.
UFO just landed and posted this here
Пишу gwt-апликации в Идее. Пишу flex-апликации в Идее. На собственном опыте могу сказать, что деббагер для флекса такой же как и деббагер для gwt. ;) — отсюда вывод — дебагер зависит не от технологии, а от IDE

По сути вопроса скажу, что одно и тоже задание для флекса пишется как минимум раза в два быстрей, чем на gwt. Почему? Не знаю. Быть может, потому, что на флексе больше компонентов (про всякие smartgwt, gwt-ext и прочие знаю). Меньше кода. Проще отлаживать. Да и работает во флекс-апп всё быстрей. Для примера: нужно было сделать дерево в которое по кликам на узлах будут подгружаться данные (страны в них области и в них города — всего 12500 элементов). Так вот в gwt перепробовал все имеющиеся деревья и все они дохли где-то на 800-1000 элементах. Во флексе, даже стандартное дерево легко загрузило и отобразило все элементы. Скажу больше. Только лишь флекс поддерживает amf. В моём примере с деревом, все 12500 элементов загружались в этом формате за 1,5 сек. То есть как бы отпала необходимость в асинхронной подгрузке…
Думаю, если поразмышлять, найдутся ещё множество плюсов флекса по сравнению с жвт. Кроме одного — если не стоит плейер, то gwt рулит :)
Походу дела Adobe просто оказалась погребена под тяжестью своих ошибок и промахов во времена Macromedia. Может наконец стоит сломать совместимость со старым тормозным и кривым хламом и создать какой-нибудь flash-ng?
Silverlight это и есть «flash-ng»
Дык они с переходом на AS3 уже много от чего отказались. Если заглянуть внутрь спеков на swf под 9ый flash player, можно увидеть, что, например, раньше инструкции AS2 транслировались в байт-код AVM1 1-к-1, и лежали внутри swf в виде tag-chains. А теперь весь ваш код AS3 компилится в один tag-chain «код для avm3», который игнорируется AVM1 и передается сразу на исполнение в AVM3 (новая виртуальная машина, начиная с Flash Player 9). Просто счас из тех мало кто пишет на AS3 для общих случаев, много где еще используется устаревший AS2, особенно в баннерах.
спасибо за статью, можете пояснить про загадочную ( для меня) конструкцию — DEBUG::ENABLED?
Вот тут можно почитать по подробнее на английском.

В данном случае я использую кастомный неймспейс DEBUG в качестве конфигурационной константы.

дада. хороший вопрос кстати.
раз уж упомянули про правильное решение, то почему без объяснений?
блин. я слоу) спасибо за ссылку =)
хорошо, что у меня нету флеша.
Все верно, целиком поддерживаю!
К тому же наличие Flash может сильно ударить по доходам appStrore от казуальных играх и мини приложений


Так может именно в этом, и только в этом дело? Сомнительно, что Джобс настолько меценат (глуп), чтобы отдать такой кусок дохода.
Скорее всего так оно и есть. Иначе как объяснить то, что яблочники не пускают адобов, чтобы те смогли доработать плейер под маки?
Про айфоны/афпады вообще молчу. Конечно, намного проще обвинить кого-то в косяках, чем признать истинную причину.
Спасибо, отличная статья!
Я не флеш программист, но в курсе различных проблем, и очень хотелось видеть такой обзор от спецов.
Скажу, что лично мне не нравится во флеше как среде для RIA. По своей сути получается, что это браузер в браузере. А это ведет к двум проблемам: нам с одной стороны прихдится дублировать функциональность (как вы и написали), а с другой — как-то это связывать с самим браузером, чтобы реагировать на события, что-то отдавать туда и пр. Очень хорошо эти проблемы описаны у технологов САЛа.
Флеш умеет взаимодействовать с js в обе стороны, что позволяет решить большинство вопросов взаимодействия с браузером и не флешевыми частями страницы
Если честно, то я жду платформы, в которой все компоненты будут родные — то есть примерно как html5 планируется. Тогда это будет гораздо лучше работать.
Во флеше все равно есть ряд хитрых вещей, ломающих стандарты.
Например, TCP Socket с проверкой возможнсти подключения по 843 порту. Откуда они его выкопали? Скорее всего он будет закрыт у клиента. Кроме того, это ломает логику работы с доменными именами. А если у меня виртуальный хостинг? Какой мне socket-policy отдавать?

Хотя сейчас флеш может больше чем html+js.
Про adobe air слышали? фактически так же виртуальная машина но расширена функциями доступа к ресурсам системы. Браузера не требует.
Хороший пост, только не надо быть программером на Флэш, чтобы ощутить все его негативное проявление. Жаль что не было конкурента у Флэша все это время, может в Адобе народ бы стал более качественно писать свой софт. Не дай Бог оставить включенный Макбук с какой-нибудь открытой флэш-старницей — он нагреется + еще и батарея сядет, если без адаптера :) В общем Стив прав насчет Адоба.

Но ведь началось то с Макромедии все! Макромедия виновата в глючности и тормозах Флэша, а Адоб виноват в том, что не переделали все нормально :) А ведь могли, гады! С такими неадекватными ценами на Фотошоп можно и сотрудников нанять под это дело грамотных! В общем, жду смерти Флэша и появления нового чего-то :)

P.S. И среда разработки у них уродская :(
Всегда хотелось услышать мнение из самой Flash-кухни, теперь всё ясно.

Моя светлая мечта — чтобы Flash исчез из браузеров, как когда-то исчезли Java-аплеты.
Не то, чтобы совсем исчез, но перешёл в какие-нибудь самостоятельные AIR-приложения.
Java-applets не исчезли. Они были переделаны с нуля, и теперь стали няшкой ^_^ Даже javaFX туда вкрутили
На практике апплеты уже встречаются редко. Чаще всего в околонаучных демках.
А чего плохого было в апплетах? Технология просто обогнала своё время.
Их завалила глючная и медленная реализация JVM от Ms.
Плюс огромный по тем меркам JRE.
Ерунду говорите. MS-jvm была быстрее, чем оригинальная от Sun.
А вот архитектурно в апплетах косяков они (Sun) напороли, поэтому в java 6 апплеты были кардинально переделаны
— Открываешь страницу с Java-аплетом и сразу идёшь готовить кофе.
— Замороченная интеграция с веб-технологиями.
Последний апплет, который я видел, был никсовский интерфейс интернет-магазина. И он работал не в пример быстрее флексовского интерфейса, который мы для дойчебанка писали.
Так было. Попробуйте последние шестые апплеты, приятно удивитесь
Знаете — совсем не хочется пробовать. Это всё равно имплантанты, которые были придуманы из-за браузерных тормозов. Сейчас всё вроде налаживается — новые технологии, API и всё нативно, безо всяких машин и дырок в безопасности.
Спасибо!

Остался еще один больной вопрос, когда уже будет полноценный релиз 64-битного Flash?
Думаю, что даже в Adobe не знают ответа на этот вопрос.
Учитывая, что в январе вышла вторая бета, думаю, знают. Но вот когда точно, остается только гадать.
Читаю на официальном сайте информацию о последней 64-разрядной сборке флеша: «The latest alpha refresh for was released on December 8, 2009.»
Вторая бета? Я что-то пропустил?
Не, это я спутал с 10.1, пардон.
я специально поставил во всех браузерах и на всех своих компах FlashBlock.
Ибо раз Flash продукт глючный и не предсказуемый — то довольно глупо включать его поддержку в довольно стабильную и четкую систему, как iPhone OS.
Так что если у меня на iPhone и на iPade не будет работать Flash — то я только за.

Я за стабильность и предсказуемость в работе. А тратить время на разборки с тормозами и глюками я не хочу.
Для этого, разработчикам safari пришлось взять ответственность за JS-разработчиков, чтобы не было бесконечных циклов и т.п. Кстати, как там в iphone, остановить можно постоянные alert и т.п.?
правильно — но адоб не хочет брать на себя такую ответственность.
И перекладывает ее на плечи пользователей.
На нем и пишется добрая (скажем 89,26%) часть всех баннеров. И эта добрая часть пишется в основном людьми плохо владеющими AS и пишущих в основном на PHP или JS. Поделать с этим к сожалению ничего нельзя — проблема не в технологии, а в головах.


Т.е. если тривиальные вещи по этой технологии получаются огромными, тормознутыми и прожорливыми — это проблема В ГОЛОВАХ??? Да нет, это проблема ТЕХНОЛОГИИ и только её.
Давайте я напишу вам bat или sh файл который повесит вашу систему? Или съест большую часть ресурсов. Например использование памяти во Flash — если создавать объекты и хранить на них ссылки, памяти съесть можно очень много. CPU — 3 вложенных цикла, которые вызывают метод еще с кучей циклов, и все это вместе с рекурсией и все это чтобы крутить какой-нибудь квадратик, а таких квадратиков миллион…

Да проблема именно в головах. Я давно не встречал ситуации когда flash плеер ел ресурсы из-за ошибок авторов плеера, а не разработчиков под него.
Давно bat/sh можно в браузере исполнять? Среда исполнения, а особенно та, которая работает в браузере, обязана контролировать процесс исполнения. Вы замечали, что когда современный браузер встречает JS-код, который слишком долго синхронно исполняется, то он предлагает остановить исполнение. Я такого во флеше еще ни разу не видел. Все заканчивалось перезагрузкой браузера.
Флешплеер выводит «A script in this movie is causing flash player to run slowly» если скрипт выполняется больше 15 секунд (это значение можно поменять внутри swf-ки). Проблема в том, что, если выполнять его скажем по 14 секунд, делая небольшие интервалы (например через setTimeout) — то плеер не выведет предупреждения, но браузер всеравно будет загружен работой плеера фактически также.
За 9 лет в интернете ни разу такого окошка не видел.
> Давайте я напишу вам bat или sh файл который повесит вашу систему? Или съест большую часть ресурсов.

И часто, когда Вы пользуетесь bat/sh, Вы подвешиваете систему?

> Да проблема именно в головах. Я давно не встречал ситуации когда flash плеер ел ресурсы из-за ошибок авторов плеера, а не разработчиков под него.

Это проблема не плеера, а дизайна технологии — что ошибку, приводящую к смерти браузера, сделать легко и тривиально, и никто не собирается это исправлять. Почему-то убить браузера javascript-ом легко и просто не получается.
UFO just landed and posted this here
да, вопервых в коде ошибка. там s переменной нет.
Судя по тому, что я не видел ни одного «не тормозящего» флеш-объекта, проблема скорее не в головах, а как раз-таки в технологии. Флеш — основной источник падений браузера и его тормозов. Многие современные браузеры предпринимают отдельные меры по выделению его в отдельный контекст/поток/… А количество багов во флеше просто зашкаливает. Взять хотя бы баг, при котором flash отсылает кукиз из IE при серверных запросах не взирая на то, что текущий браузер не IE.
И да, аргументы вроде «браузер падает из-за того, что программист написал неправильную флешку» не принимаются. Среда исполнения обязана контролировать процесс, изолировать ошибки. Особенно если она работает в браузере.
Почему-то если программист написал кривой JS, браузер не падает. Кривого JS-кода в разы больше, чем кривого флэша, но почему-то никого это не напрягает.
> Почему-то если программист написал кривой JS, браузер не падает.

Это вы почему так решили? Поищите в гугле по словам «browser crash by javascript»
> Это вы почему так решили? Поищите в гугле по словам «browser crash by javascript»

Потому что я как бы на нем пишу каждый день. Чтобы обрушить браузер js-ом (особенно если это ФФ или Хром) надо очень сильно постараться. Обрушить браузер флэшом способен любой быдлобаннер.
Это примерно как сделать так, что если ты не поставил точку с запятой, технология форматирует винчестер, а потом заявить — это все из-за тупых программистов, им же 100 раз говорили, ставь точку с запятой!
Быть может я не прав, но вы немножко напутали в начале с флексом ;)

Flex SDK не поставляется в виде плагина, Flex SDK есть Flex SDK, а в виде плагина можно скачать Flex (Flash) Builder — IDE для разработки Flex приложений (можно скачать и стэндалон версию, базирующуюся на эклипсе).

Спасибо за отличную статью ;)
Согласен, сплоховал. Сейчас подправлю. Всегда пожалуйста )
Я на 100% согласен с Вами в вопросе почему на iPad нет flash'а.
Без flash пользователи iPad и iPhone теряют множество бесплатных инструментов (которые они, правда, могут получить через appStore, но уже за отдельную плату).
В итоге получается «интернет-планшет», лишенный большей доли «интернет-интерактивности».
Думаю, что если iPad «пойдёт», то под него быстро наклепают инструментов на HTML5 (что порадует всех). А мы посмотрим, угадал ли Джобс с моментом отказа от Flash.
Забыли упомянуть о скором выходе flash player 10.1.
HTML5 та еще байда. IE6 уже сколько хоронят, ни как похоронить не могут. Такими тенденциями о валидном HTML5 в разных браузерах, остается только мечтать.
дело тут, увы, немного в другом.

Тенденция рынка такова, что звание «устройства для интернета» плавно начинает переходит от PC к мобильным девайсам, iPad — планируемый катализатор.
Если же посмотреть, какой браузер самый популярный на мобильных платформах, то с удивлением можно заметить, что это браузеры на движке webkit, которые используются смартфонами Apple, Google, Nokia (!). К этому можно добавить растущую долю safari и google chrome на десктопах, а так же мозиллу, с некоторой натяжкой (все же движок браузера собственный).
В итоге, через год-два, мы будем иметь один и тот же движок на > 90% мобильных устройствах и порядка 50% десктопов. Имхо, вполне достаточно, что бы начать отказываться от флеш-плеера, как технологии, которая позволяет задумке дизайнера выглядеть одинаково на всех браузерах.
UFO just landed and posted this here
Вы хотите сказать, что не сотрудничая с создателем ОС нельзя написать хорошую программу под нее?
UFO just landed and posted this here
Я внимательно прочитал, но так и не понял — а что Вы этим постом хотели сказать?

Что все плохо и у технологии куча проблем? Ну это, кажется, любому разработчику очевидно. Посмотрите на php-программеров, хотя бы на их комментарии на php.net — там точно так же жалуются на совместимость версий, тормознутость, ограниченность. А если на верстальщиков обратить внимание, так это вообще сразу вешаться можно. Пачка различных браузеров и куча версий у каждого и везде те же проблемы с совместимостью, багами, хаками…

Что у языка есть неочевидные особенности? Ну да, модицифировать массив (ну или объект) во время прохода по нему циклом — такое не в каждом языке можно, в большинстве явно запрещено. Многие на это натыкаются, согласен.

Что есть альтернативы, но там тоже все плохо? А что делать — отрасль у нас такая, молодая, развивающаяся, динамичная. Она еще не скоро зачерствеет.
Я писал это не для разработчиков, а для людей которые пользуются flash.
Такими темпами Адоба профукает становление сильверлайта. А потом начнется стандартное нытье про монополию и проч.
> Почему все приложения написанные на flash такие тяжелые?
1.28 мегабайт это скорее всего дебаг сборка, релиз у меня в куда более масштабных проектах никогда не выходила за 400-500кб. Тоже немало, но таки в 2,5 раза меньше заявленного.
> А как можно так криво сделать?
О приведенном примере я бы сказал, что в любом ЯП можно сделать код, который без глубокого понимания нюансов языка не объяснить. Использование ООП позволяет во-первых использовать все преимущества автодополнения и избегать таких неоднозначностей. Не говорю, что багов нет, но пример кривости на мой взгляд не совсем корректен.
Из багов флеша, которые действительно таинственны, необъяснимы и мешают жить я бы выделил три: поведение флешек при установленном wmode=''transparent", невозможность в ИЕ работать с подгружаемыми данными, не ложа их в кэш (ну тут особенность ИЕ, что актив-икс может работать только с файлами с диска, адоб бессилен), необходимость формировать задание на печать в пределах одного метода.
>Почему все приложения написанные на flash такие тяжелые?
По-моему в этой фразе пропущено слово «корявые».
> «Flex SDK поставляется с плагином для Eclipse»
нет, он поставляется сам по себе, без плагина под эклипс — иначе sdk был бы платным. его компилятор используется и для создания флешек без флексового фрейворка.
В общем, во многих местах я бы поспорил, но влом. А что касается примера с объектами, то вам собсно никто не обещал какого-то порядка в следовании свойств. Во время первой итерации вы его меняете на b a c, вот почему вторая итерация хавает опять a. А почему порядок так меняется — это уже внутренности виртуальной машины. Сам код напоминает мне как разработчик сидит на суку и пилит его под собой, а потом удивляется почему это он упал с дерева.
А что не понравилось в коде? То что 2 AS кривой?:



В 3 AS все предельно понятно:
package
{
  import flash.display.Sprite;
    
  public class Watch extends Sprite
  {
    var p:Object =
    {
      a: 1,
      b: 1,
      c: 1
    }
    
    public function Watch()
    {
      
      for (var prop:String in p)
      {
        trace(prop, p[prop]);
        p['a'] = 2;
      }
    }
  }
}

* This source code was highlighted with Source Code Highlighter.


Output:
c 1
a 2
b 1

Пруфлинк.

Лично по моему мнению среднее количество проклятий в сторону Adobe от flash разработчиков составляет порядка 50 в год.


Тогда непонятно почему проклятья в сторону Adobe. Написать «правильный» код, на 2 AS и чтобы все работало так как нужно?

3 AS в вашей интерпретации выведет:
То есть «как нужно»? Есть документация к языку, в которой написано что в конструкции for..in свойства могут располагаться в любой последовательности. Слов о том, что в случае определения свойств в объекте внутри цикла возможны ошибки — нет.

Я всегда считал, что правильный код советуют писать сами разработчики — они знают как работает их технология, а по вашим словам человек который придет в разработку и не будет знать таких вещей, должен догадаться что это не правильно. К тому же вы говорите об этом куске кода, как отдельном. А если он внутри большого объема другого кода, понять что ошибка именно в этом, достаточно сложно.
Слов о том, что в случае определения свойств в объекте внутри цикла возможны ошибки — нет.


Присваивать в цикле for..in — вообще нелогично. Как он прогоняет объект внутри себя — не кому не сказано. Выяснять — только эмпирическим путем. Разработчики в документации не обязаны объяснять каким образом идёт перебор (сначала в конец, с конца в начало или наобум). Предельно понятным будет перебор в цикле for. Либо ++, либо — Вообще только что проверил у себя на 2 версии языка — всё выводит правильно. Что вы делаете не так — мне неясно. Да, и у вас в коде — ошибка. Во второй версии языка нельзя в функции trace указывать передаваемые параметры через запятую — тут же вылезет error. Можно передавать только в массиве или как String. К примеру вот так:
trace([prop, p[prop]]); или trace(prop+", "+p[prop]);

Значит вставляли вы его либо с 3 AS, либо вбивали вручную.

Скрин.

А если он внутри большого объема другого кода, понять что ошибка именно в этом, достаточно сложно.


Не соглашусь. Неужели код пишется так, чтобы оценить его результат можно было только тогда, когда уже написана не одна тысяча строк?
Я сразу сказал, что это AS3.

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

var p:Object = new Object()

и проверьте еще раз.
Да сколько угодно раз, разницы не вижу в определении объекта. Об этом в хэлпе пишут. Что new Object(), что {}, что new Array(), что [].
Скрин
У меня складывается ощущение что вы мои комментарии вообще не читаете. Я вам 2 раза повторил что это Actionscript3 код, даже в статью изменения внес, а вы мне скриншоты с AS2 показываете. new Object() и {} как и new Array() и [] — разные объекты. Если бы я верил хэлпу, я бы таких ошибок не находил.

Почитайте комментарии к этой записи раз не видите разницы: juick.com/develar/470233
Я понял в чем причина недопонимания.

Это AS3. И вы изменили код.


Это относилось к первой части моего первого коммента. За это извиняюсь.

А в 3 AS:
new Object() и {} как и new Array() и [] — разные объекты


С этим да, согласен, а я всё про второй.

Мой любимый ctrl+enter.
Я рад что мы поняли друг друга :)
Да, во истину:)

Но все равно как-то странно. Если вы проверяли в CS4 под 10 плеер — то это одна история, под неё не смотрел.

У меня он четыре раза выводит трейс. AS 3.0 =)

Ни о каких: a 2, a 1, с 1 не идёт речи.
Выводит: a 1, c 1, a 2, b 1.

Ниже после первого цикла протрейсить без присваивания, — все показывает правильно. c1, a2, b1. Почему такой порядок — уж не знаю.
> Если вы проверяли в CS4 под 10 плеер
Именно.

> Ни о каких: a 2, a 1, с 1 не идёт речи.
Так выводит debug плеер

> Выводит: a 1, c 1, a 2, b 1.
Так обычный плеер
new Object() и {} как и new Array() и [] — разные объекты

Просветите, пожалуйста, в чем разница?
В принципе {} является самым базовым объектом. Если взглянуть на push code как создаются объекты видно разницу, а если судить по ситуации с изменением переменных в цикле — Object более высокоуровневый чем {}. Именно благодаря этому скорость создания {} выше чем у Object.
На нем и пишется добрая (скажем 89,26%) часть всех баннеров.


Хм, на самом деле я слышал о цифре в 89.27%… )

Вы просто по-разному округлили цифру 89,26500529874242 %.
маленькая неточность:

К тому же наличие Flash может сильно ударить по доходам appStrore от казуальных играх и мини приложений.

90% скачиваний из аппстора — бесплатные приложения, денег эпплу и так не приносят. «ударить по доходам» — расхожий миф.
На недавней презентации Джобс сказал что из аппстора загрузили 3 миллиарда приложений.
Ок, если 10% из них были платными, итого 300 миллионов платных приложений. При минимальной цене в .99$ (а средняя значительно выше), это вполне прилично.
Давайте по порядку:

а) Аргумент, что флеш «тяжелый» меня уже порядком задолбал — страницы сайтов с скриптами весят уже по 100-300 Кб, про видео с YouTube, которое смотрят большинство жалующихся, я уже и не говорю (обычно от 10 Mb). Кроме того, ваш размер в 1.5 Мб — явный перебор, возможно, связанный с Flex 4, который еще не вышел из беты + debug, а не release-версия. Обычный размер Flex-приложения — в пределах 500-1000 Кб.

б) Тормознутость.
Во-первых, совершенно правильно замечено про кривость рук отдельных разработчиков, которые хотят эффекты понавороченнее, и вставляют в баннеры, например, системы частиц и используют устаревшую AS2.
Во-вторых, ряд фанатов использует на своих сайтах wmode=«transparent», что означает, что анимация флешки должна проигрываться с учетом слоев браузера (и его фона, кстати). Представляете, какая это нагрузка на систему рендеринга? Silverlight, думаю, такого не позволяет — а если бы и позволял, то тормозил бы не хуже. Отрубить это безобразие — и все залетает.
В-третьих: вас же не просят сделать на JS что-нибудь трехмерное? А на флеше — просят, вот и слава богу, что он не «завешивает» при этом браузер окончательно.

в) Совместимость версий.
Из этого фрагмента мне начинает казаться, что автор вообще не кодил под Flash. Ибо написать что-нибудь, что существенно зависит от изменения минорной версии флеша мне не удалось ни разу в жизни, а прогал я немало. В мажорных вводятся новые API и там, конечно, нужно за этим следить, например в 10-й версии ввели шейдеры на Pixel Bender. Но в остальном — полный бред, особенно касабельно каких-то изменений в релизах, выходящую каждую неделю.
а, б) Объясните это все пользователям никак не связанным с разработкой.
в) Это ваше мнение. На мой взгляд количество написанного кода никак не связанно с обнаружением ошибок. Для поиска багтрекер Adobe открыт, посмотрите задачи с точным указанием версии, раз не верите мне.
а) У меня чаще спрашивают «будет ли работать SEO», а жалобы на размер я уже давно слышу только от гиков. От «пользователей, никак не связанных с разработкой» — ни разу не слышал. Другое дело, что это касается Flash-приложений, а не баннеров, но для баннеров я и не видел, что кто-то юзает Flex SDK.
б) Практически то же, что и а. Видели бы вы, какие пользователи выбирают шаблоны на TemplateMonster — они подтормаживают даже у меня. И ничего, сайты с ними вполне себе делают, а другие — смотрят и говорят «Сделайте мне такой же».
в) Я против того, что вы называете version hell, поскольку с этим разработчики сталкиваются редко. Это все равно что жаловаться, что у Firefox постоянно выходят минорные релизы, или что Windows качает апдейты — в них же тоже что-то меняется, разве не так? Просто система сложная, вот и все. Но средний разработчик, как правило, этих изменений даже не замечает, так же, как и средний пользователь.
a) Возможно у нас разные пользователи. Есть пользователи с плохим интернетом, я стараюсь думать и о них тоже.
б) Выбирают их не пользователи а создатели. Большинство пользователей вообще негативно относятся к flash сайтам.
в) Есть такая категория пользователей как корпоративные пользователи, которые делятся на 2 под категории — у кого администратор обновляет flash плеер до последней актуальной версии вне зависимости минорная или нет, и другая, когда новую версию ставят в случае когда Adobe рассылает бюллетень безопасности с предупреждением о закрытии важной дырки. Вы сейчас говорите с позиции «я этого не видел — значит этого нет», так бывает, и поверьте если вы с этим не сталкивались это очень хорошо.
+1 по всем пунктам :)

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

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

«Yes, Flash player crashes. Yes, its performance could be better…

[But] Try building a player that runs a huge range of dynamic content written on a variety of tools (some of which you don't control) by developers with massively varying skill levels. Now try making it compatible, consistent, and performant across dozens of OSes, browsers, platforms, and devices. And maintain backwards compatibility with the last 9 versions even while your target platforms change… And try to keep up with the demands of one of the most active and vocal developer communities.

Trust me, it's harder than it sounds (and it sounds pretty damn hard to me).»

Черт, это все слишком сложно, чтобы это работало быстро, хорошо и без глюков :)

Знаю, что говорю, поскольку сам развиваю Fuzzle CMS (cms для flash-сайтов). Мне поступает уйма предложений по усовершенствованию — одному срочно нужна одна фича, другому — срочно другая + часть меня терзает на тему скорости и совместимости + есть необходимость в развитии модулей + постоянная головная боль на тему совместимости версий.

Так что я бы скорее сказал, что я удивлен, что Windows и Flash Player вообще работают :))
Открою тайну, через некоторое время, я покажу один проект который хоть и не является конкурентом Flex, но позволяет реализовать большую часть его возможностей в маленьких и средних проектах.
На хабре покажите? Или как отследить публичный показ?
Покажу. Ну и некоторую предрелизную информацию буду выкладывать в твиттер.
Ясно. Спасибо большое
В сильверлайте есть возможность рендерить плагин с прозрачностью еще с первой версии msdn.microsoft.com/en-us/library/cc838156(VS.95).aspx

Естественно производительность падает с этой включенной фичей, но на маках сильверлайт все равно так не тормозит. Ну и производительность сильверлайта в целом где то на 30 -50 процентов лучше. К примеру вот тест человек проводит www.shinedraw.com/mathematics/flash-vs-silverlight-fps-meter-stress-test/ да и в инете полно других примеров.

Это было к коментарию janvarev и к этим строкам:
«Во-вторых, ряд фанатов использует на своих сайтах wmode=«transparent», что означает, что анимация флешки должна проигрываться с учетом слоев браузера (и его фона, кстати). Представляете, какая это нагрузка на систему рендеринга? Silverlight, думаю, такого не позволяет — а если бы и позволял, то тормозил бы не хуже. Отрубить это безобразие — и все залетает.»

Сорри забыл вставить в комментарий.
UFO just landed and posted this here
Вносит изменения в swf файл для возможности работы с памятью напрямую.
UFO just landed and posted this here
Да, изменение байт кода. Нет не умеет.
UFO just landed and posted this here
Холиварить не буду, просто мысли вслух:
1) практически у всех хабраюзеров стоят резалки флеша
2) флеш жутко тормозит и этот факт признает автор
3) также он признает, что разрабатывать flash приложения сложно из-за плохого IDE
4) в итоге все проблемы флеша списали на головы разработчиков

В то же время Silverlight имеет хорошую IDE и маленькую распростаненность. Почему то и первый и второй пункт ставят в «минусы» данной технологии. Значит <i<очень маленькая распространенность flex должна быть какбы еще большим минусом. В то же время разработка приложений в блокноте также относят к «плюсам» флеша, но ведь и .net приложения можно в нем писать, вопрос — зачем?

Как-то вот опять двойными стандартами пахнет…
1) Тут своеобразные люди.
2) Мак и частично линукс или при кривом написании. Взгляните на плеер youtube или работы с thefwa.com там работы написаны хорошо.
3) Есть FDT, Flash Develop и IDEA. Плохая IDE во Flash, во Flex IDE на базе Eclipse — так что к нему это не относится.
4) Это не так. Во многом технология хорошая и полезная, я лишь описал те проблемы о которых замечают пользователи.

Если вы считаете что flash плеер плох — удалите его совсем, если вы сможете без него активно серфить по интернету без желания установить, тогда стоит говорить что технология не нужна и плоха.

В то же время разработка приложений в блокноте также относят к «плюсам» флешаВ то же время разработка приложений в блокноте также относят к «плюсам» флеша

Возможность разработки.
Насчёт тормознутости Flash'а.
Тут кто-то уже говорил про систему частиц в баннере.

Можно сделать stage.graphics.clear каждый кадр, заново рисовать Sprite'ы и цеплять таймер на каждую частицу. В инете таких примеров миллион.

А можно использовать bitmapData, lock и copyPixels.

Между подходами разница по скорости в десятки раз, только ну кому надо баннер оптимизировать? Работает и ладно. Да и не знают в большинстве случаев об этом. Даже о cacheAsBitmap не знают.

Так что тормоза эти за счёт лени и кривых рук. Ну и отчасти заказчиков которые хотят чтоб реклама вся светилась и вращалась.

Machinarium разве тормозит? )
Мне понравились риторические вопросы в статье:-)
«Почему все приложение на flash такие тяжелые?». То есть автор не спрашивает на самом деле, а утверждает, что ВСЕ, ТЯЖЕЛЫЕ. Здесь автору стоит знать, что откомпилированный swf файл имеет размер, сравнимый а вероятно даже МЕНЬШИЙ, чем тот-же объем кода на javascript в UTF-8. Готов доказать.

Далее интереснее.
Почему все так жутко тормозит и глючит, баннеры отжирают по 90% CPU?
Никто не интерисуется, просто скромно утверждается что ВСЕ, ТОРМОЗИТ!
На самом деле все просто. Возьмите любой тормозящий банер на flash… и сделаете его на javascript или на html 5 или на чем-то, что поддерживается 95% пользователей. Элементарно. Расскажите о результатах.

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

Резюмируя — статья не объективна. Говоря другими словами — заведомо написана с целью очернения flash.
Здесь автору стоит знать, что откомпилированный swf файл имеет размер...

Автор прекрасно знает про байткоди про LZW компрессию.

Статья бъективна чуть менее чем полностью. Я flash разработчик уже более 6 лет и в общем пишу до сих пор. Я писал ответы на распространенные вопросы, обычных пользователей, о чем говорил выше в комментариях. И почитайте мои комментарии, вы поймете в чем суть статьи ну и возможно разубедитесь в том что я мало знаю о flash.
Поскольку мои утверждения указывают на необъективность статьи, предлагаю вам их опровергнуть.
Насчет тормозов Мака и Линукса — думаю, виноваты разработчики этих систем. Вместо того, чтобы дать нормальные интерфейсы для вывода видео/аудио (типа DirectX), они понаставили всяких X-серверов, OpenGL, все это сложно, постоянно меняются спецификации, я вообще удивлен что в Линуксе работает звук и видео.

А вообще, по-хорошему, мультимедиа-программы должны иметь максимально прямой доступ к железу, чтобы все данные шли напрямик, без лишних переключений контекста и копирований данных (ибо копирование областей памяти — одна из самых неэффективных операций, никакие кеши не спасают, жаль разработчики меня не слышат).
Не след виндо-троллям про другие системы квакать…
вы, по ходу, не «железячник» раз закидываете такими кричащими тезисами)) Сделайте напрямую.
> мультимедиа-программы должны иметь максимально прямой доступ к железу, чтобы все данные шли напрямик, без лишних переключений контекста и копирований данных (ибо копирование областей памяти — одна из самых неэффективных операций, никакие кеши не спасают,

Вы о чем вообще?.. Максимально прямой доступ хотите, ну так подумайте сперва как потоки будут смешиваться, когда например вы будите слушать музыку (медиа-плейер захватил аудио-железку всецело и выжимает «все частоты», дабы вы смогли насладиться великолепным качеством звучания) и тут вдруг аська захочет обратить на себя внимание. Музыка стоп, проигрывается звук аськи, затем музыка играет дальше. Вы точно этого хотите?

Подумайте зачем придумали ALSA, если есть OSS.

Чтобы вас услышали разработчики, пишите им на e-mail а не на хабре воздух сотрясайте.
В 99% времени у меня играет один поток :) А если появляется какой-то другой звук, пакеты данных должны конечно перенаправляться в микшер, а после его завершения (другого звука) — снова идти напрямик. Появляется небольшая задержка — не ее можно обойти размером пакета в 1/20 секунды например, а чтобы программу не дергать 20 раз в секунду, она может выставлять очередь из нескольких пакетов сразу.

То есть когда источник один, звуковая карта читает память процесса, а когда несколько — пакеты из памяти процесса читает микшер. Просто, согласитесь?

> зачем придумали ALSA, если есть OSS.

Понятия не имею. Слышал, что с обеими библиотеками есть заморочки.
трололо.
Где вы в Макоси X-сервер нашли (не, он там конечно есть, но не является основой графической системы и вообще является просто userspace-приложением)? В макоси есть Quartz Extreme — аппаратное ускорение графики, и оно прекрасно работает.
А вот флеш почему-то тормозит лол.

А линуксу конечно есть куда расти в плане скорости работы гуя и графики в целом, но все уже не так плохо :)
Конечно, он там есть (не линуксовый X-сервер конечно, а похожая штука, только еще и поддерживающая PDF), как оно по вашему окошки рисует? Что вы несете?

developer.apple.com/graphicsimaging/overview.html почитайте.
Чувствую разработчики RuTube-плеера «выгребут» от руководства :-)
> К тому же их развитие в компании Adobe остановилось еще во времена CS2.
Ась?
Во времена CS2 известная киргизская строительная контора еще не успела захавать макромедию.
Корректнее было бы «во времена Studio 8» :)
со всем готов смирится, кроме одного. Не знаю как у кого, но даже самая последняя версия флеш-плеера не позволяет вводить utf-8 символы (у меня убунту 9.10)
Абсолютно беспонтовая статья.

> В этой статье я бы хотел рассказать от технологии flash со стороны разработчика и рассказать что, почему и как.
Как flash-разработчик прокомментирую — раскрыть тему даже не попытались.

И да, так почему же, все-таки, банеры тормозят?
Потому, что там инструкция на единственной рисованной кнопке (не компоненте) on (release) { getURL('habr.ru'); } написана с использованием AS2?
Нет, не поэтому. А потому, что векторная анимация не слабо так жрёт процессор. А вылизывать и оптимизировать нечто стоимостью 50-100$ будут не все и не всегда. Да к тому же оптимизировать надо ещё и по весу, а оптимизация по весу и размеру процессы не всегда однонаправленные, часто совсем наоборот.
Flash IMHO самая open-source-developer-friendly среда.

Тут смотрел на последний проект — шесть! open-source компонент. Причём вставка их — скачал, добавил, вызвал, profit. Никаких тебе рысканий по инету потому как «используется curl, а для него надо это, а для этого надо это...»

Насчёт среды разработки — flex/flash builder == visual studio + visual assist

Да и вообще, в повседневной работе стало проще на flash/flex'е написать что-то чем тащить Qt или там VS


Тут вроде бы все ясно, должно быть:

a 2
b 1
с 1


Не могли бы вы мне пояснить, пожалуйста, почему в output'e вы ожидаете именно a=2, b=1, c=1 а не a=1, b=1, c=1?
Мне кажется, что должны отобразиться только старые значения свойств «p»(trace выполняется раньше p[prop] =2)?
А новые значения (a=2, b=2, c=2), мы сможем увидеть только при повторном переборе.

Сори, да моя ошибка. Там изначально было вместо p[prop] — p[«a»], просто забыл изменить.
Sign up to leave a comment.

Articles