?????? JavaScript ?
Shared by: HC120229034533
-
Stats
- views:
- 22
- posted:
- 2/28/2012
- language:
- pages:
- 55
Document Sample


サーバサイド JavaScript の
歴史と未来
Shibuya.js Technical Talk #2
竹迫 良範
<takesako@namazu.org>
前回のshibuya.js#1の振り返り
最後に生き残るのはJavaScriptかもな
JavaScriptのこれまでの10年とこれからの10年
これまでの10年でクライアントサイドを征覇した
これからの10年でどこまで領域を広げるか
etoさん基調講演
2006/06/30
#02 2
クライアントサイドは制覇した
2006/06/30
#02 3
昔:サーバサイドのプログラミング言語
Ruby
Java
PHP
Perl
サーバサイド
Webサーバ)
(
ラア ト ド
ク イ ン サイ
( ラ ザ)
ブ ウ JavaScript
2006/06/30
#02 4
今:サーバサイド言語でJavaScript生成
サーバサイド
Webサーバ)
(
PHP
Perl
Ruby
Java
本居宣長の方法
ラア ト ド
ク イ ン サイ
RJS GWT
( ラ ザ)
ブ ウ
とか JavaScript J2S
2006/06/30
#02 5
未来:JavaScriptで全部書く!
Ruby
Java
PHP
Perl
サーバサイド
Webサーバ)
(
夏目漱石の方法 JavaScript
ラア ト ド
ク イ ン サイ
ブ ウ
( ラ ザ)
2006/06/30
#02 6
これからの時代は
サーバサイド
JavaScript
2006/06/30
#02 7
これまでの
サーバサイドJavaScript
商用プロダクト編
サーバサイドJavaScriptの有名どころ
Microsoft IIS
ASP (Active Server Page) いろいろ
VBScript / PerlScript / Jscript …
LiveWire JavaScript から発展
Netscape Enterprise Server
iPlanet
Sun Java System Web server
BroadVision
One-To-One Enterprise
2006/06/30
#02 9
2006/06/30
#02 10
DreamArts ひびき®シリーズ
http://hibiki.dreamarts.co.jp/index.html
2006/06/30
#02 11
DreamArts ひびき®シリーズ
サーバサイドJavaScriptを採用
パッケージ製品である「ひびき」に対する
顧客要望別プラグインを JavaScript で記述
JavaScript処理系
Rhino + Velocity (Java)
2006/06/30
#02 12
DreamArts ひびき®シリーズ
プラグインで可能なこと
API を利用した内部データへのアクセス
JDBCコネクションプールによるDBアクセス
製品で提供されている拡張ポイントを利用して
製品仕様を変更する
トランザクション内のフックにより
他のシステムとのデータリアルタイム連携
製品内に保持しているデータのグラフ化
2006/06/30
#02 13
DreamArts ひびき®シリーズ
サンプルプログラム
function service(request, response) {
var hibikidb = Hibiki.getDatabaseSession();
var isdb = Hibiki.getDatabaseSession('isdb');
if (hibikidb == null || isdb == null) {
log.fatal("Failed to check my DB server!");
return sendError(response);
}
var f = new java.io.File(Hibiki.getDataDirectory()
+ "/health-check.dat");
if (!f.exists()) {
log.fatal("Failed to check my file server!");
return sendError(response);
}
/*
return "/success.vm";
* ロードバランサから監視する場合のヘルスチェックリスナーサンプル
}
* 正常に稼働している場合には、/success.vm の内容が送信される。
* データベースおよびファイルのどちらかに異常がある場合には、
* HTTPステータスコード500を返して終了する。- sendError()
*/
2006/06/30
#02 14
INSUITE®セキュリティアダプタ
http://www.insuite.jp/merit/security.html
2006/06/30
#02 15
INSUITE®セキュリティアダプタ
サーバサイドJavaScriptを採用
Apache2 の挙動を JavaScript でコントロール
mod_perl や mod_python などと同じ
Apache2 の各種ハンドラを JavaScript で記述
LDAP認証やリバースプロキシ、SSL証明書の
取り扱いなどの組み込みオブジェクトを用意
JavaScript処理系
SpiderMonkey + Apache2
2006/06/30
#02 16
INSUITE®セキュリティアダプタ
サンプルプログラム
SSL以外でリクエストされた場合に
SSLにリダイレクトする
$ cat redirect_to_https.js
Apache.translateName = function {
if (request.uri.match("^/images/(.*)")) decline();
if (request.uri.match("^/i/(.*)") ||
request.uri.match("^/_/(.*)")) decline();
redirect("https://" + request.hostname + request.uri);
}
2006/06/30
#02 17
未踏ソフトウェア編
サーバサイドJavaScriptの実装
2006/06/30
#02
http://www.ipa.go.jp/about/jigyoseika/04fy-pro/mito/2004-861a.pdf 19
2006/06/30
#02 20
2006/06/30
#02 21
Mayaa – JavaServer Templates
2006/06/30
#02 22
Mayaa の位置づけ
a
2006/06/30
#02 23
Java系オープンソースの
サーバサイド JavaScript
いくつか紹介
Sarugau JS(さるごーJS)
サーバサイドDHTMLエンジン
Java上で動作する JavaScript と DIコンテナを
使ったプレゼンテーション層用のフレームワーク
JavaScript処理系
Rhino (Java)
サーバサイドDHTML
Rhino のラップドファクトリ機構を利用
ブラウザの innerHTML, style などのDOM拡張
2006/06/30
#02 25
Sarugau JS(さるごーJS)
2006/06/30
#02 26
firecat – JavaScript WebServer
処理系
W3C Jigsaw (HTTP) + FESI (ECMAScript)
ライセンス
LGPL
http://betaworks.netbeans.jp/Wiki.jsp?page=Firecat
2006/06/30
#02 27
firecat – JavaScript WebServer
サンプルプログラム
<%@page content_type="text/html; charset=Shift-JIS"%>
<%
var msg = "あなたのIPアドレスは";
var remote_ip = request.getRemoteAddr();
msg = msg + remote_ip;
%>
<%=msg%>
2006/06/30
#02 28
その他
mod_gcj / Rhinola
Rhino + GCJ4.0 + Apache mod_gcj
http://mod-gcj.sourceforge.net/rhinola.html
Helma - Javascript Web Application
Framework
Rhino + Jetty
Helma License version 2.0
http://www.helma.org/
2006/06/30
#02 29
今年の新たな動き
JSAN関連
2006/06/30
#02 31
Oku Kazuho @ Cybozu Labs
サーバサイドで JavaScript の単体テスト
JSAN の Test.Simple を
Windows Scripting Host (WSH) に移植
Test-Simple-WSH.patch
runtests.js
Windows のコマンドプロンプトで
JavaScript ライブラリのテストが動く
> cscript.exe runtests.js testsrc.js
2006/06/30
#02 32
Oku Kazuho @ Cybozu Labs
JSAN-ASP.patch
ASP で JSAN を使うパッチ (2006/3/24)
<script language="JavaScript" src="JSAN.js" runat="server"></script>
<script language="JavaScript" runat="server">
JSAN.use("Digest.MD5", ":all");
Response.write(md5Hex("hello"));
</script>
2006/06/30
#02 33
これからの時代は
サーバサイド
JavaScript
2006/06/30
#02 34
プロジェクト AJAJA(仮称)
本日初公開
プロジェクトAJAJA(仮称)
AJAJA
Asynchronous JavaScript and JavaScript/ASP
最初の動機(構想)
ブラウザ上で動く JavaScript と、ウェブサーバで動く
JavaScript とを相互に通信させることで、JavaScript
のみによる Ajax なシステムを作れるようにしてみよう
開発者
西田圭介さん (+アルファギークな仲間達)
フリープログラマ
OpenCOBOLの開発者
Gonzuiの開発者でもある
某商用VPNソフトウェアの開発者
2006/06/30
#02 36
プロジェクトAJAJA(仮称)
オープンソースな JavaScript/ASP の実装
IIS の記法がそのまま使える(過去の資産の継承)
処理系
SpiderMonkey
CGI で提供
/usr/bin/asp_js コマンド
SQLite3標準サポート
use('SQLite');
db = new SQLite('sample.db');
2006/06/30
#02 37
サンプルプログラム
hello.asp
<%@ Language=JavaScript %>
<%
var hello = "Hello world";
%>
<html>
<head>
<title><%= hello %></title>
</head>
<body>
<h1><%= hello %></h1>
</body>
</html>
2006/06/30
#02 38
実行処理系のベンチマーク
CPU: Pentium 4 3GHz
OS: RHEL4 Update 3 (Linux 2.6.9-34)
JS は SpiderMonkey を DEBUG モードでビルド
JS(OPT=1)は SpiderMonkey を BUILD_OPT=1 でビルド
2006/06/30
#02 39
プロジェクト AJAJA(仮称)
JavaScript/ASP デモ
[ソース]
2006/06/30
#02 41
デモ製作:haltさん
JavaScript/ASP demo – Simple BBS
2006/06/30
#02 42
Yet Another Demo
2006/06/30
#02 43
ただいま空前の素数ブーム
LL Ring キミならどう書く 2.0
前哨戦 Round 1
お題「100までの整数から素数を列挙せよ」
Brainf*ckで100までの素数を列挙してみるテスト
2006/06/30
#02 45
2006/06/30
#02 46
2006/06/30
#02 47
function BF(str){
this.code = []; this.output = []; this.input = []; this.data = [];
this.pc = this.sp = 0;
this.debug = 0;
this.step = function(){
var op = bf.code[this.pc];
if (bf.debug){
document.writeln([op, bf.sp, bf.pc].join(","));
}
switch (op) {
case '<' : bf.sp--; break;
case '>' : bf.sp++; break;
case '+' : if(!bf.data[bf.sp]) bf.data[bf.sp] = 0;
bf.data[bf.sp]++ ; break;
case '-' : if(!bf.data[bf.sp]) bf.data[bf.sp] = 0;
bf.data[bf.sp]--; break;
case '.' : bf.output.push(bf.data[bf.sp]) ; break;
case ',' : bf.data[bf.sp] = bf.input.shift() ; break;
case '[' : if (bf.data[bf.sp]) break;
nest = 1;
while(nest){
bf.pc++;
nest += bf.code[bf.pc] == '[' ? +1
: bf.code[bf.pc] == ']' ? -1
: 0;
}
break;
case ']' : nest = 1;
while(nest){
bf.pc--;
nest -= bf.code[bf.pc] == '[' ? +1
: bf.code[bf.pc] == ']' ? -1
: 0;
};
2006/06/30
#02 bf.pc--; 48
Brainf*ck への応用
./Brainfuck.js
function BF(str)の定義
./demo.asp
クライアントサイド
<script src=“Brainfuck.js”></script>
サーバサイド
<% use(‘Brainfuck’) %>
2006/06/30
#02 49
サーバ/クライアントで.jsを共有
有名なJavaScriptライブラリをサーバサイドでも
prototype.js
MotchiKit
JSANモジュール
JavaScriptライブラリをみんなでshare
Validationロジックの共通化
フォームの入力値のチェック
数値、文字列の長さ
DRYの原則(Don’t Repeat Yourself)
2006/06/30
#02 50
ToDo
やりたい事
ToDo
Apacheモジュール欲しい
最初に作ったのは mod_aspjs だが路線変更
スレッドまわりとか GC とかきちんと
ライブラリの充実
サーバサイドのJSANモジュール
SSI -> SSJ Extension
業務で使えるテンプレートエンジン
サーバサイドでDHTML
DOM操作、innerHTML のサポートとか…
2006/06/30
#02 52
近日公開予定
http://ajaja.alphageek.jp
2006/06/30
#02 53
共同開発者
募集中
svn公開し す)
( ま
2006/06/30
#02 54
サーバサイド JavaScript の
歴史と未来
ご清聴ありがとうございました
Related docs
Other docs by HC120229034533
Students will use Excel graphical methods to model gas laws and plot probability
Views: 30 | Downloads: 0
Get documents about "