際際滷
Submit Search
干温厩温から皆界温鉛温へ
?
22 likes
?
8,675 views
T
takezoe
Follow
1 of 23
Download now
Downloaded 22 times
More Related Content
干温厩温から皆界温鉛温へ
1.
干温厩温から皆界温鉛温へ ScalaでWeb_kはこう笋錣 Naoki Takezoe @takezoen NTT-DATA INTELLILINK
2.
徭失B初 ? NTTデ`タ枠極室g侭奉 ? Project
Amateras ? Seasar2 ? Apache Click ? Java + アジャイル
3.
徭失B初 ? NTTデ`タ枠極室g侭奉 ? Project
Amateras ? Seasar2 ? Apache Click ? Scala + アジャイル
4.
Web_k冱ZとしてのScala ? ステ`トレス ? HTTPもステ`トレス ?
クライアント箸博Bる送れになってきている ? v方侏冱Zのステ`トレスな來|と猥圓よい ? コレクション荷恬 ? Webアプリは児云議にデ`タを紗垢して燕幣する ? 薦なコレクションAPIはこのようなI尖と猥圓 よい ? フレ`ムワ`ク ? ノンブロッキングI/Oを試喘 ? アクセス方の謹いシステムのバックエンドにmして いる
5.
たとえばこんなプロジェクト ? Javaベ`スのWebアプリをScalaにポ`ティング ? s170鮫中、s40,000
lines ? 恷寄5繁〜6ヶ埖 ? コ`ド楚を40゛50%p、瞳|鯢 Before ? Seasar2 ? Apache Click ? S2JDBC ? PostgreSQL + Tsearch ? Raw JavaScript After ? Play2 (Customized) ? ScalaQuery (Cuztomized) ? PostgreSQL ? Apache Solr ? jQuery + jQuery UI
6.
たとえばこんなプロジェクト ? Javaベ`スのWebアプリをScalaにポ`ティング ? s170鮫中、s40,000
lines ? 恷寄5繁〜6ヶ埖 ? コ`ド楚を40゛50%p、瞳|鯢 Before ? Seasar2 ? Apache Click ? S2JDBC ? PostgreSQL + Tsearch ? Raw JavaScript After ? Play2 (Customized) ? ScalaQuery (Cuztomized) ? PostgreSQL ? Apache Solr ? jQuery + jQuery UI Flexibility and Safety
7.
ScalaのWebフレ`ムワ`ク ? Play2 ? フルスタックのWebフレ`ムワ`ク ?
ScalaのWebフレ`ムワ`クとしては恷もメジャ` ? Nettyベ`ス┘離鵐屮蹈奪ング ? Scalatra ? Sinatra喇栖のマイクロフレ`ムワ`ク ? シンプルだが巓xモジュ`ルが割gしている ? Servletベ`ス
8.
Play2
9.
Play2はノンブロッキング ? 1岬でI尖できるリクエスト方を貧げる ? 掲揖豚I尖もgにける def
index = Action { val futureInt = scala.concurrent.Future { intensiveComputation() } Async { futureInt.map(i => Ok("Got result: " + i)) } }
10.
でも´ ? ボトルネックであるDBアクセスがブロックし てしまう
11.
恷除はこんなのがあります ? postgresql-async https://github.com/mauricio/postgresql-async ? ノンブロッキングなPostgreSQL/MySQLアクセス 喘のドライバ val
future: Future[QueryResult] = connection.sendQuery("SELECT 0") val mapResult: Future[Any] = future.map(result => result.rows match { case Some(rs) => rs.head(0) case None => -1 }) val result = Await.result( mapResult, 5 seconds )
12.
Play2はタイプセ`フ ? テンプレ`トもタイプセ`フ @(customer: Customer,
orders: List[Order]) <h1>Welcome @customer.name!</h1> <ul> @for(order <- orders) { <li>@order.getTitle()</li> } </ul>
13.
Play2はタイプセ`フ ? ル`ティングもタイプセ`フ GET /clients/:id
controllers.Clients.show(id: Int) O協ファイルにル`ティングを協x コントロ`ラやテンプレ`トで剃哈きが辛嬬 def index = Action { Redirect(routes.Clients.show(1)) } <ul> @clients.map { client => <li><a href=^@routes.Clients.show(client.id) ̄>@client.name</a></li> } </ul>
14.
WebSocketもgに聞えます def index =
WebSocket.using[String] { request => // クライアントにメッセ`ジをプッシュするEnumerator val out = Enumerator.imperative[String]() // クライアントから僕佚されたメッセ`ジをI尖するIteratee val in = Iteratee.foreach[String]{ message => out.push("Hello " + message + "!") } (in, out) } クライアントからのメッセ`ジを鞭佚するためのIterateeと、 クライアントにメッセ`ジを僕佚するためのEnumeratorの タプルをり、箸靴瞳気
15.
クライアント箸呂海鵑文个 @()(implicit request: RequestHeader) ´ <script> var
ws = new WebSocket("@routes.WebSocketController.index.webSocketURL()"); // サ`バ`からプッシュされたメッセ`ジをダイアログで燕幣 ws.onmessage = function (evt) { alert(evt.data); } </script> <input type="text" id="name"> <input type="button" value="Send" onclick="ws.send($('#name').val())"/> ´ エンドポイントのURLを タイプセ`フに峺協できる
16.
Play2はステ`トレス ? サ`バサイドに彜Bを隔たない ? セッションIDだけクッキ`に隔たせてデ`タは翌 何のKVSなどに崔く ?
クライアント箸牌Bを砿尖する Play2 App HTML / JavaScript スマ`ト フォン
17.
Servletコンテナでは嘛しない ? warにするプラグインが贋壓しますが環の祇な のでやめといたほうがいいです ? 屡贋のJavaベ`スのシステムのポ`ティング には鬚い討い覆
18.
Scalatra
19.
こんな湖じ class MyServlet extends
ScalatraServlet with ScalateSupport { get("/") { // リクエストパラメ`タを函誼 val name = params("name") // XMLリテラルでレスポンスを伏撹 <html> <body> <h1>Hello, world!</h1> Say <a href="hello-scalate">hello to {name}</a>. </body> </html> } }
20.
Scalatraの蒙 ? 巓xモジュ`ルとしてJ^、バリデ`ションな どがあり駅勣なC嬬は匯宥りBっている ? Play2のようなタイプセ`フなテンプレ`トも 聞喘できる ?
ル`ティングはタイプセ`フに峰できない ? Servlet 3.0鬉離灰鵐謄覆嘛する ? HttpSessionやServlet APIも聞喘辛嬬なので、 屡贋のJava Webアプリの卞峅に鬚い討い
21.
聞い蛍け Play2 屡贋のAPサ`バ(Tomcat吉) Scalatra Slick(ORM) JavaVM Non-Blocking I/Oを試かした謹嶷業嶷の 撹。揖r俊A方が謹く、スケ`ラビリティ が駅勣なBtoC鬚吋汽ぅ箸筌好洫`トフォン アプリのバックエンドなどに鬚。 Tomcat吉のAPサ`バ貧で嘛辛嬬な撹。 屡贋のJavaアプリケ`ションのポ`ティング やアクセス方の嚠yが否叟なI侫▲廛螢羽` ションなどに鬚。 Netty Stateless &
Scalable Stack Stable & Reliable Stack
22.
Scala is now
glowing up! ? ScalaはI佞任睚蛍に聞える冱Zです。 ? ScalaにはJavaでは払われた櫃あります。 ? まだ隆母な何蛍もありますが、匯wに撹Lして いきましょう
23.
ご賠ありがとうございました Scala剃哈きレシピ ? Scalaの児云から光Nフレ`ムワ`クまでg 樹議な300のレシピをуh ? 蒙にこれからScalaを茶してみようという Javaプログラマの圭におすすめ
Download