SlideShare a Scribd company logo
1 of 34
JavaScript as a Platform
What you know about
  JavaScript language
         restrictions?
           Five Monkeys Experiment
A rule, a regulation, or a procedure,
           is introduced for a reason.
             However, after a while,
       the reason for it is forgotten,
                 but the rule stays.


                                         Harry Harlow
                                         American psychologist
Why people
use JavaScript?
                Dan, 18 years. My girl is love in JS!


      My name is Mark,
     I use JavaScript
        to hide buttons.                                I’m Mario,
                                                             JavaScript is all
                                                          that I learned
                                                            in my life!
Why you
really should
use it?         I use JS,
                just because
                it works
                everywhere!
JavaScript
language design
JavaScript
Created for
JavaScript      Web
              Designers
Created for
JavaScript                 Weakly
                Web
                           typed
              Designers
Created for             C-like syntax, makes it
JavaScript                 Weakly
                Web                 appear like an ordinary
                           typed
              Designers               procedural language
Created for             C-like syntax, makes it
JavaScript                  Weakly
                 Web                 appear like an ordinary
                            typed
               Designers               procedural language


  Has more in common
with functional languages
   like Lisp or Scheme
   than with C or Java
Created for             C-like syntax, makes it
JavaScript                  Weakly
                 Web                 appear like an ordinary
                            typed
               Designers               procedural language


  Has more in common
with functional languages
   like Lisp or Scheme
   than with C or Java


  Arrays
instead of
   Lists
Created for               C-like syntax, makes it
JavaScript                    Weakly
                 Web                   appear like an ordinary
                              typed
               Designers                 procedural language


  Has more in common
with functional languages
   like Lisp or Scheme
   than with C or Java


  Arrays       Objects
instead of    instead of
   Lists     Property Lists
Created for                  C-like syntax, makes it
JavaScript                     Weakly
                 Web                      appear like an ordinary
                               typed
               Designers                    procedural language


  Has more in common
with functional languages      Lambda
   like Lisp or Scheme        functions
   than with C or Java


  Arrays       Objects
instead of    instead of
   Lists     Property Lists
Created for                     C-like syntax, makes it
JavaScript                     Weakly
                 Web                         appear like an ordinary
                               typed
               Designers                       procedural language


  Has more in common
with functional languages      Lambda
   like Lisp or Scheme        functions
   than with C or Java


  Arrays       Objects
                                   Functions are
instead of    instead of
                                     First Class
   Lists     Property Lists
Created for                     C-like syntax, makes it
JavaScript                     Weakly
                 Web                         appear like an ordinary
                               typed
               Designers                       procedural language


  Has more in common
with functional languages      Lambda       Prototypal
   like Lisp or Scheme        functions    inheritance
   than with C or Java


  Arrays       Objects
                                   Functions are
instead of    instead of
                                     First Class
   Lists     Property Lists
Created for                     C-like syntax, makes it
JavaScript                     Weakly
                 Web                         appear like an ordinary
                               typed
               Designers                       procedural language


  Has more in common
with functional languages      Lambda       Prototypal
                                                            Closures
   like Lisp or Scheme        functions    inheritance
   than with C or Java


  Arrays       Objects
                                   Functions are
instead of    instead of
                                     First Class
   Lists     Property Lists
Created for                     C-like syntax, makes it
JavaScript                     Weakly
                 Web                         appear like an ordinary
                               typed
               Designers                       procedural language


  Has more in common
with functional languages      Lambda       Prototypal
                                                            Closures
   like Lisp or Scheme        functions    inheritance
   than with C or Java


  Arrays       Objects
                                   Functions are           Run-time
instead of    instead of
                                     First Class           evaluation
   Lists     Property Lists
JavaScript
                          is very mutable, it’s very flexible.
                                   You can rename things.




                                                                 Brendan Eich
                                                                 Author of JavaScript



Douglas Crockford     It Is The World's Most Misunderstood
Computer Programmer   Programming Language
1995
                  Brendan Eich joined Netscape ,
                  to create a programming language for browser
                  and base it on Scheme (a Lisp dialect)                               2008       Google released
                                                                                                  V8 engine
          +10       JavaScript engine
                    prototype (Mocha)                  1997    LiveConnect 2
                                                               released
                         1996        Released NN2
                                     with JS support
                                                                    1998
                                                                            Rhino engine
                                ECMA Standardization                        by Norris Boyd
                                                                            released
                                    LiveConnect
                                    released




