GWTお勉強&読書『Essential GWT』Chapter3

引き続き第3章。このペースで読み進めていきたいがやはり1文1文読みながらなのでどうしても時間が掛かってしまうなぁ…。メリハリ付けて効率化を図らんと。

Chapter3. Understanding Projects and Development

  • ch3: プロジェクトを作ろう!という所だが、Hello World的なアプリケーションはやる気は無いらしい…。 posted at 00:50:20
  • ch3: GWTはプロジェクト(諸々必要なファイルやディレクトリで構成されている)を構成するために幾つかのスクリプトファイルを提供している。Eclipse Pluginで簡単にプロジェクトを作成する事が可能。 posted at 00:54:16
  • ch3: [ファイル]→[新規]→[その他]→[Google]→[Web Application Project]を選択し、プロジェクト名及びパッケージ名を入力。…つかこの辺はお決まり手順なので割愛。 posted at 00:56:11
  • ch3: Eclipse Pluginを使えば簡単にプロジェクトの雛型が出来ますよ、っと。 posted at 00:56:52
  • 次にGWTシェルスクリプトの使い方…とある。Eclipse使うつもりが無いなら…とあるので、ここは飛ばすか。 posted at 00:58:28
  • ch3: Project Structure(プロジェクト構成):プロジェクトの雛型には、幾つかのディレクトリが必要。 posted at 01:00:26
  • ch3: srcディレクトリには(1).client[ブラウザで動作] (2).shared[client/server双方が使える/追加可能?] (3).server[サーバ側で動作] が存在。サブディレクトリも作成可。 posted at 01:05:19
  • ch3: クライアント側には他にもディレクトリを持つ事が出来る。がしかし、<source>elementに内容を含む必要がある…ってこれはgwt.xmlの話か? posted at 01:07:06
  • ch3: 一方で、サーバサイドコードはserverパッケージ配下にないとダメ。 posted at 01:08:03
  • ch3: あなたが他のディレクトリを指定することはできません。(直訳) posted at 01:09:01
  • ch3: もしクライアントサーバ間で共有したければ、sharedディレクトリに含めるべき。なぜならそれらはJavascriptに変換する必要があり、これは自動的にすべてのクライアント側のコードの制限が、これらのクラスに適用されることを意味する。(自動コンパイルしてくれる) posted at 01:11:45
  • ch3: もしテストするなら、"test"とか"gwttest"ディレクトリを切ってそこで作成しよう。(JUnit や GWTTestCaseの自動テスト格納用)※詳細はChapter 13『Testing Yout GWT Application』にて。 posted at 01:14:03
  • ch3: outputのコードはwarフォルダ配下に生成される。このディレクトリは適切な形式で存在している。ここでの"適切"とは、TomcatとかのJavaWebアプリサーバにデプロイする上での"適切"な形。 posted at 01:17:18
  • ch3: 静的HTML, CSS, コンパイル・生成されたJavascriptファイル、Jarファイル、web.xml等が存在。 posted at 01:18:36
  • GWTの基本の単位はmodule。クライアントサイド、ライブラリ等、他のプロジェクトでも再利用可能な単位。このmoduleの定義はプロジェクトrootに存在する*.gwt.xmlで行う。 posted at 01:21:13
  • 最も基本的なmoduleの定義(最近作成したプロジェクト)はこんな感じ:(最小単位のgwt.xmlのコードが記載) posted at 01:23:35

Sampleproject.gwt.xml

<?xml version="1.0" encoding="UTF-8"?>
<module rename-to='sampleproject'>
    <!-- Inherit the core Web Toolkit stuff.                        -->
    <inherits name='com.google.gwt.user.User'/>
    <!-- Inherit the default GWT style sheet.  You can change       -->
    <!-- the theme of your GWT application by uncommenting          -->
    <!-- any one of the following lines.                            -->
    <inherits name='com.google.gwt.user.theme.standard.Standard'/>
    <!-- <inherits name='com.google.gwt.user.theme.chrome.Chrome'/> -->
    <!-- <inherits name='com.google.gwt.user.theme.dark.Dark'/>     -->
    <!-- Other module inherits                                      -->
    <!-- Specify the app entry point class.                         -->
    <entry-point class='com.kereki.sample.client.Sampleproject'/>
    <!-- Specify the paths for translatable code                    -->
    <source path='client'/>
    <source path='shared'/>
