Trwają prace nad JITB - szybkim, alternatywnym odtwarzaczem Flash

20.08.2010 21:18, Autor: Wojciech Cybulski (Nicolass), Kategoria: News
NewsImage

Programista Joa Eber ujawnił na swoim blogu, że pracuje nad własną implementacją odtwarzacza Flash, który w niektórych zastosowaniach jest sporo szybszy od oryginalnego Adobe Flash Playera.

Prace nad JITB rozpoczęły się jakiś czas temu, jednak Eber dopiero teraz ujawnił, że ma zamiar stworzyć własną wersję odtwarzacza Flash. Jego autorski Flash Player może być w niektórych sytuacjach o wiele bardziej wydajny od pierwowzoru wydanego przez Adobe. Projekt wykorzystuje wirtualną maszynę Java do uruchomienia kodu ActionScript i działa prawie tak szybko, jak natywne projekty napisane w Javie. Gdy JITB osiągnął dość wysoki poziom zaawansowania, jego twórca przygotował film demonstracyjny prezentujący możliwości JITB. Dalsze prace zaowocowały dodaniem do odtwarzacza Flash renderera Display List, który bazuje na OpenGL - ponadto Eber wzbogacił swój projekt o kolejne linijki niezbędnego kodu. Twórca JITB zapowiedział już, że jego celem jest wdrożenie do odtwarzacza kompletnego API technologii Flash. Joa Eber liczy, że w prace nad JITB zaangażują się inni programiści. Szczególnie mile widziani są specjaliści od OpenGL.

Warto zauważyć, że projekt JITB nie jest pierwszą próbą stworzenia alternatywy dla oryginalnego Flash Playera. Z ujarzmieniem technologii Flash zmagało się w tym roku już kilku deweloperów. Ich głównym celem było uruchomienie obiektów SWF w przeglądarkach internetowych zainstalowanych na telefonach, odtwarzaczach i tabletach Apple, które z definicji nie obsługują tej technologii. Niestety stworzone przez nich porty, takie jak Smokescreen czy Frash nie zyskały zbytniej popularności. Czy JITB nie podzieli ich losu i odniesie sukces? Czas pokaże.

r   e   k   l   a   m   a

Komentarze (36)  

AvatarUżytkownik jest nieaktywny
trux | 20.08.2010 21:28#1

Flash made in Adobe to straszny muł. Nie dziwię się że powstają nowe implementacje tego standardu. Jedno co mnie zastanawia w tym projekcie, to użycie javy.

Avatar
Kell (niezalogowany) | 20.08.2010 21:51#2

Mogę pomóc projektowi w kwestii OpenGL. Same Display Listy są archaicznym mechanizmem, dlatego warto wzbogacić player o nieco nowsze VBO. Znam OpenGL 3.2, więc mogę się zająć utrzymaniem rozwiązania we względnej świeżości. Może dodać obsługę programów GPU do AS?

Avatar
herr (niezalogowany) | 20.08.2010 21:57#3

Nareszcie dobry flash pod linuxem i BSD?

AvatarUżytkownik jest nieaktywny
Nicolass (redakcja) | 20.08.2010 22:00#4

@Kell: Skontaktuj się z twórcą ;-)

Avatar
mikosik (niezalogowany) | 20.08.2010 22:01#5

hahaha, to żart? operacje w javie są tak wydajne, że hoho...

Avatar
Anonim (niezalogowany) | 20.08.2010 22:09#6

Miło słyszeć że i na tym rynku pojawia się konkurencja - powinno to zmotywować adobe do poprawy swojego produktu celem zatrzymania przy sobie użytkowników. Ale i tak wszystko zależeć będzie od javy - wolnej aczkolwiek przenośnej javy....

Avatar
Anonim (niezalogowany) | 20.08.2010 22:09#7

@trux
Akurat grafika we Flashu jest o wiele wydajniejsza od Common Control Library/GDI+, Gtk+/Cairo czy Qt/Arthur.

AvatarUżytkownik jest nieaktywny
kam104 | 20.08.2010 22:25#8

@mikosik
to może taki żarcik do tego :D