1994                                                                        1998                              2010

       Founded Netscape company                       Mozilla inherited
       and created one of the first browsers      Netscape’s code-base                  JavaScript is a trademark of
                                                  and official JavaScript                        Oracle Corporation
                                                    management rights
≈265
 standards
             Ecma International
              private   non-profit

            a standards organization
          of information and communication systems
    funded in 1961
           to standardize computer systems
           in Europe
ECMAScript Language Specification
                     ECMA-262 ISO/IEC 16262



   MAJOR RELEASE     1.0   1997 Compromise between Netscape and Microsoft
EDITORIAL CHANGES    2.0   1998 Align with ISO/IEC 16262 international standard
   MAJOR RELEASE     3.0   1999 Added regular expressions, try/catch exception
COMMUNITY RELEASE    3.1        Yahoo, Microsoft and Google formed group to update of ECMAScript 3
     ABANDONED       4.0        Abandoned, due to political differences concerning language complexity
    MAJOR RELEASE    5.0   2009 Library support for JSON, and more complete reflection
 EDITORIAL CHANGES   5.1   2011 Align with 3rd version of ISO/IEC 16262:2011
    MAJOR RELEASE    6.0        Support classes, semantic and syntactic innovations


                     72% of functionality is supported by browsers
                     28% have issues (IE8, FF3.5, OP10.5, Konq 4)
JavaScript   Domain-Specific Language
               Hidden low-level operations
Frameworks     Open Source




                    John Resig
                    JS Method Overloading
Static code analysis
Identify potential problems
Possible bugs        Overcomplicated expressions
Security issues      Suboptimal code
Dead code            Language standard violation
Duplicate code       Code-style disregard




JSLint is a good example of such tool
Automatic
code corrections

Makes JavaScript download and run faster.
It is a true compiler for JavaScript.
It compiles from JavaScript to better JavaScript.
Implemented on Java




Speed is very impressive,
given that it’s a pure-JavaScript implementation.
Implemented on Node.js
Languages                  Improvements on syntax level

compiled                   Compiled JS will work on any JavaScript runtime
                           Repeating execution speed improvements

into JavaScript
          CoffeeScript is an attempt to expose
          the good parts of JavaScript in a simple way.
          The golden rule of CoffeeScript is: "It's just JavaScript".

          TypeScript is for application-scale JavaScript development.
          Language is a typed superset of JavaScript
          that compiles to plain JavaScript.
          Any browser. Any host. Any OS. Open Source.

          The goal of Dart is:
          ultimately to replace JavaScript
          as the lingua franca of web development
          on the open web platform.
Classic
languages
compilation into JS
Strongly-Typed JavaScript (STJS)
Is an open source JavaScript code generator from a Java source.
It is built as a Maven plugin that can be executed after the compilation.

GWT
These allow you to write AJAX applications in Java and then compile the source
to highly optimized JavaScript that runs across all browsers,
including mobile browsers for Android and the iPhone.

Quicklight
The Saltarelle C# to Javascript compiler allows a developer to write C# code and then
compile it to Javascript which can be run in any web browser.
Emscripten
is an LLVM
to JavaScript
compiler
It takes LLVM bitcode (which can be generated from C/C++ using Clang, or any other
language that can be converted into LLVM bitcode) and compiles that into JavaScript,
which can be run on the web (or anywhere else JavaScript can run).


Using Emscripten, you can:
- Compile C and C++ code into JavaScript™ and run that on the web
- Run code in languages like Python as well, by compiling CPython from C to JavaScript
V8
JavaScript Engine
V8 is Google's open source JavaScript engine.
V8 is written in C++ and is used in Google Chrome.
V8 compiles JavaScript to native machine code (IA-32, x86-64, ARM, or MIPS CPUs)

The V8 assembler is based on the Strongtalk assembler

3 key areas to V8's performance:
   Fast Property Access
   Dynamic Machine Code Generation
   Efficient Garbage Collection




Compilation into JS
optimized for Browser
JavaScript runs
everything
C programs compiled to asm.js
Asm.js   It's just a subset of JavaScript.
         Mozilla is working on a first implementation for SpiderMonkey.
