JavaScript
JavaScript, w skrócie JS – skryptowy oraz wieloparadygmatowy język programowania, stworzony przez firmę Netscape, najczęściej stosowany na stronach internetowych. Twórcą JavaScriptu jest Brendan Eich[2]. W połowie lat 90. XX wieku organizacja ECMA wydała na podstawie JavaScriptu standard języka skryptowego o nazwie ECMAScript, aktualnie rozwijaniem tego standardu zajmuje się komisja TC39[3].
Logo języka | |
Pojawienie się |
4 grudnia 1995; ponad 29 lat temu[1] |
---|---|
Paradygmat |
Język skryptowy wieloparadygmatowy (obiektowy, funkcyjny, imperatywny) |
Typowanie | |
Implementacje |
SpiderMonkey, V8, JavaScriptCore, Chakra, Rhino, Carakan, KJS |
Aktualna wersja stabilna |
ECMAScript 2024 |
Twórca | |
Platforma sprzętowa | |
Strona internetowa |
Zastosowania
edytujNajczęściej spotykanym zastosowaniem języka JavaScript są strony internetowe. Skrypty te służą najczęściej do zapewnienia interakcji poprzez reagowanie na zdarzenia, walidacji danych wprowadzanych w formularzach lub tworzenia złożonych efektów wizualnych. Skrypty JavaScriptu uruchamiane przez strony internetowe mają znacznie ograniczony dostęp do komputera użytkownika. Po stronie serwera JavaScript może działać w postaci node.js lub Ringo[4].
W języku JavaScript można także pisać pełnoprawne aplikacje. Fundacja Mozilla udostępnia środowisko złożone z technologii takich jak XUL, XBL, XPCOM oraz JSLib. Umożliwiają one tworzenie korzystających z zasobów systemowych aplikacji o graficznym interfejsie użytkownika dopasowującym się do danej platformy. Przykładem aplikacji napisanych z użyciem JS i XUL może być klient IRC o nazwie ChatZilla, domyślnie dołączony do pakietu Mozilla. Microsoft udostępnia biblioteki umożliwiające tworzenie aplikacji JScript jako część środowiska Windows Scripting Host. Ponadto JScript.NET jest jednym z podstawowych języków środowiska .NET. Istnieje także stworzone przez IBM środowisko SashXB dla systemu Linux, które umożliwia tworzenie w języku JavaScript aplikacji korzystających z GTK+, GNOME i OpenLDAP. Platforma Node.js umożliwia pisanie aplikacji wiersza poleceń oraz aplikacji serwerowych. Node.js używany jest także w środowisku Electron, który umożliwia pisanie aplikacji GUI. Język JavaScript używany jest także na urządzeniach internetu rzeczy, robotów, czy układów takich jak Arduino poprzez bibliotekę Johnny-Five[5].
Historia
edytujECMAScript
edytujW 1996 r. organizacja ECMA rozpoczęła pracę nad specyfikacją języka JavaScript pozbawioną odniesień do środowiska interpretującego kod. Język opisany w standardzie ECMA-262 został nazwany ECMAScript. Od tego momentu nazwa JavaScript oznacza jedynie jeden z nadzbiorów języka ECMAScript. Pierwsza wersja standardu była bliska JavaScriptowi w wersji 1.1. Trzecia jako pierwsza rozszerzyła istniejące implementacje. Wersja ES4 została całkowicie porzucona przez przeglądarki internetowe, korzystał z niej jedynie język ActionScript dla platformy Flash.
Od 2015 roku znacząco zmienił się proces tworzenia i wydawania nowych wersji ECMAScript. Po wersji ES5 wydanej w 2009 pojawiała się wersja ES6 wydana w 2015 roku, a następna już w 2016 (ES7, a właściwie ES2016). Zmieniło się również oficjalne nazewnictwo – wersja początkowo nazywana ES6 to teraz ES2015, potem jest ES2016, ES2017 itd[6].
Proces dodawania nowych funkcji do standardu opisującego JavaScript jest opisany w artykule TC39.
Dialekty
edytujOd czasu powstania JavaScriptu opracowywane były różne jego odmiany interpretowane za pomocą osobnych silników. Oprócz implementacji wprowadzonych do przeglądarek internetowych należy do nich ActionScript aplikacji Adobe Flash oraz UnityScript w silniku Unity (nie jest już on obsługiwany od wersji 2018.2[7]).
Wersja | Wydana | Okoliczności wydania | Ważniejsze rozszerzenia implementowanej specyfikacji[a][8] | przeg. |
spec. |
---|---|---|---|---|---|
1.0 | marzec 1996 | NN 2.0 | brak | ||
1.1 | sierpień 1996 | Klasy typów podstawowych, konstruktory, prototypy | NN 3.0 | brak | |
1.2 | czerwiec 1997 | Klasa zdarzenia | NN 4.0 | brak[b] | |
1.3 | październik 1998 | NN 4.06 | 2 | ||
1.4 | ? | Dostępna jedynie po stronie serwera (np. Netscape Enterprise Server). | 2 | ||
1.5 | listopad 2000 | Stałe, interfejs DOM poziom pierwszy i drugi | M 0.6 | 3 | |
1.6 | listopad 2005 | Mechanizm E4X | Fx 1.5 | 3 | |
1.7 | październik 2006 | Funkcje-iteratory, wielokrotne przypisania | Fx 2.0 | 3 | |
1.8 | czerwiec 2008 | domknięcia wyrażeń, wyrażenia generujące | Fx 3.0 | 3 |
Wersja | Wydana | Okoliczności wydania | Ważniejsze rozszerzenia implementowanej specyfikacji[a] | przeg. |
spec. |
≈ JS |
---|---|---|---|---|---|---|
1.0 | sierpień 1996 | IE 3.0 | brak | 1.0 | ||
2.0 | styczeń 1997 | IE 3.02 | brak | 1.1 | ||
3.0 | październik 1997 | IE 4.0 | 1 | 1.3 | ||
4.0 | ? | Visual Studio 6.0 | 1 | 1.4 | ||
5.0 | marzec 1999 | Częściowa implementacja trzeciej wersji standardu (bez mechanizmu wyjątków), interfejsy XMLHttpRequest oraz DOM poziom pierwszy i drugi | IE 5.0 | 2 | 1.5 | |
5.1 | sierpień 2000 | IE 5.01 | 2 | |||
5.5 | sierpień 2000 | IE 5.5 | 3 | |||
5.6 | październik 2001 | IE 6.0 | 3 | |||
5.7 | listopad 2006 | IE 7.0 | 3 | |||
.NET | 11 lipca 2000 | Microsoft na bazie wstępnej wersji specyfikacji ECMAScript 4 stworzył JScript.NET. | 4 | ? |
Java
edytujPoczątkowo Netscape nazwała nowy język LiveScript. Nazwa została jednak szybko zmieniona na JavaScript wskutek biznesowych porozumień pomiędzy Netscape a firmą Sun Microsystems (współwłaścicielem znaku handlowego JavaScript jest Oracle Corporation, które przejęło Sun Microsystems w 2010 roku). Skrypty JavaScriptu oraz aplety Javy (mimo odrębności tych dwóch języków) mogą się wzajemnie komunikować dzięki dostępnej w przeglądarkach Netscape, Mozilla i Opera technologii LiveConnect. Często występują pewne nieporozumienia, lecz JavaScript i Java to mimo wszystko dwa różne języki.
JavaScript dla WWW
edytujInterakcja
edytujWszystkie implementacje JavaScriptu dostępne w przeglądarkach internetowych dostarczają obiektów reprezentujących drzewo dokumentu. Mogą także umożliwiać tworzenie ciasteczek, manipulowanie oknami przeglądarki, wyświetlanie prostych okien dialogowych, pobieranie informacji o przeglądarce, zarządzanie jej pluginami oraz arkuszami stylów. Reagują także na zdarzenia wywoływane w interfejsie.
Podczas manipulowania zawartością dokumentu problem stanowił brak jego ustandaryzowanego modelu. W czwartym pokoleniu przeglądarek dostęp do niektórych elementów dokumentu w Netscape możliwy był przy użyciu kolekcji document.layers
, za to w Internet Explorerze – document.all
. Organizacja W3C opracowała jednak jednolity obiektowy model obsługiwany przez wszystkie współczesne przeglądarki (w tym Operę od wersji 6, Konquerora od wersji 3 oraz Safari). Tablice all
i layers
zostały uznane za przestarzałe i wsparcie dla nich zostało praktycznie wycofane.
W języku HTML za umieszczanie skryptów JS odpowiedzialny jest element <script> z opcjonalnymi argumentami type o wartości text/javascript (typ MIME) i language o wartości javascript . Atrybuty były używane gdy inne języki skryptowe były używane. Od HTML5 nie są potrzebne, choć typ MIME może być podany[9][10].
|
<script type="text/javascript" language="JavaScript 1.5" >
alert(12 > 6);
</script>
<!-- współczesna składnia -->
<script>
alert(12 > 6);
</script>
|
Jeżeli kod znajduje się w dokumencie XHTML, w celu uniknięcia zinterpretowania niektórych operatorów jako elementów składni języka należy otoczyć skrypt sekcją CDATA lub zapisać je w postaci encji[11]. W XHTML nie można używać argumentu language w znaczeniu określenia wersji języka JS (atrybut, jeżeli jest użyty, powinien przyjąć dwuznakowe wartości opisane standardem ISO 639-1 dotyczące języków naturalnych, np. EN, DE, PL).
|
<script type="text/javascript">
/* <![CDATA[ */
alert(12 > 6);
/* ]]> */
</script>
|
Zewnętrzne skrypty dodawane są także przy użyciu powyższego znacznika, uwzględniając jedynie parametr src z nazwą pliku zawierającego kod skryptu. Typ MIME dla samodzielnych plików JavaScript to application/javascript lub przestarzały text/javascript [12].
|
<script type="text/javascript" src="code.js"></script>
|
Skrypty modułowe, ładujące zależności dynamicznie, muszą być oznaczone przez type="module" [9][10].
|
<script src="js/main.js" type="module"></script>
|
Transpilatory
edytujPrzeglądarki oraz język JavaScript stały się platformą do obsługi innych języków. Istnieją transpilatory, które konwertują pliki innego języka na JavaScript. Z najbardziej znanych można wymienić:
Istnieją także transpilatory nowszej wersji języka, na wersje starsze, które będą obsługiwane przez większą liczbę przeglądarek. Dzięki temu można korzystać z nowości, dodanych do języka, zanim zostaną dodane przez przeglądarki. Przykładem takiego narzędzia jest Babel.
Zobacz też
edytuj- Składnia Javascriptu
- WebAssembly
- JSON (JavaScript Object Notation)
- Szczególne zastosowania JavaScriptu:
- DOM – obiektowy model dokumentu
- DHTML – modyfikacja elementów dokumentu
- XMLHttpRequest – pobieranie zewnętrznych dokumentów
Uwagi
edytujPrzypisy
edytuj- ↑ Informacja prasowa – „Netscape and Sun announce JavaScript”. (ang.).
- ↑ Paul Krill: JavaScript founder Brendan Eich: WebAssembly is a game-changer. InfoWorld, 2016-03-10. [dostęp 2016-12-21]. (ang.).
- ↑ Standard ECMA-262. www.ecma-international.org. [dostęp 2016-12-29].
- ↑ Ringo.
- ↑ Johnny-Five: The JavaScript Robotics & IoT Platform.
- ↑ ES5, ES6, ES2016, ES.Next: What’s going on with JavaScript versioning?. benmccormick.org.
- ↑ UnityScript’s long ride off into the sunset. [dostęp 2019-05-19]. (ang.).
- ↑ Wersja 1.1 – Features added after version 1,
- Wersja 1.2 – Feature Summary,
- Wersja 1.3 – New Features in this Release,
- Wersja 1.5 – New features in JavaScript 1.5,
- Wersja 1.6 – New in JavaScript 1.6,
- Wersja 1.7 – New in JavaScript 1.7,
- Wersja 1.8 – New in JavaScript 1.8.
- ↑ a b HTML Standard [online], html.spec.whatwg.org [dostęp 2021-11-10] .
- ↑ a b The Script element – HTML: HyperText Markup Language [online], MDN [dostęp 2021-11-10] (ang.).
- ↑ Osadzanie skryptów w XHTML. [dostęp 2007-05-07]. [zarchiwizowane z tego adresu (2007-04-20)].
- ↑ B. Hoehrmann , Scripting Media Types, RFC 4329, IETF, kwiecień 2006, DOI: 10.17487/RFC4329, ISSN 2070-1721, OCLC 943595667 (ang.).
Linki zewnętrzne
edytuj- Specyfikacja języka ECMAScript
- Zasoby Mozilla Developer Network na temat JavaScriptu
- Włączenie obsługi JavaScript w przeglądarkach internetowych
- Sławomir Wilk: Wyłącz JavaScript i sprawdź, jak szybko może działać Internet – Technologie. 2013-12-10. [dostęp 2020-05-09]. [zarchiwizowane z tego adresu (2019-10-25)]. – artykuł o zaletach wyłączenia obsługi JavaScript w przeglądarce internetowej
- JavaScript: The First 20 Years. [dostęp 2022-02-06]. (ang.). – Historia Języka JavaScript podczas konferencji PLDI 2021 (wideo)