Puk puk.
- Kto tam?
(długa cisza)
- Java.
Puk puk.
- Kto tam?
- C++
Puk puk.
- Assembler.

AvatarUżytkownik jest nieaktywny
aptu | 20.08.2010 22:47#9

Co do javy i jej rzekomej powolności, to macie przestarzałe informacje.

Avatar
Entwickler (niezalogowany) | 20.08.2010 23:20#10

@aptu - odpal sobie klienta poczty Lotus Notes (najnowsza wersja, zdaje sie 8.5) pisanego w Javie i dla porownania "muła" od Microsoftu czyli Outlooka pisanego w C++ i zobaczysz jaka Java jest szybka.

AvatarUżytkownik jest nieaktywny
TestamenT | 21.08.2010 0:18#11

Program napisany w assemblerze jest w tedy szybki jeżeli programista wie co robi, to samo tyczy się Javy.

Więc sporo zależy od samego programisty.

AvatarUżytkownik jest nieaktywny
c0m4r | 21.08.2010 1:14#12

Update: Please do not think that this implementation is 30x faster than the Flash Player developed by Adobe. One(!) microbenchmark is never a number you should count on. I would like to make clear that I never said this.

AvatarUżytkownik jest nieaktywny
fffatman | 21.08.2010 7:18#13

@TestamenT: Dlatego program w .NET-cie nigdy nie będzie.

Tera będzie dowcip:
- Jestem programistą.
- W czym programujesz?
- W .NET-cie.

Java powolna? Czyżby ktoś ostatni kontakt z Javą miał przy maszynie wirtualnej MS?

Avatar
ArnieJ. (niezalogowany) | 21.08.2010 10:17#14

Java jest szybka. Kiedyś nie była tak dopracowana jak teraz. Dzisiaj powolność Javy to już mit.
Rację ma TestamenT, że wiele zależy tu od programisty. Java ma stosunkowo niski "próg wejścia" dlatego łatwo jest zacząć programować w tym języku. Natomiast do tworzenia dobrego kodu potrzeba już nieco doświadczenia.

AvatarUżytkownik jest nieaktywny
Gas | 21.08.2010 10:59#15

Zrobilem maly test aby zobaczyc co i jak z ta java.
----------
java - java RE 1.6.21
c++ - Qt 4.6.3
C# - MSVC# 2010 Express .NET 4.0
----------
----------
Funkcja testowa:

static long fib(long l)
{
long x=0;
if (l<2) x=1;
else x=fib(l-1)+fib(l-2);
return x;
}
----------
Wyniki w milisekundach:

fib(30)
java wynik: 16
c++ wynik: 0
c# wynik: 16

fib(35)
java wynik: 110
c++ wynik: 47
c# wynik: 141

fib(40)
java wynik: 1265
c++ wynik: 563
c# wynik: 1531

fib(45)
java wynik: 13968
c++ wynik: 6297
c# wynik: 16703

Avatar
revvvv (niezalogowany) | 21.08.2010 11:29#16

"hahaha, to żart? operacje w javie są tak wydajne, że hoho..."
Panie programisto javy ileż to pan tego softu napisał w javie?
@Gas
tego typu teściki obśmiano na miliard sposobów bo niby co to ma wspólnego z rzeczywistością?

Zastanawia mnie jedno używa facet javy super, ale skoro jak już chce jak by to powiedzieć używać 'flashowej jav' to jest javafx :E

Avatar
Kell (niezalogowany) | 21.08.2010 11:43#17

@autor:
>@Kell: Skontaktuj się z twórcą ;-)
Nie omieszkam spróbować

@Gas:
.NET i Java nie są językami przeznaczonymi do zadań obliczeniowych, toteż ich mniejsza wydajność jest całkowicie wybaczalna.

@fffatman:
Programowanie w .NET i Java to ta sama liga - programowanie przemysłowe w nieskomplikowanych językach. Jendak zapewniam Cię,że jak przyjdzie Ci pracować nad projektami dużych rozmiarów będziesz traktować to poważniej.

