Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

W pogoni za standardami?

W ostatnim czasie kręcę się wokół języka programowania JS(JavaScript) i różnymi jego zastosowaniami takimi jak Node.js czy JetPack SDK. Przeglądając dokumentację czy gotowe przykłady znalazłem metody i zwroty nigdy nie spotykane w skryptach internetowych, myślę więc sobie znów Google i Mozilla bawią się w jakieś swoje nowatorskie rozwiązania.

Minęło trochę czasu i przyszło mi napisać skrypt eksportujący obiekt do formatu JSON zadanie to jednak okazuje się ciężkie, tym bardziej, że nie opanowałem jeszcze perfekcyjnie operacji na obiektach i nie znam nawet wszystkich metod! Odwiedzam więc strony Mozilli poświęcone językowi JS, wertuje kolejne podstrony i uczę się nowych elementów ale widzę, że część zostanie wprowadzona przykładowo dopiero wraz z Firefox4... Coś mnie tknęło, żeby zobaczyć zmiany w kolejnych wersjach JavaScriptu.

I w tedy się zaczęło, siedzę już nie wiem, którą godzinę i nadziwić się nie mogę jakie fajne rzeczy zostały powprowadzane, nagle odnajduje elementy, które wcześniej widziałem tylko we wspomnianym JetPack SDK i Node.js! Dobiega bardzo późna godzina nocna, stwierdzam, że muszę iść spać, jutro sobie wszystko pooglądam. Co prawda byłem tak uradowany odkryciem, że nie mogłem zasnąć jeszcze przez spory czas ciągle rozmyślając o nowych możliwościach, domyśliłem się też powodu dla, którego nigdy wcześniej nie spotkałem się z takim kodem było to oczywiście zasługą IE6 no ale jutro się dowiem.

Zaraz po śniadaniu siadam więc z powrotem przed komputer, sprawdzam, która przeglądarka obsługuje, którą wersję. Niestety takiego scenariuszu nawet nie wyśnił bym w koszmarze! Okazuje się, że poza FF2+ i IE9 rozwój przeglądarek w tym kierunku zatrzymał się 11 lat temu!!!!!! No ale myślę: "chwileczkę ale jednak w Node.js widziałem takie rzeczy (node.js opiera się na silniku V8 czyli tym od Chrome)" niestety jednak Chrome kończy swoje wsparcie na wersji 1.7 i to bardzo niepełnej jest więc tym samym opóźnione o 6 lat, z Operą jest jeszcze gorzej no i niestety nadzieja prysła...

Wniosek:
Jeszcze do wczoraj myślałem sobie czyżby Chrome to nowy wzór zgodności i aktualności standardów? Największe wyniki w benchmarkach, test HTML5 przechodzi pozostawiając konkurencję w tyle! Dziś już wiem, wprowadzają rozwiązania mające stać się standardem w roku 2014 a nie potrafią sobie poradzić z tymi, które powstały 6 lat temu. Bardzo miło zaskoczył mnie natomiast MS ze swoim IE9 zawierającym wersję powstałą w zeszłym roku w lipcu. Wzorem nadal pozostaję Firefox, który jako jedyny na bieżąco wprowadzał nową funkcjonalność. Praktycznie każdy większy skok numeracji odzwierciedlał zastosowanie nowej wersji JS (FF1, 1.5, 2, 3, 3.5, 3.6, 4). Nic, będę czekać na JS 2.0 może zrobi to choć trochę szumu jaki wywołał HTML5 i zmusi to twórców przeglądarek do unowocześnienia swoich produktów.

Wersje JS a wsparcie przeglądarekZmiany w wersjach JSNode.js bardzo ciekawa sprawa, być może kiedyś największa konkurencja PHPJetPack odpowiedz Mozilli na Chrome addons SDK czyli zupełnie nowy sposób tworzenie rozszerzeń nie wymagający restartu, Mozilla chyba jednak słabo docenia ten pomysł bo rozwój jest powolny.

Najprostszy sposób na sprawdzenie czy przeglądarka przyznaje się do obsługi standardu jest kod <script language="javascript1.7">alert(1.7);</script> Gdzie wpisujemy odpowiednie cyfry (1.5, 1.6, 1.7, 1.8, 1.8.1, 1,8,5) jak się można jednak przekonać nie zawsze deklaracja zgodności idzie w parze ze stanem faktycznym, a wtedy pozostaje już tylko sprawdzanie odpowiednich funkcji.
 

Komentarze

0 nowych
XeonBloomfield   5 #1 25.02.2011 18:51

Brawa dla autora.

Wcale nie jest tak tragicznie w innych przeglądarkach.

XeonBloomfield   5 #2 25.02.2011 18:52

@wszerad:

Dodaj do wpisu przykładowy kod testujący obsługę danej wersji JS:
alert(1.5);
alert(1.6);
alert(1.7);
alert(1.8);