Emulators
on JavaScript




    Matt Westcott          Ben Firshman      Kevin O'Dwyer
    Emulated ZX Spectrum   Emulated Dandy    Emulated MS DOS


    JSSpeccy               JSNES            JSDosBox
    ZX Spectrum            Dandy            DOS
Linux           PC emulator is written in JavaScript.
                  32 bit x86 compatible CPU
 2.6.20           No FPU/MMX/SSE




Fabrice Bellard                                           Yauhen Yakimovich
Emulated Linux                                            Author of JSModem
demo
Thank you

                    Vlad Mysla
                  vlad@pearl.com
       Technical Lead at LLC Pearl.com

More Related Content

Viewers also liked

The Scheme Language -- Using it on the iPhone
The Scheme Language -- Using it on the iPhoneThe Scheme Language -- Using it on the iPhone
The Scheme Language -- Using it on the iPhoneJames Long
 
The Great Mobile Debate: Native vs. Hybrid App Development
The Great Mobile Debate: Native vs. Hybrid App DevelopmentThe Great Mobile Debate: Native vs. Hybrid App Development
The Great Mobile Debate: Native vs. Hybrid App DevelopmentNick Landry
 
NodeJS guide for beginners
NodeJS guide for beginnersNodeJS guide for beginners
NodeJS guide for beginnersEnoch Joshua
 
Getting started with AWS Lambda and the Serverless Cloud
Getting started with AWS Lambda and the Serverless CloudGetting started with AWS Lambda and the Serverless Cloud
Getting started with AWS Lambda and the Serverless CloudIan Massingham
 
AWS Lambda and the Serverless Cloud
AWS Lambda and the Serverless CloudAWS Lambda and the Serverless Cloud
AWS Lambda and the Serverless CloudAmazon Web Services
 
Containerless in the Cloud with AWS Lambda
Containerless in the Cloud with AWS LambdaContainerless in the Cloud with AWS Lambda
Containerless in the Cloud with AWS LambdaRyan Cuprak
 
Writing Efficient JavaScript
Writing Efficient JavaScriptWriting Efficient JavaScript
Writing Efficient JavaScriptNicholas Zakas
 

Viewers also liked (13)

Difference between-angular js-nodejs
Difference between-angular js-nodejsDifference between-angular js-nodejs
Difference between-angular js-nodejs
 
Jaap : node, npm & grunt
Jaap : node, npm & gruntJaap : node, npm & grunt
Jaap : node, npm & grunt
 
Native vs. Hybrid Apps
Native vs. Hybrid AppsNative vs. Hybrid Apps
Native vs. Hybrid Apps
 
The Scheme Language -- Using it on the iPhone
The Scheme Language -- Using it on the iPhoneThe Scheme Language -- Using it on the iPhone
The Scheme Language -- Using it on the iPhone
 
The Great Mobile Debate: Native vs. Hybrid App Development
The Great Mobile Debate: Native vs. Hybrid App DevelopmentThe Great Mobile Debate: Native vs. Hybrid App Development
The Great Mobile Debate: Native vs. Hybrid App Development
 
NodeJS guide for beginners
NodeJS guide for beginnersNodeJS guide for beginners
NodeJS guide for beginners
 
Getting started with AWS Lambda and the Serverless Cloud
Getting started with AWS Lambda and the Serverless CloudGetting started with AWS Lambda and the Serverless Cloud
Getting started with AWS Lambda and the Serverless Cloud
 
AWS Lambda and the Serverless Cloud
AWS Lambda and the Serverless CloudAWS Lambda and the Serverless Cloud
AWS Lambda and the Serverless Cloud
 
NodeJS for Beginner
NodeJS for BeginnerNodeJS for Beginner
NodeJS for Beginner
 
Containerless in the Cloud with AWS Lambda
Containerless in the Cloud with AWS LambdaContainerless in the Cloud with AWS Lambda
Containerless in the Cloud with AWS Lambda
 
AWS Lambda
AWS LambdaAWS Lambda
AWS Lambda
 
AWS Lambda
AWS LambdaAWS Lambda
AWS Lambda
 
Writing Efficient JavaScript
Writing Efficient JavaScriptWriting Efficient JavaScript
Writing Efficient JavaScript
 

Similar to Javascript as a Platform

