36
Wakanda A project dedicated to creating a new end-to-end JavaScript platform lundi 1 février 2010

Wakanda: a new end-to-end JavaScript platform - JSConf Berlin 2009

Embed Size (px)

Citation preview

WakandaA project dedicated to creating a

new end-to-end JavaScript platform

lundi 1 février 2010

4D4D has been publishing business application

development tools for many years, with a focus on simplicity, compatibility and integration, across

desktop, client-server and Web.

lundi 1 février 2010

We are a "small-large" company based in Paris, with a presence all over the world.

lundi 1 février 2010

Inner magic

It's what Wakanda means in the Sioux language.

We intend to bring our style of ease and simplicity in development to your complex

business Internet applications.

lundi 1 février 2010

The Wakanda Team

lundi 1 février 2010

Why is JavaScript the best choice for Wakanda today?

http://tr.im/javascript_rocks

lundi 1 février 2010

The Wakanda Project

lundi 1 février 2010

Studio

- users & groups management

- database / entity models design & administration

- WYSIWYG editing

- JSDoc / ScriptDoc (type-ahead, outline, publication)

- source control

- validators (JSLint, W3C, ...), ATAG conformance !?!

- unit testing (TDD, TDR), client & server debugger

- minifier, caching properties

lundi 1 février 2010

Web AdminSolution, Applications, Servers, Services

lundi 1 février 2010

HTTP & JavaScript Unit Testing Tool

HTTP test case editor in the Firebug console

lundi 1 février 2010

Use the Bespin JavaScript editor tocustomize test cases

HTTP & JavaScript Unit Testing Tool

lundi 1 février 2010

HTTP & JavaScript Unit Testing Tool

Test suite management - YUI test compatibility - JUnit support

lundi 1 février 2010

Remote JavaScript DebuggingCrossFire, v8 protocol compatibility !?!

- debug the client from the studio - debug the server from web clients

breakpoint, step by step, callstack, JavaScript expression evaluation

lundi 1 février 2010

JSON-RPC Client & Server

A simple protocol

Request by position--> {"jsonrpc": "2.0", "method": "subtract", "params": [42, 23], "id": 1}<-- {"jsonrpc": "2.0", "result": 19, "id": 1}

Request by params--> {"jsonrpc": "2.0", "method": "subtract", "params": {"subtrahend": 23, "minuend": 42}, "id": 3}<-- {"jsonrpc": "2.0", "result": 19, "id": 3}

lundi 1 février 2010

Simple function declaration, request validity control from JSDoc or JSON-Schema

Server-Side

/** * get the number of connexions on an application server * * @param {String} appName application name * @return {Number} **/

function countConnections(appName) { return applications[appName].servers.http.connections();}

JSON-RPC Client & Server

lundi 1 février 2010

Simple client binding declaration,

Client-Side

<meta name="WAF.config.rpc.namespace" content="customAdmin" /><meta name="WAF.config.rpc.methods" content="countConnections" />

or

<link rel="WAF.config" href="/wafConfig.json" type="application/json" />

JSON-RPC Client & Server

lundi 1 février 2010

Simple and advanced method calls, request sent only if parameters are valid

Client-Side

customAdmin. countConnections("killingApp");customAdmin. countConnectionsAsync(showResult, "killingApp");

var infosHandlers = { onsuccess: function (result) { /* ... */}, onerror: function (error) { /* ... */}};

customAdmin. countConnectionsAsync(infosHandlers, "killingApp");

JSON-RPC Client & Server

lundi 1 février 2010

Easy way to call external Web Servicesand to had client validity checking

Client-Side

WAF.rpc.call("otherMethod", paramA, paramB);

WAF.rpc.callAsync(methodHandlers, "otherMethod", paramA, paramB);

or

WAF.rpc.call(otherServerConfig, "otherMethod", paramA, paramB);

or

var rpcOut = new WAF.classes.Rpc(otherServerConfig);

rpcOut.callAsync(methodHandlers, "otherMethod", paramA, paramB);

rpcOut.getInterface("otherMethod", "rpcOut");

rpcOut.otherMethodAsync(methodHandlers, paramA, paramB);

JSON-RPC Client & Server

lundi 1 février 2010

End-to-End JavaScript

SquirrelFish Extreme (Nitro)

64 bits - multi-thread - lightweight - extensible - the fastest ?

lundi 1 février 2010

CommonJS

Modules/1.0

«4D is implementing this in Wakanda»

http://wiki.commonjs.org/wiki/Modules/1.0

lundi 1 février 2010

HTTP Incoming Request JS APIs

JSGI (0.2)Jack

PersevereJaxerv8cgi

EJscriptnode.js

Wakanda * http://wiki.commonjs.org/wiki/JSGIhttp://tr.im/http_ssjs_api

lundi 1 février 2010

Native REST & JavaScript NoSQL Data store Engine

lundi 1 février 2010

Core data store engine

Entity Model support

64 bits - Unicode - multi-thread - multi-process

Improved database engine

lundi 1 février 2010

Core data store engine

Entity Model support

JavaScript API

Lowest level JavaScript and HTTP binding

REST HTTP API

lundi 1 février 2010

Easy way to design the Business interface

lundi 1 février 2010

var emps = db.employee.all();function hello(emp) { return ‘hello ’ + emp.name;}hello(emps.first());

Access to the Business interface layer from JavaScript

Core data store engine

Entity Model support

JavaScript API REST HTTP API

lundi 1 février 2010

db.employees.find("name = alex").drop();

function getWorkLocation(employee) { return employee.company.address;}

Core data store engine

Entity Model support

JavaScript API REST HTTP API

lundi 1 février 2010

GET /rest/employee(5)GET /rest/employee/name?$query=salary < 50000DELETE /rest/employee("Tom Cat")

* JSON or XML layout

Access to the business interface layer from HTTP trough a REST API

Core data store engine

Entity Model support

REST HTTP APIJavaScript API

lundi 1 février 2010

JSON View of an entity set

lundi 1 février 2010

XML View of an entity set

lundi 1 février 2010

Direct HTML interface

• Unlimited number of entities in the datatable• Automatic Forms with unlimited property hierarchy• Very responsive filters, server side ordering• Possibility to add, remove, and update the entities

lundi 1 février 2010

WAF adapters

lundi 1 février 2010

lundi 1 février 2010

Upcoming?

Yours...?

lundi 1 février 2010

Summary

- Powerful Server Side JavaScript engine

- Native Business Logic abstraction

- No SQL generation

- direct JavaScript interface

- direct REST interface

- Open Platform

- Streamlined development process

lundi 1 février 2010

Developer preview: 1st quarter 2010

http://www.wakandasoftware.com@wakandasoftware

@amorgaut@amorgaut/wakanda

@amorgaut/javascript-gurus@amorgaut/accessibility

http://wiki.commonjs.com http://tr.im/wtframework

Get Involved

lundi 1 février 2010