przemo_li   11 #3 25.02.2011 18:53

Nawet IE9 jest w tyle za FF4, bo nie obsługuje jeszcze ECMAScript 5 Strict Mode

przemo_li   11 #4 25.02.2011 19:03

Dodam jeszcze, że sytuacja nie jest aż tak tragiczna. ECMAScript 3 (inna nazwa na JS), i edycja 5, to tylko "małe", najważniejszy jest 'strict mode', który przygotowuje pole pod edycję 6.

Edycja 4 czyli te wszystkie rozszerzenia i dość konkretne zmiany zrywające ze zgodnością wstecz, umarła gdy twórcy przeglądarek nie byli w stanie się dogadać co do konkretów. Dlatego powstała 5, dodająca ciekawe nowości, ale bez rewolucji.

ECMAScript to specyfikacja JS, która powstała gdy twórcy przeglądarek (w czasach gdy jeszcze Fx nie istniał) zrozumieli, że muszą uzgodnić "wspólny mianownik", bo twórcy stron i tak niechętnie korzystają z "dodatków" wspieranych tylko przez pojedyncze przeglądarki.

Opinię o ECMAScript 5 można zobaczyć tutaj:
http://hacks.mozilla.org/2011/01/ecmascript-5-strict-mode-in-firefox-4/

  #5 25.02.2011 19:49

Jakby spojrzeć na to wszystko to żeby zrobić stronę internetową bardziej rozbudowaną to trzeba html, css, javascript, php, czasem flash. Nie można stworzyć jednego języka do tego wszystkiego ? Programując np. w C czy Pascalu to najwyżej można wrzucić wstawki w assemblerze. Niech zostanie stworzony jeden język do stron to wszystkim będzie łatwiej.

wszerad   5 #6 25.02.2011 20:45

W JS można zrobić już zdecydowanie większość. Projekt Node.js umożliwia napisanie kodu wykonywanego po stronie serwera i możliwościami naprawdę niewiele ustępuje innym językom. Po stronie klienta również JS ma bardzo szerokie możliwości i jak by się uprzeć to można było by napisać stronę zawierającą tylko jeden tag HTML poza tymi podstawowymi. Ja mocno trzymam kciuki za JS i wierze, że czeka nas bardzo ciekawa przyszłość:D

XeonBloomfield   5 #7 25.02.2011 23:24

@wszerad:

"Gdzie wpisujemy odpowiednie cyfry (1.5, 1.6, 1.7, 1.8, 1.8.1, 1,8,5) [...]"

W "1,8,5" masz przecinki zamiast kropek. Powinno być "1.8.5".

przemo_li   11 #8 26.02.2011 07:33

"jak by się uprzeć to można było by napisać stronę zawierającą tylko jeden tag HTML poza tymi podstawowymi"

Obecny trend to html jak najwięcej w formie wcześniej przygotowanej i niezaśmieconej JS. Który wędruje do innego pliku, nic nie zostaje w pliku ze znacznikami, a wszystko co ma robić robi po załadowaniu htmla, tak jest prościej i czytelniej.

  #9 26.02.2011 20:10

Google przecież intensywnie korzysta z JSa, w Google Documents, Calc, ogólnie Docs. Ma także jakieś narzędzia do debugowania JSa czy coś.

Patrząc na cały późniejszy rozwój tego JSa i to mocno udokumentowane sprawy na serwerach Mozilli, nie czujecie, że jest to jakby bojkot Google i Opery? HTML5, wolne kodeki, inne silniki java script jakoś robią, Opera 11, coś i nadal mają obsługę takiego starego JSa? Myślicie, że to jest banał na miarę: "JS jest stary w Operze i Chromie bo to słabe przeglądarki i twórcy nie potrafią go dobrze zaimplementować."

Cały interfejs facebooka opiera się na JSie, a całe to dynamiczne odświeżanie komunikatów czy postów na tablicach jest o niebo płynniejsze w Operze czy Chromie niż w Firefoksie stabilnym pomimo niby tej doskonałości w aktualizowaniu JSa.

Nie znam całej sprawy, tak samo jak i wy by stwierdzić tego przyczynę : )

  #10 01.03.2011 14:07

Macie tu wasze niezaimplementowane rzeczy: http://dev.opera.com/articles/view/javascript-array-extras-in-detail/

  #11 01.03.2011 14:14

I jeszcze radzę najpierw zobaczyć tutaj co wspiera Opera: http://www.opera.com/docs/specs/presto27/ecmascript/

fenixproductions   6 #12 02.03.2011 01:06

@wszerad
Musze Cię zmartwić, ale wsparcie dla HTML5/CSS3 też stoi na niższym poziomie niż się wydaje. Dużo tagów jest wciąż nie wspieranych (głównie nowości związane z formularzami) lub wymaga magicznych właściwości (-moz-border-radius != border-radius).