SSブログ

今週のNews(06/01/30) [News]

○Product

○一般

○Articles

  • Developing Ajax Applications That Preserve Standard Browser Functionality
    http://dev2dev.bea.com/lpt/a/470
    AJAX アプリケーション開発での back/forward button の利用に関して
  • ・Joe Walker(DWR author) on using AJAX with DWR
     プレゼンテーションの映像
     http://www.theserverside.com/news/thread.tss?thread_id=38726
     - How DWR manages type conversions
     - How security is addressed in DWR
     - Where DWR is typically used
     - How AJAX factors into accessible applications
     - The impact of AJAX on the network bus
  • The AJAX Toolkit Framework (ATF) Project
    http://www.eclipse.org/proposals/atf/
    Eclipseコミュニティは、AJAX Toolkit Framework (ATF) プロジェクトの提案(IBMさん主導のようです。)を受け入れたようです。様々なAJAXプロジェクトのツールがモジュールとして提供されるようです。(Dojo, Zimbra, and OpenRico are mentioned specifically)。このフレームワークは大きく2つのコンポーネントから構成されることが提案されています。
     - ATF Tools:JavaScript の編集、デバッグ、インスペクションをおこなう
     - ATF Personality Framework:特定のAPIのサポートをおこなう
    AJAX の機能自体は、フレームワーク、コンポーネントとして提供されつつありますので、どのような位置づけの開発環境として実現されるのか興味深いです。

 


J2EE design decisions [Java]


J2EE design decisions(written by Chris Richardson)
http://www.javaworld.com/javaworld/jw-01-2006/jw-0130-pojo_p.html

■概要
 POJOs in Action(Manning Publications, January 2006) からの抜粋
 「Patterns of Enterprise Application Architecture」の考え方をJ2EEの世界をベースに、より実装に近い観点で論述された記事と考えてもらうとわかり易いかもしれません。新規性に富んだ話は多くはなかったですが、よく纏まった記事かと思います。

■要約
最近 POJOs、ライトウェイトフレームワークの話題が賑わせていますが、盲目的にそれを利用することは、EJB で犯した問題を繰り返すことになると警告しています。どんな技術でも強みと弱みがあり、それを理解してデザインを決定することが重要であると述べています。

大きく3つの選択肢があると述べています。

  • EJB2 style
  • POJO と ライトウェイトフレームワークの組み合わせ
  • EJB 3

この記事では、デザイン決定のための5つの観点を指摘しています。

Decision 1: Organizing the business logic

  • オブジェクト指向のアプローチか(Domain Model pattern)
  • 手続き型のアプローチか(Transaction Script pattern)

Decision 2: Encapsulating the business logic

  • EJB session facade(Figure 4.)
  • POJO facade(Figure 5.)
  • Exposed Domain Model pattern(Figure 6.)

Decision 3: Accessing the database

  • JDBC directly(良い選択ではない)
       - 開発やメンテナンスは難しく、コストがよりかかる。
       - SQLのポータビリティの観点で欠けている
      - JDBCコードの記述は時間がかかり、エラーを起こしやすい
  • object/relational mapping frameworks (such as JDO and Hibernate)
  • SQL mapping frameworks (such as iBATIS)

Decision 4: Handling concurrency in database transactions

  • Isolated database transactions
  • Optimistic locking
      - テーブルにバージョンカラムを追加する方法が一般的
      - JDO や hibernate のようなフレームワークは Optimistic locking の機能を提供
  • Pessimistic locking
      - 更新処理の最初に共有データをロックする方法
      - JDO は設定オプションとして Pessimistic Locking の機能を提供
      - Hibernate は locking object のためのプログラミング可能なAPIを提供

Decision 5: Handling concurrency in long transactions

 


Maven 1.x TIPS & References [BuildProcess]

maven 1.0.2 を再度利用してみようと考えています。今までの備忘録を整理しなおしてみました。

○TIPS

  • ビルドした日時をつける
      project.propertiesに以下行を追加
      maven.xdoc.date=left
      maven.xdoc.date.format = yyyy/MM/dd HH:mm z
  • Pluginのダウンロードおよびインストール
      以下のコマンドでプラグインをダウンロードすると、ローカルのリポジトリにプラグインが反映される。次回 maven コマンド実行時に更新されたバージョンのプラグインが利用可能
      maven plugin:download -Dmaven.repo.remote=http://maven-plugins.sf.net -DartifactId=maven-findbugs-plugin -Dversion=0.8.2
  • CVSのパスワードファイル .cvspass の生成の方法
      maven -Dpassword=XXXXXXX changelog:create-cvspass
  • FAQ
      xdocs/faq.fml を記述して、(.xmlでないことに注意) project.xml に以下の行を追加することにより、site GOAL が実行されたときに、FAQページが生成される。
      <report>maven-faq-plugin</report>
  • 単一のコードのテスト
      maven -Dtestcase=org.foo.bar.MyTest test:single

