SlideShare ist ein Scribd-Unternehmen logo
1 von 20
Downloaden Sie, um offline zu lesen
Narwhal
 and the Adventures of CommonJS




                                  Clinton R. Nixon
CommonJS
promises  to  be  a  standard  environment  that  
 will  let  JavaScript  code  use  the  same  APIs  
             with  different  interpreters
Why?

JavaScript  is  simple  and  widely-­‐known.
To  succeed,  server-­‐side  JavaScript  must  avoid  
the  fate  of  Lisp.
CommonJS standards
Modules
Packages
System
Binary
Filesystem
Unit  Testing
CommonJS implementations
Narwhal  (Rhino,  v8,  JSC)

Flusspferd  (Spidermonkey/C++)

node.js  (v8;  not  many  standards  or  proposals  implemented)

v8cgi  (v8)

GPSEE  (Spidermonkey/C)

RingoJS  (Rhino;  was  Helma  NG)

Perservere  (Rhino)

SproutCore  (in-­‐browser)
Narwhal
one  of  the  most  mature  CommonJS  implementations
Narwhal
A  CommonJS  platform  or  implementation
Arguably  the  most  mature  implementation
Runs  on  several  interpreters
Rhino  has  the  most  complete  implementation
JavaScriptCore  works  well  on  Macs
Easy  to  add  new  engines  if  you're  a  language  
implementation  hacker
Why?
You  can  use  it  today
Rhino  makes  it  easy  to  build  off  Java  libraries
Lots  of  activity,  and  other  implementations  are  
working  to  be  compatible  with  it
But  still  needs  lots  of  work
Narwhal packages
                                    package.json
Based  on  the  CommonJS            local.json
                                    bin/
package  standard
                                    lib/
tusk  is  a  package  manager           foo.js
                                    src/
sea  is  an  environment  manager   jars/
                                    packages/
Every  project  is  a  package      engines/
                                    tests/
                                        foo.tests.js
package.json
{
        "name":  "jake",
        "author":  "Francisco  Tolmasky  <francisco@280north.com>",
        "contributors":  [
                "Tom  Robinson  (http://tlrobinson.net/)  <tom@280north.com>"
        ],
        "description":  "A  build  system  for  CommonJS,  lifted  from  Rake",
        "keywords":  [
                "build",
                "jake",
                "rake",
                "make"
        ],
        "version":  "0.2.1"
}
Modules
Each  JS  file  under  lib/  is  a  module
Modules  are  executed  within  a  function
Arguments  are  require,  exports,  and  module
Modules  return  exports
Core  concept  of  CommonJS
Module & package
 demonstration