Coffee scripts with rails
Coffee scripts with railsCoffee scripts with rails
Coffee scripts with railsDevilal Dheer
 
Languages used by web app development services remotestac x
Languages used by web app development services  remotestac xLanguages used by web app development services  remotestac x
Languages used by web app development services remotestac xRemote Stacx
 
Ruby on Rails Training - Module 1
Ruby on Rails Training - Module 1Ruby on Rails Training - Module 1
Ruby on Rails Training - Module 1Mark Menard
 
Ruby and Rails short motivation
Ruby and Rails short motivationRuby and Rails short motivation
Ruby and Rails short motivationjistr
 
Sugar Presentation - YULHackers March 2009
Sugar Presentation - YULHackers March 2009Sugar Presentation - YULHackers March 2009
Sugar Presentation - YULHackers March 2009spierre
 
Parsing XML & JSON in Apex
Parsing XML & JSON in ApexParsing XML & JSON in Apex
Parsing XML & JSON in ApexAbhinav Gupta
 
Ruby on Rails (RoR) as a back-end processor for Apex
Ruby on Rails (RoR) as a back-end processor for Apex Ruby on Rails (RoR) as a back-end processor for Apex
Ruby on Rails (RoR) as a back-end processor for Apex Espen Brækken
 
Ruby On Rails Overview
Ruby On Rails OverviewRuby On Rails Overview
Ruby On Rails Overviewjonkinney
 
Kann JavaScript elegant sein?
Kann JavaScript elegant sein?Kann JavaScript elegant sein?
Kann JavaScript elegant sein?jbandi
 
Ruby on Rails (RoR) as a back-end processor for Apex
Ruby on Rails (RoR) as a back-end processor for Apex Ruby on Rails (RoR) as a back-end processor for Apex
Ruby on Rails (RoR) as a back-end processor for Apex Espen Brækken
 
IronRuby: Ruby on the .NET Platform
IronRuby: Ruby on the .NET PlatformIronRuby: Ruby on the .NET Platform
IronRuby: Ruby on the .NET PlatformAndre John Cruz
 
When Javascript isn't Javascript
When Javascript isn't Javascript When Javascript isn't Javascript
When Javascript isn't Javascript Tristan Gomez
 
Javascript beginner-handbook
Javascript beginner-handbookJavascript beginner-handbook
Javascript beginner-handbookFaina Fridman
 
javascript-beginner-handbook.pdf
javascript-beginner-handbook.pdfjavascript-beginner-handbook.pdf
javascript-beginner-handbook.pdfRaviKumar76265
 
Fukuoka Ruby Award 2023 - Opal
Fukuoka Ruby Award 2023 - OpalFukuoka Ruby Award 2023 - Opal
Fukuoka Ruby Award 2023 - OpalAndy Maleh
 

Similar to Javascript as a Platform (20)

Coffee scripts with rails
Coffee scripts with railsCoffee scripts with rails
Coffee scripts with rails
 
Languages used by web app development services remotestac x
Languages used by web app development services  remotestac xLanguages used by web app development services  remotestac x
Languages used by web app development services remotestac x
 
Ruby on Rails Training - Module 1
Ruby on Rails Training - Module 1Ruby on Rails Training - Module 1
Ruby on Rails Training - Module 1
 
Ruby and Rails short motivation
Ruby and Rails short motivationRuby and Rails short motivation
Ruby and Rails short motivation
 
TypeScript
TypeScriptTypeScript
TypeScript
 
Sugar Presentation - YULHackers March 2009
Sugar Presentation - YULHackers March 2009Sugar Presentation - YULHackers March 2009
Sugar Presentation - YULHackers March 2009
 
Parsing XML & JSON in Apex
Parsing XML & JSON in ApexParsing XML & JSON in Apex
Parsing XML & JSON in Apex
 
Ruby on Rails (RoR) as a back-end processor for Apex
Ruby on Rails (RoR) as a back-end processor for Apex Ruby on Rails (RoR) as a back-end processor for Apex
Ruby on Rails (RoR) as a back-end processor for Apex
 
Fp and scala
Fp and scalaFp and scala
Fp and scala
 
Ruby On Rails Overview
Ruby On Rails OverviewRuby On Rails Overview
Ruby On Rails Overview
 
