Juzu Framewokを
使ってみた
第四回 渋谷java
2013.11.16

Saturday, November 16, 13
自己紹介
• 芹沢和洋
• 株式会社ビズリーチ
• web屋(java歴1年ぐらい)
• @seri_k
• id:serihiro
• blog:http://serihiro.hatenablog.com/
• 最近はrubyに浮気中
Sa...
第一回渋谷javaにて
@hotchemiさんのLTにて
紹介されていた。
「play1.xライク」らしい

https://speakerdeck.com/hotchemi/ruo-zhe-tojava
Saturday, November ...
実際に使ってみた
Juzu Web Framework概要
• ViewとController機能のみを提供
• Templateはgroovyベース
• Annotationで機能や設定を指定
• フレームワークの機能をpackage名やcl...
ベースを作る
• Mavenでサクっと(Tomcat + springを使う場合)
mvn archetype:generate 
-DarchetypeGroupId=org.juzu 
-DarchetypeArtifactId=juzu-...
起動
<Tom猫>
mvn tomcat7:run -Plive
<JBoss>
mvn jboss-as:run

Saturday, November 16, 13
Tomcat7で起動してみる

Saturday, November 16, 13
Eclipseの開発環境構築
•

Juzu Frameworkは開発者が編集したController
クラスやTemplateファイルから別ファイル
(例:Controller_.java)を自動生成し、自動生成
されたファイルが実行される仕...
Eclipseの開発環境構築
1.Annotation Processingを有効にして出力先を指定

Saturday, November 16, 13
Eclipseの開発環境構築
2.Factory Pathにjuzu-core.jarを
M2リポジトリから自分で探してきてセットする

Saturday, November 16, 13
Rebuildすると
←元ファイル

←自動生成されたクラス一式

Saturday, November 16, 13
元ファイルの更新を検知して
自動更新されると書いてあるが
• 自分の環境だとBuild Automatically入れても自動更
新されない

