====== [hemmerling] Web Technologies ( HTML5, HTML, XML & Javascript ) 3/5 - Javascript ======
Related pages:
*[[api.html|Application programming interface ( API )]].
*[[databases.html|Databases, Webserver, Webservices, SQL, XML]] -> XML.
*[[sframeworks.html|Software Frameworks]].
*[[uscripting.html|Scripting Programming Languages for Unix / Linux and Windows]].
*[[snetworks03.html|Social Networks 3/3 - IT / SystemEngineering Forums and IT / SystemEngineering Communities]].
*[[rest.html|Representational State Transfer ( REST )]].
*[[wasm.html|WebAssembly ( WASM )]].
*[[webtech.html|Web Technologies ( HTML5, HTML, XML & Javascript ) 1/5]].
*[[webtech02.html|Web Technologies ( HTML5, HTML, XML & Javascript ) 2/5 - HTML & CSS]].
*[[webtech04.html|Web Technologies ( HTML5, HTML, XML & Javascript ) 4/5 - Javascript Development Tools]].
*[[webtech05.html|Web Technologies ( HTML5, HTML, XML & Javascript ) 5/5 - Javascript Frameworks]].
===== Debugging & Testing of Javascript Applications =====
*See [[unittest.html|Unit Test / Module Test]].
*Testing of Node.js applications -> See [[webtech05.html|Web Technologies ( HTML5, HTML, XML & Javascript ) 5/5 - Javascript Frameworks]].
*Using the Node.js internal debugger: "node debug app.js".
===== Asynchronous JavaScript and XML ( Ajax ) =====
==== Tools ====
*[[http://www.eclipse.org/rap/|Eclipse "Rich Ajax Platform"]].
==== Resources ====
*[[http://en.wikipedia.org/wiki/Ajax_%28programming%29|EN.Wikipedia "Ajax (programming)"]], [[http://de.wikipedia.org/wiki/Ajax_%28Programmierung%29|DE.Wikipedia "Ajax (Programmierung)"]].
*[[http://en.wikipedia.org/wiki/Rich_AJAX_Platform|EN.Wikipedia "Rich AJAX Platform"]], [[http://de.wikipedia.org/wiki/Rich_Ajax_Platform|DE.Wikipedia "Rich Ajax Platform"]].
===== JSON, JSONP, BSON =====
==== Tools ====
*The OpenSource [[http://jsonviewer.codeplex.com/|CodePlex "JSON Viewer"]] for Windows.
*The OpenSource [[http://notepad-plus-plus.org/|Notepad++]], [[http://notepad-plus.sourceforge.net/|Sourceforge "Notepad++"]], [[http://www.sourceforge.net/projects/notepad-plus|Sourceforge "Notepad++"]] for Windows.
*[[http://nppjsonviewer.sourceforge.net/|SourceForge "JSONViewer Notepad++ plugin"]], [[http://www.sourceforge.net/projects/nppjsonviewer/|SourceForge "JSONViewer Notepad++ plugin"]] -> Notepad++ plugin "JSON Viewer" for WinXP.
*"JSONViewer Notepad++ plugin" 1.5 is the latest edition for W2k.
==== Online Services ====
*[[http://jsonformatter.curiousconcept.com/|JSON Formatter & Validator]].
==== Online Services for Random Data Generation ====
*[[http://www.json-generator.com/|JSON Generator - tool for generating random JSON data]].
*[[http://www.objgen.com/json|ObjGen - Live JSON Generator]].
*[[http://jsongen.pykaso.net/|On-line JSON data generator. Nice sample data generator]].
==== JSON and REST ====
*Event [[http://www.eventbrite.de/event/5382902406/|AutoUni "RESTful Webservices"]], speech of Stefan Tilkov "RESTful Webservices".
==== Suitable tools for finding Link Relations ====
*[[http://en.wikipedia.org/wiki/XPath|DE.Wikipedia "XPath"]], [[http://de.wikipedia.org/wiki/XPath|DE.Wikipedia "XPath"]]
*[[http://code.google.com/p/json-path/|Google Code "json-path. JsonPath implementation"]].
*[[http://www.goessner.net/articles/JsonPath/|Stefan Gössner "JSONPath - XPath for JSON"]].
==== Multimedia Standards based on JSON, to communcate Representations which include Multimedia Links, with JSON ====
=== HAL ===
*[[http://www.stateless.co/|Mike Kelly, Web Engineer. I like using technology to solve interesting problems]].
*[[http://www.stateless.co/hal_specification.html|Mike Kelly "HAL - Hypertext Application Language"]].
*Blog [[http://blog.stateless.co/|Mike Kelly - The Stateless Blog. Rational evolvability]].
*[[http://blog.stateless.co/post/13296666138/json-linking-with-hal|Mike Kelly - The Stateless Blog. Rational evolvability "JSON Linking with HAL"]].
*[[http://tools.ietf.org/html/draft-kelly-json-hal-05|JSON Hypertext Application Language. draft-kelly-json-hal-05]].
=== Collection+JSON ===
*[[http://www.amundsen.com/media-types/collection/|Collection+JSON - Hypermedia Type]].
=== Jackson as "Marshalling" Library ===
*[[http://jackson.codehaus.org/|Jackson High-performance JSON processor]].
*[[http://wiki.fasterxml.com/JacksonInFiveMinutes|Tatu Saloranta - FasterXML Wiki "JacksonInFiveMinutes"]].
*[[http://www.sivalabs.in/2011/03/json-processing-using-jackson-java-json.html|SivaLabs : My Experiments on Technology. Java, Struts, Spring, Hibernate, Ajax Tutorials, How-To's and Best Practices "JSON processing using Jackson Java JSON Processor"]].
*[[http://www.stackoverflow.com/questions/6342387/best-approach-for-marshaling-unmarshaling-immutable-objects-with-builder-pattern|Stack Overflow "best approach for marshaling unmarshaling immutable objects with builder pattern".]]
==== Resources ====
*[[http://www.json.org/|JSON - "Introduction to JSON"]], [[http://en.wikipedia.org/wiki/JSON|EN.Wikipedia "JSON"]], [[http://de.wikipedia.org/wiki/JavaScript_Object_Notation|DE.Wikipedia "JavaScript Object Notation"]].
*[[http://en.wikipedia.org/wiki/JSONP|EN.Wikipedia "JSONP"]] - "It provides a method to request data from a server in a different domain" :-).
*[[http://www.bsonspec.org/|BSON - Binary JSON]], [[http://en.wikipedia.org/wiki/BSON|EN.Wikipedia "BSON"]].
===== Protobuf =====
*Protobuf is an "alternative" to JSON.
*[[http://www.ionos.com/digitalguide/websites/web-development/protocol-buffers-explained/|IONOS Digital Guide "Protobuf: Structured Code with Protocol Buffers"]].
===== Responsive / Reactive Design / Atomic Design =====
==== Atomic Design by Brad Frost ====
*Blog [[http://bradfrostweb.com/|Brad Frost "brad frost web - Words That Would Otherwise Be Coming Out of My Mouth]].
*[[http://www.bradfrostweb.com/blog/post/atomic-web-design/|Brad Frost "Atomic Design"]], 2013-06-10.
*[[http://www.facebook.com/brad.frost.web.design|Facebook "Brad Frost Web. Local Business"]].
*[[http://www.twitter.com/brad_frost|Twitter " Brad Frost, @brad_frost"]].
*[[http://www.github.com/bradfrost|Github "Brad Frost"]].
*[[http://bradfrost.github.io/this-is-responsive/|Github.io "bradfrost / This is responsive"]].
*Slides [[http://www.slideshare.net/bradfrostweb|SlideShare "Brad Frost"]].
*Slides [[http://www.slideshare.net/bradfrostweb/atomic-design|SlideShare "Brad Frost: Atomic design"]].
*Videos.
*[[http://www.vimeo.com/67476280|Vimeo "Brad Frost – Atomic Design – beyond tellerrand 2013"]], 2013-05-27 - 2013-05-29.
*[[http://www.teamtreehouse.com/library/in-control-2014/atomic-design|TeamTreeHouse "In Control 2014 / Atomic Design"]].
*[[http://www.patternlab.io/|Pattern Lab]] - "Pattern Lab is a collection of tools to help you create atomic design systems".
*[[http://demo.patternlab.io/|Pattern Lab - Demo]], [[http://patternlab.bradfrostweb.com/|patternlab.bradfrostweb.com]].
==== Reactive Design ====
*[[http://www.reactivemanifesto.org/|The Reactive Manifesto]].
==== Responsive Webdesigns ====
*Experts told me that their responsive webdesign is based on:
*[[http://twitter.github.com/bootstrap/|Github "Bootstrap, from Twitter"]].
*[[http://www.jquery.com/|jQuery]].
*Wikipedia.
*[[http://en.wikipedia.org/wiki/Single-page_application|EN.Wikipedia "Single-Page Applications"]].
*[[http://en.wikipedia.org/wiki/Responsive_web_design|EN.Wikipedia "Responsive web design"]], [[http://de.wikipedia.org/wiki/Responsive_Webdesign|DE.Wikipedia "Responsive Webdesign"]].
==== Resources ====
*[[http://www.lukew.com/ff/entry.asp?1809|LukeW "Breaking Development: Atomic Design"]], 2013-10-21.
*[[http://www.phase2technology.com/blog/your-frontend-methodology-is-all-of-them-atomic-design-patternlab/|Phase2, Christopher Bloom "Your Frontend Methodology Is All of Them: Atomic Design & Pattern Lab"]], 2014-02-14.
*[[http://www.smashingmagazine.com/2013/08/02/other-interface-atomic-design-sass/|Smashing Magazine, Robin Rendle: "The 'Other' Interface: Atomic Design With Sass"]], 2013-08-02.
===== Static Code Analysis Tools for Javascript =====
*See [[goodcoding.html|Good Coding ! - Software Coding, Coding Rules, Static Code Analysis, Code Reviews]].
===== tus.io - Open Protocol for Resumable File Uploads =====
*[[http://www.tus.io/|tus.io - Open Protocol for Resumable File Uploads]], [[http://www.github.com/tus|Github "tus - Resumable File Uploads"]].
*Blog [[http://www.tus.io/blog.html|tus Blog]].
==== How to build numeric Applications like OPC-UA Client ====
=== Experiences of Martin Baum ===
*Speech "Building a Client for OPC-UA in Javascript" of Martin Baum, [[http://www.xing.com/profile/Martin_Baum4|XING "Martin Baum"]], [[http://de.linkedin.com/pub/martin-baum/12/467/505/en|LinkedIn "Martin Baum"]], [[http://www.treestructure.net/|Treestructure]] at the conference [[http://www.solutions.hamburg/|solutions.hamburg - Kongress für Digitalisierung, Business und IT]] by [[http://www.silpion.de/|SILIPON]] in Hamburg, on 2015-09-10.
*[[http://www.github.com/treestructure/|GitHub "treestructure/"]].
*[[http://www.github.com/treestructure/slides_opcclient|GitHub "treestructure/slides_opcclient"]] - "Building a OPC-UA client with Javascript".
=== Resources ===
*An OPC-UA client in Javascript for a browser is useful on a desktop client with strong computing power ( i7 with 4 CPU cores, 8 threads..), less with clients with limited computing power ( e.g. a webbook, an ARM A9 based embedded system, an ARM based smartphone,.. ).
*Binary data processing with Javascript:
*Arraybuffer.
*TypedArray ( ArrayBufferView ).
*DataViewe ( ArrayBufferView ).
*Blob.
*Javascript can handle 64-bit integer values just by special Javascript libraries, which handle 64-bit values as strings.
*[[http://github.com/MikeMcl/bignumber.js/|GitHub "MikeMcl/bignumber.js"]] - "A JavaScript library for arbitrary-precision decimal and non-decimal arithmetic".
*Cryptography:
*[[http://bitwiseshiftleft.github.io/sjcl/|Stanford University "Stanford Javascript Crypto Library (SJCL)"]], [[http://crypto.stanford.edu/sjcl/|Stanford University "Stanford Javascript Crypto Library (SJCL)"]].
*[[http://www.github.com/bitwiseshiftleft/sjcl|GitHub "bitwiseshiftleft/sjcl"]] - "Stanford Javascript Crypto Library".
*[[http://code.google.com/p/crypto-js/|Google Code "crypto-js. JavaScript implementations of standard and secure cryptographic algorithms"]]. Not recommended by experts, as too slow by implementation based on strings.
*[[http://www.jcryption.org/|jCryption]], [[http://www.github.com/HazAT/jCryption|GitHub "HazAT/jCryption"]].
*MQTT broker -> See [[fieldbus.html|Fieldbuses and Automation Networks]].
*OPC-UA -> See [[industrialdata.html|Industrial Data & Industrial Data Exchange]].
===== Javascript - The Language =====
==== Tips & Tricks ====
*Check for comparisons:
*'1' = = = '1! -> True.
*'1' = = 1 -> True ( Suggestion: Don´t use! ).
*'1' ! = = '1' -> False.
*'1' ! = 1 -> False.
==== Special Language features of Javascript ====
=== Anonymous Functions ===
*[[http://stackoverflow.com/questions/2421911/what-is-the-purpose-of-wrapping-whole-javascript-files-in-anonymous-functions-li|StackOverflow "What is the purpose of wrapping whole Javascript files in anonymous functions like '(function(){ … })()'?"]].
=== Classes ===
*[[https://developer.mozilla.org/en-US/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript|Mozilla Developer Network ( MDSN ) "Introduction to Object-Oriented JavaScript"]].
*[[http://www.phpied.com/3-ways-to-define-a-javascript-class/|Stoyan's phpied.com "3 ways to define a JavaScript class"]].
==== Javascript Tutorials ====
*[[http://www.jsforcats.com/|JavaScript For Cats. An introduction for new programmers]].
*[[http://www.codecademy.com/en/tracks/javascript|CodeCademy "Javascript"]].
*[[http://www.codepen.io/|CodePen - Front End Developer Playground & Code Editor in the Browser]].
===== Resources =====
*[[http://www.commonjs.org/|CommonJS]].
*Wiki [[http://wiki.commonjs.org/|CommonJS Wiki]].
*[[http://wiki.commonjs.org/wiki/Promises|CommonJS Wiki "Promises"]] - "A well-defined interface for interacting with an object that represents the result of an action that is performed **asynchronously**".
*[[http://www.dojotoolkit.org/|dojo toolkit]] - "Unbeatable JavaScript Tools".
*[[http://webdeveloper.earthweb.com/|EarthWeb - The IT Industry Portal "Webdeveloper"]].
*[[http://webdeveloper.earthweb.com/webjs/archives.php|EarthWeb "JavaScripts Archives"]].
*[[http://www.marijnhaverbeke.nl/js-cheatsheet.html|Marijn Haverbeke "JavaScript cheat sheet"]] #.
*[[http://www.infoworld.com/d/html5/beyond-jquery-javascript-tools-the-html5-generation-178437|InfoWorld "Beyond jQuery: JavaScript tools for the HTML5 generation"]], 2011-11-09 #.
*[[http://javascript.internet.com/|internet.com "The JavaScript Source"]].
*[[http://www.javascriptkit.com/|JavaScript Kit]].
*[[http://www.json.org/|JSON - "Introduction to JSON"]].
*[[http://en.wikipedia.org/wiki/JSON|EN.Wikipedia "JSON"]], [[http://de.wikipedia.org/wiki/JavaScript_Object_Notation|DE.Wikipedia "JavaScript Object Notation"]].
*[[http://www.netz-notizen.de/javascript/|Christine Kühnel "JAVASCRIPT - NOTIZEN"]].
*[[http://developer.mozilla.org/en/javascript|Mozilla "JavaScript"]].
*[[http://msdn.microsoft.com/de-de/library/72bd815a.aspx|Microsoft MSDN "JScript"]].
*[[http://www.overapi.com/javascript/|OverAPI.com "Javascript Cheat Sheet"]] #.
*[[http://www.todomvc.com/|todoMVC]] - "Helping you select an MV* framework"#.
*[[http://www.zetcode.com/|ZetCode Tutorial]].
*GUI: "JavaScript GTK tutorial".
*[[http://en.wikipedia.org/wiki/Asm.js|EN.Wikipedia "Asm.js"]] - "An intermediate programming language consisting of a strict subset of the JavaScript language".
===== Appropriate OpenDirectory Directory Pages =====
*[[http://www.dmoz.org/Computers/Programming/Languages/JavaScript/|OpenDirectory "Top: Computers: Programming: Languages: JavaScript]].
*[[http://www.dmoz.org/Computers/Programming/Languages/HTML/|OpenDirectory "Top: Computers: Programming: Languages: HTML]].
*[[http://www.dmoz.org/World/Deutsch/Computer/Programmieren/Sprachen/JavaScript/|OpenDirectory "Top: World: Deutsch: Computer: Programmieren: Sprachen: JavaScript"]].
*[[http://www.dmoz.org/World/Deutsch/Computer/Programmieren/Sprachen/HTML/|OpenDirectory "Top: World: Deutsch: Computer: Programmieren: Sprachen: HTML"]].
{{tag>"web technologies" HTML5 HTML XML Javascript "web frameworks" "software frameworks for web applications" "web applications" web applications application}}