Programista, aby być konkurencyjnym, powinien potrafić dziś programować w wielu językach - prostych, takich jak assembler i C, przemysłowych takich jak C# i Java, ogólnego przeznaczenia, takich jak C++, oraz funkcyjnych, takich jak Haskell i F#, Scala. Te ostatnie w szczególności świadczą o wysokich zdolnościach programisty.

AvatarUżytkownik jest nieaktywny
Gas | 21.08.2010 13:20#18

revvvv (niezalogowany) | 21.08.2010 11:29
Kell (niezalogowany) | 21.08.2010 11:43

Jakbycie posiadali jakas wiedze to zuwazylbyscie, ze ta funkcja nie robi nic oprocz alokacji pamieci - czyli test jak najbardziej zyciowy. No, chyba, ze ja mam jakis felerny procek, ktory nie potrafi wykonac 50 dodawan w 20 sekundach...

Odpowiada to m.in za responsywnosc gui (choc tu java doklada kolejna warstwe (lub dwie i wiecej) wiec i tak bedzie wolniejsza od .NETu), wydajnosc przy obliczeniach rozproszonych na watki (np gry, gdzie oblicza sie zachowanie tysiecy dynamicznie ladowanych obiektow), itd, itp.

Wydajnosc przy alokacji pamieci to sprawa kluczowa. Dlatego np. nikt nie robi rozbudowanegi GUI w javie.

AvatarUżytkownik jest nieaktywny
Gas | 21.08.2010 13:24#19

"Programista, aby być konkurencyjnym, powinien potrafić dziś programować w wielu językach - prostych, takich jak assembler i C, przemysłowych takich jak C# i Java, ogólnego przeznaczenia, takich jak C++, oraz funkcyjnych, takich jak Haskell i F#, Scala. Te ostatnie w szczególności świadczą o wysokich zdolnościach programisty."
Kolejnym poziomem abstrakcji na tej twojej wyliczanej drabinie bedzie chyba LOGO. Jak umiesz programoewac w LOGO to juz jestes master i zarabiasz 100k na reke tygodniowo.
Nastepny poziom to LEGO. Takie wtajemniczenie osiagaja tylko nieliczni smiertelnicy.

Avatar
Kell (niezalogowany) | 21.08.2010 13:34#20

@Gas:
Wściekły człowieku, nie odnosiłem się do Twojego przykładu, lecz ogólnych zarzutów dot. mniejszej wydajności Javy i .NET od C++.

Poza tym, skoro już zarzucasz komuś niewiedzę, przyjrzyj się swojej funkcji i zastanów się dobrze, czy wykonujesz tam 50 dodawań... Zbłaźniłeś się haniebnie...

Avatar
revvv (niezalogowany) | 21.08.2010 14:05#21

@Gas a poszukać ci w internecie testów w których java dogania c++ ?? Bo je zwyczajnie widziałem i wszystko polegało też na takich obliczeniach. Dwa co do .net tajemnicą poliszynela jest powód przesunięcia wydania vs 2010 mianowicie powolność GUI. Swoją droga nie ma czegoś takiego jak responsywność w polskim słowniku. Implementacja wielowątkowości w javie(a także przypomnijmy swingworker) jest czasami trochę ograniczona z powodu przenośności. trzeba przyznać w ostatnich latach swing został bardzo przyśpieszony. Oczywiście też nie ma co mówić od takiego kodu c/c++ java będzie wolniejsza(podobnie programy w .net) ale obecnie dystans się zmniejszył jak 8 lat temu(twój test pokazywałby że z wydajnością jest tragicznie a nie jest). Po trzecie takie języki jak java,c# itd. powstały po to żeby przyspieszyć pracę programisty.

Avatar
(Kell) (niezalogowany) | 21.08.2010 15:03#22

