YOU ARE DOWNLOADING DOCUMENT

Please tick the box to continue:

Transcript
Page 1: JavaScript for VW Applications

JavaScript  for  VW  Applica1ons

JavaScript  for  VW  Applica1ons  Holger  Kleinsorgen  &  Jan  Schümmer    intelligent  views,  Darmstadt,  Germany    ESUG  2014  –  Cambridge,  UK  

Page 2: JavaScript for VW Applications

JavaScript  for  VW  Applica1ons

K-­‐Infinity  -­‐  our  core  product    

2  

•  semanJc  database  

•  modelling  

•  querying  

•  data  integraJon  

•  web  frontend  (Java)  

•  REST  services  

•  highly  configurable  

à  need  for  scrip1ng  throughout  the  system  

Page 3: JavaScript for VW Applications

JavaScript  for  VW  Applica1ons

3  

Smalltalk  sandbox  

J  J  K  J  J  

JavaScript  

JJ  J  JJ  J  J  

First  try:  KScript  

easy  to  communicate   L  easy  to  learn   L  universal  /  wide  spread   LL  suitable   K  flexible   L  

Page 4: JavaScript for VW Applications

JavaScript  for  VW  Applica1ons

Anything  reusable  out  there?  

4  

only  one  dead  ST  implementaJon    

3rd  party  C  libraries  

•  Jed  to  web  environments  

•  uncertain  future  

Mozilla  Rhino    

•  Java  implementaJon  would  need  JNI  

•  lack  of  flexibility  for  host  object  integraJon  

We  wanted  real  Smalltalk  Objects  without  addiJonal  runJmes  

 

Page 5: JavaScript for VW Applications

JavaScript  for  VW  Applica1ons

5  

What  is  important?  

•  conform  to  the  specs  

•  easy  to  integrate  host  objects  

•  maintainable  

What  is  not  that  important  

•  performance  

à  simply  follow  the  250  pages  of  the  ECMA  5  spec  

 

Page 6: JavaScript for VW Applications

JavaScript  for  VW  Applica1ons

Parser  

6  

•  PeJtParser  •  PEG  +  Memoizing  +  Stuff,  Smalltalk  notaJon  

•  Tweaked  for  more  precise  error  locaJons  

•  separated  into  lexical  and  syntacJcal  part  •  follows  structure  of  ECMA  spec  

•  adapted  for  PEG  (no  lec  recursions,  alternaJves  parse  first  match)  

•  quirks  due  to  spec  •  strict  mode  

•  disJnguish  regex  literals  from  expressions  

•  automaJc  semicolon  inserJon  

Page 7: JavaScript for VW Applications

JavaScript  for  VW  Applica1ons

Parser  

7  

Page 8: JavaScript for VW Applications

JavaScript  for  VW  Applica1ons

RunJme  

8  

•  Everything  represented  by  dedicated  objects    •  JSEAbstractObject  (Javascript  objects    and  primiJves)  

•  JSEExecuJonEnvironment  +  JSEExecuJonContext  

•  JSEBinding,  JSEReference,  JSEProperty    

•  Implement  algorithms  of  the  spec  

•  VW  VM  garbage  collecJon  

•  Language  core  implemented  by  JSERunJmeImplementaJon  

•  Syntax  tree  transformed  to  code  blocks  

•  Code  blocks  are  evaluated  in  an  execuJon  context  •  Interpreted  and  thus  quite  slow  

 

Page 9: JavaScript for VW Applications

JavaScript  for  VW  Applica1ons

9  

ECMAScript  Language  Specifica1on  5.1,  page  76  

Page 10: JavaScript for VW Applications

JavaScript  for  VW  Applica1ons

ECMA  conformance  test  suite  

10  

•  about  11500  unit  tests  

•  current  result:  313  failures,  95  errors  (4  %)  

•  browsers:  between  8  and  52  failures  /  errors  (0.06  %  –  0.45  %)  

•  test  cases  helped  to  find  the  nicy  /  exoJc  parts  

•  decided  to  accept  some  failures  for  the  Jme  being  

Page 11: JavaScript for VW Applications

JavaScript  for  VW  Applica1ons

11  

Demo  1me  

Page 12: JavaScript for VW Applications

JavaScript  for  VW  Applica1ons

K-­‐Infinity  IntegraJon  

12  

Usage  Example  •  definiJon  of  a  REST  

service  

SemanJc  Net  API  

Debugger  

Page 13: JavaScript for VW Applications

JavaScript  for  VW  Applica1ons

Ups  and  Downs  

13  

The  good  parts  

•  (mostly)  works  as  expected    

•  implementaJon  was  straight  forward  

•  use  cool  JS  libraries  

•  fast  enough  for  our  use  cases  

The  cheesy  parts  

•  parser  hacks  

•  the  "usual"  browser  objects  are  not  available  

•  took  some  Jme  

 

Page 14: JavaScript for VW Applications

JavaScript  for  VW  Applica1ons

Wish  list  

14  

•  switch  to  single  grammar  

•  switch  to  VW  PEG  Parser    •  nicer  to  read  due  to  DSL,  easier  to  maintain  

•  already  includes  JS  grammar,  needs  some  tweaks  though  

•  byte  code  compiler  •  only  as  a  pet  project,  not  required  currently  

•  all  test  cases  pass  

•  ECMA  6  (especially  collecJons)  

Page 15: JavaScript for VW Applications

JavaScript  for  VW  Applica1ons

15  

JavascriptEngine-­‐Bundle    MIT  License  

Public  Repository  

{h.kleinsorgen|j.schuemmer}@i-­‐views.de  

 

Thank  you  for  your  aRen1on  


Related Documents