JavaScript
Logo języka | |
Pojawienie się |
4 grudnia 1995; ponad 28 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 |
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].
Zastosowania
[edytuj | edytuj kod]Najczęś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
[edytuj | edytuj kod]ECMAScript
[edytuj | edytuj kod]W 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
[edytuj | edytuj kod]Od 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
[edytuj | edytuj kod]Począ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
[edytuj | edytuj kod]Interakcja
[edytuj | edytuj kod]Wszystkie 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
[edytuj | edytuj kod]Przeglą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 | edytuj kod]- 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
[edytuj | edytuj kod]Przypisy
[edytuj | edytuj kod]- ↑ 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 | edytuj kod]- 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)