○References

・Maven

・CruiseControl 

・ CheckStyle

・Jelly


今週のJava関連News(06/01/23-) [JavaNews]

Products

REST

  • REST入門
    http://yohei-y.blogspot.com/2005/04/rest_23.html
  • Webの「正しい」アーキテクチャ
    http://www.atmarkit.co.jp/fdotnet/opinion/yoshimatsu/onepoint05.html
    RESTのポリシー
    - Webサイトが保持していて、外部に公開される内容には、すべて(論理的な)URI(URL)が付いていなければならない。
    - Webサイトへのアクセスは、HTTPのPUT(Create)、GET(Read)、POST(Update)、DELETE(Delete)で行い、それぞれ処理内容に合わせた結果が返されなければならない。
    - Webサイトへアクセスした結果返されたものがリソースの表現(Representation)であり、ページからページへの遷移が状態の遷移(State Transfer)と見なされる。

Articles

  • IBM離脱、Zimbra主動へ - ApacheのAJAX Toolkit Framework Project
    http://pcweb.mycom.co.jp/news/2006/01/16/091.html
  • Call SOAP Web services with Ajax, Part 2: Extend the Web services client
    AJAXを利用した ブラウザベースの SOAP Web Service client をどのように実装するかに関して
    http://www-128.ibm.com/developerworks/webservices/library/ws-wsajax2/?ca=dgr-jw22SOAP-AJAX2
  • EAの生みの親、ザックマン氏語る
    http://www.itmedia.co.jp/enterprise/articles/0601/24/news003.html
  • ・BEA WebLogic Server 9.1 Documentation
    http://edocs.beasys.co.jp/e-docs/wls/docs91/index.html
  • Using AJAX to Improve the Bandwidth Performance of Web Applications
    http://webperformanceinc.com/library/reports/AjaxBandwidth/index.html
    AJAX はネットワーク大域の利用を増加させるため、これをどのよう削減させるかは課題となっています。この記事では 50% 削減をゴールとして考えていましたが、いくつかの小リファクタリングと100行以下のコード改善により、アプリケーション全体のネットワーク大域の61%を減らすことができたようです。
    パフォーマンスに影響を及ぼすポイントは、参考になりました。基本的な改善の手法は変更された必要な情報のみを送信することであり、AJAX だからといったも本質的なところはなんら変わりないかと思います。
    (このレポート否定するわけではありませんが、)
    しかしながら、生のJavaScript コードを修正して、60%改善できたと
    いわれても、絶対値にはあまり意味が感じられませんね。
    今後、AJAXの利用はライブラリやフレームワークを介して利用する動きがますます強くなるかと思われます。もちろん、ライブラリ、フレームワークも必要な情報のみを送信する方式が望ましいですが、その方式に近づけるためには、ライブラリ・フレームワークの上で動作する業務アプリケーションの動作を前提にした仕掛けが必要となります。汎用的なライブラリ・フレームワークでどこまでできるのか、また、細かい制御を考慮すればするほど、開発も複雑化することが推察されます。どこを落としどころにするかは難しそうですね。
  • ・JSFのGUI開発本格化へ? - Sun Java Studio Creator 2いよいよリリース
    http://pcweb.mycom.co.jp/news/2006/01/26/340.html
    SJSC 2には、現在 GlassFish のコードネームで開発が進められている
    「Sun Java System Application Server Platform Edition 8.1_02」
    が同梱されています。SJSC 2 で利用できるJSF のバージョンは(ホームページを少し見た限りは)記載されていないようです。GlassFish に同梱されていた JSF は開発中の 1.2 であったため、1.2 の可能性が高いですが、SJSCは JSF に注力された開発環境であるにも関わらず、具体的な宣伝がなにも記載がないから 1.1 の可能性もあるかなと思ってます。(調査中) 

Maven 2 [BuildProcess]

Draft

はじめに

  • Maven2 がリリースされ、はや半年が過ぎようとしています。Maven1.x の開発に比べると、Maven2 の開発に注力されているようですので、リリース後早速移行を試みましたが、いくつかの問題が立ちふさがりなかなか移行できずにいます。
    まずは、いったん整理して、Maven 1.x で稼動する環境を再構築する方向に方向転換しようと思います。体裁は構わず記録だけは整理だけしておこうと思います。

Mavenとは、Maven1.x からの変更点に関して

  • Maven はプロジェクトマネージメントシステムです。
    プロジェクトのビルドプロセス、結果レポートやドキュメントの集約を支援します。

