JavaScript一站式开发工具包介绍_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > JavaScript一站式开发工具包介绍

JavaScript一站式开发工具包介绍

 2014/7/11 12:45:17  iboxdb  程序员俱乐部  我要评论(0)
  • 摘要:本文介绍使用统一的JavaScript语言处理开发过程中的各部分,包括WebAPI,AJAX,数据库,多线程,分布式编程,服务器监控等。一什么是HIJKHIJK是一个自动化的JavaScriptWebAPI开发工具包,内置了HTTP服务器,数据库引擎,和各种常用功能的JavaScript封装,是一个开箱即用的开发工具包,基于Java8最新的功能,无需安装,无需配置,开发完的系统直接复制到另一台机器就能以一致的方式运行,系统压缩备份只需要直接一条zip压缩命令压缩整个文件夹就完成
  • 标签:工具 Java 开发 javascript

本文介绍使用统一的JavaScript语言处理开发过程中的各部分,包括 WebAPI,AJAX,数据库,多线程,分布式编程,服务器监控等。

?

一 什么是HIJK

?

HIJK是一个自动化的JavaScript WebAPI开发工具包,内置了HTTP服务器,数据库引擎,和各种常用功能的JavaScript封装,是一个开箱即用的开发工具包,基于Java8最新的功能,无需安装,无需配置,开发完的系统直接复制到另一台机器就能以一致的方式运行,系统压缩备份只需要直接一条zip压缩命令压缩整个文件夹就完成,数据库数据同时也位于HIJK目录内,无任何导入,导出命令需要。

?

二 启动开发服务器

?

设置 PATH 到 /JAVA8_HOME/bin

jjs build.js

windows run ?; linux ./run.sh

?

三 Hello World!

?

HIJK是一个自动化的WebAPI开发包,同时使用的是JavaScript语言,现在所有主流的Web开发工具都支持JavaScript。要实现HelloWorld API,只需要使用记事本写个标准的JavaScript函数,如下

?

hijk.api.helloworld = function() {

? ? return ?"Hello World!";

};

hijk.api.helloworld2 = function() {

? ? return {MSG: 'Hello World!'};

};

?

然后把这个文件复制到 HIJK/js/ 目录内, 现在这个函数就能直接通过HTTP调用,向外部提供Web服务了。 在需要的时候可以使用 http://localhost/edit/js/demo.js 地址直接在线写代码, 无需手工编译,工具包会自动加载修改过的代码。

?

四 在客户端使用JavaScript调用 API 服务

?

? ? ? ? function request(api, fun) {

? ? ? ? ? ? var req = new XMLHttpRequest();

? ? ? ? ? ? req.open("GET", api, true);

? ? ? ? ? ? req.onreadystatechange = function() {

? ? ? ? ? ? ? ? if (req.readyState === 4 && ?req.status === 200) {

? ? ? ? ? ? ? ? ? ? var o = eval("(" + req.responseText + ")");

? ? ? ? ? ? ? ? ? ? fun(o);

? ? ? ? ? ? ? ? }

? ? ? ? ? ? };

? ? ? ? ? ? req.send();

? ? ? ? }

? ? ? ? function hello() {

? ? ? ? ? ? request("/api/helloworld2", function(o) {

? ? ? ? ? ? ? ? alert(o.MSG);

? ? ? ? ? ? });

? ? ? ? }

?

现在完成了一个从服务器到客户端的全开发过程,简单易用,统一JavaScript语言

?

五 访问 HTTP 请求的参数

?

WebAPI参数从JavaScript函数的第一个参数中传入,像操作普通JSON属性一样访问参数值,如 /api/get?id=99&name=andy 使用如下方式读取参数

hijk.api.get = function(map,request) {

? ? var msg = {

? ? ? ? url: request.getRequestURI(),

? ? ? ? id : map.id[0],

? ? ? ? name: map.name[0]?

? ? };

? ? return msg;

};

?

六 WebSocket WebAPI

?

HIJK WebAPI支持 WebSocket, 可进行双向数据通信, 把函数名用 ws_ 作为前缀, 开发包就会自动采用WebSocket 模块进行处理, ?通过 socket.send()发送数据,通过socket.onmessage()监听消息。使用HIJK的WebSocket WebAPI只需要 30 行简洁易读的代码就能完成一个实时网络聊天室的服务器端开发,不需要了解TCP的各种连接等待机制。?

?

hijk.api.ws_helloname = function(socket, request, response) {

? ? socket.send("Name: ")

? ? ? ? ? .onmessage(function(name) {?

? ? ? ? ? ? ? ? sendall("Welcome " + name);?

? ? ? ? ? });

};

?

七 使用JavaScript进行多线程操作

?

任何一个普通JavaScript函数,只需要传入 sys.thread() , 就会作为后台线程运行,HIJK提供一个 sys.threadreturn 队列保存线程运行结果,在主线程中通过 take() 取回后台线程的运行结果, 整个流程自动完成线程同步,无需复杂的线程处理技巧。