Testing demonstration
Package management
sources.json
{
    "version":  2,
    "includes":  ["http://github.com/280north/narwhal/raw/master/
catalog-­‐2.json"],
    "sources":  {
        "dice":  {
            "type":  "github",
            "user":  "crnixon",
            "name":  "narwhal-­‐dice"
        },
        "caffeine":  {
            "type":  "github",
            "user":  "crnixon",
            "name":  "narwhal-­‐caffeine"
        }
    }
}
Important packages
jack
jake
jsdocs
ejs
nitro
bogart
Real apps I wrote
Questions and discussion


http://narwhaljs.org/
Email  me  at  Clinton  R.  Nixon  <crnixon@gmail.com>
http://pinboard.in/u:crnixon/t:talk:narwhal/

Weitere ähnliche Inhalte

Was ist angesagt?

Node4J: Running Node.js in a JavaWorld
Node4J: Running Node.js in a JavaWorldNode4J: Running Node.js in a JavaWorld
Node4J: Running Node.js in a JavaWorldIan Bull
 
Running JavaScript Efficiently in a Java World
Running JavaScript Efficiently in a Java WorldRunning JavaScript Efficiently in a Java World
Running JavaScript Efficiently in a Java Worldirbull
 
Jenkins and Groovy
Jenkins and GroovyJenkins and Groovy
Jenkins and GroovyKiyotaka Oku
 
Ionic 2: The Power of TypeScript
Ionic 2:  The Power of TypeScriptIonic 2:  The Power of TypeScript
Ionic 2: The Power of TypeScriptJacob Orshalick
 
Web Applications with Eclipse RT and Docker in the Cloud
Web Applications with Eclipse RT and Docker in the CloudWeb Applications with Eclipse RT and Docker in the Cloud
Web Applications with Eclipse RT and Docker in the CloudMarkus Knauer
 
Docker. Micro services for lazy developers
Docker. Micro services for lazy developersDocker. Micro services for lazy developers
Docker. Micro services for lazy developersEugene Krevenets
 
Kernel Recipes 2016 - Would an ABI changes visualization tool be useful to Li...
Kernel Recipes 2016 - Would an ABI changes visualization tool be useful to Li...Kernel Recipes 2016 - Would an ABI changes visualization tool be useful to Li...
Kernel Recipes 2016 - Would an ABI changes visualization tool be useful to Li...Anne Nicolas
 
An introduction to Node.js application development
An introduction to Node.js application developmentAn introduction to Node.js application development
An introduction to Node.js application developmentshelloidhq
 
Vagrant are you still develop in a non-virtual environment-
Vagrant  are you still develop in a non-virtual environment-Vagrant  are you still develop in a non-virtual environment-
Vagrant are you still develop in a non-virtual environment-Anatoly Bubenkov
 
CoreOS @ summer meetup in Utrecht
CoreOS @ summer meetup in UtrechtCoreOS @ summer meetup in Utrecht
CoreOS @ summer meetup in UtrechtTimo Derstappen
 
Leveraging the Power of containerd Events - Evan Hazlett
Leveraging the Power of containerd Events - Evan HazlettLeveraging the Power of containerd Events - Evan Hazlett
Leveraging the Power of containerd Events - Evan HazlettDocker, Inc.
 
Messaging with the Docker
Messaging with the DockerMessaging with the Docker
Messaging with the DockerHenryk Konsek
 
Getting Started with PureScript
Getting Started with PureScriptGetting Started with PureScript
Getting Started with PureScriptJohn De Goes
 
Containerd: Building a Container Supervisor by Michael Crosby
Containerd: Building a Container Supervisor by Michael CrosbyContainerd: Building a Container Supervisor by Michael Crosby
Containerd: Building a Container Supervisor by Michael CrosbyDocker, Inc.
 
Container Torture: Run any binary, in any container
Container Torture: Run any binary, in any containerContainer Torture: Run any binary, in any container
Container Torture: Run any binary, in any containerDocker, Inc.
 
Devoxx UK 2013: Sandboxing with the Vagrant-Binding API
Devoxx UK 2013: Sandboxing with the Vagrant-Binding APIDevoxx UK 2013: Sandboxing with the Vagrant-Binding API
Devoxx UK 2013: Sandboxing with the Vagrant-Binding APIHendrik Ebbers
 
G rpc lection1
G rpc lection1G rpc lection1
G rpc lection1eleksdev
 

Was ist angesagt? (20)

Node.js and Ruby
Node.js and RubyNode.js and Ruby
Node.js and Ruby
 
Node4J: Running Node.js in a JavaWorld
Node4J: Running Node.js in a JavaWorldNode4J: Running Node.js in a JavaWorld
Node4J: Running Node.js in a JavaWorld
 
Running JavaScript Efficiently in a Java World
Running JavaScript Efficiently in a Java WorldRunning JavaScript Efficiently in a Java World
Running JavaScript Efficiently in a Java World
 
Jenkins and Groovy
Jenkins and GroovyJenkins and Groovy
Jenkins and Groovy
 
Ionic 2: The Power of TypeScript
Ionic 2:  The Power of TypeScriptIonic 2:  The Power of TypeScript
Ionic 2: The Power of TypeScript
 
Web Applications with Eclipse RT and Docker in the Cloud
Web Applications with Eclipse RT and Docker in the CloudWeb Applications with Eclipse RT and Docker in the Cloud
Web Applications with Eclipse RT and Docker in the Cloud
 
Docker. Micro services for lazy developers
Docker. Micro services for lazy developersDocker. Micro services for lazy developers
Docker. Micro services for lazy developers
 
Nodejs vatsal shah
Nodejs vatsal shahNodejs vatsal shah
Nodejs vatsal shah
 
Kernel Recipes 2016 - Would an ABI changes visualization tool be useful to Li...
Kernel Recipes 2016 - Would an ABI changes visualization tool be useful to Li...Kernel Recipes 2016 - Would an ABI changes visualization tool be useful to Li...
Kernel Recipes 2016 - Would an ABI changes visualization tool be useful to Li...
 
An introduction to Node.js application development
An introduction to Node.js application developmentAn introduction to Node.js application development
An introduction to Node.js application development
 
Vagrant are you still develop in a non-virtual environment-
Vagrant  are you still develop in a non-virtual environment-Vagrant  are you still develop in a non-virtual environment-
Vagrant are you still develop in a non-virtual environment-
 
CoreOS @ summer meetup in Utrecht
CoreOS @ summer meetup in UtrechtCoreOS @ summer meetup in Utrecht
CoreOS @ summer meetup in Utrecht
 
Leveraging the Power of containerd Events - Evan Hazlett
Leveraging the Power of containerd Events - Evan HazlettLeveraging the Power of containerd Events - Evan Hazlett
Leveraging the Power of containerd Events - Evan Hazlett
 
Messaging with the Docker
Messaging with the DockerMessaging with the Docker
Messaging with the Docker
 
Getting Started with PureScript
Getting Started with PureScriptGetting Started with PureScript
Getting Started with PureScript
 
Containerd: Building a Container Supervisor by Michael Crosby
Containerd: Building a Container Supervisor by Michael CrosbyContainerd: Building a Container Supervisor by Michael Crosby
Containerd: Building a Container Supervisor by Michael Crosby
 
Container Torture: Run any binary, in any container
Container Torture: Run any binary, in any containerContainer Torture: Run any binary, in any container
Container Torture: Run any binary, in any container
 
Devoxx UK 2013: Sandboxing with the Vagrant-Binding API
Devoxx UK 2013: Sandboxing with the Vagrant-Binding APIDevoxx UK 2013: Sandboxing with the Vagrant-Binding API
Devoxx UK 2013: Sandboxing with the Vagrant-Binding API
 
G rpc lection1
G rpc lection1G rpc lection1
G rpc lection1
 
Node js
Node jsNode js
Node js
 

Andere mochten auch

ОРКСЭ в гимназии
ОРКСЭ  в гимназииОРКСЭ  в гимназии
ОРКСЭ в гимназииTatyana Yakovleva
 
Math online orientation summer 2014
Math online orientation summer 2014Math online orientation summer 2014
Math online orientation summer 2014Anthony Lauer
 
Presentacion carrera sonia1
Presentacion carrera sonia1Presentacion carrera sonia1
Presentacion carrera sonia1sonia carrera
 
brochureConveyance
brochureConveyancebrochureConveyance
brochureConveyanceLina Allaoa
 
Target audienec prezi
Target audienec preziTarget audienec prezi
Target audienec preziMia Jones
 
Don't Turn Traffic Signals Upside Down - Color Accessibility in UI Design
Don't Turn Traffic Signals Upside Down - Color Accessibility in UI DesignDon't Turn Traffic Signals Upside Down - Color Accessibility in UI Design
Don't Turn Traffic Signals Upside Down - Color Accessibility in UI DesignDave Simon
 
Adobe PageMaker 7.0. Oficjalny podręcznik
Adobe PageMaker 7.0. Oficjalny podręcznikAdobe PageMaker 7.0. Oficjalny podręcznik
Adobe PageMaker 7.0. Oficjalny podręcznikWydawnictwo Helion
 
과학과 비과학 이야기: 너 그거 아니?
과학과 비과학 이야기: 너 그거 아니? 과학과 비과학 이야기: 너 그거 아니?
과학과 비과학 이야기: 너 그거 아니? Suntae Kim
 
Earth Day2012 Cash Sponsors
Earth Day2012 Cash SponsorsEarth Day2012 Cash Sponsors
Earth Day2012 Cash SponsorsWarnerAnderson
 
5.ашигт малтмалын хуулинд нэмэлт өөрчлөлт оруулах тухай хууль
5.ашигт малтмалын хуулинд нэмэлт өөрчлөлт оруулах тухай хууль5.ашигт малтмалын хуулинд нэмэлт өөрчлөлт оруулах тухай хууль
5.ашигт малтмалын хуулинд нэмэлт өөрчлөлт оруулах тухай хуульMonatom Mgl
 
О роли предпринимательства в устойчивом развитии регионов России
О роли предпринимательства в устойчивом развитии регионов России   О роли предпринимательства в устойчивом развитии регионов России
О роли предпринимательства в устойчивом развитии регионов России aqua-municipal
 
Dac nhan tam p3ch5
Dac nhan tam p3ch5Dac nhan tam p3ch5
Dac nhan tam p3ch5dinhnam0001
 

Andere mochten auch (19)

ОРКСЭ в гимназии
ОРКСЭ  в гимназииОРКСЭ  в гимназии
ОРКСЭ в гимназии
 
здоровье
здоровьездоровье
здоровье
 
Math online orientation summer 2014
Math online orientation summer 2014Math online orientation summer 2014
Math online orientation summer 2014
 
Presentacion carrera sonia1
Presentacion carrera sonia1Presentacion carrera sonia1
Presentacion carrera sonia1
 
brochureConveyance
brochureConveyancebrochureConveyance
brochureConveyance
 
Target audienec prezi
Target audienec preziTarget audienec prezi
Target audienec prezi
 
Remote control
Remote controlRemote control
Remote control
 
DAN
DANDAN
DAN
 
Q6 evaluation
Q6 evaluationQ6 evaluation
Q6 evaluation
 
Don't Turn Traffic Signals Upside Down - Color Accessibility in UI Design
Don't Turn Traffic Signals Upside Down - Color Accessibility in UI DesignDon't Turn Traffic Signals Upside Down - Color Accessibility in UI Design
Don't Turn Traffic Signals Upside Down - Color Accessibility in UI Design
 
Adobe PageMaker 7.0. Oficjalny podręcznik
Adobe PageMaker 7.0. Oficjalny podręcznikAdobe PageMaker 7.0. Oficjalny podręcznik
Adobe PageMaker 7.0. Oficjalny podręcznik
 
과학과 비과학 이야기: 너 그거 아니?
과학과 비과학 이야기: 너 그거 아니? 과학과 비과학 이야기: 너 그거 아니?
과학과 비과학 이야기: 너 그거 아니?
 
Shelbyrae
ShelbyraeShelbyrae
Shelbyrae
 
Earth Day2012 Cash Sponsors
Earth Day2012 Cash SponsorsEarth Day2012 Cash Sponsors
Earth Day2012 Cash Sponsors
 
Fyytfuif
FyytfuifFyytfuif
Fyytfuif
 
5.ашигт малтмалын хуулинд нэмэлт өөрчлөлт оруулах тухай хууль
5.ашигт малтмалын хуулинд нэмэлт өөрчлөлт оруулах тухай хууль5.ашигт малтмалын хуулинд нэмэлт өөрчлөлт оруулах тухай хууль
5.ашигт малтмалын хуулинд нэмэлт өөрчлөлт оруулах тухай хууль
 
О роли предпринимательства в устойчивом развитии регионов России
О роли предпринимательства в устойчивом развитии регионов России   О роли предпринимательства в устойчивом развитии регионов России
О роли предпринимательства в устойчивом развитии регионов России
 
Great pictures
Great pictures Great pictures
Great pictures
 
Dac nhan tam p3ch5
Dac nhan tam p3ch5Dac nhan tam p3ch5
Dac nhan tam p3ch5
 

Ähnlich wie Narwhal and the Adventures of CommonJS

Overview of Node JS
Overview of Node JSOverview of Node JS
Overview of Node JSJacob Nelson
 
Building Server Applications Using ObjectiveC And GNUstep
Building Server Applications Using ObjectiveC And GNUstepBuilding Server Applications Using ObjectiveC And GNUstep
Building Server Applications Using ObjectiveC And GNUstepguest9efd1a1
 
Building Server Applications Using Objective C And Gn Ustep
Building Server Applications Using Objective C And Gn UstepBuilding Server Applications Using Objective C And Gn Ustep
Building Server Applications Using Objective C And Gn Ustepwangii
 
I Just Want to Run My Code: Waypoint, Nomad, and Other Things
I Just Want to Run My Code: Waypoint, Nomad, and Other ThingsI Just Want to Run My Code: Waypoint, Nomad, and Other Things
I Just Want to Run My Code: Waypoint, Nomad, and Other ThingsMichael Lange
 
Docker module 1
Docker module 1Docker module 1
Docker module 1Liang Bo
 
Dcjq node.js presentation
Dcjq node.js presentationDcjq node.js presentation
Dcjq node.js presentationasync_io
 
Nodejs a-practical-introduction-oredev
Nodejs a-practical-introduction-oredevNodejs a-practical-introduction-oredev
Nodejs a-practical-introduction-oredevFelix Geisendörfer
 
Unikernels - Bristech June 2016
Unikernels - Bristech June 2016 Unikernels - Bristech June 2016
Unikernels - Bristech June 2016 Daniel Drozdzewski
 
TorqueBox: The beauty of Ruby with the power of JBoss. Presented at Devnexus...
TorqueBox: The beauty of Ruby with the power of JBoss.  Presented at Devnexus...TorqueBox: The beauty of Ruby with the power of JBoss.  Presented at Devnexus...
TorqueBox: The beauty of Ruby with the power of JBoss. Presented at Devnexus...bobmcwhirter
 
Introduction to node.js By Ahmed Assaf
Introduction to node.js  By Ahmed AssafIntroduction to node.js  By Ahmed Assaf
Introduction to node.js By Ahmed AssafAhmed Assaf
 
RubyStack: the easiest way to deploy Ruby on Rails
RubyStack: the easiest way to deploy Ruby on RailsRubyStack: the easiest way to deploy Ruby on Rails
RubyStack: the easiest way to deploy Ruby on Railselliando dias
 
LibOS as a regression test framework for Linux networking #netdev1.1
LibOS as a regression test framework for Linux networking #netdev1.1LibOS as a regression test framework for Linux networking #netdev1.1
LibOS as a regression test framework for Linux networking #netdev1.1Hajime Tazaki
 
Why everyone is excited about Docker (and you should too...) - Carlo Bonamic...
Why everyone is excited about Docker (and you should too...) -  Carlo Bonamic...Why everyone is excited about Docker (and you should too...) -  Carlo Bonamic...
Why everyone is excited about Docker (and you should too...) - Carlo Bonamic...Codemotion
 
Dockerizing a Symfony2 application
Dockerizing a Symfony2 applicationDockerizing a Symfony2 application
Dockerizing a Symfony2 applicationRoman Rodomansky
 
codemotion-docker-2014
codemotion-docker-2014codemotion-docker-2014
codemotion-docker-2014Carlo Bonamico
 
Iz Pack
Iz PackIz Pack
Iz PackInria
 
PHP Dependency Management with Composer
PHP Dependency Management with ComposerPHP Dependency Management with Composer
PHP Dependency Management with ComposerAdam Englander
 
Parallelizing CI using Docker Swarm-Mode
Parallelizing CI using Docker Swarm-ModeParallelizing CI using Docker Swarm-Mode
Parallelizing CI using Docker Swarm-ModeAkihiro Suda
 

Ähnlich wie Narwhal and the Adventures of CommonJS (20)

Overview of Node JS
Overview of Node JSOverview of Node JS
Overview of Node JS
 
Building Server Applications Using ObjectiveC And GNUstep
Building Server Applications Using ObjectiveC And GNUstepBuilding Server Applications Using ObjectiveC And GNUstep
Building Server Applications Using ObjectiveC And GNUstep
 
Building Server Applications Using Objective C And Gn Ustep
Building Server Applications Using Objective C And Gn UstepBuilding Server Applications Using Objective C And Gn Ustep
Building Server Applications Using Objective C And Gn Ustep
 
I Just Want to Run My Code: Waypoint, Nomad, and Other Things
I Just Want to Run My Code: Waypoint, Nomad, and Other ThingsI Just Want to Run My Code: Waypoint, Nomad, and Other Things
I Just Want to Run My Code: Waypoint, Nomad, and Other Things
 
Docker module 1
Docker module 1Docker module 1
Docker module 1
 
Dcjq node.js presentation
Dcjq node.js presentationDcjq node.js presentation
Dcjq node.js presentation
 
Nodejs a-practical-introduction-oredev
Nodejs a-practical-introduction-oredevNodejs a-practical-introduction-oredev
Nodejs a-practical-introduction-oredev
 
Play framework
Play frameworkPlay framework
Play framework
 
Unikernels - Bristech June 2016
Unikernels - Bristech June 2016 Unikernels - Bristech June 2016
Unikernels - Bristech June 2016
 
TorqueBox: The beauty of Ruby with the power of JBoss. Presented at Devnexus...
TorqueBox: The beauty of Ruby with the power of JBoss.  Presented at Devnexus...TorqueBox: The beauty of Ruby with the power of JBoss.  Presented at Devnexus...
TorqueBox: The beauty of Ruby with the power of JBoss. Presented at Devnexus...
 
Introduction to node.js By Ahmed Assaf
Introduction to node.js  By Ahmed AssafIntroduction to node.js  By Ahmed Assaf
Introduction to node.js By Ahmed Assaf
 
RubyStack: the easiest way to deploy Ruby on Rails
RubyStack: the easiest way to deploy Ruby on RailsRubyStack: the easiest way to deploy Ruby on Rails
RubyStack: the easiest way to deploy Ruby on Rails
 
LibOS as a regression test framework for Linux networking #netdev1.1
LibOS as a regression test framework for Linux networking #netdev1.1LibOS as a regression test framework for Linux networking #netdev1.1
LibOS as a regression test framework for Linux networking #netdev1.1
 
Why everyone is excited about Docker (and you should too...) - Carlo Bonamic...
Why everyone is excited about Docker (and you should too...) -  Carlo Bonamic...Why everyone is excited about Docker (and you should too...) -  Carlo Bonamic...
Why everyone is excited about Docker (and you should too...) - Carlo Bonamic...
 
Dockerizing a Symfony2 application
Dockerizing a Symfony2 applicationDockerizing a Symfony2 application
Dockerizing a Symfony2 application
 
codemotion-docker-2014
codemotion-docker-2014codemotion-docker-2014
codemotion-docker-2014
 
Iz Pack
Iz PackIz Pack
Iz Pack
 
PHP Dependency Management with Composer
PHP Dependency Management with ComposerPHP Dependency Management with Composer
PHP Dependency Management with Composer
 
Docker-v3.pdf
Docker-v3.pdfDocker-v3.pdf
Docker-v3.pdf
 
Parallelizing CI using Docker Swarm-Mode
Parallelizing CI using Docker Swarm-ModeParallelizing CI using Docker Swarm-Mode
Parallelizing CI using Docker Swarm-Mode
 

Mehr von Clinton Dreisbach

Mehr von Clinton Dreisbach (7)

Migrating Legacy Rails Apps to Rails 3
Migrating Legacy Rails Apps to Rails 3Migrating Legacy Rails Apps to Rails 3
Migrating Legacy Rails Apps to Rails 3
 
Having Fun with Play
Having Fun with PlayHaving Fun with Play
Having Fun with Play
 
HTML5 Now
HTML5 NowHTML5 Now
HTML5 Now
 
Unearthed Arcana for Web People
Unearthed Arcana for Web PeopleUnearthed Arcana for Web People
Unearthed Arcana for Web People
 
The Joy Of Ruby
The Joy Of RubyThe Joy Of Ruby
The Joy Of Ruby
 
Advanced Internationalization with Rails
Advanced Internationalization with RailsAdvanced Internationalization with Rails
Advanced Internationalization with Rails
 
Dealing with Legacy PHP Applications
Dealing with Legacy PHP ApplicationsDealing with Legacy PHP Applications
Dealing with Legacy PHP Applications
 

Kürzlich hochgeladen

Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...itnewsafrica
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
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
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
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
 
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
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observabilityitnewsafrica
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
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
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
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
 
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
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
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
 

Kürzlich hochgeladen (20)

Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
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
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
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
 
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
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
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...
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
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
 
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
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
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.
 

Narwhal and the Adventures of CommonJS

  • 1. Narwhal and the Adventures of CommonJS Clinton R. Nixon
  • 2. CommonJS promises  to  be  a  standard  environment  that   will  let  JavaScript  code  use  the  same  APIs   with  different  interpreters
  • 3. Why? JavaScript  is  simple  and  widely-­‐known. To  succeed,  server-­‐side  JavaScript  must  avoid   the  fate  of  Lisp.
  • 5. CommonJS implementations Narwhal  (Rhino,  v8,  JSC) Flusspferd  (Spidermonkey/C++) node.js  (v8;  not  many  standards  or  proposals  implemented) v8cgi  (v8) GPSEE  (Spidermonkey/C) RingoJS  (Rhino;  was  Helma  NG) Perservere  (Rhino) SproutCore  (in-­‐browser)
  • 6. Narwhal one  of  the  most  mature  CommonJS  implementations
  • 7. Narwhal A  CommonJS  platform  or  implementation Arguably  the  most  mature  implementation Runs  on  several  interpreters Rhino  has  the  most  complete  implementation JavaScriptCore  works  well  on  Macs Easy  to  add  new  engines  if  you're  a  language   implementation  hacker
  • 8. Why? You  can  use  it  today Rhino  makes  it  easy  to  build  off  Java  libraries Lots  of  activity,  and  other  implementations  are   working  to  be  compatible  with  it But  still  needs  lots  of  work
  • 9. Narwhal packages package.json Based  on  the  CommonJS   local.json bin/ package  standard lib/ tusk  is  a  package  manager    foo.js src/ sea  is  an  environment  manager jars/ packages/ Every  project  is  a  package engines/ tests/    foo.tests.js
  • 10. package.json {        "name":  "jake",        "author":  "Francisco  Tolmasky  <francisco@280north.com>",        "contributors":  [                "Tom  Robinson  (http://tlrobinson.net/)  <tom@280north.com>"        ],        "description":  "A  build  system  for  CommonJS,  lifted  from  Rake",        "keywords":  [                "build",                "jake",                "rake",                "make"        ],        "version":  "0.2.1" }
  • 11. Modules Each  JS  file  under  lib/  is  a  module Modules  are  executed  within  a  function Arguments  are  require,  exports,  and  module Modules  return  exports Core  concept  of  CommonJS
  • 12. Module & package demonstration
  • 13.
  • 15.
  • 17. sources.json {    "version":  2,    "includes":  ["http://github.com/280north/narwhal/raw/master/ catalog-­‐2.json"],    "sources":  {        "dice":  {            "type":  "github",            "user":  "crnixon",            "name":  "narwhal-­‐dice"        },        "caffeine":  {            "type":  "github",            "user":  "crnixon",            "name":  "narwhal-­‐caffeine"        }    } }
  • 19. Real apps I wrote
  • 20. Questions and discussion http://narwhaljs.org/ Email  me  at  Clinton  R.  Nixon  <crnixon@gmail.com> http://pinboard.in/u:crnixon/t:talk:narwhal/