In dieser Kurzpräsentation wird ECMAScript genauer vorgestellt. Insbesondere die Themen "Was ist ECMAScript", Wer steckt dahinter, die Geschichte & Entstehung, Vergleiche der verschiedenen Versionen inklusive Zeitstrahl, Transpiler (Trans Compiler) sowie Kompatibilität und Akzeptanz der Browser vorgestellt.
2. ‒Was ist «ECMAScript»
‒Wer steckt hinter ECMAScript?
‒ Geschichte und Entstehung
‒ ES 5
‒ ES 2015 (ES 6)
‒ ES 2016 (ES 7)
‒ ES 2017 (ES 8)
‒Transcompiler
‒ Unterschiede derVersionen ES5 <-> ES6
‒ Kompatibilität / Akzeptanz in Browsern
‒ Fragen & Antworten
Agenda.
3. Was ist ECMAScript
arcade solutions ag
- ECMAScriptTM ist eine Skript Sprachen Spezifikation
- Standardisiert von ECMA International mit ECMA-262 & ISO/IEC
16262
- Ins Leben gerufen um verschiedene Skriptsprachen mit all ihren
Dialekten wie JavaScript, JScript &ActionScript usw. zu
standardisieren
- ECMAScript wird auch mit „ES“ abgekürzt
4. arcade solutions ag
- ECMA International ist die Firma / Konsortium hinter ECMA
Standard
- Gründung 1961 (sic!) um Computer und Kommunikationssysteme in
Europa für Firmen zu vernetzen
- ECMA steht für «European Computer Manufacturers Association»
- ECMA ist seit Anfang in Genf (CH) beheimatet
- Unterschiedliche Standards veröffentlicht (CD Rom, CLI, FAT16, C#,
Open XML, JSON …
Wer steckt hinter ECMA Script
ECMA International
5. arcade solutions ag
- Brendan Eich (Netscape) entwickelte ein Skript Standard mit
Namen dem «Mocha», später «LiveScript» und schlussendlich
«JavaScript»
- 1995 Sun Microsystems & Netscape veröffentlichten
Pressemeldung für neuen Standard
- 1996 Netscape Navigator 2.0 unterstützt JavaScript
- Nach diesem Erfolg entwickelte Microsoft auch eine Client-
Skript Sprache: «JScript» (IE 3 – 1996)
- Netscape beantragte bei ECMA International eine Schaffung
Standards (ECMA-262)
- Browserkrieg: Microsoft gegen Netscape
Beide versuchten ihren Standard durchzusetzen
- Beide Browser unterstützten die minimalen ECMA Standards
köderten aber die Entwickler mit eigenen Extra Features
Geschichte von ECMA Script
ECMA International
8. Änderungen /Verbesserungen
ECMAScript 5 (2009)
arcade solutions ag
- „Normales“ JavaScript
- Erweiterte Fehlerprüfung eingeschaltet (strict mode)
- Entschärfung unklarer Sprachkonstrukte aus ECMAScript3
- Neue Features (getter- & setter-Methoden …)
- JSON Unterstützung
- 100% Browser Support (ab 2013)
ECMAScript 5.1 (2011)
- internationalen Standard ISO/IEC 16262:2011,Version 3
9. Änderungen /Verbesserungen
ES 2015 (ECMAScript 6)
arcade solutions ag
- Neue Syntax für komplexe Applikationen wie Klassen und Module –
(ähnliche Terminologie wie ECMAScript 5)
- Neue Funktionalitäten in der Standard Bibliothek
- Neue Sprachbestandteile (for/if), Python angelehnte Syntax
- Codename „Harmony“
- Bis kurz vorVerabschiedung ECMAScript 6
10. Änderungen /Verbesserungen
ES 2016 (ES7)
arcade solutions ag
- Array.prototype.includes
> ['a', 'b', 'c'].includes('a')
true
> ['a', 'b', 'c'].includes('d')
false
- Exponenten Operator (Potenzfunktion)
x ** y
- diverse Anpassungen anGeneratoren
- Ab dieserVersion folgt nun jährlich eine ES Release
11. Änderungen /Verbesserungen
ES 2017 (ES8+)
arcade solutions ag
- async / await works using generators and promises
- diverse Object-Funktionen
- …
- ES Next referenziert auf zukünftigeVersion (in Bearbeitung)
Mehr Proposals als Standards (not finalized)
14. Transpilers
ES6
arcade solutions ag
- Translate + Compiler =Transpiler:
- Compiler übersetzen Code einer Sprache in ein andere (Java zu
ByteCode)
- Transpiler übersetzen Code in derselben Sprache in
unterschiedliche Versionen z.B. von ES6 zu ES5
- TranspilerTools (ES6)
- Traceur (Google)
- Babel
- TypeScript (Microsoft)
Quelle: https://kangax.github.io/compat-table/es6/
19. Nice to now
arcade solutions ag
- Internet MediaType: „application/ecmascript“
- Dateierweiterung „.es“
- ES NEXT! Dynamische ESVersion
- JavaScript ist eineTrademark mittlerweile von Oracle und in
Zusammenarbeit mit Mozilla Foundation
- ES6 is backward compatible with ES5, which is backward
compatible with ES3
Browserkriege
JSCRIPT – Microsoft (um Rechtsverletzungen zu umgehen)
Javascript – Netscape
Actionscript – Flash von Macromedia -> Adobe
https://en.wikipedia.org/wiki/List_of_Ecma_standards
Ecma International is responsible for several standards, including:
ECMA-6 – 7-bit Coded Character Set (based on ASCII), also approved as ISO/IEC 646[5]
ECMA-35 – Character Code Structure and Extension Techniques, also approved as ISO/IEC 2022[6]
ECMA-48 – Control Functions for Coded Character Sets, also approved as ISO/IEC 6429[7]
ECMA-107 - FAT12/FAT16 file system
ECMA-119 – CD-ROM volume and filestructure (later known as ISO 9660)[8]
ECMA-130 – CD-ROM "Yellow Book" format
ECMA-262 – ECMAScript Language Specification (based on JavaScript)[9]
ECMA-334 – C# Language Specification[10]
ECMA-335 – Common Language Infrastructure (CLI)[11]
ECMA-341 – Environmental design considerations for electronic products[12]
ECMA-363 – Universal 3D File Format[13]
ECMA-367 – Eiffel: Analysis, design and programming Language (See Eiffel programming language)[14]
ECMA-372 – C++/CLI Language Specification[15]
ECMA-376 – Office Open XML (later known as ISO/IEC 29500)
ECMA-377 – Holographic Versatile Disc (HVD) Recordable Cartridges[16]
ECMA-378 – Read-Only Memory Holographic Versatile Disc (HVD-ROM)[17]
ECMA-388 – Open XML Paper Specification[18]
ECMA-402 – ECMAScript Internationalization API Specification[19]
ECMA-404 – JSON[20]
ECMA-408 – Dart language specification[21]
ECMA-412 - Access Systems
Current members include
Brendan Eich (Mozilla, JavaScript inventor),
Allen Wirfs-Brock (Mozilla), Dave Herman (Mozilla), Brandon Benvie (Mozilla),
Mark Miller (Google), Alex Russell (Google, Dojo Toolkit), Erik Arvidsson (Google, Traceur), Domenic Denicola (Google), Luke Hoban (Microsoft),
Yehuda Katz (Tilde Inc., Ember.js),
Rick Waldron (Boucoup, jQuery), and many more
1 / Juni 1997 / erste Version
2 Änderungen zwecks Kompatibilität zum internationalen Standard ISO/IEC 16262
3 reguläre Ausdrücke, bessere Verarbeitung von Zeichenketten, Kontrollfluss, Fehlerbehandlung mit try/catch, bessere Fehlerbehandlung, bessere Formatierung bei der Ausgabe von Zahlen usw.
4 Wegen Uneinigkeit in Bezug auf die Zukunft der Sprache wurde die weitere Entwicklung des komplexen Entwurfes zu ECMAScript 4 eingestellt. Einige Ideen werden in ES6 wieder aufleben.
https://www.ecma-international.org/ecma-262/7.0/#sec-scope
ECMAScript 4 stirbt, 3.1 wird als ECMAScript 5 released
2013: Alle wichtigen Browsers sind zu 100% kompatibel mit ECMAScript 5
ECMAScript 6 wird zu ECMAScript2015
2016: Release ECMAScript 2016
2017: ECMAScript 2017
Jedes Jahr soll eine neue Version rauskommen… -> Quelle: Wikipedia
- Im „strict mode“ wird eine erweiterte Fehlerprüfung eingeschaltet.
- Unklare Sprachkonstrukte von ECMAScript 3 werden entschärft und neue Features wie getter- und setter-Methoden, - - Unterstützung von JSON usw. hinzugefügt
Neue Syntax für komplexe Applikationen wie Klassen und Module, die aber mit ähnlicher Terminologie wie in ECMAScript 5 (strict mode) definiert werden können.
Neue Sprachbestandteile wie for/of-Schleifen, teilweise an Python angelehnte Syntax usw.
Der Codename lautet “Harmony” und wurde bis kurz vor Verabschiedung als „ECMAscript 6“ bezeichnet.
destruktiven Zuweisungen?
destruktiven Zuweisungen?
http://kangax.github.io/compat-table/es2016plus/
- Compilers translate code one language to another ex. Java to bytecode
Transpilers translate code to the same language
There are several transpilers that translate ES6 code to ES5
Traceur (Google) https://github.com/google/traceur-compiler/
Babel https://babeljs.io/
TypeScript (Microsoft) http://www.typescriptlang.org/
http://kangax.github.io/compat-table/es6/
- Compilers translate code one language to another ex. Java to bytecode
- Transpilers translate code to the same language
There are several transpilers that translate ES6 code to ES5
Traceur (Google)
Babel
TypeScript (Microsoft)
http://es6-features.org/#ClassDefinition
http://es6-features.org/#ArrayElementFinding
https://babeljs.io/
let stooges = ['Moe', 'Larry', 'Curly'];
for (let stooge of stooges) {
console.log(stooge);
}
https://github.com/google/traceur-compiler
http://google.github.io/traceur-compiler/demo/repl.html#
let stooges = ['Moe', 'Larry', 'Curly'];
for (let stooge of stooges) {
console.log(stooge);
}
- Im „strict mode“ wird eine erweiterte Fehlerprüfung eingeschaltet.
- Unklare Sprachkonstrukte von ECMAScript 3 werden entschärft und neue Features wie getter- und setter-Methoden, - - Unterstützung von JSON usw. hinzugefügt