第8回ファントムタイプ勉強会xtendとgwt
Upcoming SlideShare
Loading in...5
×
 

第8回ファントムタイプ勉強会xtendとgwt

on

  • 663 views

 

Statistics

Views

Total Views
663
Views on SlideShare
663
Embed Views
0

Actions

Likes
1
Downloads
0
Comments
0

0 Embeds 0

No embeds

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

第8回ファントムタイプ勉強会xtendとgwt 第8回ファントムタイプ勉強会xtendとgwt Presentation Transcript

  • GWTでわかるかもしれないXtendの魅力第8回ファントムタイプ勉強会株式会社ファントムタイプ@yusuke_kokubo
  • 今日の流れ• Xtend早わかり• GWT早わかり• こくぼが作ったアプリを見てみよう
  • Xtend早わかり• プロパティ• 拡張メソッド• 簡単な型推論(var / val)• 演算子オーバーロード• ラムダ式• Active Annotations• No statement• Literals
  • Xtendお試し• http://www.eclipse.org/xtend/download.html• ここからFull Eclipseをダウンロードするのが1番手っ取り早い
  • Xtendの特徴• Javaコードジェネレータ• 基本的にJava• 冗長なJavaコードを解き放つ• 言語としての面白みはない
  • Xtend - プロパティJava::public class Hoge {private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}}public class Client {public void hoge() {Hoge hoge = new Hoge();hoge.setName("hoge");System.out.println(hoge.getName());}}Xtend::class Hoge {@Property String name;}class Client {def hoge() {val hoge = new Hoge()hoge.name = "hoge"println(hoge.name)}}
  • Xtend 拡張メソッド"hello".toFirstUpper() // calls StringExtensions.toFirstUpper("hello")persistenceManager.save(myObject); -> myObject.save1. class MyClass {2. def doSomething(Object obj) {3. // do something with obj4. }5.6. def extensionCall(Object obj) {7. obj.doSomething() // calls this.doSomething(obj)8. }9. }標準ライブラリローカル拡張DSL的な書き方をするのに使える
  • Xtendのvar / val• Scalaとだいたい一緒だと思う• Fieldにも使える
  • Xtend - 演算子オーバーロードval x = 2.71BD1. val y = 3.14BD2. val sum = x + y // calls BigDecimalExtension.operator_plus(x,y)e1 += e2 e1.operator_add(e2)e1 -= e2 e1.operator_remove(e2)e1 || e2 e1.operator_or(e2)http://www.eclipse.org/xtend/documentation.html#operators使用可能な演算子は上記のURLを参照一例
  • Xtend - ラムダ式Java::1. final JTextField textField = new JTextField();2. textField.addActionListener(new ActionListener() {3. @Override4. public void actionPerformed(ActionEvent e) {5. textField.setText("Something happened!");6. }7. });Xtend::1. textField.addActionListener [2. textField.text = "Something happened!"3. ]SAMのinterfaceだったら型推論してくれるそうじゃなかったらアダプターを書く必要がある(GWTのAsyncCallBackとか)
  • Xtend -ActiveAnnotations• アノテーションプロセッサーをがっつり書くことができる• 標準のアノテーションとして@Property, @Dataがある• 詳しくはEclipseでexampleのプロジェクトを作成して実行• メタプログラミングの醍醐味• まだベータ版なので動作が不安定
  • Xtendまとめ• なにがいいの?• Javaコードジェネレータである• あくまでもJava• 新しいパラダイムはない• Just a better Java
  • GWT• Google Web Toolkit入門
  • GWT早わかり• Java to JavaScriptのためのツールキット• コンパイラ• Widget• クライアントブラウザごとに最適化したjsを出力してくれる• ターゲットはJVMではなくJava
  • GWTの特徴• 日本での知名度はいまいち• 世界的に見ると大きなコミュニティがある• Google, RedHat, Sencha, Intellij,Vaadin• 歴史は長く成熟してる
  • Who use GWT ?• Wave(co-meeting)• adwords• Google Apps Console• Api Console• Api Explorer• URL Shortener• Wallet• Evernote
  • GWTの特徴• html• Module• EntryPoint• Widget• RPC
  • 引用 : http://posts.pretica.com/?p=145
  • GWT-RPC引用 : https://developers.google.com/web-toolkit/doc/latest/DevGuideServerCommunication
  • GWT最大の弱点• Java言語でしか使えない Java言語でしか使えない Java言語でしか使えない Java言語でしか使えない Java言語でしか使えない Java言語でしか使えない Java言語でしか使えない Java言語でしか使えないJava言語でしか使えない
  • なぜGWTを使うのか?• Production Ready• 世界的なコミュニティ• Eclipseで完結できる• 別にEclipseがすごいIDEと言ってるわけではありません
  • でも...• Javaプログラミングは面倒で...• そこでXtend!
  • .java.class.scala.groovy.xtend .jsXtend GWTJavaScalaGroovy唯一絶対無二の道GWT meets Xtend
  • GWTまとめ• Production Ready• 世界中で使われてる• Xtendとの強力タッグ• Better JavaでフルAjaxのWebアプリ• Eclipseさえあればよい
  • 参考URL• https://boostgithub.appspot.com/• GWT + Xtendでgithub-apiにアクセスしているアプリ• http://mi-sisi.appspot.com/• GWT + XtendでGWTVisualization APIを使ってるアプリ