SlideShare uma empresa Scribd logo
1 de 25
Baixar para ler offline
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.save
1. class MyClass {
2. def doSomething(Object obj) {
3. // do something with obj
4. }
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.71BD
1. val y = 3.14BD
2. 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. @Override
4. 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 .js
Xtend GWT
Java
Scala
Groovy
唯一絶対無二の道
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を使ってるアプリ

Mais conteúdo relacionado

Mais procurados

楽して JVM を学びたい #jjug
楽して JVM を学びたい #jjug楽して JVM を学びたい #jjug
楽して JVM を学びたい #jjugYuji Kubota
 
Buildinsider OFFLINE TypeScriptの基礎から実践・利用事例まで
Buildinsider OFFLINE TypeScriptの基礎から実践・利用事例までBuildinsider OFFLINE TypeScriptの基礎から実践・利用事例まで
Buildinsider OFFLINE TypeScriptの基礎から実践・利用事例までMasahiro Wakame
 
xUnit Test Patterns - Chapter11
xUnit Test Patterns - Chapter11xUnit Test Patterns - Chapter11
xUnit Test Patterns - Chapter11Takuto Wada
 
モダンJavaScript環境構築一歩目
モダンJavaScript環境構築一歩目モダンJavaScript環境構築一歩目
モダンJavaScript環境構築一歩目大樹 小倉
 
できる!並列・並行プログラミング
できる!並列・並行プログラミングできる!並列・並行プログラミング
できる!並列・並行プログラミングPreferred Networks
 
わかる LT@2
わかる LT@2わかる LT@2
わかる LT@2Shingo Inoue
 
JavaのテストGroovyでいいのではないかという話
JavaのテストGroovyでいいのではないかという話JavaのテストGroovyでいいのではないかという話
JavaのテストGroovyでいいのではないかという話disc99_
 
JavaScriptユーティリティライブラリの紹介
JavaScriptユーティリティライブラリの紹介JavaScriptユーティリティライブラリの紹介
JavaScriptユーティリティライブラリの紹介Yusuke Hirao
 
AngularJS+TypeScript - AngularJS 1周年記念勉強会
AngularJS+TypeScript - AngularJS 1周年記念勉強会AngularJS+TypeScript - AngularJS 1周年記念勉強会
AngularJS+TypeScript - AngularJS 1周年記念勉強会Masahiro Wakame
 
LLoT2016 Java Update
LLoT2016 Java UpdateLLoT2016 Java Update
LLoT2016 Java Updatetorutk
 
Java9新機能概要
Java9新機能概要Java9新機能概要
Java9新機能概要HonMarkHunt
 
197x 20090704 Scalaで並行プログラミング
197x 20090704 Scalaで並行プログラミング197x 20090704 Scalaで並行プログラミング
197x 20090704 Scalaで並行プログラミングNet Penguin
 
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜gree_tech
 
Javaクラスファイルの読み方
Javaクラスファイルの読み方Javaクラスファイルの読み方
Javaクラスファイルの読み方y torazuka
 
10のJava9で変わるJava8の嫌なとこ!
10のJava9で変わるJava8の嫌なとこ!10のJava9で変わるJava8の嫌なとこ!
10のJava9で変わるJava8の嫌なとこ!bitter_fox
 
TypeScript 1.0 オーバービュー
TypeScript 1.0 オーバービューTypeScript 1.0 オーバービュー
TypeScript 1.0 オーバービューAkira Inoue
 
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」y torazuka
 
第4回勉強会 Groovyの文法からSpockまで
第4回勉強会 Groovyの文法からSpockまで第4回勉強会 Groovyの文法からSpockまで
第4回勉強会 Groovyの文法からSpockまでMugen Fujii
 

Mais procurados (19)

楽して JVM を学びたい #jjug
楽して JVM を学びたい #jjug楽して JVM を学びたい #jjug
楽して JVM を学びたい #jjug
 
Buildinsider OFFLINE TypeScriptの基礎から実践・利用事例まで
Buildinsider OFFLINE TypeScriptの基礎から実践・利用事例までBuildinsider OFFLINE TypeScriptの基礎から実践・利用事例まで
Buildinsider OFFLINE TypeScriptの基礎から実践・利用事例まで
 
xUnit Test Patterns - Chapter11
xUnit Test Patterns - Chapter11xUnit Test Patterns - Chapter11
xUnit Test Patterns - Chapter11
 
Clojure
ClojureClojure
Clojure
 
モダンJavaScript環境構築一歩目
モダンJavaScript環境構築一歩目モダンJavaScript環境構築一歩目
モダンJavaScript環境構築一歩目
 
できる!並列・並行プログラミング
できる!並列・並行プログラミングできる!並列・並行プログラミング
できる!並列・並行プログラミング
 
わかる LT@2
わかる LT@2わかる LT@2
わかる LT@2
 
JavaのテストGroovyでいいのではないかという話
JavaのテストGroovyでいいのではないかという話JavaのテストGroovyでいいのではないかという話
JavaのテストGroovyでいいのではないかという話
 
JavaScriptユーティリティライブラリの紹介
JavaScriptユーティリティライブラリの紹介JavaScriptユーティリティライブラリの紹介
JavaScriptユーティリティライブラリの紹介
 
AngularJS+TypeScript - AngularJS 1周年記念勉強会
AngularJS+TypeScript - AngularJS 1周年記念勉強会AngularJS+TypeScript - AngularJS 1周年記念勉強会
AngularJS+TypeScript - AngularJS 1周年記念勉強会
 
LLoT2016 Java Update
LLoT2016 Java UpdateLLoT2016 Java Update
LLoT2016 Java Update
 
Java9新機能概要
Java9新機能概要Java9新機能概要
Java9新機能概要
 
197x 20090704 Scalaで並行プログラミング
197x 20090704 Scalaで並行プログラミング197x 20090704 Scalaで並行プログラミング
197x 20090704 Scalaで並行プログラミング
 
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
 
Javaクラスファイルの読み方
Javaクラスファイルの読み方Javaクラスファイルの読み方
Javaクラスファイルの読み方
 
10のJava9で変わるJava8の嫌なとこ!
10のJava9で変わるJava8の嫌なとこ!10のJava9で変わるJava8の嫌なとこ!
10のJava9で変わるJava8の嫌なとこ!
 
TypeScript 1.0 オーバービュー
TypeScript 1.0 オーバービューTypeScript 1.0 オーバービュー
TypeScript 1.0 オーバービュー
 
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
 
第4回勉強会 Groovyの文法からSpockまで
第4回勉強会 Groovyの文法からSpockまで第4回勉強会 Groovyの文法からSpockまで
第4回勉強会 Groovyの文法からSpockまで
 

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

JDK 10 へようこそ
JDK 10 へようこそJDK 10 へようこそ
JDK 10 へようこそDavid Buck
 
Inside frogc in Dart
Inside frogc in DartInside frogc in Dart
Inside frogc in DartGoro Fuji
 
WordBench Kobe jQueryどうでしょう
WordBench Kobe jQueryどうでしょうWordBench Kobe jQueryどうでしょう
WordBench Kobe jQueryどうでしょうHishikawa Takuro
 
Xtend - Javaの未来を今すぐ使う
Xtend - Javaの未来を今すぐ使うXtend - Javaの未来を今すぐ使う
Xtend - Javaの未来を今すぐ使うTatsumi Naganuma
 
jjugccc2018 app review postmortem
jjugccc2018 app review postmortemjjugccc2018 app review postmortem
jjugccc2018 app review postmortemtamtam180
 
むずかしくないJavaScriptのやさしい話 jQueryからの次のステップ #ndsmeetup8
むずかしくないJavaScriptのやさしい話 jQueryからの次のステップ #ndsmeetup8むずかしくないJavaScriptのやさしい話 jQueryからの次のステップ #ndsmeetup8
むずかしくないJavaScriptのやさしい話 jQueryからの次のステップ #ndsmeetup8civic Sasaki
 
FIRST STEP to Haxe/JavaScript
FIRST STEP to Haxe/JavaScriptFIRST STEP to Haxe/JavaScript
FIRST STEP to Haxe/JavaScriptterurou
 
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みJavaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みChihiro Ito
 
DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングDLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングterurou
 
大規模なギョームシステムにHaxeを採用してみた話
大規模なギョームシステムにHaxeを採用してみた話大規模なギョームシステムにHaxeを採用してみた話
大規模なギョームシステムにHaxeを採用してみた話terurou
 
C#言語機能の作り方
C#言語機能の作り方C#言語機能の作り方
C#言語機能の作り方信之 岩永
 

Semelhante a 第8回ファントムタイプ勉強会xtendとgwt (14)

JDK 10 へようこそ
JDK 10 へようこそJDK 10 へようこそ
JDK 10 へようこそ
 
Xtend の紹介
Xtend の紹介Xtend の紹介
Xtend の紹介
 
つぶLT20121215
つぶLT20121215つぶLT20121215
つぶLT20121215
 
Inside frogc in Dart
Inside frogc in DartInside frogc in Dart
Inside frogc in Dart
 
WordBench Kobe jQueryどうでしょう
WordBench Kobe jQueryどうでしょうWordBench Kobe jQueryどうでしょう
WordBench Kobe jQueryどうでしょう
 
Xtend - Javaの未来を今すぐ使う
Xtend - Javaの未来を今すぐ使うXtend - Javaの未来を今すぐ使う
Xtend - Javaの未来を今すぐ使う
 
jjugccc2018 app review postmortem
jjugccc2018 app review postmortemjjugccc2018 app review postmortem
jjugccc2018 app review postmortem
 
むずかしくないJavaScriptのやさしい話 jQueryからの次のステップ #ndsmeetup8
むずかしくないJavaScriptのやさしい話 jQueryからの次のステップ #ndsmeetup8むずかしくないJavaScriptのやさしい話 jQueryからの次のステップ #ndsmeetup8
むずかしくないJavaScriptのやさしい話 jQueryからの次のステップ #ndsmeetup8
 
FIRST STEP to Haxe/JavaScript
FIRST STEP to Haxe/JavaScriptFIRST STEP to Haxe/JavaScript
FIRST STEP to Haxe/JavaScript
 
ATN No.2 Scala事始め
ATN No.2 Scala事始めATN No.2 Scala事始め
ATN No.2 Scala事始め
 
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みJavaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
 
DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングDLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミング
 
大規模なギョームシステムにHaxeを採用してみた話
大規模なギョームシステムにHaxeを採用してみた話大規模なギョームシステムにHaxeを採用してみた話
大規模なギョームシステムにHaxeを採用してみた話
 
C#言語機能の作り方
C#言語機能の作り方C#言語機能の作り方
C#言語機能の作り方
 

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