Wydajność Flash Player’a od dawna była i jest problemem numer jeden zarówno użytkowników jak i programistów pracujących z Platformą Flash. Istnienie takich plugin’ów jak Unity3D czy O3D dodatkowo podsycają odczucie małej wydajności produktu Adobe. A tu jeszcze pojawia się magiczny HTML5, który ma stanowić rozwiązanie wszystkich problemów i ostatecznie “zabić” znienawidzonego Flash’a. Takie wizje szczególnie widoczne są w środowisku użytkowników produktów spod znaku jabłka. Ponieważ troszkę męczy mnie już to czarnowidztwo postanowiłem poszperać trochę po sieci i zrozumieć lepiej o co w tym wszystkim chodzi.

Pierwszym elementem jest zrozumienie istoty czym Flash Platform tak na prawdę jest. Ale może prościej będzie wyjść od tego czym Flash Platform nie jest. Nie jest to odtwarzacz audio/wideo (choć pełni taką rolę), nie jest to platforma do gier (choć również pełni taką rolę), nie jest to środowisko do robienia stron WWW (choć pełni taką rolę), nie jest to środowisko do robienia banerów i animacji (choć również pełni taką rolę). Skoro nie jest żadnym z powyższych to właściwie czy jest Flash?! W moim odczuciu definicja jest prosta – jest to bardzo rozbudowana platforma aplikacyjna, która na przestrzeni lat rozbudowała się w takim stopniu, że znalazła zastosowanie w praktycznie wszystkich obszarach internetu. Tego zanegować się nie da. Oczywiście większość powie – “jeżeli coś jest do wszystkiego to jest do niczego!” – ale czy w tym przypadku faktycznie ta prawda sprawdza się w 100%? Moim zdaniem nie.
Podstawowym (jedynym?) zarzutem stawianym Flashowi jest wydajność. Przeczytałem ostatnio masę postów i komentarzy pod nimi krzyczących “wiatraki w laptopie zagłuszają mi film na youtube”, a komputer może być używany jako patelnia do smażenia jajek. Oczywiście wszyscy odnoszą się do swoich odtwarzaczy wideo, które przecież praktycznie w ogóle nie zjadają mocy procesora albo do filmików sprzed 5 lat gdzie rozdzielczość wynosiła 320×240. Spierać się nie będę – choć jak dla mnie wysoka temperatura nie pozwala jajecznicy wystygnąć zbyt szybko, dzięki czemu spokojnie można przy niej oglądnąć cały odcinek “The Big Bang Theory”:). Wracając jednak do tematu. Oczywiście Ci wszyscy narzekający użytkownicy mają rację co do wydajności, ale ogromnym błędem jest odnoszenie się do VLC czy innego odtwarzacza wideo – to nie to samo! Jak już wspomniałem wyżej Flash nie jest odtwarzaczem wideo. Jego budowa jest dużo bardziej złożona, a podstawowym faktem jest to, że działa w przeglądarce internetowej. I tu przechodzimy do sedna sprawy i prostego wytłumaczenia dlaczego Flash zużywa więcej mocy CPU.
Flash jako plug-in przeglądarki internetowej (a właściwie wiele różnych przeglądarek) jest ograniczony ich możliwościami i wydajnością. Oczywiście Web Browser również odtwarzaczem wideo nie jest, więc i jego możliwości wyrafinowane nie są. Aktualnie w przeglądarkach internetowych używane są silniki rysowanie takie jak Quartz 2D czy QuickDraw, które tworzone były z myślą do renderowaniu stron HTML. Po bardziej szczegółowy opis odsyłam do bloga Tinic’a Uro. Ciężko zatem zarzucać Adobe lenistwo przy poprawianiu wydajności – to nie zależy tylko od nich. Oczywiście w tle słychać głosy, że cudownym panaceum będzie HTML5 i tag video – ale czy na pewno? Robiąc testy na youtube wcale nie zauważyłem różnicy w zużyciu procesora pomiędzy odtwarzaczem Flash a HTML5. Powód jest prosty – tag video boryka się z tymi samymi problemami i ograniczeniami co Flash!
Oczywiście powiecie teraz ze Unity 3D jakoś daje rade i nawet obsługuje OpenGL. I faktycznie będziecie mieli rację. Unity 3D zapewnia wydajność o jakiej użytkownicy Flasha marzyli od lat. Ale istotny jest fakt, że Unity3D i inne tego typu plug-in’y są zintegrowane z przeglądarką w zupełnie innym stopniu. Odmiennie niż Flash są to osobne aplikacje, niezintegrowane ze strukturą HTML działające jakby nad przeglądarką internetową. Choćby dlatego same zarządzają pokazywaniem i ukrywaniem swojej zwartości podczas przełączania się pomiędzy tab’ami przeglądarki. Nie oferują również możliwości ustawienia przezroczystego tła.
I tu pojawia się kolejne pytanie – w takim razie czemu Adobe nie poszło ich śladem?! Przecież skoro wydajność jest tak dobra to przeżyjemy brak transparentnego tła! Niestety nie doszukałem się precyzyjnej odpowiedzi na to pytanie – ale moim zdaniem jest ona prosta. Przy kompatybilności wstecznej, która jest kluczową zasadą Flash, taka zmiana architektury nie jest już możliwa. Platforma rozwijana od 14 lat nie może nagle powiedzieć – zostawmy co było i zacznijmy od nowa. No i czy dziś to w ogóle miało by sens?
Żyjemy w dobie niesamowitego tempa rozwoju sprzętu komputerowego. Z roku na rok procesory zwiększają swoją wydajność w zatrważającym tempie. Dopiero procesor Pentium 4 robił furorę a już pod strzechami mamy 4 takie procesory w laptopie! A w niedługiej przyszłości ilość rdzeni pójdzie w dziesiątki a nawet setki. Sprzęt nie będzie stanowiło bariery. Tym bardziej, że wraz z rozwojem hardware’u rozwija się oprogramowanie – czyli również przeglądarki WWW. Kwestią czasu jest udostępnienie przez nie dostępu do kart graficznych i silników tak potężnych jak OpenGL. Już pojawiają się doniesienia o wprowadzaniu WebGL. Może nie wszyscy jeszcze słyszeli o tym, że tak nienawidząca Flash’a firma jak Apple, współpracuje z Adobe nad udostępnieniem w przeglądarce silnika Core Animation – właściwie praca ta dobiega już końca czego możemy doświadczyć posiadając kombinację OS X 10.6, Safari 4+ oraz Adobe Flash Playera 10.1.
Podsumowując, Flash chyba nie jest taki zły i beznadziejny jak wszyscy go malują. Smutne jest to, że ludzie w swoich wypowiedziach zupełnie zapominają o tym, ile dobrego to środowisko przyniosło w ostatnich latach! Gdyby nie ono, do dziś siedzielibyśmy przy obrazkach oblanych tekstem walcząc o to, aby w każdej przeglądarce ten mizerny układ wyglądał tak samo. Same możliwości Flash Platform to jednak nie wszystko. I tu przemówi przeze mnie developer Flash, który jak większość zaczynał od HTML. Flash Platform daje przede wszystkim świetne narzędzia developer’sko/designer’skie. Oczywiście nie będę tu opowiadał, że AS jest lepszy od Javy, a Flex Builder przegania lata świetlne NetBeans, bo to nie prawda! Patrząc jednak na pracę z HTML i JS, Adobe Flash Platform wydaje się być duużo lepszy. Nie ma problemów z różnymi przeglądarkami (z drobnymi wyjątkami;), dostarcza dobry obiektowy framework, daje świetne narzędzia graficzne itd. Patrząc w przyszłość nie możemy zapominać, że te elementy mają spore znaczenie, a ich mnogość w przypadku Flash Platform może być kluczowa w “walce” takimi środowiskami jak Silverlight czy Java FX.
8 Comments
Muszę się nie zgodzić z całością wypowiedzi. Jak rozumiem autor wypowiada się ponieważ zna ludzi z Adobe i pewne fakty z którymi nie zapoznali się zwykli użytkownicy.
Ci jednak mogą czuć się troszkę zdenerwowani tym co obserwują podczas oglądania stron flashowych (nawet jeśli 99,99% błędów i innych nie miłych sytuacji jest spowodowane z winy webmasterów) to zwykłego użytkownika to po prostu nie obchodzi. Uważam że obecna zła sytuacja flasha (w sensie flashowego contentu na stronach) jest spowodowana przez kreatywów i/oraz firmy które puszczają w internet idiotyczne prezentacje całkowicie nie zoptymalizowane pod żadnym kontem (banerki zrobione w programie Adobe After Effects i wpuszczone swf jako ciąg plików jpg…). Spotykałem się z dobrze zarabiającymi grafikami flash którzy potrzebując akcji na stronie prosili developera o pomoc a nie potrafili poprawnie skopiować gotowego kodu (“to kolejność linijek kodu jest ważna? dlaczego?”) w najlepszych przypadkach kończyło się do zakończeniem współpracy…
Ja od siebie powiem, że zawiodłem się na flashu 10.1 ponieważ będzie pominięty support urządzeń z Windows Mobile na pokładzie. A bardzo liczyłem na ten target i jego reinkarnacje w oczach użytkowników np za sprawą takich telefonów jak HTC HD2. Uważam, że Android jest jeszcze nie niedorozwiniętym systemem i nie zmieni się to z dnia na dzień. O sprzęcie Apple nie wspominając…
Zgadzam się, że ogólna świadomość jest jeszcze słaba. W zeszłym roku na politechnice (z przyzwoitości pominę której) uczono, że flash jest zamknięty i nie nadaje się do pisania nawet prostych programów, ble ble w przeciwieństwie do Javy która moim zdaniem ma bardzo dużo elementów wspólnych.
Na szczęście to się powoli zmienia. Ludzie Pisza prace naukowe na temat flasha więc powoli zmienia również świadomość.
Kwestie używania flasha jako playera wideo uważam że można pominąć. Cała dyskusja krąży wokół jakiś nie stworzonych teorii włączając kręcące się wiatraczki w laptopie a tak naprawdę nie wiele osób zdaje sobie sprawę, ze sama wydajność playera w największej mierze przekłada się na rodzaj materiału, zastosowanej kompresji i innych “głupot”, o których taki typowy kreatyw czy zwolennik HTML 5 nie ma zielonego pojęcia; “bo po co czytać specyfikacje i kompresji wideo, to nikomu nie potrzebne! co z tego, że ma obrazki…”.
Zresztą S. Jobs prowadził kampanie reklamową pod tytułem nasze urządzenia nie są wybrakowane czy nie kompletne. To flash jest przestarzały! Za to mu płacą. Jest mnóstwo teorii mówiących dlaczego flash jest zły wg. Apple. Można się tylko zapytać dlaczego flash pochodzący z Apple Store i zostawiający marże od zysków dla Appla jest do zakceptowania.
Pozdrawiam
witam,
z java pracuje 10 lat (takze web development) i o ile flash byl nie do strawienia jeszcze jakies 2-3 lata temu to teraz sie to zmienilo (przynajmniej dla mnie).
Oto powody:
1.
szybkie lacza internetowe + szybkie komputery.
Laczac sie z obojetnie jakim portalem ciagniemy naprawde duuuuzo bajtow (nie chodzi tylko o flash) wiec wazniejsze jest czy serwis jest RIA niz czy wazy 100kB wiecej.
2.
wreszczie freeware/open source
Dla mnie jest to kluczowy powod aby chociaz spojrzec na jezyk programowania. Flex (polecam wersje 4 choc jest beta) jest dostepny za free i to jest naprawde magnes. Srodowisko eclipse (Flex/Flash Builder sa oparte o eclipse) jest dla mnie naturalne, gdyz od lat utzywam go do java.
3.
flex framework (sam w sobie)
jest prosty do nauki i dobrze udokumentowany. Sa video tutoriale i wiele blogow gdzie mozna naprawde czerpac wiedze. Dla mnie flex jest podobny do JSP ale bez jego wad i ograniczen. Mozliwosci graficzne dla mnie zabijaja html. Dodatkowo swietny jest mechanizm polaczenia z serwerami (np. java, php) uzywajac natywnego protokolu AMF (polecam).
4.
html + javascript
uzywamy tego polaczenia w firmie od lat. Problemy (wielkie) sa zwiazane z roznymi browserami oraz ich wersjami. Interpretacja JavaScript jest po prostu dowolna i ciezko jest klientowi wytlumaczyc problem.
5.
mentalnosc a la bo nie
flash-a wiekszosc osob nie lubi (ja tez tak mialem) bo … po prostu go nie lubi.
Moje ZYCZENIA do ADOBE:
1.
wsparcie na linux
Jest co prawda w labs jakas wersja ale dziala bardzo kiepsko. Naprawde duuuuzo osob uzywa linux i milo by bylo miec mozliwosc pisania we flash/flex pod linux-em.
2.
flash builder PROFI za free lub chociaz w przystepnej cenie
Jest co prawda wersja za free ale ma wielkie ograniczenia (np brak debugera). Mozna z tym zyc ale jest naprawde ciezko i komus moze sie znudzic/obrzydzic w koncu pisanie we flash-u
Ceny takze by mogli obnizyc. Taki przyklad ze swiata Java: JBuilder na poczatku byl swietny i kosztowal sporo. Wszyscy placili i plakali. Potem pojawila sie eclipse i … nie znam nikogo kto uzywa JBuilder.
to na tyle bo kodowac musze
Pozdrawiam
Albert
Uważam iż HTML i css znam dość porządnie (moją karierę zawodową rozpocząłem od tworzenia gui przy użyciu firmowego frameworka napisanego w JavaScripcie). Miałem również do czynienia z JSF (między innymi rozwijałem bibliotekę kontrolek opartych o RichFaces). Aktualnie pracuję (również między innymi
) nad budowaniem gui przy użyciu Flex’a i muszę stwierdzić jedno: jeśli chodzi o komfort programisty i możliwości (wizualne, interakcji) to po prostu nie ma żadnego porównania. Flex, pomimo swoich wad, bije wszystko na głowę i za żadne skarby nie powróciłbym teraz ani do JSF’ów ani , tym bardziej , do JavaScript … brrr …
Co do 2.
Flashdevelop jest za free i jest naprawde swietny
@przemeko
) jest tak, ze produkt firmowy jest w pelni zintegrowany i zoptymalizowany z SDK.
flashdevelop nie posiada wielu zalet/mozliwosci flashbuilder-a. Pozatym zawsze (moze przewaznie?
Co fajnego (moim zdaniem) ma Flashbuilder:
- debuger
- performace monitor
- network monitor
- ciekawe, wizualne narzedzia do tworzenia GUI (choc tu jeszcze troche pracy przed adobe)
- pomoc kontekstowa (nie mylic z podpowiedziami w kodzie)
Musze potestowac jeszcze InteliJ … jak bede mial troche czasu.
Swoja droga dobrze jest jak konkurencja, gdyz produkty rozw. sie szybciej i sa … tansze.
@Artifex
polityka: kazda firma ja uprawia – (nie)stety. Poniewaz adobe w open screen wspiera (wspieraja sie razem) nokie, androida, itd. to apple marudzi i nie chce wspierac flash na iphone. Tu nic dziwnego bo maja wsoje cocoa i boja sie, ze mozna bedziue kupowac aplikacje poza apple store. Adobe jednak potrafil obejsc ten problem i mozna flash konwertowac do paczek instalowalnych na iphone.
Moim zdaniem ciekawe jest to w jaki sposob adobe wspiera android-a. Na spotkaniu z pracownikiem Adobe dot mobilnych rozwiazan najwiekszy nacisk i epitety w stylu great i fantastic byly dla android-a, potem nokii. Apple nie byl milo przedstawiony. Uwazam jednak, ze jesli Jobs wyjdzie na wojne z adobe to uwazam, ze obie firmy straca.
pozdrawiam
Albert
Panowie, muszę
przyznać bardzo ciekawa dyskusja …
Ja z Marcinem się zgodzę. Kochałem kiedyś flash’a i
chyba nadal kocham, ale nie używam go już tak bardzo jak kiedyś.
A wykorzystywałem typowo w środowisku webowym. Przesiadłem
się teraz na xhtml / html 5 / js. No bannerki flashowe nadal są.
Co do wiatraków. Tak, to prawda WIATRAKI (macbook) mi szaleją, ale co ciekawe nie szalały tak bardzo gdy korzystałem pureMVC.
We flashu można zrobić wszystko, to wiemy – pytanie co dalej?
Pożyjemy zobaczymy!
Miłego dnia!
P.S. Jak nie wiadomo o co chodzi, to wiadomo o co chodzi …
Pozwolę dodać pewne newsy i uwagi.
@Artifex
Windows Mobile 7 i Flash Player 10.1 myślę, że jednak zostaną pożenione, za dużo plotek coś ostatnio np: http://ujeb.plvYKLSPvyTO
Dodatkowo wydajność 10.1 na Nexusie mnie powaliła http://www.bytearray.org/?p=1470 stronka ecodazoo(3D) śmiga, chociaż prawdopodobnie pożera baterie w telefonie. Dodatkowo Adobe ściąga Thibault Imbert z bytearray.org do pracy nad Flash Playera’em co bardzo cieszy bo to człowiek związany ze społecznością Flash’a i wie czego najbardziej oczekujemy. Myślę że oddech HTML5 na plecach Flash’a dał do myślenia Adobe bo konkurencja napędza technologie i miejmy nadzieje, że to Flash na tym skorzysta, bo jak nie to przyjdzie zmienić kwalifikacje
A i jak dla mnie, jeśli chodzi o projekty czysto ActionScript’owe to FlashDevelop jest moim “numero uno”.
@Artifex: Wszystkie informacje zawarte w tym poście pochodzą z ogólnie dostępnych zasobów sieciowych – linki zawarte w artykule;)
Co do Windows Mobile to nie przesądzałbym jeszcze braku wsparcia dla FP 10.1. W tym tygodniu odbędzie się konferencja Microsoft Mix gdzie maja pojawić się informacje na temat Windows Phone 7 – z tego co rozumiem następny Win Mobile (nie siedzę w temacie). Jak donosi Ryan Stewart (http://blog.digitalbackcountry.com/2010/03/flash-and-windows-phone-7/) Adobe współpracuje z MS nad udostępnieniem FPS 10.1 na ich platformę mobilną:)
Co do podejścia Apple to z pewnością Adobe reprezentuje odmienną politykę. Apple przygotowuje swoje produkty tak, że wszystko ma dziać super, a jak coś tego wymagania nie spełnia to i funkcjonalności brak (albo wprowadzana jest kontrola). Adobe udostępniło swoją platformę, pozostawiając sposób jej wykorzystania użytkownikom – więc jak głosi popularnych przykład kałacha – można go użyć w dobrym i złym celu. A poza tym, Apple ma iTunes, którego zyskami dzielić się nie chcą. Udostępniając konkurencyjną platformę dostarczania filmów i muzyki mogli by sobie strzelić w kolano.
@ago: Polecam IntelliJ:)
One Trackback
[...] odbiega zbytnio od wydajności HTML5 a wręcz potrafi być wydajniejszy. Oczywiście jak pisałem w poprzednim poście sprawa rozbija się o przeglądarki i to właśnie od nich zależy wydajność zarówno jednego jak [...]