Juzu Frameworkを使ってみた @第四回 渋谷java
Upcoming SlideShare
Loading in...5
×
 

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

on

  • 771 views

第四回渋谷javaで発表したLTのスライドです

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

Statistics

Views

Total Views
771
Views on SlideShare
769
Embed Views
2

Actions

Likes
0
Downloads
1
Comments
0

1 Embed 2

https://twitter.com 2

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

    • Juzu Framewokを 使ってみた 第四回 渋谷java 2013.11.16 Saturday, November 16, 13
    • 自己紹介 • 芹沢和洋 • 株式会社ビズリーチ • web屋(java歴1年ぐらい) • @seri_k • id:serihiro • blog:http://serihiro.hatenablog.com/ • 最近はrubyに浮気中 Saturday, November 16, 13
    • 第一回渋谷javaにて @hotchemiさんのLTにて 紹介されていた。 「play1.xライク」らしい https://speakerdeck.com/hotchemi/ruo-zhe-tojava Saturday, November 16, 13
    • 実際に使ってみた Juzu Web Framework概要 • ViewとController機能のみを提供 • Templateはgroovyベース • Annotationで機能や設定を指定 • フレームワークの機能をpackage名やclass名で 指定しない。classpathが通ってる場所ならOK • DIコンテナはSprint,Guice,Weldに対応 Saturday, November 16, 13
    • ベースを作る • 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
    • 起動 <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)を自動生成し、自動生成 されたファイルが実行される仕組み • ので、importした後に自動生成を実行する為の 設定が必要 Saturday, November 16, 13
    • 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を更新するとファイルが 消えて動かなくなる(Cleanすると再生成される) ←Controllerとtemplateが消失する Saturday, November 16, 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を指定
    • 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
    • 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
    • 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
    • Assets - js,cssの読み込み Saturday, November 16, 13
    • まとめ • Annotationで全て機能を指定できる • パッケージ名やクラス名に規約がないので作る アプリに応じて好きに設計できる • クラス自動生成は若干難有り? • 覚えなきゃいけないことが少ないので学習コス トは低め Saturday, November 16, 13
    • 【告知】エンジニア募集中 • ビズリーチでは幅広くエンジニア募集中です • webサービス開発に携わりたい方 • 新規事業を興したい方 • awsをガシガシいじりたい方 • ピンと来たら http://www.bizreach.co.jp/recruit/ Saturday, November 16, 13
    • ご清聴ありがとうございました Saturday, November 16, 13