hijk.api.multi_thread = function() {

? ? var results = sys.threadreturn(2);

?

? ? //Thread 1

? ? sys.thread(function() {

? ? ? ? for (var i = 1; i <= 10000; i++) { ? ? ? }

? ? ? ? results.put("T01-" + c);

? ? });

?

? ? //Thread 2

? ? sys.thread(function() {?

? ? ? ? for (var i = 10001; i <= 20000; i++) { ? }

? ? ? ? results.put("T02-" + c);

? ? });

?

? ? var rs = [];?

? ? rs.push(results.take());

? ? rs.push(results.take());?

? ? return rs;

};

?

八 使用JavaScript进行分布式编程

?

要进行分布式编程,首先启动两台Web服务器,这里一台使用 8080 端口,一台使用 9090 端口。 使用两个控制台,分别执行下面的命令启动

8080服务器

jjs build.js -- 8080?

Windows run8080 ; Linux ./run8080.sh

?

9090服务器

jjs build.js -- 9090?

Windows run9090 ; Linux ./run9090.sh

?

在 8080服务器的控制台上输入如下 JavaScript

(

start_remote_process("ws://localhost:9090/api/ws_eval",

? ? ? ? ? ? function() {?

? ? ? ? ? ? ? ? print("Hello World");

? ? ? ? ? ? })

)

?

这些代码是在8080这台机器上输入的,start_remote_process 会把传入的 function 转到9090这台机器上执行,非常简洁地实现了分布式开发,在一台机器上完成对多台机器的运算操控。

?

九 数据库操作

?

9.1定义表及索引

HIJK的数据表是采用JavaScript定义的方式,然后由开发工具包自动创建的,可以存取无结构化的数据,只需要在 HIJK/js/ 目录内的任何.js文件的任何位置中写入

hijk.table.table1 = {

? ? data: {"id": 0, "name": ""},

? ? key: ["id"],

? ? index: [["name"]]

};

?

开发工具包就会自动创建一个叫'table1'的表,表的主键是'id'字段, 并且使用一个'name'字段作为索引

?

9.2 插入及访问数据

直接对JSON数据进行插入,数据无结构化,可以随意设置字段

hijk.api.table1_insert = function() {

? ? var tid = hijk.db.id();

? ? var v = {

? ? ? ? id: tid,

? ? ? ? name: "name" + tid,

? ? ? ? fieldA: "fieldA" + tid,

? ? ? ? fieldB: "fieldB" + tid

? ? };

? ? if (hijk.db.insert("table1", v)) {

? ? ? ? return tid;

? ? } else {

? ? ? ? return -1;

? ? }

};

?

采用SQL-Like的方式结合JavaScript代码自由访问数据字段, 如果数据从WebAPI中返回,HIJK开发工具包会自动把它转为JSON字符串格式.

hijk.api.table1_select = function() {

? ? var r = hijk.db.select("from table1");

? ? return r;

};

hijk.api.table1_select_sum = function() {

? ? var r = 0;

? ? hijk.db.select("from table1", [],

? ? ? ? ? ? function(v) {

? ? ? ? ? ? ? ? r += v.id;

? ? ? ? ? ? ? ? return true;

? ? ? ? ? ? });

? ? return r;

};

?

性能测试

?

从数据库中读数据然后转为JSON字符串通过HTTP从Web中返回,每秒能达到3000个请求以上,满足大部分应用系统对实时数据访问的性能要求。

Document Path: ? ? ? ? ?/api/table1_selectkey?id=12600

Concurrency Level: ? ? 1000

Time taken for tests: ? ?23.092 seconds

Complete requests: ? ? 100000

Failed requests: ? ? ? ? ? 0

Write errors: ? ? ? ? ? ? ? ? 0

Requests per second: ?4330.43 [#/sec] (mean)

?

十一 JavaScript小历史

?

JavaScript被引入作为服务器编程语言的时间

Netscape introduced an implementation of JavaScript for server-side scripting with Netscape Enterprise Server, first released in December, 1994 (soon after releasing JavaScript for browsers).(来源)

?

JavaScript的初始设计,这文章是在1996年3月发表的

Netscape Enterprise Server also supports Java and JavaScript, which enables users to build applications that run on?either the client or server anywhere on the network. This support enables developers to create content applications that?can run on multiple platforms without recompiling. ?(来源)

?

?

扩展资源:

HIJK开发工具包还带的一些控制台小命令,如输入 online() 能查看在线连接数及内存使用数,dbprint('from table') 能查看数据库数据。

?

更多操作功能例子及源代码:

1.HIJK 自动化 JavaScript WebAPI 开发工具包

2.iBoxDB数据库引擎介绍

?

发表评论
用户名: 匿名