@revvv:
Program w Javie/.NET może być szybszy od programu w C++. Często mając do dyspozycji kiepskiego programistę C++ i dobrego kodera .NET/Java lepiej temu drugiemu powierzyć zadanie napisania specjalistycznej aplikacji (dużych projektów obsługiwanych z linii poleceń). Kiepski programista C++ nie jest w stanie zaimplementować sprawnego mechanizmu GC, ani nawet skorzystać z gotowego (Boehm) w rozsądny sposób, zamiast tego będzie naiwnie alokować i zwalniać pamięć gdzie się da. Zyskiem będzie mniejsze zużycie pamięci przez program, ale w przypadku specjalistycznych narzędzi masowo przetwarzających dane często jest to sprawa drugorzędna. Natomiast mechanizm GC maszyn wirtualnych CLR i JVM jest na tyle "inteligentny", żeby nie zwalniać od razu niepotrzebnej pamięci, a poczekać, aż uzbiera się jej więcej, oszczędzając tym samym czas zmarnowany przez kiepskiego programistę C++ na częste bezpośrednie odniesienia do pamięci.
Więc:
- dobry programista .NET - 150 WTF/min - wykona szybki program w krótkim czasie, nie popełni wielu błędów
- kiepski programista C++ - 1500 WTF/min - będzie walczył z segfaultami, przez co jego praca będzie trwała dłużej, aplikacja będzie miała przeciętną architekturę, a wydajnością będzie porównywalna z .NETowym odpowiednikiem.

W przypadku aplikacji okienkowych Java i .NET znowu mają przewagę jeżeli chodzi o prędkość powstawania aplikacji.

Oczywiście dobry programista Haskella wykona zadanie najszybciej i najwydajniej :P
W Haskellu mamy:
- Funkcyjny paradygmat - opisujemy transformację danych
- GC podobny do tych z Javy i .NET
- Polimorfizm parametryczny (coś jak template z C++, lecz o wiele potężniejsze)
- Statyczne typowanie -> mniej bugów
- Type class!
- Ogromny, usystematyzowany zbiór bibliotek
- Piękno matematyki - strzałki, monady, funktory
Haskell jest wykorzystywany w przemyśle, lecz niestety w wąskim zakresie, z uwagi na małą liczbę programistów tego języka wynikającą z tego, że język wymaga sporej wiedzy matematycznej (teoria kategorii...) do sprawnego posługiwania. Język ten poznałem na mojej alma mater, UJ (polecam każdemu tutaj, jak również inne uniwersytety - kształcą programistów, nie zaś klepaczy), i bardzo go sobie cenię.

Avatar
Anonim (niezalogowany) | 21.08.2010 15:05#23

Kell (niezalogowany) | 21.08.2010 13:34
revvv (niezalogowany) | 21.08.2010 14:05

Dobra dobra. Talk is cheap - jak to mowi amerykanie.
Wklejcie mi tu kod javy, ktory wykona sie szybciej lub podobnie szybko jak w C++.

Przetestowalem pierwszy lepszy algorytm z netu. I specjalnie nie uzylem takiego, ktory liczy na tablicach, bo by sie java nogami nakryla.

Czekam na wasz kod.

AvatarUżytkownik jest nieaktywny
Gas | 21.08.2010 15:13#24

(Kell) (niezalogowany) | 21.08.2010 15:03
Bardzo pieknie, tylko tu mowa o szybkosci dzialania , a nie szybkosci pisania. Smiem watpic, ze to drugie przyswiecalo tworcy tego programu.

Avatar
revvv (niezalogowany) | 21.08.2010 15:23#25

http://blog.cfelde.com/2010/06/c-vs-java-performance/
http://blog.cfelde.com/wp-content/uploads/2010/06/cpp_vs_java_diagram.png

@Kell ale ja to wiem :D

BTW. Swoją drogą jak pamiętam z testów jeśli idzie o sama prędkość javy pomiędzy platformami to na linuks działa szybciej wszystko oprócz interfejsów(i ogólnie 2d) które jest koszmarnie wręcz wolne.

Avatar
herr (niezalogowany) | 21.08.2010 15:53#26

BTW: JITB vs Lightspark?

AvatarUżytkownik jest nieaktywny
Gas | 21.08.2010 16:10#27

revvv (niezalogowany) | 21.08.2010 15:23
Zanim wkleisz jakas bzdure , to chociaz przeczytaj co wklejasz. Polecam ostatni komentarz z tego co tam dales.
Juz nie wspomne o koszmarnym kodzie c++ jaki tam zastosowal ten spec od javy aby spowolnic petle.