</module>

  • ch3: moduleタグ内の<rename-to>属性(オプション):FQCNで記載されているアプリケーション名を使いやすい名前に変更出来る。 posted at 01:45:45
  • ch3: <inherits>属性:サンプルコードの場合はGWT基本機能・デフォルトWidgetスタイルをインポートしている。 posted at 01:46:57
  • ch3: <entry-point>属性はアプリの開始ポイントを示す。 posted at 01:47:24
  • ch3: <source>属性:ディレクトリをコード生成に含むか否かを定義する。この場合(=標準的)、<client>ディレクトリのみを含んでいる。 posted at 01:49:40
  • ch3: シンプルなプロジェクトならこれ以上は必要ない。けど、より詳細な設定に進む場合、更に幾つかの属性を追加する事が出来る。 posted at 01:51:27
  • ch3: <module>はgwt.xmlファイルのルートエレメント。1つのみ設定可能。だけど別名でモジュールをxmlファイル内に定義出来る・・?詳しくは15章参照。 posted at 01:54:12
  • ch3: <rename-to>属性は<module>に利用可能。…らしいがこの辺も詳細は15章参照っぽい。飛ばすか。 posted at 01:55:44
  • ch3: <source>属性: includeやexcludeを使ってディレクトリやファイルを分別可能。以下の<public>属性を参照。 posted at 02:00:14
  • ch3: って、<public>の記載例が2ページ先に飛んでおる…(-_-;)Antのinclude/excludeと似たようなもんか。 posted at 02:03:27
  • ch3: <entry-point>は、アプリケーションのエントリポイントクラスを指定。もしアプリ内に幾つかのエントリポイントを持つ場合、それらのonModuleLoad()メソッドがモジュールファイル(の記載)と同じ順番で順次実行される。 posted at 02:09:22
  • ch3: <script>, <stylesheet>属性: これは見ての如くだから良いか。割愛。 posted at 02:10:16
  • ch3: <public>属性: コピーに使う…?何か意味合いが良く分からん。 posted at 02:15:05
  • ch3: コピーに使う時にinclude/excliude指定が可能とあるが、何のためにコピーを? posted at 02:15:33
  • ch3: デプロイ・公開する際のフィルタ的なもの…という考えで良いのかしら?違うのかな? posted at 02:21:51
  • [Java][GWT][Twitter]GWTお勉強&読書『Essential GWT』Chapter2: 洋書を読んでって、何とな〜く分かった気になって読み進めていってるんだけど(実際どこまで把握しているのかは微妙なところ)、... http://bit.ly/9H0ipE posted at 02:26:34
  • ch3: もしアプリ内でRPC(詳細は第6章にて)を使う場合、web.xmlファイルにサーブレットの設定が必要。しかし、GWTTestCaseテストの場合のみ(?)、<servlet path="uri" class="className" /> を含める必要有り。 posted at 02:43:13
  • ch3: classNameはFQCN形式で、またURLは /AnyServlet のような絶対パス形式で記述。勿論、web.xmlにも同様の記述を忘れずに。 posted at 02:44:38
  • ch3: properties絡みの設定項目もあるらしい…。詳細は第4章『Working with Browsers』にて。 posted at 02:51:09
  • ch3: Development Mode:GWT2ではHosterd ModeはDebelopment Modeと名を変えた(混乱を生みやすいので)。Development Modeではブラウザ上でコード実装を試す事が出来る。 posted at 02:58:06
  • ch3: プロジェクトを右クリックで実行→メッセージに表示されたURLをお気に入りのブラウザに貼り付けでアクセスする事でDevelopment Modeでの表示が行える。 posted at 02:59:38
  • ch3: ブラウザがプラグインを導入していない、未対応の場合にはインストールを促されるのでクリックして導入。 posted at 03:00:24
  • ch3: プロジェクトを右クリック→デバッグ実行も可能。 posted at 03:01:35
  • ch3: ざっくりふわっと第3章終了。本当は第5章でコレをやりたかったのだがさすがに時間が掛かるか…。第4章と第5章は並行してやろうかな?ま、とりあえず続きは明日だ。 #java #essentialgwt posted at 03:03:42
  • つぶやきをblogにまとめたらボチボチ寝る事にしようか。 posted at 03:04:15