○Maven1.0からの変更点:
http://maven.apache.org/maven2/maven1.html

  • 速く、小さい
    maven のコアモジュールは ant, jelly, xerces 等を使用せず、小さく、依存関係は疎になりました。
  • ライフサイクルの規定
    maven1.0 で使用していたゴールの前後処理である prereqs, preGoals and postGoals は不要になりました。
    ビルドは、洗練された定義されたフェイズに基づきます。具体的には、通常のゴールの名前(compile, test, install)は使用されないことも意味します。
  • 複数プロジェクトをハンドリングするための組み込みの仕組みを提供
    プロジェクトに対する同一のゴールを使用し、結果を集約させることができます。
  • SNAPSHOTをハンドリングする方法の向上
    今までは、SNAPSHOTはディフォルトでは日ごとに1回だけアップデートすることをチェックしていました。今後は、ビルドごと、特定のインターバルごと、そして、無効にすることが可能です。
  • プロパティファイルは使用しません
    全てのプラグインの設定は、POMの中で設定されます。
  • maven.xmlは使用しません
    プラグインはより簡単にビルドし統合できます。そして、ビルドするためのスクリプトを書く唯一の手段となります。
  • Jellyは使用しません。
     プラグインは、主に Java で記述しますが、他のスクリプト言語を提供もされています。このリリースでは、jelly に良く似た XMLのシンタックスをサポートするスクリプトフレームワークである Marmalade を サポートします。Marmalade は ant task の統合をおこない、jelly との互換レイヤをもちます。
  • リポジトリレイアウトの向上
    maven2.0は、既存のそして向上したリポジトリレイアウトをサポートします。分割された構造によりよりいっそうリポジトリを理解しやすくなるでしょう。

○MOJOってなに?
 http://blog.goo.ne.jp/ikkoan/e/faee35340ce18875ead57930d40698e0

  •  Maven2.0 では Plugin は Java もしくはスクリプト言語(現状 Marmalade というスクリプト言語のみ利用可能です。)で記述されます。Maven の Plugin は、基本的にコマンドオブジェクトです。Maven Plugin を生成するためには、Mojo interface を実装する Java Class(Maven のPOJOのことを指す) を作成します。 このインターフェイスには、パラメータおよび戻り値をもたない1つの実行メソッド、そしていくつかのログ用メソッドを定義されます。
     そして、Plugin に対して 追加の情報を提供する Plugin Descriptor を記述する必要があります。内容にはライフサイクル やパラメータが含まれます。この Descriptor で定義されたパラメータは、Maven により 実行時に Plugin 内のメンバ変数に  Inject されます。Maven は、Plugin Descriptor の生成およびPluginをパッケージングするためのツールを提供することにより、このプロセスを簡略化します。あとは、あなた自身の Plugin を アノテートするだけです。残りはMavenがハンドリングしてくれます。

○透過的な依存性

  • Maven2 では再帰的にプロジェクトの依存関係を解析します。
    具体的には、プロジェクトで参照しているライブラリが、さらに依存しているライブラリを自動的に取り込むことが可能です。透過的な依存性は、ビルドプロセスを単純にすることに大変役に立ちます。
    さらにいくつかの依存関係の解決にも取り組んでいます。1つはサイクリックな依存関係の解決です。もう1つはバージョンの競合の解決です。 詳細は Maven2 の WEBサイトでご覧になることができます。

     maven2 では、4つの依存性のスコープを用意されています。

    - compile:全てのクラスパスで有効となります。
    - runtime:実行時およびテスト時のクラスパスで有効となります。
    - test:テストケースのコンパイルおよび実行時のクラスパスで有効となります。
    - provided:コンパイル時には必要だが、実行時にはコンテナから提供されるライブラリを意図しています。(例としては、servletapi が挙げられます。)

インストール・設定に関して

○Javaプロジェクトの雛形の作成

  • maven2を使用するための最初のステップは、maven2が要求する初期設定、ディレクトリ構成を整える必要があります。以下のコマンドを入力することにより、テンプレートに従った初期設定およびディレクトリ構成を出力することが可能です。

    m2 archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app

    ※Webプロジェクトの場合:-DarchetypeArtifactId=maven-archetype-webappを末尾に付与することにより、Webプロジェクトのテンプレートを出力することが可能です。

    http://tidus.ultimania.org/wiki/index.php?Maven2

○各プロジェクトで共通の設定

TIPS

○maven のコンパイル時に JDKのバージョン、javac のソース互換性(-source)、ターゲットの指定(-target)をおこなうには?

  • -source, -target として JDK1.5 を想定した場合には、以下のようになります。

 <build>
   ...
   <plugins>
     <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-compiler-plugin</artifactId>
         <configuration>
           <source>1.5</source>
           <target>1.5</target>
         </configuration>
     </plugin>
   </plugins>
   ...
 </build>

詳細に関しては以下のURLをご覧ください。maven2のFAQですので、一読されることをお勧めします。
 http://maven.apache.org/maven2/general.html


 


この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。