Wciaz czekam na kod.

AvatarUżytkownik jest nieaktywny
Nicolass (redakcja) | 21.08.2010 16:27#28

@c0m4r: Dziękujemy za zwrócenie uwagi, tekst został zmodyfikowany, by usunąć zauważoną nieścisłość.

Avatar
revvv (niezalogowany) | 21.08.2010 17:08#29

http://reverseblade.blogspot.com/2009/02/c-versus-c-versus-java-performance.html
i możemy się tak zabijać że znajdę ci coś w czym java będzie lepsza. Nie mówię 'a na pewno c++ będzie wolniejsze od javy' tylko mówię że większość ludzi opisuje jave że potężna przepaść między c++ a javą tak jest różnica ale nie zawsze to nie wiadomo co. Tak jest sporo starego oprogramowania w javie pisanego i uruchamianego na 1.4 i tu będzie powoli stare mechanizmy + stare jvm.

Avatar
revvv (niezalogowany) | 21.08.2010 17:09#30

i przypatrz się javie na linuksie.

Avatar
policeman (niezalogowany) | 21.08.2010 17:24#31

"Dlatego np. nikt nie robi rozbudowanegi GUI w javie."
Oracle robi, np 3 podstawowe systemy inf dla Polskiej Policji sa cale w javie(od strony uzytkownika ofc - wyskakujace okno z javy okna przegladarki).
Dziala dokladnie tak jak mozna to sobie wyobrazic.
Poza tym nasza kochana policja w ciagu 6 lat wydala juz na to 500 mln zl :D

Avatar
Anonim (niezalogowany) | 21.08.2010 18:23#32

policeman (niezalogowany) | 21.08.2010 17:24
Zdziwilbym sie gdyby ci z Oracle zrobili to w czyms innym niz java.

Avatar
Lord Nikon (niezalogowany) | 22.08.2010 0:44#33

No, to weźcie się wszyscy do roboty i wspomóżcie projekt.

AvatarUżytkownik jest nieaktywny
witek-pl | 23.08.2010 14:56#34

przydałoby się szybko zastąpić tego nieefektywnego muła a najlepiej wywalić filmy we flash`u i zastąpić wydajniejszym kodekiem...

Avatar
maniek40 (niezalogowany) | 23.08.2010 15:15#35

A co ma flash do kodeka ? Kodek wszedzie jest (prawie) ten sam, h.264, a przez co i jak szybko jest to odtwarzane zalezy wyłacznie od tego czy plugin ma dostep do systemowego dekodowania. Apple ostatnio udostepniło swoje api do video i moze w koncu na makach zniknie "problem wiatraka".

Avatar
bartekc (niezalogowany) | 24.08.2010 15:55#36

@witek-pl "muła" :D muł to co najwyżej eksploatowany niewłaściwie komputer. A niestety jako konserwator systemów operacyjnych moge powiedzieć tyle, że nawet dobrzy programiści nie potrafią utrzymywać porządków na swoim komputerze, przez co ich systemy często się "mulą" - ale najłatwiej zwalić na flashplayera. Winny wszystkiemu, nawet sukcesom serwisów takich jak Youtube czy Vimeo :].
Poza tym, nie chce mi się poraz setny powtarzać, że to czy aplikacja muli zależy od programisty, który ją pisze - a często animacje reklam zamawianych przez nie mądrych właścicieli stron są robione przez grafików, którzy nie mają nic wspólnego z kodowaniem.

Dodaj komentarz

Zasady publikowania komentarzy
Autor
Treść
 
Polecamy
Recenzja MSI WindTop AE2410

Powiew świeżości?
Spotkajmy się na HotZlocie!

13-15 07 2012, Zamek na Skale
Recenzja nowego iPada

Rewolucja czy stagnacja?
Test Sharp AQUOS SH80F

Warto (byłoby) się szarpnąć
Top programy
  •  
Top programy ostatnie 7 dni
  •  
Top programy ostatnie 30 dni
  •  
Skanery antywirusowe
skaner av