Kann JavaScript elegant sein?
Kann JavaScript elegant sein?Kann JavaScript elegant sein?
Kann JavaScript elegant sein?
 
Ruby Metaprogramming 08
Ruby Metaprogramming 08Ruby Metaprogramming 08
Ruby Metaprogramming 08
 
Ruby on Rails (RoR) as a back-end processor for Apex
Ruby on Rails (RoR) as a back-end processor for Apex Ruby on Rails (RoR) as a back-end processor for Apex
Ruby on Rails (RoR) as a back-end processor for Apex
 
IronRuby: Ruby on the .NET Platform
IronRuby: Ruby on the .NET PlatformIronRuby: Ruby on the .NET Platform
IronRuby: Ruby on the .NET Platform
 
Rjb
RjbRjb
Rjb
 
When Javascript isn't Javascript
When Javascript isn't Javascript When Javascript isn't Javascript
When Javascript isn't Javascript
 
Javascript beginner-handbook
Javascript beginner-handbookJavascript beginner-handbook
Javascript beginner-handbook
 
javascript-beginner-handbook.pdf
javascript-beginner-handbook.pdfjavascript-beginner-handbook.pdf
javascript-beginner-handbook.pdf
 
Fukuoka Ruby Award 2023 - Opal
Fukuoka Ruby Award 2023 - OpalFukuoka Ruby Award 2023 - Opal
Fukuoka Ruby Award 2023 - Opal
 
Introduction to Scala
Introduction to ScalaIntroduction to Scala
Introduction to Scala
 

More from Vlad Mysla

Behavior or Data-Driven Testing? Both and Jasmine!
Behavior or Data-Driven Testing? Both and Jasmine!Behavior or Data-Driven Testing? Both and Jasmine!
Behavior or Data-Driven Testing? Both and Jasmine!Vlad Mysla
 
Landing Page in 14kb. Myth or Reality?
Landing Page in 14kb. Myth or Reality?Landing Page in 14kb. Myth or Reality?
Landing Page in 14kb. Myth or Reality?Vlad Mysla
 
From SCRUM to LEAN
From SCRUM to LEANFrom SCRUM to LEAN
From SCRUM to LEANVlad Mysla
 
Universal Google Analytics: Event Tracking
Universal Google Analytics: Event TrackingUniversal Google Analytics: Event Tracking
Universal Google Analytics: Event TrackingVlad Mysla
 
Data-Driven Requirements for User-Stories on JustAnswer
Data-Driven Requirements for User-Stories on JustAnswerData-Driven Requirements for User-Stories on JustAnswer
Data-Driven Requirements for User-Stories on JustAnswerVlad Mysla
 
Pay What You Want
Pay What You WantPay What You Want
Pay What You WantVlad Mysla
 
Javascript inside Browser (DOM)
Javascript inside Browser (DOM)Javascript inside Browser (DOM)
Javascript inside Browser (DOM)Vlad Mysla
 
7 free Visual Studio extensions
7 free Visual Studio extensions 7 free Visual Studio extensions
7 free Visual Studio extensions Vlad Mysla
 
Scaling Agile at Spotify (representation)
Scaling Agile at Spotify (representation)Scaling Agile at Spotify (representation)
Scaling Agile at Spotify (representation)Vlad Mysla
 

More from Vlad Mysla (9)

Behavior or Data-Driven Testing? Both and Jasmine!
Behavior or Data-Driven Testing? Both and Jasmine!Behavior or Data-Driven Testing? Both and Jasmine!
Behavior or Data-Driven Testing? Both and Jasmine!
 
Landing Page in 14kb. Myth or Reality?
Landing Page in 14kb. Myth or Reality?Landing Page in 14kb. Myth or Reality?
Landing Page in 14kb. Myth or Reality?
 
From SCRUM to LEAN
From SCRUM to LEANFrom SCRUM to LEAN
From SCRUM to LEAN
 
Universal Google Analytics: Event Tracking
Universal Google Analytics: Event TrackingUniversal Google Analytics: Event Tracking
Universal Google Analytics: Event Tracking
 
Data-Driven Requirements for User-Stories on JustAnswer
Data-Driven Requirements for User-Stories on JustAnswerData-Driven Requirements for User-Stories on JustAnswer
Data-Driven Requirements for User-Stories on JustAnswer
 
