groovygroovyででprojectzeroprojectzero · 2017. 12. 12. · はじめに...
TRANSCRIPT
![Page 1: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて](https://reader036.vdocuments.pub/reader036/viewer/2022071406/60fb485aab0bcf7d3079dea6/html5/thumbnails/1.jpg)
Seasar ConferenceSeasar Conference2008 Autumn2008 Autumn2008 Autumn2008 Autumn
GroovyGroovyででProjectZeroProjectZero軽量軽量 JJ な世界な世界軽量軽量+Java+Javaな世界な世界
Javaと軽量言語はどう交わっていくのか?
Java読書会:根本和郎
Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.1
Seasar ConferenceSeasar Conference2008 Autumn2008 Autumn
Java読書会:根本和郎
![Page 2: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて](https://reader036.vdocuments.pub/reader036/viewer/2022071406/60fb485aab0bcf7d3079dea6/html5/thumbnails/2.jpg)
DisclaimerDisclaimer
所属はIBMですが、個人参加です
記述内容は個人的見解に基づきます記述内容は個人的見解に基づきます
2Seasar ConferenceSeasar Conference
2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.
![Page 3: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて](https://reader036.vdocuments.pub/reader036/viewer/2022071406/60fb485aab0bcf7d3079dea6/html5/thumbnails/3.jpg)
はじめにはじめに
Web界で多用されている軽量言語が、エンタープライズ界にどう導入されてエンタ プライズ界にどう導入されていくのかを予想する
考察点考察点
– 過去のコード資産
– Javaの為にある環境の移行コスト
• Webサーバーとの親和性 (WebSphere)Webサ バ との親和性 (WebSphere)• 開発環境 (Eclipse)• 移植性 (Linux Windows iSeries zSeries pSeries )移植性 (Linux, Windows, iSeries zSeries pSeries, )
– データの意味の普遍性の重要性、XMLとの親和性
最終的な性能 の期待値3
Seasar ConferenceSeasar Conference2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.
– 最終的な性能への期待値
![Page 4: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて](https://reader036.vdocuments.pub/reader036/viewer/2022071406/60fb485aab0bcf7d3079dea6/html5/thumbnails/4.jpg)
AgendaAgenda
ProjectZeroに見る軽量言語の傾向
エンタ プライズ軽量言語の可能性エンタープライズ軽量言語の可能性
Groovy概略y– Optional Typing
JavaVM言語– JavaVM言語
– Web界とEnterprise界の比較
エンタープライズで軽量言語を適応する場合の評価ポイント評価ポイント
4Seasar ConferenceSeasar Conference
2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.
![Page 5: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて](https://reader036.vdocuments.pub/reader036/viewer/2022071406/60fb485aab0bcf7d3079dea6/html5/thumbnails/5.jpg)
PC98 PC98 DOS/V DOS/V の時のおさらいの時のおさらい
⾔葉の壁
PC98 PC/ATDOS/V
⽇本 ⽶国他、多数
⾔葉の壁Ruby JavaGroovy
Ruby on Rails Struts, Hibernate, ..
5Seasar ConferenceSeasar Conference
2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.
![Page 6: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて](https://reader036.vdocuments.pub/reader036/viewer/2022071406/60fb485aab0bcf7d3079dea6/html5/thumbnails/6.jpg)
技術は文化技術は文化
高い忠誠度、高い移行コスト
Editor : Emacs vi– Editor : Emacs vi– OS : Linux Windows– 開発環境 : IDE Editor– 言語 : Java 軽量言語言語 軽量言語
言語 (日本語の例)日本人のd f lt実装– 日本人のdefault実装
– 千年以上蓄積された本(豊富なLibrary)– 1億人以上のuser– 豊富なコンテンツ (マンガ アニメ ゲーム )
6Seasar ConferenceSeasar Conference
2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.
豊富なコンテンツ (マンガ アニメ ゲ ム …)
![Page 7: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて](https://reader036.vdocuments.pub/reader036/viewer/2022071406/60fb485aab0bcf7d3079dea6/html5/thumbnails/7.jpg)
JavaJavaからからRubyRubyへへ ??
Rubyへのロイヤリティー
言語仕様が好き (嗜好)–言語仕様が好き (嗜好)– Matzが好き (感情)– Ruby on Railsを使いたい (アジャイル開発)
JavaへのロイヤリティーJavaへのロイヤリティ
–過去の蓄積したライブラリ (宿命)部門方針 (業)–部門方針 (業)
–仕事だから (宿命)–信頼性を保証するため (仕事)
7Seasar ConferenceSeasar Conference
2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.
![Page 8: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて](https://reader036.vdocuments.pub/reader036/viewer/2022071406/60fb485aab0bcf7d3079dea6/html5/thumbnails/8.jpg)
経済は人気でなく、ビジネスインパクトで動く経済は人気でなく、ビジネスインパクトで動く
ヒルズ族では経済は動かない見かけの派手さ ≠ 経済インパクト見かけの派手さ ≠ 経済インパクト
トヨタ、銀行、製造、で社会が動く人気で株価は動かない
– 「渋井真帆の日経新聞読みこなし隊」
8Seasar ConferenceSeasar Conference
2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.
![Page 9: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて](https://reader036.vdocuments.pub/reader036/viewer/2022071406/60fb485aab0bcf7d3079dea6/html5/thumbnails/9.jpg)
ProjectZero : ProjectZero : 手のひらサイズ手のひらサイズWebWebサーバーサーバー
JavaSEで動く Webサーバー
小型軽量小型軽量
www.projectzero.orgp j gRESTfulCDCDCDCD (Community driven Commercial Development)
WebとSOAの架け橋能力ebとSO の架け橋能力
アプリケーション記述言語はGroo および PHP ダブル軽量言語Groovy および PHP ダブル軽量言語
9Seasar ConferenceSeasar Conference
2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.
![Page 10: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて](https://reader036.vdocuments.pub/reader036/viewer/2022071406/60fb485aab0bcf7d3079dea6/html5/thumbnails/10.jpg)
疑問の出発点疑問の出発点
Groovy + PHP =ダブル軽量言語?は流行 るから–PHPは流行っているから
–Groovyは何故? Rubyじゃないの?Groovyは何故? Rubyじゃないの?
10Seasar ConferenceSeasar Conference
2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.
![Page 11: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて](https://reader036.vdocuments.pub/reader036/viewer/2022071406/60fb485aab0bcf7d3079dea6/html5/thumbnails/11.jpg)
言語別注目度言語別注目度 (Google Trends)(Google Trends)
Java 100, PHP 49, Ruby 10PHP x 2 = JavaPHP x 2 = Java
11Seasar ConferenceSeasar Conference
2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.
![Page 12: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて](https://reader036.vdocuments.pub/reader036/viewer/2022071406/60fb485aab0bcf7d3079dea6/html5/thumbnails/12.jpg)
CDCDCDCD
C it D i C i l D l tCommunity Driven Commercial Development– ソースを見ることはオープン
– コードの登録は制限あり
• GPL対策?GPL対策?
12Seasar ConferenceSeasar Conference
2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.
![Page 13: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて](https://reader036.vdocuments.pub/reader036/viewer/2022071406/60fb485aab0bcf7d3079dea6/html5/thumbnails/13.jpg)
JavaJava+軽量言語+軽量言語
JavaからRuby : 必要前提
過去のJavaコ ド資産の継承がないこと– 過去のJavaコード資産の継承がないこと
– 内製であり、SI契約が伴わないこと
Java+軽量言語 : 可能軽 言語
– Java : 高速処理、ライブラリーの継承、Javaプログラマーの登用ラマ の登用
– 軽量言語 : 作り捨てのユーティリティー、遅くて良いもの 使用期間が短いものもの、使用期間が短いもの、Programming Firstなプロトタイプ開発用
13Seasar ConferenceSeasar Conference
2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.
![Page 14: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて](https://reader036.vdocuments.pub/reader036/viewer/2022071406/60fb485aab0bcf7d3079dea6/html5/thumbnails/14.jpg)
言語別分布図言語別分布図
SOAComplex
Java補助言語としてのGroovy
ComplexJava
GroovyGroovyXML
WS-*
JSONJSON,REST
W b E t i
Simple Ruby等の軽量⾔語スタート
14Seasar ConferenceSeasar Conference
2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.
Web Enterpriseタ
アップ企業
![Page 15: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて](https://reader036.vdocuments.pub/reader036/viewer/2022071406/60fb485aab0bcf7d3079dea6/html5/thumbnails/15.jpg)
軽量言語軽量言語FrameworkFramework分布予想図分布予想図Spring Hibernateが
SOAComplex
Spring, Hibernateがカバーするエリアに近い
ComplexJava
GroovyGroovy
GR il
Python
GRails
Rubyなど Light weightSOA
PythonPHPPerlRuby on RailsCakePHP
ProjectZero
W b E t iSimple
Ruby… ProjectZero
15Seasar ConferenceSeasar Conference
2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.
Web Enterprise
![Page 16: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて](https://reader036.vdocuments.pub/reader036/viewer/2022071406/60fb485aab0bcf7d3079dea6/html5/thumbnails/16.jpg)
GroovyGroovyの特徴の特徴
JVMで動く
J と親和性が高い 普通のメソ ド呼び出しJavaと親和性が高い、普通のメソッド呼び出しで結合可能
Rubyの簡潔さをJava風味で表現
Meta Object Protocol で 全てのアクセスがMeta Object Protocol で、全てのアクセスがラップされ、動的変更可能
Javaにとっての大がかりな糖衣構文(Syntax sugar)糖衣構文(Syntax sugar)
16Seasar ConferenceSeasar Conference
2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.
![Page 17: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて](https://reader036.vdocuments.pub/reader036/viewer/2022071406/60fb485aab0bcf7d3079dea6/html5/thumbnails/17.jpg)
GBean GBean によるによる Optional TypingOptional Typing
class TypeSafeTest {static void main(args) {
Foo = 型宣言なし Bar = 型宣言あり
static void main(args) {Foo f = new Foo()
f.age = "taro"Bar b = new Bar()
def宣⾔は、何とでもマッチするBar b = new Bar()
b.age = "hanako"}
}
Int宣⾔したのでcastエラーX}
class Foo {def name def 型だと制約なしdef namedef age
}class Bar{
制約単なるObject型となる
{String nameint age
}
堅く型宣言することもできる
17Seasar ConferenceSeasar Conference
2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.
}
![Page 18: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて](https://reader036.vdocuments.pub/reader036/viewer/2022071406/60fb485aab0bcf7d3079dea6/html5/thumbnails/18.jpg)
Groovy : JavaGroovy : Java弁で弁でRubyRuby風味を醸す風味を醸す
「1,2,3,4,5」という数字の配列から、偶数を抜き出して印刷せよ偶数を抜き出して印刷せよ
Unixっぽい
p [1,2,3,4,5].select {|i| i%2==0 }Ruby
Groovyprintln ([1,2,3,4,5].findAll {it%2==0 } )
y
“動詞(find)+目的語(All)” でJavaっぽい
18Seasar ConferenceSeasar Conference
2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.
![Page 19: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて](https://reader036.vdocuments.pub/reader036/viewer/2022071406/60fb485aab0bcf7d3079dea6/html5/thumbnails/19.jpg)
Groovy Groovy とと JavaJavaは地続きは地続き
class Hello {Groovy側
実行結果:static void main(args) {World wd = new World()wd greet(“ world! ")
Hello world Groovy!
wd.greet( world! ")}
}}相互呼び出し
Ja a側
WorldはJavaクラス
public class World {public void greet(String arg) {
Java側
WorldはJavaクラスpublic void greet(String arg) {System.out.println(“Hello “ + arg);}
19Seasar ConferenceSeasar Conference
2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.
}}
![Page 20: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて](https://reader036.vdocuments.pub/reader036/viewer/2022071406/60fb485aab0bcf7d3079dea6/html5/thumbnails/20.jpg)
JavaJavaからからGroovyGroovyは地続きは地続き
HelloWorld.javagroovy
public class HelloWorld {p blic static oid main(String[]public static void main(String[] args) {
i tl ("H llS t ti tl "H ll W ld"println("Hello World");
System.out.println "Hello World"
}}}
※ のペ ジはア メ シ ンを含みます20
Seasar ConferenceSeasar Conference2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.
※このページはアニメーションを含みます
![Page 21: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて](https://reader036.vdocuments.pub/reader036/viewer/2022071406/60fb485aab0bcf7d3079dea6/html5/thumbnails/21.jpg)
GroovyGroovyの仕組みの仕組み((簡易説明版簡易説明版))
JJ 糖衣構文糖衣構文 GGJava + Java + 糖衣構文糖衣構文 = Groovy= GroovySyntax Sugar
Javaコード Groovyコード (1)簡潔な言語仕様
Groovy.jar(2)コンパイラ
Javacでコンパイル
groovycでコンパイル
bytecode
y j
(3)ライブラリー
ン イル ン イル
bytecode
実行環境は共通
21Seasar ConferenceSeasar Conference
2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.
![Page 22: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて](https://reader036.vdocuments.pub/reader036/viewer/2022071406/60fb485aab0bcf7d3079dea6/html5/thumbnails/22.jpg)
つまりつまりGroovyGroovyはは
Javaのプリコンパイラ
J 風味軽量言語Java風味軽量言語
Optional Typingp yp g
22Seasar ConferenceSeasar Conference
2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.
![Page 23: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて](https://reader036.vdocuments.pub/reader036/viewer/2022071406/60fb485aab0bcf7d3079dea6/html5/thumbnails/23.jpg)
Ruby on RailsRuby on Railsの情報格納場所の情報格納場所 : Migrate: Migrate
Migrate String: name
employee
Mi
MigrateInt: id
class MyDatabase < ActiveRecord::Migrationdef self up
Migrate
def self.upcreate_table(:employee) do |t|
t.column(:name, :string, :limit => 100, :null => false )t.column(:name, :string, :limit 100, :null false )t.column(:id, :integer, :null -> false)
enddef self.down
drop_table :employeeend
23Seasar ConferenceSeasar Conference
2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.
end
![Page 24: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて](https://reader036.vdocuments.pub/reader036/viewer/2022071406/60fb485aab0bcf7d3079dea6/html5/thumbnails/24.jpg)
データの意味情報格納空間データの意味情報格納空間
厳格かつ煩雑厳格かつ煩雑XML ネームスペース付き
Migrate とし のスキ 情報
スキーマ情報
Migrate DBとしてのスキーマ情報
簡潔かつ不正確 RubyGroovy
Duck Typing
Optional Typing
Ruby on Rails ProjectZero
簡潔かつ不正確 yDuck Typing
24Seasar ConferenceSeasar Conference
2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.
y j
![Page 25: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて](https://reader036.vdocuments.pub/reader036/viewer/2022071406/60fb485aab0bcf7d3079dea6/html5/thumbnails/25.jpg)
型定義の段階型定義の段階
方式 記述 表現
XML <?xml version="1 0"?> 完全にユニークXMLSchema
<?xml version= 1.0 ?><xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
完全にユ ク
エンタープライス間に使用可能
<xsd:element name="greeting" type="xsd:string"/></xsd:schema>
Migrate t column(:name :string :null => false ) 同一開発Migrate t.column(:name, :string, :null => false ) 同 開発チーム内
Groovy String greet = “Hello”または
同一Serialized Object間--- または ---
def greet=“Hello”Object間
Ruby greet = “Hello” Duck Typing式推
g型推測
25Seasar ConferenceSeasar Conference
2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.
![Page 26: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて](https://reader036.vdocuments.pub/reader036/viewer/2022071406/60fb485aab0bcf7d3079dea6/html5/thumbnails/26.jpg)
普及度普及度
SeasarConの会場でRubyの普及度を測ってはいけないいけない
– × 渋谷の街頭調査(既に母集団が偏っている)( )
– ○ 無作為な番号に電話を掛けての聞き取り○ 無作為な番号に電話を掛けての聞き取り
26Seasar ConferenceSeasar Conference
2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.
![Page 27: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて](https://reader036.vdocuments.pub/reader036/viewer/2022071406/60fb485aab0bcf7d3079dea6/html5/thumbnails/27.jpg)
本当の普及度本当の普及度 : Silent Majority: Silent Majority
JavaからRubyなんて簡単と思っている人簡単と思っている人
Silent majority
SeasarCon
RubyKaigiRubyKaigi
27Seasar ConferenceSeasar Conference
2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.
![Page 28: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて](https://reader036.vdocuments.pub/reader036/viewer/2022071406/60fb485aab0bcf7d3079dea6/html5/thumbnails/28.jpg)
言語仕様策定プロセス言語仕様策定プロセス
Java : JCPJava Community ProcessJava Community Process
Groovy : JSR241 “The Groovy Programming Language”
個人ではなく、みんなで決めていること
言語はみんなのものであるべき言語はみんなのものである き
28Seasar ConferenceSeasar Conference
2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.
![Page 29: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて](https://reader036.vdocuments.pub/reader036/viewer/2022071406/60fb485aab0bcf7d3079dea6/html5/thumbnails/29.jpg)
信頼性信頼性
信頼性 ≠ 99.99%信頼性 「挙動が定義通り」信頼性 = 「挙動が定義通り」
例 : 嘘つき村の住人は高信頼性
assert(!言っていること == true)
定義(スペック)重要定義(ス ック)重要「バグではなく仕様です」動きが定義されているから言える動きが定義されているから言える。
Groovy = JSR241
29Seasar ConferenceSeasar Conference
2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.
![Page 30: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて](https://reader036.vdocuments.pub/reader036/viewer/2022071406/60fb485aab0bcf7d3079dea6/html5/thumbnails/30.jpg)
最終的な性能への期待値最終的な性能への期待値
不採用 : 軽量だから速い
採用 重いがフルスペ ク採用 : 重いがフルスペック全機能が実現可能
– ○ : 重くて遅い
– × : ~ができない× : ができない
例
– Eclipse = あらゆる開発のPlatformEclipse あらゆる開発のPlatform– Dojo Toolkit = 万能AJAXフレームワーク
30Seasar ConferenceSeasar Conference
2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.
![Page 31: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて](https://reader036.vdocuments.pub/reader036/viewer/2022071406/60fb485aab0bcf7d3079dea6/html5/thumbnails/31.jpg)
最終的な性能への期待値最終的な性能への期待値 : Groovy: Groovyの場合の場合
JavaVMで動く
全OSで動作可能– 全OSで動作可能
– Javaの環境が使用可能
• 64bit、マルチコア、・・・
二段階動作
gooovy で直接スクリプト起動– gooovy で直接スクリプト起動
• サクサク開発
バイト ド生成– groovyc でバイトコード生成
• classやjarにして、しっかり動作
31Seasar ConferenceSeasar Conference
2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.
![Page 32: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて](https://reader036.vdocuments.pub/reader036/viewer/2022071406/60fb485aab0bcf7d3079dea6/html5/thumbnails/32.jpg)
開発スタイル開発スタイル
軽量言語
ジャズ セッション– ジャズ・セッション
– 高い個人の自由度
– Ad-hocな開発に向く
Javaオ ケストラ– オーケストラ
– 大規模開発の為の強い制約
– 長期的保守を最初から想定
32Seasar ConferenceSeasar Conference
2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.
![Page 33: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて](https://reader036.vdocuments.pub/reader036/viewer/2022071406/60fb485aab0bcf7d3079dea6/html5/thumbnails/33.jpg)
ITIT予算の行き先予算の行き先
実は・・・開発生産性 < 保守容易性開発生産性 < 保守容易性
型制約があるコード (Java)–手がかりが多く、読みやすい手がかりが多く、読みやすい
–コードに意外性がない
制約に基づく開発が可能–制約に基づく開発が可能
Duck typing –手がかりが少ない
33Seasar ConferenceSeasar Conference
2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.
![Page 34: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて](https://reader036.vdocuments.pub/reader036/viewer/2022071406/60fb485aab0bcf7d3079dea6/html5/thumbnails/34.jpg)
ビジネス基盤としてビジネス基盤として
Eclipseみんなのビジネス基盤– みんなのビジネス基盤
– イケてるPlug-in を作ってビジネス可能
RubyRuby – GPL
R b ドに触れるもの全てGPLになる– Rubyコードに触れるもの全てGPLになる
Ruby != Eclipse
34Seasar ConferenceSeasar Conference
2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.
![Page 35: GroovyGroovyででProjectZeroProjectZero · 2017. 12. 12. · はじめに Web界で多用されている軽量言語が、 エンタエンタ プライズ界にどう導入されてープライズ界にどう導入されて](https://reader036.vdocuments.pub/reader036/viewer/2022071406/60fb485aab0bcf7d3079dea6/html5/thumbnails/35.jpg)
まとめまとめ : : エンタープライズ軽量言語としての評価点エンタープライズ軽量言語としての評価点
普及度
言語仕様策定プロセス言語仕様策定プロセス
信頼性
最終的な性能への期待値
ライセンス形態ライセンス形態
真の開発生産性真の開発生産性
学習コスト
35Seasar ConferenceSeasar Conference
2008 Autumn2008 Autumn Copyright© 2004-2008 The Seasar Foundation and the others. All rights reserved.