• むしろControllerかtemplateを更新するとファイルが
消えて動かなくなる(Clea...
Controller
public class Controller {
	
	
	

@Inject
@Path("index.gtmpl")
Template index;

	
	

@Inject
WeatherService weat...
Template
プロパティ差し込みはjspとかvmとかと一緒
The weather temperature in ${location} is ${temperature} degrees.

groovyベースなのでgroovyのコードが...
Template
コンパイルされたTemplateファイルは
こんな感じのjavaクラスになる
package org.example.templates;
import juzu.impl.plugin.template.metadata.T...
Assets - js,cssの読み込み
server起動時に指定されたcssやjsファイルを読みに行くので
パスを間違えると全Controllerでエラーになる

@Assets({ @Asset(
(静的ファイルをタイプセーフに扱う為)
i...
Assets - js,cssの読み込み

Saturday, November 16, 13
まとめ
• Annotationで全て機能を指定できる
• パッケージ名やクラス名に規約がないので作る
アプリに応じて好きに設計できる

• クラス自動生成は若干難有り?
• 覚えなきゃいけないことが少ないので学習コス
トは低め

Saturd...
【告知】エンジニア募集中
• ビズリーチでは幅広くエンジニア募集中です
• webサービス開発に携わりたい方
• 新規事業を興したい方
• awsをガシガシいじりたい方
• ピンと来たら

http://www.bizreach.co.jp/r...
ご清聴ありがとうございました

Saturday, November 16, 13
Upcoming SlideShare
Loading in …5
×

Juzu Frameworkを使ってみた @第四回 渋谷java

928 views
818 views

Published on

第四回渋谷javaで発表したLTのスライドです
Juzu Frameworkについて

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
928
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
2
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Juzu Frameworkを使ってみた @第四回 渋谷java

  1. 1. Juzu Framewokを 使ってみた 第四回 渋谷java 2013.11.16 Saturday, November 16, 13
  2. 2. 自己紹介 • 芹沢和洋 • 株式会社ビズリーチ • web屋(java歴1年ぐらい) • @seri_k • id:serihiro • blog:http://serihiro.hatenablog.com/ • 最近はrubyに浮気中 Saturday, November 16, 13
  3. 3. 第一回渋谷javaにて @hotchemiさんのLTにて 紹介されていた。 「play1.xライク」らしい https://speakerdeck.com/hotchemi/ruo-zhe-tojava Saturday, November 16, 13
  4. 4. 実際に使ってみた Juzu Web Framework概要 • ViewとController機能のみを提供 • Templateはgroovyベース • Annotationで機能や設定を指定 • フレームワークの機能をpackage名やclass名で 指定しない。classpathが通ってる場所ならOK • DIコンテナはSprint,Guice,Weldに対応 Saturday, November 16, 13
  5. 5. ベースを作る • Mavenでサクっと(Tomcat + springを使う場合) mvn archetype:generate -DarchetypeGroupId=org.juzu -DarchetypeArtifactId=juzu-archetype -DarchetypeVersion=0.7.0 -DgroupId=org.example -DartifactId=myapp -DpackageName=org.example.myapp -Dversion=1.0.0-SNAPSHOT -DjuzuServer=servlet -DjuzuInject=spring Saturday, November 16, 13
  6. 6. 起動 <Tom猫> mvn tomcat7:run -Plive <JBoss> mvn jboss-as:run Saturday, November 16, 13
  7. 7. Tomcat7で起動してみる Saturday, November 16, 13
  8. 8. Eclipseの開発環境構築 • Juzu Frameworkは開発者が編集したController クラスやTemplateファイルから別ファイル (例:Controller_.java)を自動生成し、自動生成 されたファイルが実行される仕組み • ので、importした後に自動生成を実行する為の 設定が必要 Saturday, November 16, 13
  9. 9. Eclipseの開発環境構築 1.Annotation Processingを有効にして出力先を指定 Saturday, November 16, 13
  10. 10. Eclipseの開発環境構築 2.Factory Pathにjuzu-core.jarを M2リポジトリから自分で探してきてセットする Saturday, November 16, 13
  11. 11. Rebuildすると ←元ファイル ←自動生成されたクラス一式 Saturday, November 16, 13
  12. 12. 元ファイルの更新を検知して 自動更新されると書いてあるが • 自分の環境だとBuild Automatically入れても自動更 新されない • むしろControllerかtemplateを更新するとファイルが 消えて動かなくなる(Cleanすると再生成される) ←Controllerとtemplateが消失する Saturday, November 16, 13
  13. 13. Controller public class Controller { @Inject @Path("index.gtmpl") Template index; @Inject WeatherService weatherService; 各アクションメソッドが使う Templateファイルを指定してヒモ付 @Viewアノテーションが付いていると Controllerとして認識されて @View 自動生成されるクラスに含まれる @Route("/show/{location}") public Response.Content index(String location) throws IOException { HashMap<String, Object> parameters = new HashMap<String, Object>(); parameters.put("location", "marseille"); parameters.put("temperature", weatherService.getTemperature("marseille")); } Saturday, November 16, 13 return index.with(parameters).ok();//response codeを指定
  14. 14. Template プロパティ差し込みはjspとかvmとかと一緒 The weather temperature in ${location} is ${temperature} degrees. groovyベースなのでgroovyのコードが そのまま実行できる <ul> <% ["red","green","blue"].each {color -> out.print("<li>The sky is ${color}</ li>") } %> </ul> urlは@{Controller名.メソッド名}で生成できる <a href="@{Controller.purchase(product=1)}">Purchase</a> Saturday, November 16, 13
  15. 15. Template コンパイルされたTemplateファイルは こんな感じのjavaクラスになる package org.example.templates; import juzu.impl.plugin.template.metadata.TemplateDescriptor; import juzu.impl.plugin.template.TemplatePlugin; @javax.annotation.Generated({}) public class index extends juzu.template.Template { @javax.inject.Inject public index(TemplatePlugin templatePlugin) { super(templatePlugin, "/org/example/templates/index.gtmpl"); } public static final juzu.impl.plugin.template.metadata.TemplateDescriptor DESCRIPTOR = new juzu.impl.plugin.template.metadata.TemplateDescriptor("/org/example/templates/index.gtmpl", 0x3cf81bf9780efd8bL,org.example.templates.index.class,juzu.impl.template.spi.juzu.dialect.gtmpl.G roovyTemplateStub.class); public Builder builder() { return new Builder(); } public Builder with() { return (Builder)super.with(); } public class Builder extends juzu.template.Template.Builder { } } Saturday, November 16, 13
  16. 16. Assets - js,cssの読み込み server起動時に指定されたcssやjsファイルを読みに行くので パスを間違えると全Controllerでエラーになる @Assets({ @Asset( (静的ファイルをタイプセーフに扱う為) id = "myscript", value = "javascripts/myscript.js") }) package my.application; 使用するコントローラーのメソッドで @View 使用するAssetのidを指定するとtemplateで書かなくても読み @Route("/hoge/") 込まれる @WithAssets("myscript") public Response.Content hoge() throws IOException { return hoge.ok(); } Saturday, November 16, 13
  17. 17. Assets - js,cssの読み込み Saturday, November 16, 13
  18. 18. まとめ • Annotationで全て機能を指定できる • パッケージ名やクラス名に規約がないので作る アプリに応じて好きに設計できる • クラス自動生成は若干難有り? • 覚えなきゃいけないことが少ないので学習コス トは低め Saturday, November 16, 13
  19. 19. 【告知】エンジニア募集中 • ビズリーチでは幅広くエンジニア募集中です • webサービス開発に携わりたい方 • 新規事業を興したい方 • awsをガシガシいじりたい方 • ピンと来たら http://www.bizreach.co.jp/recruit/ Saturday, November 16, 13
  20. 20. ご清聴ありがとうございました Saturday, November 16, 13

×