Pay What You Want
Pay What You WantPay What You Want
Pay What You Want
 
Javascript inside Browser (DOM)
Javascript inside Browser (DOM)Javascript inside Browser (DOM)
Javascript inside Browser (DOM)
 
7 free Visual Studio extensions
7 free Visual Studio extensions 7 free Visual Studio extensions
7 free Visual Studio extensions
 
Scaling Agile at Spotify (representation)
Scaling Agile at Spotify (representation)Scaling Agile at Spotify (representation)
Scaling Agile at Spotify (representation)
 

Recently uploaded

Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructureitnewsafrica
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...itnewsafrica
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Kaya Weers
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024TopCSSGallery
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxfnnc6jmgwh
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 

Recently uploaded (20)

Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 

Javascript as a Platform

  • 1. JavaScript as a Platform
  • 2. What you know about JavaScript language restrictions? Five Monkeys Experiment A rule, a regulation, or a procedure, is introduced for a reason. However, after a while, the reason for it is forgotten, but the rule stays. Harry Harlow American psychologist
  • 3. Why people use JavaScript? Dan, 18 years. My girl is love in JS! My name is Mark, I use JavaScript to hide buttons. I’m Mario, JavaScript is all that I learned in my life!
  • 4. Why you really should use it? I use JS, just because it works everywhere!
  • 7. Created for JavaScript Web Designers
  • 8. Created for JavaScript Weakly Web typed Designers
  • 9. Created for C-like syntax, makes it JavaScript Weakly Web appear like an ordinary typed Designers procedural language
  • 10. Created for C-like syntax, makes it JavaScript Weakly Web appear like an ordinary typed Designers procedural language Has more in common with functional languages like Lisp or Scheme than with C or Java
  • 11. Created for C-like syntax, makes it JavaScript Weakly Web appear like an ordinary typed Designers procedural language Has more in common with functional languages like Lisp or Scheme than with C or Java Arrays instead of Lists
  • 12. Created for C-like syntax, makes it JavaScript Weakly Web appear like an ordinary typed Designers procedural language Has more in common with functional languages like Lisp or Scheme than with C or Java Arrays Objects instead of instead of Lists Property Lists
  • 13. Created for C-like syntax, makes it JavaScript Weakly Web appear like an ordinary typed Designers procedural language Has more in common with functional languages Lambda like Lisp or Scheme functions than with C or Java Arrays Objects instead of instead of Lists Property Lists
  • 14. Created for C-like syntax, makes it JavaScript Weakly Web appear like an ordinary typed Designers procedural language Has more in common with functional languages Lambda like Lisp or Scheme functions than with C or Java Arrays Objects Functions are instead of instead of First Class Lists Property Lists
  • 15. Created for C-like syntax, makes it JavaScript Weakly Web appear like an ordinary typed Designers procedural language Has more in common with functional languages Lambda Prototypal like Lisp or Scheme functions inheritance than with C or Java Arrays Objects Functions are instead of instead of First Class Lists Property Lists
  • 16. Created for C-like syntax, makes it JavaScript Weakly Web appear like an ordinary typed Designers procedural language Has more in common with functional languages Lambda Prototypal Closures like Lisp or Scheme functions inheritance than with C or Java Arrays Objects Functions are instead of instead of First Class Lists Property Lists
  • 17. Created for C-like syntax, makes it JavaScript Weakly Web appear like an ordinary typed Designers procedural language Has more in common with functional languages Lambda Prototypal Closures like Lisp or Scheme functions inheritance than with C or Java Arrays Objects Functions are Run-time instead of instead of First Class evaluation Lists Property Lists
  • 18. JavaScript is very mutable, it’s very flexible. You can rename things. Brendan Eich Author of JavaScript Douglas Crockford It Is The World's Most Misunderstood Computer Programmer Programming Language
  • 19. 1995 Brendan Eich joined Netscape , to create a programming language for browser and base it on Scheme (a Lisp dialect) 2008 Google released V8 engine +10 JavaScript engine prototype (Mocha) 1997 LiveConnect 2 released 1996 Released NN2 with JS support 1998 Rhino engine ECMA Standardization by Norris Boyd released LiveConnect released 1994 1998 2010 Founded Netscape company Mozilla inherited and created one of the first browsers Netscape’s code-base JavaScript is a trademark of and official JavaScript Oracle Corporation management rights
  • 20. ≈265 standards Ecma International private non-profit a standards organization of information and communication systems funded in 1961 to standardize computer systems in Europe
  • 21. ECMAScript Language Specification ECMA-262 ISO/IEC 16262 MAJOR RELEASE 1.0 1997 Compromise between Netscape and Microsoft EDITORIAL CHANGES 2.0 1998 Align with ISO/IEC 16262 international standard MAJOR RELEASE 3.0 1999 Added regular expressions, try/catch exception COMMUNITY RELEASE 3.1 Yahoo, Microsoft and Google formed group to update of ECMAScript 3 ABANDONED 4.0 Abandoned, due to political differences concerning language complexity MAJOR RELEASE 5.0 2009 Library support for JSON, and more complete reflection EDITORIAL CHANGES 5.1 2011 Align with 3rd version of ISO/IEC 16262:2011 MAJOR RELEASE 6.0 Support classes, semantic and syntactic innovations 72% of functionality is supported by browsers 28% have issues (IE8, FF3.5, OP10.5, Konq 4)
  • 22. JavaScript Domain-Specific Language Hidden low-level operations Frameworks Open Source John Resig JS Method Overloading
  • 23. Static code analysis Identify potential problems Possible bugs Overcomplicated expressions Security issues Suboptimal code Dead code Language standard violation Duplicate code Code-style disregard JSLint is a good example of such tool
  • 24. Automatic code corrections Makes JavaScript download and run faster. It is a true compiler for JavaScript. It compiles from JavaScript to better JavaScript. Implemented on Java Speed is very impressive, given that it’s a pure-JavaScript implementation. Implemented on Node.js
  • 25. Languages Improvements on syntax level compiled Compiled JS will work on any JavaScript runtime Repeating execution speed improvements into JavaScript CoffeeScript is an attempt to expose the good parts of JavaScript in a simple way. The golden rule of CoffeeScript is: "It's just JavaScript". TypeScript is for application-scale JavaScript development. Language is a typed superset of JavaScript that compiles to plain JavaScript. Any browser. Any host. Any OS. Open Source. The goal of Dart is: ultimately to replace JavaScript as the lingua franca of web development on the open web platform.
  • 26. Classic languages compilation into JS Strongly-Typed JavaScript (STJS) Is an open source JavaScript code generator from a Java source. It is built as a Maven plugin that can be executed after the compilation. GWT These allow you to write AJAX applications in Java and then compile the source to highly optimized JavaScript that runs across all browsers, including mobile browsers for Android and the iPhone. Quicklight The Saltarelle C# to Javascript compiler allows a developer to write C# code and then compile it to Javascript which can be run in any web browser.
  • 27. Emscripten is an LLVM to JavaScript compiler It takes LLVM bitcode (which can be generated from C/C++ using Clang, or any other language that can be converted into LLVM bitcode) and compiles that into JavaScript, which can be run on the web (or anywhere else JavaScript can run). Using Emscripten, you can: - Compile C and C++ code into JavaScript™ and run that on the web - Run code in languages like Python as well, by compiling CPython from C to JavaScript
  • 28. V8 JavaScript Engine V8 is Google's open source JavaScript engine. V8 is written in C++ and is used in Google Chrome. V8 compiles JavaScript to native machine code (IA-32, x86-64, ARM, or MIPS CPUs) The V8 assembler is based on the Strongtalk assembler 3 key areas to V8's performance: Fast Property Access Dynamic Machine Code Generation Efficient Garbage Collection Compilation into JS optimized for Browser
  • 30. C programs compiled to asm.js Asm.js It's just a subset of JavaScript. Mozilla is working on a first implementation for SpiderMonkey.
  • 31. Emulators on JavaScript Matt Westcott Ben Firshman Kevin O'Dwyer Emulated ZX Spectrum Emulated Dandy Emulated MS DOS JSSpeccy JSNES JSDosBox ZX Spectrum Dandy DOS
  • 32. Linux PC emulator is written in JavaScript. 32 bit x86 compatible CPU 2.6.20 No FPU/MMX/SSE Fabrice Bellard Yauhen Yakimovich Emulated Linux Author of JSModem
  • 33. demo
  • 34. Thank you Vlad Mysla vlad@pearl.com Technical Lead at LLC Pearl.com