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

Like this? Share it with your network

Share

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

on

  • 684 views

 

Statistics

Views

Total Views
684
Views on SlideShare
684
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 Presentation Transcript

  • 1. GWTでわかるかもしれないXtendの魅力第8回ファントムタイプ勉強会株式会社ファントムタイプ@yusuke_kokubo
  • 2. 今日の流れ• Xtend早わかり• GWT早わかり• こくぼが作ったアプリを見てみよう
  • 3. Xtend早わかり• プロパティ• 拡張メソッド• 簡単な型推論(var / val)• 演算子オーバーロード• ラムダ式• Active Annotations• No statement• Literals
  • 4. Xtendお試し• http://www.eclipse.org/xtend/download.html• ここからFull Eclipseをダウンロードするのが1番手っ取り早い
  • 5. Xtendの特徴• Javaコードジェネレータ• 基本的にJava• 冗長なJavaコードを解き放つ• 言語としての面白みはない
  • 6. 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)}}
  • 7. 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的な書き方をするのに使える
  • 8. Xtendのvar / val• Scalaとだいたい一緒だと思う• Fieldにも使える
  • 9. 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を参照一例
  • 10. 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とか)
  • 11. Xtend -ActiveAnnotations• アノテーションプロセッサーをがっつり書くことができる• 標準のアノテーションとして@Property, @Dataがある• 詳しくはEclipseでexampleのプロジェクトを作成して実行• メタプログラミングの醍醐味• まだベータ版なので動作が不安定
  • 12. Xtendまとめ• なにがいいの?• Javaコードジェネレータである• あくまでもJava• 新しいパラダイムはない• Just a better Java
  • 13. GWT• Google Web Toolkit入門
  • 14. GWT早わかり• Java to JavaScriptのためのツールキット• コンパイラ• Widget• クライアントブラウザごとに最適化したjsを出力してくれる• ターゲットはJVMではなくJava
  • 15. GWTの特徴• 日本での知名度はいまいち• 世界的に見ると大きなコミュニティがある• Google, RedHat, Sencha, Intellij,Vaadin• 歴史は長く成熟してる
  • 16. Who use GWT ?• Wave(co-meeting)• adwords• Google Apps Console• Api Console• Api Explorer• URL Shortener• Wallet• Evernote
  • 17. GWTの特徴• html• Module• EntryPoint• Widget• RPC
  • 18. 引用 : http://posts.pretica.com/?p=145
  • 19. GWT-RPC引用 : https://developers.google.com/web-toolkit/doc/latest/DevGuideServerCommunication
  • 20. GWT最大の弱点• Java言語でしか使えない Java言語でしか使えない Java言語でしか使えない Java言語でしか使えない Java言語でしか使えない Java言語でしか使えない Java言語でしか使えない Java言語でしか使えないJava言語でしか使えない
  • 21. なぜGWTを使うのか?• Production Ready• 世界的なコミュニティ• Eclipseで完結できる• 別にEclipseがすごいIDEと言ってるわけではありません
  • 22. でも...• Javaプログラミングは面倒で...• そこでXtend!
  • 23. .java.class.scala.groovy.xtend .jsXtend GWTJavaScalaGroovy唯一絶対無二の道GWT meets Xtend
  • 24. GWTまとめ• Production Ready• 世界中で使われてる• Xtendとの強力タッグ• Better JavaでフルAjaxのWebアプリ• Eclipseさえあればよい
  • 25. 参考URL• https://boostgithub.appspot.com/• GWT + Xtendでgithub-apiにアクセスしているアプリ• http://mi-sisi.appspot.com/• GWT + XtendでGWTVisualization APIを使ってるアプリ