Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
第4回Open INTRA-MART勉強会
Google App EngineでServer Side JavaScript
じこしょうかい
名前
榎本
潤(えのもと
じゅん)
所属
Open INTRA-MART
株式会社イントラマートCSI
Open INTARA-MARTとは
Open INTRA-MARTとは
「技術者が楽しく」をモットーとしたコミュニティです!
http://oss.intra-mart.org/
irc: oss.intra-mart.org:6667 #imart
Google App Engine
Google App Engine
Googleの提供するWebアプリケーション実行環境
Googleのインフラ上で自作のWebアプリが実行可能
負荷分散とかスケーリングとかはGoogleがやってくれる
ローカル開発環境も提供されてる
今のところPythonとJavaが使える
制限もあるファイルの保存が出来ない
Socketが開けない
スレッドが生成できない
JNIも利用できない
Server Side JavaScript
Server Side JavaScript
いろいろある。10gen, Acre, Apache Sling, AppJet, Aptana
Jaxer, ASP, Axiom Stack, Cocoon, Flowscript
CouchDB. DovetailDb, ESXX, Ejscript, EditMe, GLUEscript, Helma, Object Publisher, Jack
jsext, jslibs, JSSP, im-jssp, JuiceScript, Junction, Livelink, WCM, Presentation, Server, mod_jd, Myna, Javascript Application Server, NOTEX, OpenMocha, Persevere, Phobos, POW, Rhino in Sprint, Rhinola, Server Side Execution(SSX), Server Side JavaScript, Torino, Whitebeam, wxJavaScript, v8cgi
参考: http://en.wikipedia.org/wiki/Server-side_JavaScript
そういえば昔cauchoも持ってたよねcom.caucho.es.*
im-jssp framework
im-jssp frameworkとは
Server Side JavaScript Frameworkです
javaで出来てます
Application Server上で動きますResin, Tomcat, Jboss, Geronimo, Weblogic, WebSphere…
シンプルなアーキテクチャ
html + js
im-jsspの良い所
習得が早い!
サーバとクライアントで同じ言語が利用可能
実はServletコンテナさえあれば動く
winstone, SDLoader
im-jsspのあれな所
サーバ側の処理Script言語で書いてなんか意味あんの?
おぶじぇくとしこうじゃないから!
自由に書け過ぎて可読性があれな事も
ルールがないと大人数で作れば作るほど…
他人のコードがわからん、まったくわからん
Javaで書いた方が早くない?
静的型付け言語の方が確実でない?
こまけぇことたぁいいんだよ!
うごかしまーす
あると便利なもの
Eclipsehttp://www.eclipse.org/
Google Plugin
for Eclipsehttp://dl.google.com/eclipse/plugin/3.4
無いと困るもの
Googleのアカウント
GAE/Jの申請
JavaScriptへの愛
つくる
プロジェクトを作る
im-jssp on GAE/J用のライブラリを置く。
http://oss.intra-mart.org/hudson/
はろう世界
var $message;
function init(request){
$message = “hello”
+ request.name;
}
はろう世界
<html>
<head>
<title></title>
</head>
<body>
<imart type=“string”
value=$message />
</body>
</html>
ろーかるで試す
Server Side <-> Client Side
function sayHello(name){
return ‘hello ‘
+ name;
}
<imart type=“jsspRpc”
name=“sample”
page=“sample”
/>
…
<input type=“button”
onclick=“alert(sample.sayHello(‘world’));”
/>
GAEにでぷろい
GAEにでぷろい
GAE上にアプリケーションつくる
appengine-web.xmlにデプロイ先を書く
Googleであそぶ
ぐぅぐるが提供してるAPI
Google Accounts
Memcache
URL Fetch
Image
Datastore
Datastore: JDO
JDOとはなんぞや
Java
Data Object
Javaのおぶじぇくとを永続化する為の仕様
これを使うと、こまけぇことはおいといて GoogleのBigTableってDBにデータを保存できる
永続化するEntityはjavaで.
Enhancerを使ってenhanceしないと駄目。
ここだけjavaを書くんです…
.java .class .class
javac enhancer
それでもjavascriptをあいしてる。
だからのこりはjavascriptでかく。
var emp
= JDO.select(“select
from foo.Employee”).getSingleResult();
JDO.select(“select
from foo.Employee”).eachRow(function(row, index){
doSomething(row);});
JDO.transaction(function(pm)){var emp
= new Packages.foo.Employee();
emp.name
= “enomoto
san desuyo.”;
pm.makePersistent(emp);
}
javascriptとjavaはシームレスに繋がる
var calendar = java.util.Calendar.instance;
var emp
= new Packages.foo.Employee();
jsからjavaのAPIがそのままつかえる。
どうしてもjsじゃむりならjavaつかう。
全てJavaで書けばええやんという意見は 受け付けない。
でも
JDOつかってとうろく、せんたく
かんたん!
こんなのがかんたんにつくれた。
Javascriptでうぃきをつくった。
全部で10じかんくらい
うぃき
http://im-jssp-wiki.appspot.com
うぃき
なまえぼしゅうちゅう
javascriptが好きならjsspやりませぬか。
こみったも募集中!
ご清聴有難う御座いました