本文へジャンプ


developerWorks Japan  >  Java technology  >  

技術文書一覧

developerWorks
 
  
 
 結果  936   1 - 100 件を表示する     概要の非表示    
 
タイトル 日付日付 別のソート - 逆順にしたい場合はクリック
Java Web サービス: Metro の紹介
Metro Web サービス・スタックは、Web サービスを実装したり、Web サービスにアクセスしたりするための包括的なソリューションを提供します。そのベースとなっているのは JAXB 2.x および JAX-WS 2.x Java 標準のリファレンス実装であり、この実装に WS-* SOAP 拡張技術と実際の Web サービス・デプロイメントをサポートするためのコンポーネントが追加されています。Dennis Sosnoski の連載「Java Web サービス」では今回、この Metro のクライアントおよびサーバー開発の基本原則を取り上げます。
    2009/11/03  
 
Eclipse Galileo でのパッチ機能を探る
Eclipse Galileo にはパッチを適用するための新しい機能が含まれており、その中にはクリップボードにパッチをコピーして「Project Explorer (プロジェクト・エクスプローラー)」に直接貼り付けられる機能も含まれています。この記事ではこの機能を紹介し、パッチの作成方法と適用方法についての概要を、Eclipse で使用されているパッチ・フォーマットの概要と併せて説明します。
    2009/11/03  
 
Joda-Time
どんなエンタープライズ・アプリケーションでも、時刻を省くことはできません。アプリケーションでは現在の時刻を把握したり、将来のある時点での時刻を把握したり、場合によっては 2 つの時刻からその期間を計算したりしなければなりません。JDK でこの計算を行うのは厄介で面倒なことです。そこで試してもらいたいのが、Java プラットフォームのための使いやすいオープンソースの日付/時刻ライブラリーである Joda-Time です。この記事を読むとわかるように、Joda-Time は日付と時刻を操作する面倒を軽減してくれます。
    2009/10/27  
 
Java 開発 2.0: 容易な EC2
Java Web アプリケーションのホスティング用に EC2 インスタンスをプロビジョニングする作業は簡単です。この連載「Java 開発 2.0」の今回の記事では、Groovy、Spring、Hibernate を (Grails フレームワークを介して) 活用する Web アプリケーションを素早く作成し、EC2 インスタンスにデプロイする方法について説明します。
    2009/10/27  
 
Grails をマスターする: Grails によるモック・テスト
連載「Grails をマスターする」の今回の記事では、Scott Davis が Grails の GrailsUnitTestCase クラスおよび ControllerUnitTestCase クラスに組み込まれたモック生成機能を利用する方法を紹介します。
    2009/10/20  
 
多忙な Java 開発者のための Scala ガイド: Scitter を使って Twitter を更新する
Scitter クライアント・ライブラリーはほぼ実用的なものになりましたが、最後の仕上げが少し必要です。今回の「多忙な Java 開発者のための Scala ガイド」では、Ted Neward が、Twitter にアクセスするための Scala ベースのライブラリーに対し、更新、表示、削除機能を追加する方法について説明します。
    2009/10/20  
 
Spring での Object/XML マッピングのサポートを探る
Java EE (Java Platform, Enterprise Edition) コミュニティーの中で、Spring は広く受け入れられたフレームワークになりつつあります。Spring の最新リリースの新機能の 1 つとして、O/X (Object/XML) マッピングがサポートされています。この API を利用することで、Java オブジェクトを XML に、あるいは XML を Java オブジェクトに変換することができます。この記事では、Spring の Object/XML マッピングの使い方と、そのメリットについて学びます。
    2009/10/20  
 
GWT の魅力: 第 2 回 上級編
GWT (Google Web Toolkit) では、ブラウザーで動作するデスクトップ風のアプリケーションを実装することができます。この 2 回の連載の後半では、David Geary がイベントの受信、タイマーの使用、そしてイベント・プレビューなど、さらに高度な GWT の機能を使用する方法を説明します。
    2009/10/20  
 
リアルタイム Java での開発: 第 3 回 リアルタイム Java アプリケーションを作成、検証、分析する
この 3 回連載の前の 2 回の記事、そして連載「リアルタイム Java」を基に、今回の記事では基本的なリアルタイム・アプリケーションを設計、コーディング、検証、分析する方法を説明します。焦点とするのは、アプリケーションの確定性の高いサービス品質が実現されているかどうかを検証する上での実際的な側面です。
    2009/10/14  
 
Java の診断を IBM スタイルで: 第 5 回 Health Center によってアプリケーションを最適化する
IBM Monitoring and Diagnostic Tools for Java - Health Center は、実行中の Java アプリケーションを監視するためのツールです。このツールはシステムの正常性に関するあらゆる側面を図やグラフ、表などでレポートするだけでなく、問題を修正するための推奨案も示してくれます。Health Center には極めてオーバーヘッドの低いメソッド・プロファイラーや、ガーベッジ・コレクション・ビジュアライザー、競合のボトルネックを識別するロック・プロファイラー、そして構成エクスプローラーが組み込まれています。このツールを使ってアプリケーションのパフォーマンス、構成、そして安定性に関する問題を診断し、修正する方法を学んでください。
    2009/10/07  
 
memcached と Grails: 第 2 回 memcached を Grails に統合する
James Goodwill が memcached と Grails の統合について紹介するこの 2 回の連載は、今回 Grails サンプル・アプリケーションと Java ベースの memcached クライアントを統合して締めくくります。Spymemcached を Grails で作成した連絡先管理アプリケーションに統合する方法を学んで、個々のリクエスト結果を memcached でキャッシングするという手法を実践してみてください。さらにこの記事では、第 1 回で説明したmemcached クライアント・コマンドを使用して新しいキャッシュの効率性もテストします。
    2009/10/06  
 
Java 開発 2.0: EC2 も借りられます
連載「Java 開発 2.0」の今回の記事では、Andrew Glover が Amazon EC2 (Elastic Compute Cloud) 用にアプリケーションを開発してデプロイする方法を実際の手順に沿って紹介します。EC2 と Google App Engine との違いを学び、Eclipse プラグインと簡潔な Groovy 言語を利用して、単純な Web アプリケーションを EC2 で素早く稼働させる方法を学んでください。
    2009/09/29  
 
実用的な Groovy: SwingBuilder と Twitter API、第 1 回
「実用的な Groovy」シリーズの今回の記事で Scott Davis が取り上げる話題は、サーバー・サイド Java の開発者の大部分が心から恐れる Swing です。この記事を読むとわかるように、Groovy の SwingBuilder を利用することで、強力ながら複雑な GUI フレームワークである Swing の難しさをいくらか軽減することができます。
    2009/09/29  
 
Grails をマスターする: カスタム・プラグインを作成する
連載「Grails をマスターする」の今回の記事では、Scott Davis が独自の Grails プラグインを作成する方法を紹介します。この記事を読んでプラグインをこれほど簡単に作成できることがわかれば、現在 250 を超える Grails プラグインがあり、新しいプラグインも次から次へと追加されているわけが納得できるはずです。
    2009/09/15  
 
memcached と Grails: 第 1 回 memcached をインストールして使用する
memcached と Grails に焦点を当てるこの 2 回連載の第 1 回目では、著者の James Goodwill がオープンソースのキャッシング・ソリューション、memcached を紹介します。今回の記事で取り上げる内容は、memcached のインストール、構成、memcached クライアント・コマンド、そしてキャッシュの有効性を評価する方法です。この記事では、memcached を各言語に固有のクライアントで使用する方法について説明するのではなく、memcached サーバーとの間で行われる直接のやりとりに焦点を絞ります。今回目標とするのは、memcached のインスタンスをモニターするために必要なツールについて説明すること、そして第 2 回の記事で memcached をGrails アプリケーションに統合するための下準備をすることです。
    2009/09/15  
 
Apache Mahout の紹介
データやユーザー入力から学習するインテリジェントなアプリケーションの開発は、これまでは巨額の研究予算のある学術界や企業でしか行われていませんでしたが、今や一般的になりつつあります。クラスタリングや協調フィルタリング、カテゴリー分けなど、機械学習の手法に対するニーズは今までにないほど高まっています。機械学習の用途には、大勢の人達の間での共通性の発見、あるいは大量の Web コンテンツの自動タグ付けなどがあります。Apache Mahout プロジェクトは、インテリジェントなアプリケーションの作成を容易に、そして迅速にすることを目標としています。この記事では Mahout プロジェクトの共同設立者である Grant Ingersoll が機械学習の基本的な概念を紹介し、Mahout を使って文書をクラスタリングする方法、レコメンデーションを行う方法、コンテンツを構成する方法を説明します。
    2009/09/08  
 
リアルタイム Java での開発: 第 2 回 サービス品質を改善する
Java アプリケーションのなかには、平均待ち時間や全体的なスループットなどのパフォーマンス上の目標を達成しながらも、十分なサービス品質を提供できないものがあります。アプリケーションがサービスに対するパフォーマンスの基準を満たせない原因は、Java 言語とランタイム・システムがアプリケーションで管理できない中断や割り込みを引き起こすことにある場合もあります。3 回連載の第 2 回目となるこの記事では、JVM において遅延と割り込みが発生する根本原因を明らかにした上で、これらの問題を緩和してアプリケーションがより安定したサービス品質を提供できるようにする手法を説明します。
    2009/09/08  
 
リアルタイム Java での開発: 第 1 回 リアルタイム Java ならではの独特な機能を探る
リアルタイム Java は、Java 言語でのプログラミングの容易さと、リアルタイム要件を満たさなければならないアプリケーションに必要なパフォーマンスとを組み合わせた、Java 言語の拡張機能一式です。これらの拡張機能は、従来の Java ランタイム環境には欠けていた、リアルタイム環境のための機能を提供します。3 回連載の第 1 回目となるこの記事では、これらの拡張機能をいくつか取り上げて説明し、さらに独自のアプリケーションに適用してリアルタイム・パフォーマンスを実現する方法を説明します。
    2009/09/01  
 
GWT の魅力: 第 1 回 Google Web Toolkit を利用して各地を訪ね回る
GWT (Google Web Toolkit) では、ブラウザーで動作するリッチ・クライアントのユーザー・インターフェースを Java 言語で実装することができます。この 2 回の連載記事では、David Geary が最新バージョンの GWT に関する情報を提供し、デスクトップのような Web アプリケーションを実装する方法を説明します。
    2009/09/01  
 
Google App Engine for Java: Google App Engine for Java: 第 3 回 永続化とリレーションシップ
エンタープライズ環境でスケーラブルなアプリケーションを実現するためには、データの永続化が不可欠です。Google App Engine for Java を紹介するこの連載の最終回では、Rick Hightower が、App Engine の現状の Java 永続化フレームワークが抱える問題について彼の見解を示します。そして、現行のプレビュー・リリースでは Java 永続化の機能が完成するには至っていない根本的な理由を説明するとともに、App Engine for Java アプリケーションでデータを永続化する方法を実際の例を用いて説明します。JDO API を使用して Contact オブジェクトを永続化したり、削除したり、あるいは Contact オブジェクトに対して更新を行ったり、クエリーを実行したりする方法を演習するには、第 2 回で作成した連絡先管理アプリケーションを実行していなければならないことに注意してください。
    2009/08/25  
 
実用的な Groovy: @Delegate アノテーション
この記事では、著者の Scott Davis が Groovy のメタプログラミングについての説明を続け、@Delegate アノテーションを詳細に掘り下げます。@Delegate アノテーションを使うと、データの型と振る舞い、そして静的型付けと動的型付けの違いがあいまいになります。
    2009/08/25  
 
JSF 2.0 の Ajax と GMaps4JSF
GMaps4JSF は Google マップと JSF (JavaServer Faces) を統合する JSF マッシュアップ・ライブラリーです。GMaps4JSF を利用すると、ストリート・ビューの複雑なパノラマやマップを数個の JSF タグで作成することができます。また、さまざまなコンポーネントを容易にマップに追加することができます。この記事では JSF 2.0 アプリケーションの中で GMaps4JSF を構成する方法を説明し、また JSF 2.0 の Ajax (Asynchronous JavaScript and XML) を簡単に紹介します。この記事を利用して、JSF 2.0 の Ajax と GMaps4JSF の両方を使用する簡単なマッシュアップ・アプリケーションの作成方法を学びましょう。
    2009/08/25  
 
Apache Lucene を使ったテキスト検索
充実した機能を備えたハイパフォーマンスのテキスト検索エンジン・ライブラリー、Apache Lucene について学びましょう。この記事では Lucene のアーキテクチャーとそのコアとなる API について解説し、Lucene を利用して、プラットフォームに依存しない全文検索、索引付け、結果の表示、そして検索機能の拡張を行う方法を説明します。
    2009/08/18  
 
Java 開発 2.0: Google App Engine よ、こんにちは
オープンソースのソリューションと、サービスとして提供されているインフラストラクチャーを利用する (借りる) ことによって、より優れたソフトウェアを迅速に、しかも低コストで実現できる方向へと Java 開発は変貌しつつあります。Andrew Glover は、Java 開発をこうした方向へと導くさまざまな力 (要素) をまとめて Java 開発 2.0 という造語で表し、この Java 開発 2.0 に関連するツールと技術を話題にした新しい連載を始めます。連載第 1 回目となるこの記事では、Java 開発 2.0 の到来を告げ、そのコンセプトを Google の App Engine for Java を利用して素早く実現する方法を説明します。
    2009/08/18  
 
Google App Engine for Java: 第 1 回 開発をスピードアップ!
Google App Engine が Python 使いのためだけのものだった頃を覚えていますか?当時は Java 開発者にとって不遇の時代でした。しかし 2009年4月になってついに、Google Inc. はそのクラウド・コンピューティング・プラットフォームを Java 開発者に開放しました。この 3 回の連載記事では、Java 技術に関する書籍の著者であり、Java 技術の指導者でもある Rick Hightower が、この信頼性に優れた堅牢かつ面白みのある Java ベースの開発プラットフォームを使い始めるお手伝いをします。今回の記事では、Google App Engine for Java が非常にスケーラブルなキラー・アプリケーションのデプロイメント・プラットフォームとなる理由を概説した後、Google Plugin for Eclipse を使って 2 つのサンプル・アプリケーションを作成します。1 つは GWT (Google Web Toolkit) ベースのアプリケーション、もう 1 つは Java Servlet API ベースのアプリケーションです。これらのサンプル・アプリケーションの作成手順をとおして、アプリケーションを一から構築するという点、そしてそのアプリケーションを最大 500万件のアクセスに対応できるように調整してデプロイするという点で、Google App Engine for Java がもたらす違いを学んでください (しかも、Google App Engine for Java は無料です)。
    2009/08/11  
 
Google App Engine for Java: 第 2 回 キラー・アプリケーションを構築する
Google App Engine for Java のようなクラウド・プラットフォームの本質は、プロ級の品質を備えたスケーラブルなキラー・アプリケーションを考え出し、構築し、デプロイできるところにあります。しかも、混乱に陥ることもなく、あまり費用をかけずに実現することができます。Google App Engine for Java を紹介するこの 3 回からなる連載の第 2 回では、第 1 回で取り上げた既製のサンプル・アプリケーションの枠を超え、App Engine for Java を使って単純な連絡先管理アプリケーションを作成し、デプロイするプロセスを手順に沿って説明します。
    2009/08/11  
 
トランザクション・ストラテジー: ハイパフォーマンス・トランザクション・ストラテジー
連載「トランザクション・ストラテジー」の最終回となるこの記事では、著者 Mark Richards がハイパフォーマンス・アプリケーションのためのトランザクション・ストラテジーを Java プラットフォームに実装する方法を説明します。このストラテジーによってアプリケーションは高速な処理を維持できると同時に、ある程度のデータの完全性と整合性をサポートすることができますが、これに伴うトレード・オフを認識しておく必要があります。
    2009/07/22  
 
Grails をマスターする: プラグインを理解する
連載「Grails をマスターする」の今回の記事では、Scott Davis が Grails プラグインの世界を紹介します。新しい機能をまるごとアプリケーションに追加するのは、これ以上なく簡単なことです。この記事ではプラグインのマジックの種を明かすとともに、実際にプラグインを使って、Blogito アプリケーションに強力な検索機能を実装してみます。
    2009/07/21  
 
JSF 2 の魅力: 第 3 回 イベント処理、JavaScript、そして Ajax
JSF (JavaServer Faces) 2 Expert Group のメンバー、David Geary が JSF 2 の新機能を紹介する 3 回の連載は、今回が最終回です。この連載の締めくくりとして、このフレームワークの新しいイベント・モデルと Ajax の組み込みサポートによって、再利用可能なコンポーネントをなお一層のこと強力にする方法を説明します。
    2009/07/14  
 
Java Web サービス: (WS-)Security に伴う高コスト
Web サービス・アプリケーションをセキュアにするためにWS-Security が提供する強力な機能は、多くのアプリケーションにとって不可欠なものです。しかしこれらの機能には、パフォーマンスとメッセージのーバーヘッドという点で、かなりの犠牲が伴います。Dennis Sosnoski による連載「Java Web サービス」では、今回、WS-Security または WS-SecureConversation を使用することが Axis2 のパフォーマンスに与える影響に着目し、HTTPS によるセキュア接続という単純な (そしてパフォーマンスに優れた) 方法を選ぶほうがふさわしい場合について説明します。
    2009/07/07  
 
Java Native Interface を使用する上でのベスト・プラクティス
JNI (Java Native Interface) は、Java コードと他のプログラミング言語で作成されたコードとの統合を可能にする標準 Java API です。例えば、これまでに蓄積した既存のコード資産をサービス指向アーキテクチャー (SOA) やクラウド・ベースのシステムで使用したいと思ったら、JNI はツールキットになくてはならない存在です。その一方、然るべき注意を払って JNI を使用しなければ、瞬く間にパフォーマンスに劣る、安定性のないアプリケーションという結果になってしまいます。そこで、この記事では代表的な 10 の JNI プログラミングの落とし穴を明らかにして、それぞれの落とし穴に陥らないようにするためのベスト・プラクティスを説明するとともに、これらのプラクティスを実践する上で利用できるツールを紹介します。
    2009/07/07  
 
Eclipse RCP アプリケーションを国際化する
Eclipse の RCP (Rich Client Platform) はソフトウェア開発で広く受け入れられつつあります。多国籍企業では、世界中の顧客のために複数言語をサポートするソフトウェアを提供することがますます重要になってきています。この記事では RCP アプリケーションの UI 要素を国際化する方法を学びます。UI 要素の例として、ウィンドウ、メニュー、ツールバー、ダイアログ、ウェルカム・ページ、スプラッシュ・スクリーン、そして Eclipse の標準的な UI 要素を取り上げます。またサンプルの Hello World アプリケーションをとおして、国際化のためのプロセスを学びます。
    2009/07/07  
 
実用的な Groovy: クロージャー、ExpandoMetaClass、そしてカテゴリーによるメタプログラミング
Groovy スタイルのメタプログラミングの世界に入りましょう。クラスに対して (しかも Java クラスや、さらには final が指定されている Java クラスにさえ)、実行時に動的に新しいメソッドを追加できる機能は、信じられないほど強力です。本番コードの作成に使われる場合であれ、ユニット・テストの作成に使われる場合であれ、あるいはその他の目的で使われる場合であれ、Groovy のメタプログラミング機能は、経験が豊富すぎて新しいものに関心がない Java 開発者にとっても興味深いはずです。
    2009/06/23  
 
コードレビューの道具、使っていますか?
コードレビューをはじめとしたソフトウェアレビュー/ソフトウェアインスペクションをスムーズに実施できる道具(技法、仕組み、ツール)を紹介します。レビュー/インスペクションは人手によるところが大きく自由度の高い活動ですが、技法、仕組み、ツールの利用によって半自動化、定型化、効率化できる部分が多くあります。本記事では、それらの道具をレビュー/インスペクションのフェーズ毎に紹介します。また、その一端を他のレビュー/インスペクション技術者とともに実感できるイベント「ソフトウェアインスペクションワークショップ2009」(7月2日開催)の紹介もします。
    2009/06/19  
 
トランザクション・ストラテジー: 高並行性トランザクション・ストラテジー
連載「トランザクション・ストラテジー」では今回、スループットが高く、ユーザーの観点で並行性が高いという 2 つの要件を持つアプリケーションに、Java プラットフォームにおけるトランザクション・ストラテジーを実装する方法を、著者の Mark Richards が説明します。トランザクション・ストラテジーを実装するのに伴う長所と短所を理解することによって、データの完全性と整合性を高めることができ、また開発プロセスの後の方でリファクタリングの作業に苦労する必要がなくなります。
    2009/06/16  
 
Java Web サービス: Axis2 WS-Security による署名および暗号化
この記事では、まず公開鍵暗号方式の原理を紹介します。その後、WS-Security がこれらの原理を適用して、公開鍵と秘密鍵のペアに共通鍵を組み合わせて SOAP メッセージに署名を付け、暗号化する方法を説明します。Dennis Sosnoski の連載「Java Web サービス」では今回、WS-Security と WS-SecurityPolicy の署名機能と暗号化機能について、Axis2 と Rampart を用いたサンプル・コードと併せて解説します。
    2009/06/16  
 
Grails をマスターする: ファイルのアップロードと Atom の配信
連載「Grails をマスターする」では今回、Scott Davis が Grails アプリケーションにファイルをアップロードする方法、そして Atom 配信フィードをセットアップする方法を紹介します。ファイルをアップロードする機能と Atom の配信機能が揃えば、Blogito は本格的なブログ・サーバーに仕上がります。
    2009/06/09  
 
JavaScript EE: 第 3 回 JSP で Java Scripting API を使用する
この連載の前の 2 回の記事では、JavaScript ファイルをサーバー上で実行し、Ajax でリモート JavaScript 関数を呼び出す方法を説明しました。今回の記事では、サーバー・サイドの JavaScript コードを JSP (JavaServer Pages) 技術で使用する方法、JavaScript が無効にされた Web ブラウザーでも機能する Ajax (Asynchronous JavaScript and XML) ユーザー・インターフェースを作成する方法を紹介します。紹介するサンプル・コードは、皆さん独自のアプリケーションで再利用できる小さな JSP タグ・ライブラリーや、(Web サーバー上または Web ブラウザーで実行可能な) JavaScript コードによって生成される動的 Web フォームで構成されています。
    2009/06/02  
 
多忙な Java 開発者のための Scala ガイド: Scitter ライブラリーを機能強化する
Scala の概要について説明することは楽しいのですが、Scala を実用的な方法で使ってみないと、Scala を開発者の「おもちゃ」として捉える場合と、仕事で使う場合の違いはわからないかもしれません。今回は、Twitter にアクセスするための Scala によるクライアント・ライブラリー Scitter を紹介した前回の記事の続きとして、Scala を熱烈に支持する著者の Ted Neward が、前回にも増して便利で興味深い一連の機能を、このクライアント・ライブラリーに追加します。
    2009/06/02  
 
JSF 2 の魅力: 第 2 回 テンプレート機能と複合コンポーネント
JSF (JavaServer Faces) 2 では、2 つの強力な機能によって簡単に変更および拡張ができるユーザー・インターフェースを実装することができます。その 2 つの機能とは、テンプレート機能と複合コンポーネントです。JSF 2 の新機能を紹介する 3 回連載の第 2 回目となる今回の記事では、JSF 2.0 Expert Group のメンバー、David Geary が Web アプリケーションでテンプレート機能と複合コンポーネントを最大限に活用する方法を紹介します。
    2009/06/02  
 
進化するアーキテクチャーと新方式の設計: 設計のためのリファクタリング
このシリーズの前回までの記事では、ユニット・テストを行うことでより適切な設計を行えることを説明しました。しかし既に大量のコードがある場合には、その中に隠れている設計要素をどのようにして見つければよいのでしょう。前回の記事では、どのような構造のコードの作成を目指せばよいかを説明しました。今回の記事では、このシリーズの著者である Neal Ford がそうした概念を拡張し、リファクタリングを利用することで新方式の設計を行う手法について説明します。
    2009/05/26  
 
Java Web サービス: Axis2 WS-Security の基本
Rampart セキュリティー・モジュールを Apache Axis2 にインストールして、Web サービスで WS-Security の機能を使用できるようにする方法を学んでください。今回、Axis2 での WS-Security および WS-SecurityPolicy の使用を焦点に再開した Dennis Sosnoski の連載「Java Web サービス」では、単純な最初のステップとして UsernameToken を取り上げます。連載の以降の記事では、Axis2 と Rampart によって実装する WS-Security、WS-SecurityPolicy について深く掘り下げていきます。
    2009/05/26  
 
実用的な Groovy: XML を作成し、構文解析し、容易に扱う
Groovy を使うと XML をどれほど容易に扱えるようになるかを学びましょう。今回の「実用的な Groovy」では、MarkupBuilder や StreamingMarkupBuilder を使って XML を作成する場合であれ、あるいは XmlParser や XmlSlurper を使って XML を構文解析する場合であれ、Groovy がこの XML という汎用データ・フォーマットを処理するための強力なツール・セットになることを、著者の Scott Davis が説明します。
    2009/05/19  
 
JSF 2 の魅力: 第 1 回 Web アプリケーション開発を効率化する
JSF (Java Server Faces) のバージョン 2.0 は、Ajax 化した堅牢な Web アプリケーションを容易に実装できるようにします。この記事は、JSF 2.0 Expert Group のメンバー、David Geary が JSF 2 の新機能を利用する方法を紹介する 3 回連載の第 1 回目です。今回の記事では、XML 構成をアノテーションおよび規約に置き換え、ナビゲーションを簡易化し、そしてリソースに簡単にアクセスできるようにすることによって、JSF 2 で開発を効率化する方法を学んでください。また、JSF アプリケーションで Groovy を使用する方法についても説明します。
    2009/05/12  
 
多忙な Java 開発者のための Scala ガイド: Scala + Twitter = Scitter
Scala の概要について説明することは楽しいのですが、このシリーズの読者の大部分にとっては Scala を実用的な方法で使ってみないと、Scala を開発者の「おもちゃ」として捉える場合と、仕事で使う場合の違いはわからないかもしれません。今回の記事では Ted Neward が Scala を使って、人気のマイクロブロギング・システムである Twitter にアクセスするためのクライアント・ライブラリーの基本フレームワークを作成します。
    2009/05/05  
 
EasyMock を使用してテストを容易にする
この記事では著者の Elliotte Rusty Harold が、モック・オブジェクト、具体的には EasyMock フレームワークを使って、いくつかの困難なユニット・テストを容易に行う方法を説明します。このオープンソース・ライブラリーを利用すると時間を節約することができ、またモック・オブジェクトのコードが簡潔で読みやすいものになります。
    2009/04/28  
 
Grails をマスターする: 認証と許可
Grails は、単純なログイン・インフラストラクチャーからロール・ベースの許可に至るまで、セキュアな Web アプリケーションを構築するために必要なあらゆる基本ビルディング・ブロックを提供します。連載「Grails をマスターする」では今回、Scott Davis が Grails アプリケーションをセキュアにするための実践的な方法を説明します。また、アプリケーションのセキュリティー機能を新たな方向へと展開させる上で役に立つプラグインについても学んでください。
    2009/04/28  
 
Dojo 1.x を使ってウィジェットを開発する
Dojo JavaScript ツールキットを使用して HTML ウィジェットを開発する上での基本を学んでください。この記事では Dojo ツールキットについて紹介し、開発プロセスに役立ついくつかの例を記載します。単純なウィジェットから次第に複雑なウィジェットの例へと進むなかで、開発段階で発生する可能性のある共通の問題を明らかにし、解決します。
    2009/04/28  
 
Web 2.0時代のWebアプリケーションセキュリティー
Ajax(Asynchronous JavaScript + XML)やマッシュアップ(Mashup)に代表されるWeb 2.0技術は、そのリッチで使いやすいユーザーインターフェイスや高速なレスポンス性から、現在のWebアプリケーション開発のトレンドの一つとなっています。
    2009/04/24  
 
進化するアーキテクチャーと新方式の設計: Composed Method と SLAP
古くなったコード・ベースの中に隠された設計をどのように見つければよいのでしょう。この記事ではコードの構造に関する 2 つの重要なパターンである、Composed Method と SLAP (Single Level of Abstraction Principle) について説明します。これらの原則を既存のコードに適用することによって、それまで隠れたままであった再利用可能な資産を見つけることができ、さらに、それらを抽象化して集めることで、フレームワークにすることができるという利点もあります。
    2009/04/21  
 
メモリーよ、ありがとう
Java ヒープの不足だけが、java.lang.OutOfMemoryError の原因ではありません。ネイティブ・メモリーが不足すると、通常のデバッグ手法では解決できない OutOfMemoryError が発生します。この記事では、ネイティブ・メモリーとは何か、Java ランタイムはネイティブ・メモリーをどのように使用するか、ネイティブ・メモリーが不足するとどのような現象になるのか、そして AIX ではネイティブ・メモリーの OutOfMemoryError をどのようにデバッグすればよいのかを説明します。Linux システムと Windows システムの場合についての同じトピックは、関連記事で説明しています。
    2009/04/21  
 
実用的な Groovy: each を活用する
今回の「実用的な Groovy」では、Scott Davis が、繰り返し処理の方法を次から次へと目まぐるしく紹介します。配列に対する繰り返しの処理はもちろん、リスト、ファイル、URL、等々に対しても繰り返しの処理を行います。最も目を引く点は、こうしたさまざまな集合をウォークスルーするために、Groovy には一貫したメカニズムが用意されているということです。
    2009/04/14  
 
多忙な Java 開発者のための Scala ガイド: Scala の並行性を掘り下げる
主要なチップ・メーカーが、必ずしも高速ではないものの 2 つ以上のコアを並列に実行させるチップをリリースし始めて以来、すべてのソフトウェア開発者の頭の中にあるホットな話題として並行性が急速に登場してきました。この記事は Ted Neward が前回の「Scala での並行性を探る」のフォローアップとして、この並行性の問題を、アクターについて検証しながら深く掘り下げます。アクターとは、お互いの間でメッセージを交換し合うことで作業の調整を行う実行エンティティーです。
    2009/04/10  
 
XML: GWT と PHP とのブリッジ
GWT (Google Web Toolkit) アプリケーションでは、昔ながらの Java の流儀でサーブレットに接続することもできますが、PHP による Web サービスを使って XML でデータを送受信することもできます。この記事では XML 文書の生成方法と処理方法を Java 言語の場合と PHP の場合の両方について説明します。
    2009/04/07  
 
S3 を利用して保管を容易にする
Amazon の S3 (Simple Storage Service) は誰もが利用できるサービスであり、Web アプリケーション用のデジタル資産 (画像、動画、音楽、文書など) の保管に利用することができます。S3 には RESTful な API が用意されており、プログラムで S3 サービスとやり取りすることができます。オープンソースの JetS3t ライブラリーの使い方を学び、データの保管と取得に Amazon の S3 クラウド・サービスを活用しましょう。
    2009/04/07  
 
JavaScript EE: 第 2 回 Ajax でリモート JavaScript 関数を呼び出す
この連載の第 1 回では、javax.script API を Ajax (Asynchronous JavaScript and XML) アプリケーションと Java EE (Java Platform, Enterprise Edition) アプリケーションで使用する方法、そしてサーバー・サイドの JavaScript ファイルを実行できる Java サーブレットを作成する方法を学びました。今回の記事では、サーバーとクライアントの両方で JavaScript を使用する Web アプリケーションのために、RPC (Remote Procedure Call) メカニズムを実装する方法を説明します。さらにいくつかの興味深い方法として、Java インターフェースを JavaScript で実装する方法、XMLHttpRequest ラッパーを作成する方法、Ajax のデバッグを容易にする方法、そして JSP タグ・ファイルを使用して JavaScript コードを生成する方法も学びます。
    2009/03/31  
 
カスタムの Ant タスクをなぜ、どのように作成するか
この記事では、Eclipse プラットフォーム上に構築されている IBM Rational Application Developer の中でカスタムの Ant タスクを作成する方法を説明します。また、なぜその必要があるかについても説明します。この記事で紹介する例では、現在 IDE (Integrated Development Environment: 統合開発環境) では提供されていない便利な機能として、カスタムの Ant タスクを作成する機能を提供します。この Ant タスクを使うと、派生ファイルに分類されるすべての生成ファイルを削除することができます。
    2009/03/24  
 
コラボレーションによるデバッグ: 第2回 RTCサンプルを使用したデバッグ例の紹介
IBM Rational Application Developer for WebSphere Software V7.5では、初のJazzベースの製品であるIBM Rational Team Concert Clientが統合され、コラボレーションによるソフトウェア開発環境を提供しています。この記事では、その一例としてコラボレーションによる、Javaプログラムのデバック機能を容易に体験できるように一台のPCへのインストールと設定方法を交えてご紹介します。セッション・デバッグにより、リモート環境にあるデベロッパー間でデバッグを行う場合やチーム内の他のユーザーにデバッグを依頼する場合などに活用でき、チーム開発における生産性をあげることが可能になります。
    2009/03/13  
 
Grails をマスターする: カスタム URI とコーデックで Grails を作り直す
連載「Grails をマスターする」の今回の記事では、Grails が Web ページに対して生成する標準の URI (Uniform Resource Identifier) をカスタマイズする方法を Scott Davis が紹介します。URI の主キーを記述的なタイトルに変更することによって、ユーザーが探しているリソースへのパスを、もっと覚えやすく意味のあるパスにすることができます。
    2009/03/10  
 
XQuery をプレゼンテーション層に使用する
多くの Web アプリケーションでは、モデル・ビュー・コントローラー (MVC) パターンを用いて 3 つの関心事を切り分けます。プレゼンテーションに XQuery を使用することで、ビューを担当する開発者は、このアプリケーションで使用しているアプリケーション・サーバーやプログラミング言語がどんなものであってもそれに縛られることなく、強力なプレゼンテーション・エフェクトを作成することができます。この記事では、他のビュー技術に勝る XQuery を使用するメリットと、XQuery をプレゼンテーション層に実装する方法を詳しく説明し、現実に即した実装例を紹介します。
    2009/03/10  
 
コラボレーションによるデバッグ: 第1回 インストール
IBM Rational Application Developer for WebSphere Software V7.5では、初のJazzベースの製品であるIBM Rational Team Concert Clientが統合され、コラボレーションによるソフトウェア開発環境を提供しています。この記事では、その統合の成果であるコラボレーションによるJavaプログラムのデバックについて、一台のPCでも容易に体験できるようなインストールと設定方法を交えてご紹介します。セッション・デバッグにより、リモート環境にあるデベロッパー間でデバッグを行う場合やチーム内の他のユーザーにデバッグを依頼する場合などに活用でき、チーム開発における生産性をあげることが可能になります。
    2009/03/06  
 
トランザクション・ストラテジー: モデルとストラテジーの概要
トランザクション・モデルをトランザクション・ストラテジーと混同するのは、よくある過ちです。連載「トランザクション・ストラテジー」の第 2 回目では、Java プラットフォームがサポートする 3 つのトランザクション・モデルの概要を説明し、これらのモデルを使用する 4 つの主要なトランザクション・ストラテジーを紹介します。今回、Mark Richards が Spring Framework と EJB (Enterprise JavaBeans) 3.0 仕様の例を引用しながら、それぞれのトランザクション・モデルがどのように機能するのか、そして基本的なトランザクション処理から高速トランザクション処理システムに至るまでのトランザクション・ストラテジーを作成する土台として、これらのモデルがどのような役目を果たすのかを説明します。
    2009/03/03  
 
AIM 対応のアプリケーションを Eclipse で作成する
今日のアプリケーションは、多くの人が既に使用しているインターフェースである IM (Instant Messaging: インスタント・メッセージ) を利用しています。アプリケーションに IM を統合している理由は、IM によるインターフェースが使いやすく、多くの人がそのインターフェースに慣れていて、しかも既に利用しているからです。IM アプリケーションは多くのモバイル・プラットフォームでも利用可能であり、ユーザーは IM を利用することでモバイル機器からアプリケーションとインターフェースを取れるようになります。
    2009/02/24  
 
Groovy によるソーシャル・マッシュアップ
Twitter4J、Google マップ、そしてほんの少しの Ajax を組み合わせて Twitter 友達のマップを表示できる Groovy によるマッシュアップを作成しましょう。
    2009/02/24  
 
IBM OmniFind Enterprise Editionによる検索システムの統合: 第2回 セキュア検索のためのカスタマイズ
IBM OmniFind Enterprise Edition(以下OmniFind)は、製品として1ノード、2ノード、4ノード構成をサポートしており、検索システムの規模に応じて最適なノード構成を選択することが可能です。第1回目では、複数のOmniFindシステムに対して検索を行う、LocalFederatorを利用した検索アプリケーションのカスタマイズ手法を説明しました。しかし、LocalFederatorは検索結果の統合は行いますが、ユーザー情報の制御やグループ情報の取得など、セキュア検索に必要な処理は一切行いません。このような処理は、LocalFederatorで検索を行う前に、アプリケーション側で行う必要があります。第2回目の今回は、複数のOmniFindシステムを統合した際にもセキュア検索を可能とするために、前回のESSearchApplicationをさらにカスタマイズする方法を説明します。
    2009/02/20  
 
基本ステップ: IBM Lotus Notes アプリケーションを変換し、Lotus Notes 8 の Java コンポーネントを使う
IBM Lotus Notes のクライアントでは、リリース 8.0 で Java ビューが導入されたのに伴い、多くの新機能が Java ビューを使って実装され、Lotus Notes のインターフェースが最先端のものになっています。この記事では、開発者が独自に作成した (単純な) Lotus Domino® アプリケーションを Java ビューに変換する概略手順を説明します。前提としては、Lotus Notes 8.5、IBM Lotus Domino Designer 8.5、Lotus Notes の CAE (Composite Application Editor) 8.5 をインストールしてあるものとし、また Lotus Domino Designer での作業に慣れているものとします。
    2009/02/19  
 
IBM Lotus Notes 8.5 での高度な Java ビュー機能
IBM Lotus Notes のクライアントでは、リリース 8.0 で Java ビューが導入されたのに伴い、多くの新機能が Java ビューを使って実装され、Lotus Notes のインターフェースが最先端のものになっています。Java ビューを使うようにアプリケーションを変換したら、この記事で説明する概略手順に従って、この新しいビューによって提供される機能 (スレッド、狭いビュー用のモード、名刺形式、分割ボタン、カスタムコンテキストメニューなど) を使用することができます。この記事を読み進める前提としては、Lotus Notes 8.5、IBM Lotus Domino Designer 8.5、Lotus Notes の CAE (Composite Application Editor) 8.5 をインストールしてあるものとし、また Lotus Domino Designer での作業に慣れているものとします。
    2009/02/17  
 
実用的な Groovy: Java プログラマーのための DSL としての Groovy
Groovy のエキスパートである Scott Davis が、2006年以来休止していた「実用的な Groovy」シリーズを再開します。再開第 1 回目の今回は、最初にここ数年の Groovy に関する出来事を振り返り、Groovy とそれを取り巻く環境についての現状を紹介します。そして、2009年の現在、Groovy の学習を始めることがいかに容易であるかを実感してもらいます。
    2009/02/17  
 
IBM OmniFind Enterprise Editionによる検索システムの統合: 第1回 LocalFederatorによる複数システムの統合
IBM OmniFind Enterprise Edition(以下OmniFind)は、製品として1ノード、2ノード、4ノード構成をサポートしています。検索システムの規模に応じて最適なノード構成を選択することが可能であり、様々な要件に柔軟に対応することができます。しかし、場合によっては、5ノード以上の構成にしたいことや、ノードの役割を柔軟に設定したいこともありえます。本連載では、OmniFindに付属のESSearchApplicationをカスタマイズすることによって、複数のOmniFindシステムを統合し、柔軟なノード構成に対応する方法を説明します。
    2009/02/13  
 
Lotus NotesアプリケーションのLotus Notes 8のJavaコンポーネントへの変換
Lotus® Notes® client in release 8.0ではJava™ビューが新たに取り入れられました。このJavaビューを使った新機能が、8では多く追加されており、Lotus Notesのユーザー・インターフェースが「今風」になっています。この記事では開発者を対象に、既存のLotus DominoのシンプルなアプリケーションをJavaビューに変換する方法を、ステップバイステップで解説します。前提として、Lotus Notes 8.5、Lotus Domino 8.5、Lotus Notes Composite Application Editor 8.5 (Lotus Notes 8.5のインストールオプション)がインストールされていること、また、Lotus Domino Designerに慣れている必要があります。
    2009/02/10  
 
多忙な Java 開発者のための Scala ガイド: Scala での並行性を探る
Java プログラマーの多く (大部分とは言えないまでも) にとって、初めて Scala に注意を向けることになる理由は、並行性を扱う場合やスレッド・セーフなコードを作成する場合に、Scala を使うことでコーディングが容易になることが約束されているからです。「多忙な Java 開発者のための Scala ガイド」の今回は、Ted Neward が、Scala 言語と Scala 環境に用意されている並行性のためのさまざまな機能やライブラリーを深く掘り下げます。
    2009/02/04  
 
トランザクション・ストラテジー: トランザクションの落とし穴を理解する
トランザクション処理では、データの完全性と整合性が高いレベルで実現されなければなりません。この記事では、Java プラットフォームでの効果的なトランザクション・ストラテジーの開発に関する連載の第 1 回目として、データの完全性と整合性を高いレベルで実現することの妨げとなる、よくありがちなトランザクションの落とし穴を紹介します。連載の著者、Mark Richards が、Spring Framework および EJB (Enterprise JavaBeans) 3.0 仕様のサンプル・コードを使用して、よくありがちな過ちについて説明します。
    2009/02/03  
 
DITADoclet と DITA API 特殊化を利用して DITA Java API リファレンス・マニュアルを生成する
DITADoclet と DITA API 特殊化を組み合わせることで、時間を節約しながらも、品質の高い API ドキュメントを Java ソース・コードから直接作成します。
    2009/02/03  
 
Java に不可欠なリソース
Java プラットフォームはまもなく 14 回目の誕生日を迎えます。成功して普遍的に使われるようになった言語の場合、このような節目を迎えるとなると、その副次作用としてライブリーやツール、そしてさまざまな概念が氾濫してくるものです。この思いがけない副次作用によって、Java 言語の多くの新参者たちは行き先もわからずにリソースの海に置き去りにされ兼ねません。そこで、この記事では著者 (その膨大なリソースの海に確実に貢献した一人) がこの大きな潮の流れをかき分けて、新進気鋭の Java 開発者であれば誰もが持っているべき重要なリソースを選び抜いて紹介します。
    2009/01/23  
 
Grails をマスターする: Grails アプリケーションの見栄えを良くする
連載「Grails をマスターする」の今回の記事では、Scott Davis が CSS (Cascading Style Sheets)、テンプレート、タグ・ライブラリー (TagLib) などを駆使して Grails アプリケーションのルック・アンド・フィールを一新させる方法を実演します。
    2009/01/20  
 
JDBC を使用して DB2 9.5 の GPX XML を操作する
IBM DB2 9 および 9.5 には pureXML フィーチャーを生かした多数の XML 機能が導入されています。この記事を読んで、XML メタデータを管理するなどの管理機能、そして XML を操作および保管するなどのアプリケーション開発機能を、JDBC を使用して実行する方法を学んでください。
    2009/01/15  
 
Java の新しい Math クラス: 第 2 回 浮動小数点数
この 2 回シリーズの記事では、Elliotte Rusty Harold が昔ながらの java.lang.Math クラスの「新しい」機能について調べます。第 1 回では純粋に数学的な関数に焦点を当て、第 2 回では浮動小数点数の演算用に設計された関数について調べます。
    2009/01/13  
 
万人のためのオートメーション: デプロイメントの自動化パターン、第 1 回
Java デプロイメントは大抵の場合、面倒でエラーを起こしやすい手作業です。そして、それが原因でユーザーにソフトウェアを利用可能にするまでの時間に遅れが生じることは珍しくありません。連載「万人のためのオートメーション」の今回は、2 部構成の記事の第 1 回目として、オートメーションのエキスパート Paul Duvall が、信頼性が高く、一貫性のある繰り返し可能なデプロイメント・プロセスを作成するための重要なパターンをまとめて紹介します。このデプロイメント・プロセスは、ワン・クリックで Java アプリケーションをデプロイすることができます。
    2009/01/13  
 
pureQuery を使用した Java アプリケーションで pureXML データを操作する
pureQuery と IBM DB2 pureXML はどちらも、それぞれの分野で革新的なデータベース技術となっています。pureQuery はハイパフォーマンスの Java データ・アクセス・プラットフォームであり、重点が置かれているのは、データベースのデータを使用するアプリケーションの開発および管理タスクを単純化することです。一方の pureXML は DB2 9 で導入されたネイティブ XML データ管理技術で、階層ストレージ技術、XML 照会言語 (XQuery および SQL/XML)、XML 索引付け技術、その他の XML 関連機能で構成されています。この記事では DB2 アプリケーションのパフォーマンスと管理しやすさを最大限に引き出すために、この 2 つの技術を組み合わせ、pureXML データを操作する pureQuery アプリケーションを開発する方法を説明します。
    2009/01/08  
 
Groovy 流の Spring: 第 2 回 アプリケーションの振る舞いを実行時に変更する
Spring Framework は、Web アプリケーションやエンタープライズ・アプリケーションを作成する際の堅固な基盤となります。この Spring がサポートする Groovy などの動的言語を利用すれば、アプリケーション・アーキテクチャーを一層柔軟かつ動的にすることができます。連載「Groovy を活用した Spring」を締めくくる第 2 回の記事では、動的に更新可能な Bean を利用して、実行時に Spring アプリケーションの振る舞いを変更する方法を学んでください。
    2009/01/06  
 
Groovy 流の Spring: 第 1 回 統合の基本
Spring Framework は、Web アプリケーションやエンタープライズ・アプリケーションを作成する際の堅固な基盤となります。この Spring がサポートする Groovy などの動的言語を利用すれば、アプリケーション・アーキテクチャーを一層柔軟かつ動的にすることができます。この 2 回連載の記事の第 1 回では、Spring アプリケーションへの Groovy 統合についての基本を学んでください。
    2009/01/06  
 
多忙な Java 開発者のための Scala ガイド: Scala とサーブレット
Scala が完全に JVM 準拠の言語であれば、サーブレットやその他の Web アプリケーションを構築するといった、さまざまな「実際の」環境で Scala を使用することができるはずです。この記事では、サーブレット環境で Scala を使用する方法について詳しく見ていきます。
    2008/12/22  
 
Grails をマスターする: エンタープライズでの Grails
連載「Grails をマスターする」の今回の記事では、著者 Scott Davis が、Grails は果たしてエンタープライズに対応する準備ができているかどうかという不安を解消します。JMX (Java Management Extensions)、Spring、log4j をはじめとするエンタープライズ・レベルのライブラリーで Grails を使う方法を学んでください。
    2008/12/16  
 
JavaScript EE: 第 1 回 サーバー・サイドで JavaScript ファイルを実行する
JavaScript をサーバーの Java コードと組み合わせて、サーバーとクライアントの両方で同じ JavaScript ルーチンを自由自在に使えるようにしてください。それに加え、この連載で紹介する手法を使えば、Ajax クライアントと Ajax 以外のクライアント両方に共通するコード・ベースを利用することができます。サーバー・サイドのコードの大部分は今でも Java 言語で作成されているため、結局は Java EE (Java Platform, Enterprise Edition) の機能を JavaScript に公開しなければならなくなります。そこで、この連載を通して、サーバー・サイドで JavaScript ファイルを実行してリモート JavaScript 関数を Ajax で呼び出し、Java Scripting API を JSP (JavaServer Pages) 技術で使用する方法を学んでください。
    2008/12/16  
 
Eclipse を使ってリモートで Java アプリケーションをデバッグする
Java アプリケーションのデバッグを必ずしもローカルのデスクトップ上で行う必要はありません。リモート・デバッグを構成するさまざまな接続タイプを使用して、デバッグ作業を分散させる方法を学びましょう。この記事では、リモートでのアプリケーションのデバッグをセットアップするための機能と例について説明し、そのデバッグ方法を示します。
    2008/12/09  
 
Guice による依存性注入
Guice は Google によるオープンソースの Java 開発用依存性注入フレームワークです。Guice を利用すると独自のファクトリーを作成する苦労をしなくてすむため、テストが容易になり、またプログラムのモジュール性を高めることができます。この記事では Nicholas Lesiecki が、皆さんがアプリケーションを作成する中で Guice を使いこなせるように、Guice の最も重要な概念について説明します。
    2008/12/09  
 
Web 系開発のトレンドを牽引する: IBM ソフトウェア・テクノロジー情報(後編)
IBMのエバンジェリストや研究者達が運営するWiki「IBM ソフトウェア・テクノロジー情報」。CodeZineでは、このサイトのオーナーであるIBMソフトウェア・エバンジェリスト米持幸寿氏と、Jazz、 Web2.0セキュリティ、Dojoツールキット、 Groovyといった4種の技術のキーマンたちを取材した。この模様を前編・中編・後編の3回に分けてレポートする。
    2008/12/05  
 
キャッシングを使って高速な Web アプリケーションを作成する
キャッシュ・ユーティリティーを使用すると、Java 技術を使用する Web アプリケーションのパフォーマンスを即座に改善することができます。Java アプリケーションのための強力な分散型キャッシング・システムである JCS (Java Caching System) は、単純な API を持ち、非常に柔軟な構成が可能なツールです。この記事では、JCS の概要と、JCS を使って Web アプリケーションを高速化する方法について説明します。
    2008/12/02  
 
Web 系開発のトレンドを牽引する: IBM ソフトウェア・テクノロジー情報(中編)
IBMのエバンジェリストや研究者達が運営するWiki「IBM ソフトウェア・テクノロジー情報」。CodeZineでは、このサイトのオーナーであるIBMソフトウェア・エバンジェリスト米持幸寿氏と、Jazz、 Web2.0セキュリティ、Dojoツールキット、 Groovyといった4種の技術のキーマンたちを取材した。この模様を前編・中編・後編の3回に分けてレポートする。
    2008/11/28  
 
Ajax 対応の JSP TagLib コントロールを作成する: 第 2 回 自動入力コントロールとフィールド・バリデーター・コントロール
ビジネス分野のアプリケーションで使用できる Ajax (Asynchronous JavaScript + XML) コントロールを作成しましょう。この記事で作成する構成可能な JSP (JavaServer Pages) TagLib ベースのコントロールは、JSON (JavaScript Serialized Object Notation)、JavaScript スクリプト言語、そして CSS (Cascading Style Sheets) を利用して作成します。このような標準的な JSP TagLib コントロールを簡単にアプリケーションに組み込んで、より直観的で応答性に優れたインターフェースを提供する方法を学んでください。
    2008/11/25  
 
多忙な Java 開発者のための Scala ガイド: 電卓を作る、第 3 回
DSL (Domain-specific language: ドメイン特化言語) がホットな話題となっています。関数型言語が大いにもてはやされる理由は、関数型言語を応用することで DSL のような言語を作成できる点にあります。前回までの記事で、テキストを取得して解釈に適したオブジェクト・グラフを生成できるように、AST (Abstract Syntax Tree: 抽象構文木) の基本図式と基本的なフロントエンド・パーサーを作成しました。そこで今回の記事では、そろそろすべてをシームレスなひとつのものにまとめようと筆者は考えています (そうは言っても現時点では取るに足らない程度のものですが)。そして、これまでの作業を振り返り、言語とインタープリターに対して行える拡張に関して提案を行います。
    2008/11/25  
 
点描画とピクセル化との出会い
この記事では Paul Reiners が、Java 2D API とセル・オートマトンを使って、画像を思いもかけぬ芸術的なアニメーションにする方法を説明します。その説明のなかでは、Java コードによる画像処理プログラムの実装と、2 次元セル・オートマトンの一種である巡回空間 (cyclic space) について説明します。この記事で説明する概念を応用すると、独自の画像処理によって芸術的な結果を生成するプログラムを Java 技術を使って作成することができます。
    2008/11/18  
 
Grails をマスターする: JSON と Ajax による非同期 Grails
Web 2.0 開発には、JSON (JavaScript Object Notation) と Ajax (Asynchronous JavaScript + XML) が不可欠です。連載「Grails をマスターする」では今回、Scott Davis がこの Web フレームワークに JSON と Ajax ならではの機能を組み込む方法を紹介します。
    2008/11/18  
 
Web系開発のトレンドを牽引する: IBM ソフトウェア・テクノロジー情報(前編)
IBMのエバンジェリストや研究者達が運営するWiki「IBM ソフトウェア・テクノロジー情報」。CodeZineでは、このサイトのオーナーであるIBMソフトウェア・エバンジェリスト米持幸寿氏と、Jazz、 Web2.0セキュリティ、Dojoツールキット、 Groovyといった4種の技術のキーマンたちを取材した。この模様を前編・中編・後編の3回に分けてレポートする。
    2008/11/14  
 
Apache Solr の新しい内容
Apache Solr で新たに強化された多くの機能を活用して選り抜きの機能をアプリケーションに追加してください。
    2008/11/04  
 
Java の新しい Math クラス: 第 1 回 実数
この 2 回シリーズの記事では、Elliotte Rusty Harold が昔ながらの java.lang.Math クラスの「新しい」機能について調べます。第 1 回では純粋に数学的な関数に焦点を当て、第 2 回では浮動小数点数の演算用に設計された関数について調べます。
    2008/10/28  
 
多忙な Java 開発者のための Scala ガイド: 電卓を作る、第 2 回
DSL (Domain-specific language: ドメイン特化言語) がホットな話題となっています。関数型言語が大いにもてはやされる理由は、関数型言語を応用することで DSL のような言語を作成できる点にあります。今回の「多忙な Java 開発者のための Scala ガイド」では、Ted Neward が「外部」DSL を作成する上での関数型言語の強力さを示す、電卓用の簡単な DSL の作成を続けながら、テキスト入力を AST (Abstract Syntax Tree: 抽象構文木) に変換して解釈する問題に取り組みます。テキスト入力を構文解析し、前回の記事で紹介したインタープリターで使用するツリー構造に変換するために、(この目的専用に設計された Scala の標準ライブラリーである) パーサー・コンビネーターを導入します。(「前回の記事」では電卓用のインタープリターと AST を作成しました。)
    2008/10/21  
 
Grails をマスターする: Grailsアプリケーションのテスト
Grails では簡単に、バグがない状態で Web アプリケーションを起動させ、その状態を維持させることができます。おまけに、テスト・コードを利用して常に最新状態の充実した実行可能なドキュメント・セットを作成することもできます。今月は Grails の教祖、Scott Davis が Grails でのテストのコツを伝授します。
    2008/10/14  
 
WS-BPEL と IoC で作成する構成可能なワークフロー: 第 2 回 BPEL ワークフローを開発してホストする
この簡潔な連載の第 2 回目では、構成可能なビジネス・ワークフローのロジックを、BPEL を使って表現する方法を Bilal Siddiqui が説明します。BPEL エンジンで BPEL アプリケーションをホストして、IoC 実装と BPEL アプリケーションを連動させる方法を学んでください。
    2008/09/30  
 
マルチテナント型 SaaS アプリケーションをセキュアにする
SaaS (Software as a Service) アプリケーションはマルチテナント型であるため、セキュリティーが重大な関心事項です。この記事では、オープンソースの Spring Security フレームワークと Apache Directory Server とを組み合わせることによってマルチテナント型 Java アプリケーションをセキュアにするための、実行可能で現実的な手法を紹介します。著者らは、マルチテナント型 Web アプリケーションの例を使ってこの手法を説明します。
    2008/09/30  
 
クラスの共有によるパフォーマンスの向上
Java SE 6 対応 IBM JRE の最新リリースでは、バージョン 5 で導入された IBM のクラス共有機能が強化されています。この記事ではパフォーマンス・アナリストである Adam Pilkington と Graham Rawson が、アプリケーションの起動時間とメモリー使用量における改善をはじめ、IBM JRE での変更内容について詳しく解説します。
    2008/09/30  
 
WebSphere sMash で Java と PHP を統合する
WebSphere sMash 環境では、PHP などのよく使われる Web 技術をベースにインタラクティブな Web アプリケーションを素早く開発できるだけでなく、PHP スクリプトから既存の Java アセットを再利用することもできます。この記事では Java Bridge を紹介し、PHP から Java クラスにアクセスする方法を説明します。
    2008/09/24  
 
Java の理論と実践: ステートフルな Web アプリケーションはすべて壊れているのか
サーブレット・フレームワークが提供するセッション状態管理メカニズム、HttpSession はステートフルなアプリケーションを簡単に作成できるようにしますが、使い方を間違えやすいのも事実です。可変データ (JavaBeans クラスなど) に HttpSession を使用する Web アプリケーションのなかには、十分な調整をせずにこのメカニズムを使用しているために、並行性にさまざまな悪影響を及ぼす可能性を招いているものが数多くあります。
    2008/09/23  
 
IBM のとがった人たち ~ 「IBM Japan Geeks」: 勉強会レポート(後編): 「Google基盤」と「カリー化」
「IBM Japan Geeks」(以下、Geeks)は、2007年に社内で開催された「ITLMC RoR(Ruby on Rails)勉強会」に集まったとがった人たちによって発足したもの。「主にプログラミング言語を中心とした最新技術動向の情報交換を行うための社内コミュニティ」として、定期的に勉強会を開催しています。
    2008/09/19  
 
IBM のとがった人たち ~ 「IBM Japan Geeks」: 勉強会レポート(前編): 「Scala」と「Android」
IBMにて2008年2月より毎月開催されている勉強会「IBM Japan Geeks」。40名以上の“Geek”が登録しているというこの会では、さまざまな言語や最新技術をディープに情報交換しています。そこで CodeZineがこの勉強会に参加し、これまで発表のあったもののうち、反響のあった4編をバージョンアップして再現していただきました。この会の模様を2回に分けてレポートします。
    2008/08/29  
 
多忙な Java 開発者のための Scala ガイド: 電卓を作る、第 1 回
DSL (Domain-specific language: ドメイン特化言語) がホットな話題となっています。関数型言語が大いにもてはやされる理由は、関数型言語を応用することで DSL のような言語を作成できる点にあります。「多忙な Java 開発者のための Scala ガイド」シリーズの第 8 回である今回は、Ted Neward が、「外部」DSL を作成する上での関数型言語の強力さを示す、電卓用の簡単な DSL の作成を開始します。彼はこの目的のために、Scala の新しい機能である case クラスを説明し、また昔からの関数型機能であるパターン・マッチングを再検証します。
    2008/08/26  
 
Java XPath API
XPath 式は、詳細な DOM (Document Object Model) ナビゲーション・コードよりもずっと簡単に書くことができます。XML 文書から情報を抽出する場合、最も手軽で単純な方法は、XPath 式を Java プログラムの中に埋め込んでしまう方法です。Java 5 では、XPath を使って文書をクエリーするための、XML オブジェクト・モデルに依存しないライブラリー、javax.xml.xpath パッケージが導入されています。
    2008/08/25  
 
Java ランタイムの監視: 第 3 回 アプリケーションのエコシステムのパフォーマンスと可用性を監視する
Java アプリケーションのランタイムの監視に関する 3 回連載の最終回では、アプリケーションがサポートしているサービスやアプリケーションの従属サービスのパフォーマンスと可用性を監視するためのストラテジーと手法に目を向けます。この場合の監視対象に含まれるのは、アプリケーション実行のベースとなるホスト・オペレーティング・システム、運用データベース、メッセージング・インフラストラクチャーです。最後に、パフォーマンス・データを管理する上での問題、そしてデータのレポートおよび視覚化について説明して記事を締めくくります。
    2008/08/12  
 
Grails をマスターする: Grails のイベント・モデル
Grails ではアプリケーションのライフサイクル全体をとおして、ビルド・スクリプトから個々の成果物 (ドメイン・クラスやコントローラーなど) に至るまでのあらゆるものが重要なポイントでイベントをスローします。連載「Grails をマスターする」の今回の記事では、これらのイベントをキャッチし、カスタムの振る舞いで応答するリスナーをセットアップする方法を説明します。
    2008/08/12  
 
Java ランタイムの監視: 第 2 回 コンパイル後のインスツルメンテーションとパフォーマンスの監視
Java アプリケーションのランタイムの監視に関する 3 回連載の第 1 回目では、JVM の正常性、そしてパフォーマンス・メトリックを収集するためにソース・コードにインスツルメンテーションを追加する方法を取り上げました。第 2 回目となるこの記事では、オリジナルのソース・コードを変更せずに Java クラスと構成体にインスツルメンテーションを追加する手法を紹介します。
    2008/08/05  
 
多忙な Java 開発者のための Scala ガイド: パッケージとアクセス修飾子
実際に作成されたコードは、他のコードから参照できるようにパッケージ化されます。「多忙な Java 開発者のための Scala ガイド」シリーズの今回は Ted Neward が Scala のパッケージとアクセス修飾子について説明します。その後で、apply の仕組みを見ていくことで Scala の関数型の側面についての説明を続けます。
    2008/07/29  
 
Java ランタイムの監視: 第 1 回 Java システムのランタイム・パフォーマンスと可用性を監視する
優れたパフォーマンスのシステムを実現し、その状態を維持するにはランタイム・パフォーマンスの監視が欠かせません。3 回連載の第 1 回目となるこの記事では、Nicholas Whitehead が Java のパフォーマンスをきめ細かく効率的に監視する方法を説明します。パフォーマンスの監視によって生成されるデータからは、システムの動作状態に関する貴重な洞察が可能となり、ランタイム環境の安定性とパフォーマンスに影響を及ぼす、制約事項とその他の要素が明らかになります。
    2008/07/29  
 
容易になった Ajax と Java 開発: 第 4 回 JSP タグ・ファイルを使用して JSF 風のコンポーネントを作成する
かつての JSP (JavaServer Pages) と JSF (JavaServer Faces) は、それぞれに異なる EL (Expression Language: 式言語) の変形バージョンを使っていましたが、JSP 2.1 では EL が統一されています。この統一によって新しい可能性が広がり、今では遅延評価される値 (deferred-value 属性) と遅延評価されるメソッド (deferred-method 属性) をカスタム JSP タグで使用できるようになりました。そこで、この記事では JSF コンポーネントを作成するより遥かに単純で簡単な手段として、JSP タグ・ファイルをベースとした Java Web コンポーネントを開発する方法を紹介します。
    2008/07/29  
 
Eclipse に Ruby Development Tools プラグインを使用する
この記事では、Eclipse を第 1 級の Ruby 開発環境に変身させる Eclipse 用 RDT (Ruby Development Tools) プラグインの使い方を紹介します。Eclipse コミュニティーの充実したインフラストラクチャーを使用して Ruby 言語をサポートする方法を学びたいと思っている Ruby 開発者、そして Ruby を使用することに興味を持っている Java 開発者の両方に役立つ記事です。
    2008/07/24  
 
容易になった Ajax と Java 開発: 第 3 回 DOM、JavaScript、JSP タグ・ファイルを使って UI 機能を作成する
この連載の第 1 回では、Ajax リクエストを送信して Ajax レスポンスを処理する JavaScript コードを生成する方法を説明しました。第 2 回では、セットアップと構成を最小限にするための規則、そして JSP タグ・ファイルを使用して HTML フォームを作成する方法を紹介しました。連載第 3 回となるこの記事で学ぶのは、JavaScript をベースにクライアント・サイド、サーバー・サイドのバリデーターを開発し、それぞれに対応する JavaScript コードをバックアップする JSP タグ・ファイルとして実装する方法です。さらに、アプリケーションを再起動しなくても変更時に自動的にリロードされるリソース・バンドルを使用する方法も説明します。
    2008/07/22  
 
XML の構文解析でのエラーを処理する
XML の構文解析は、ほとんどすべてのエンタープライズ・アプリケーションに組み込まれていますが、エラー処理は大半のエンタープライズ・アプリケーションには含まれていません。アプリケーションで DOM や JAXP を使用していたり、XML を扱う SAX 以外の API を使用したりしている場合にも、XML 構文解析で SAX (Simple API for XML) を利用してエラーの処理を行う方法を学んでください。
    2008/07/22  
 
Grails をマスターする: Grails とレガシー・データベース
連載「Grails をマスターする」で今回 Scott Davis が取り上げるのは、Grails の命名規則に当てはまらないデータベース・テーブルを Grails で使用するためのさまざまな手段です。Grails では、レガシー・データベースにすでにマッピングされている Java クラスがあれば、レガシー・データベースをそのまま変更せずに使用することができます。この記事では、レガシー Java クラスと併せて Hibernate HBM ファイル、そして Enterprise JavaBeans 3 アノテーションを使用する例をそれぞれ紹介します。
    2008/07/15  
 
Java プラットフォームから XPath を評価する
XPath を使うと XML 文書に含まれる要素、属性、テキストの選択が容易になります。Java プログラミングにより XPath を評価する方法と返されるノードを処理する方法を学んでください。
    2008/07/08  
 
WS-BPEL と IoC で作成する構成可能なワークフロー: 第 1 回、動的ビジネス・ワークフローを理解する
IoC (Inversion of Control) と WS-BPEL (Web Services Business Process Execution Language) は、動的ビジネス・ワークフローを実装する際に威力を発揮するツールです。この 2 回連載の第 1 回目の記事では、Bilal Siddiqui がビジネス・ワークフローの動的な性質を説明し、構成可能で柔軟なソリューションを XML を使って作成できる 2 層構造のワークモデル・モデルを提案します。
    2008/07/08  
 
Java の理論と実践: Generics のワイルドカードを使いこなす、第 2 回
Java 言語での Generics のワイルドカードは非常にわかりにくく、最もよくある間違いは境界ワイルドカードが必要なときに、その 2 つの形式 (「? super T」 と「? extends T」) のうちの 1 つを使いそこねる、というものです。皆さんはこの間違いをしたことがあるでしょうか?もしあったとしても、それを恥じることはありません。エキスパートですら間違えることはあるのです。今月は、Brian Goetz がその間違いを避けるための方法を説明します。
    2008/07/01  
 
Seasar2: 第 5 回 Seasar2 から DB2 を利用する
本連載では,軽量コンテナ Seasar2 を IBM WebSphere Application Server や IBM DB2 と連携させる方法について紹介します.連載の第 5 回目となるこの記事では,Seasar2 から WAS のコネクションプールを経由して DB2 を利用する方法を紹介します.
    2008/06/27  
 
多忙な Java 開発者のための Scala ガイド: コレクション型
Scala にはオブジェクトがありますが、タプルや配列、リストなどの関数型もあります。Ted Neward による人気シリーズの今回は Scala の関数型の側面を探る作業を開始し、まず関数型言語に共通の型に対する Scala のサポートについて説明します。
    2008/06/27  
 
Grails をマスターする: Grails とモバイル Web
世界中の携帯電話利用者が現在 33 億人を突破して増え続けているなか、携帯電話からのインターネット・アクセスが急激に増えています。モバイル Web を目的とした開発には、それ特有の要求があります。連載「Grails をマスターする」の今回の記事では、Scott Davis が Grails アプリケーションを携帯電話に対応させる方法を紹介します。
    2008/06/17  
 
万人のためのオートメーション: プッシュボタンによるドキュメント作成
ソフトウェア製品を提供する上で、プロジェクトのドキュメントの作成は必要悪の 1 つです。でも想像してみてください。ボタンのクリック 1 つでドキュメントを作成できたとしたらどうでしょう。連載「万人のためのオートメーション」では今回、オートメーションのエキスパート、Paul Duvall がオープンソースのツールを使って UML (Unified Modeling Language) 図、ビルド図、ERD (Entity-Relationship Diagram: エンティティー・リレーションシップ図)、さらにはユーザー・マニュアルの作成まで自動化する方法を紹介します。
    2008/06/10  
 
NASA の World Wind Java SDK を Eclipse に組み込む
NASA (アメリカ国立航空宇宙局) によるオープンソースの WWJ (World Wind Java) SDK によって、オープンな GIS (Geographic Information Systems) コミュニティーに新たな可能性が生まれます。World Wind は Java 言語と OpenGL で作成され、世界を 3D で見られる対話型のビューアーであり、ユーザーは宇宙空間から地球上の任意の場所にズームインすることができます。この記事では、Eclipse ベースのアプリケーションを機能強化したいと望む GIS 開発者のために、WWJ SDK を Eclipse のプラグインとして組み込むための方法について説明します。
    2008/06/03  
 
多忙な Java 開発者のための Scala ガイド: 実装継承
Scala では Java 言語の場合とほとんど同様に実装継承がサポートされていますが、Scala の継承には驚くような点がいくつかあります。今回は Ted Neward が Scala 流のポリモーフィズムを紹介します。Scala では関数型言語のスタイルとオブジェクト指向言語のスタイルが混在していますが、それでも Scala は Java プラットフォームでの継承モデルに完璧に対応しています。
    2008/05/28  
 
COBOL のように死んだ言語
Java が間もなく消え去るという最近の報告を見聞きした皆さんは、Java というプラットフォームを捨ててもっと優れたものに移行する時が来たのだろうかと思っていることでしょう。しかし結論を下す前に一歩下がって Java のエコシステムとその競合とを検証し、冒頭の噂が内容を伴ったものかどうかを調べてみましょう。つまりアメリカ大統領の一般教書演説にならい、Java プラットフォームの評価に関して高慢も偏見も交えずに Java の一般教書演説をしてみようというわけです。
    2008/05/27  
 
Grails をマスターする: Grails サービスと Google Maps
連載「Grails をマスターする」では今回、Scott Davis が無料で入手可能な API とWeb サービスを利用して Grails アプリケーションにマップを追加する方法を紹介します。また、この連載で今までビルドしてきた Trip Planner アプリケーションを、ジオコード、Google Maps、そして Grails サービスを使ってさらに上のレベルに改良します。
    2008/05/20  
 
容易になった Ajax と Java 開発: 第 2 回 セットアップと構成を最小限にするための規則に従う
たいていの Web フレームワークで目標とされるのは、さまざまなアプリケーションのニーズと開発スタイルに対応するために、できる限り柔軟かつ拡張可能にすることです。残念ながら、このような試みが結果的にフレームワークを複雑にし、処理のオーバーヘッド、そして大規模な構成ファイルをもたらす場合がよくあります。この記事では開発と保守を容易に行えるように、JSTL (JSP Standard Tag Library) と JSP タグ・ファイルを使ってデータ・バインディング、ページ・ナビゲーション、スタイル規則を実装する方法を紹介します。また、動的な属性を使ったカスタム JSP タグを作成し、アプリケーションを簡単に素早く変更できるようにする方法も学んでください。さらに記事の最後のセクションには、Ajax を使用して Web フォームをサブミットするサンプルも記載しています。
    2008/05/20  
 
Java EE 技術を使用するための長期的戦略を立てる
技術の変更は当然のことであり、また必要なものですが、変更によって既存のアプリケーションの動作が影響される場合もあります。このような変更の必然性を考えると、Java EE などの仕様の変更に左右される技術に頼るのは危険だと思えるかもしれません。しかし、どの技術を使用するのが適しているかを判断するときに十分な根拠に基づいて技術を選択し、周到な計画を立てることによって、互換性のない変更による影響を最小限に抑えることは可能です。この記事では、読者が根拠に基づいた選択を行えるように情報を提供するとともに、変更による組織への影響を最小限に抑えるための IBM の取り組みについて説明します。
    2008/05/14  
 
Seasar2: 第 4 回 WebSphere Application Server Toolkit での HOT deploy の利用
連載の第 4 回目となるこの記事では、統合開発環境である WebSphere Application Server Toolkit と Seasar2 の HOT deploy 機能を利用して Web アプリケーションを快適に開発する方法を紹介します。
    2008/05/09  
 
万人のためのオートメーション: Ivy による依存関係の管理
プロジェクトやツール間にあるソース・コードの依存関係を管理するのは厄介な作業となりがちですが、必ずしもそう決めてかかる必要はありません。オートメーションのエキスパートである Paul Duvall が連載「万人のためのオートメーション」で今回説明するのは、大規模な Java プロジェクトであれば必ず必要になってくる無数の依存関係の管理に、Apache Ant プロジェクトの Ivy 依存関係管理ツールで対処する方法です。
    2008/05/06  
 
Javaの理論と実践: Generics のワイルドカードを使いこなす、第 1 回
Java 言語における Generics で最も複雑な部分の 1 つはワイルドカードであり、なかでもワイルドカードのキャプチャーの扱い、そしてワイルドカードのキャプチャーに関するわかりにくいエラー・メッセージは特に厄介です。「Java の理論と実践」シリーズの今回は、ベテランの Java 開発者である Brian Goetz が、javac から出力される奇妙なエラー・メッセージのいくつかを解読し、さらに Generics の使い方を単純化するための手法と回避策をいくつか提供します。
    2008/05/06  
 
Data Web Services を使用した pureXML のための Universal Services
Universal Services の構成、テスト、変更を行ってみましょう。
    2008/05/01  
 
多忙な Java 開発者のための Scala ガイド: trait と振る舞い
Scala は単に関数型の概念を JVM にもたらすだけではなく、オブジェクト指向言語の設計に対する新しい観点を提供してくれます。「多忙な Java 開発者のための Scala ガイド」シリーズの今回の記事では、Scala では trait を活用することでオブジェクトを単純かつ容易に作成できることを Ted Neward が解説します。この記事で学ぶように、trait には Java のインターフェースと C++ の多重継承という、従来提供されている両極端のものと似ている面、異なっている面があります。
    2008/04/29  
 
Jenabean: JavaBeans を RDF に難なくバインドする
RDF (Resource Description Framework) は、W3C (World Wide Web Consortium) が提唱する Web 上でのデータのリンクおよび表現に関する標準です。セマンティック Web アプリケーションを開発する Java 開発者は、RDF プロパティーを Java 型に、あるいは Java 型を RDF プロパティーに変換しなければなりません。Jenabean は Jena のセマンティック Web フレームワークの柔軟な RDF/OWL API を使用して JavaBeans を存続させることで、セマンティック Web アプリケーションの作成を Java 開発者にとって簡単かつ馴染みのある作業にします。
    2008/04/29  
 
Scala と XML
Scala は人気のある新しいプログラミング言語であり、JVM (Java Virtual Machine) 上で実行されます。Scala はバイトコードにコンパイルされるため、Java プログラミング言語を活用することができます。一方で Scala は、その構文を有効に活かせるシナリオでは Java に代わる強力な手段となります。そうしたシナリオの 1 つが XML の処理です。Scala を利用すると、構文解析された XML をいくつかの方法でナビゲートしたり処理したりすることができます。また Scala には XML に対するファーストクラスのサポートが最初から組み込まれているため、XML ストリングの作成や、プログラムによる DOM ツリーの作成が必要ありません。この記事では、こうした面での Scala の実際と、Scala によって XML の処理がいかに楽しいものになるかを説明します。
    2008/04/22  
 
Castor によるデータ・バインディング: 第 4 回 Java オブジェクトを SQL データベースにバインドする
Castor を利用することによって、Java オブジェクトのデータを直接データベース・テーブルにバインドすることができます。この記事で、Java オブジェクトから SQL にマーシャリングする方法を学んでください。
    2008/04/18  
 
Grails をマスターする: Ajax をほんの少し加えた多対多の関係
Web アプリケーションで多対多 (m:m) の関係を扱うには、さまざまな注意が必要になります。連載「Grails をマスターする」の今回の記事では、Scott Davis が Grails で m:m の関係をうまく実装する方法を説明します。GORM (Grails Object Relational Mapping) API とバックエンド・データベースではこの関係をどのように扱うか、そして Ajax (Asynchronous JavaScript + XML) を少し使うことでユーザー・インターフェースをいかに効率的なインターフェースにできるかを学んでください。
    2008/04/15  
 
万人のためのオートメーション: 人手を介さない自動負荷テスト
大抵の場合、負荷テストはサイクルの後のほうに追いやられてしまいますが、この作業を後回しにする必要はありません。連載「万人のためのオートメーション」では今回、オートメーションのエキスパートである Paul Duvall が開発サイクル全体を通して問題を見つけ、修正する方法を説明します。その方法とは、JMeter テストを実行する定期インテグレーション・ビルドを作成することです。
    2008/04/08  
 
XStream を使って Java オブジェクトを XML にシリアライズする
XML にシリアライズしたデータには、オブジェクトの永続化やデータ・トランスポートなど、無数の使い方があります。しかし一部の XML シリアライズ技術は実装が複雑です。XStream は Java オブジェクトを XML にシリアライズし、またその逆の操作を行うための、軽量で使いやすいオープンソースの Java ライブラリーです。XStream のセットアップ方法を学び、また XStream を使ってオブジェクトをシリアライズ/デシリアライズする方法、そして XML 構成ファイルから構成プロパティーを読み取る方法を理解しましょう。
    2008/04/08  
 
Generics と並行性でコレクションにスパイスを利かせる
Java Collections Framework は Java プラットフォームの重要な特徴です。デスクトップ・アプリケーションとエンタープライズ・アプリケーションはいずれも、操作対象の項目を収集するのが一般的だからです。この記事では、Java SE 6 でこのフレームワークに加えられた拡張機能を利用しながらコレクションを操作する方法を紹介します。Generics と並行性を利用することで、HashMap や TreeSet よりも遥かにアプリケーションの管理および拡張が容易になります。
    2008/04/08  
 
SQLXML データ型を使う
もし皆さんが J2EE (Java 2 Enterprise Edition) 開発者であるなら、SQLXML 技術を先行して学ぶ必要があります。SQLXML という Java データ型を使って XML 文書を作成し、XML 文書をリレーショナル・データベースに保管し、データベースから XML 文書を取得し、そして XML 文書をナビゲートする手順について調べましょう。
    2008/04/07  
 
Seasar2: 第 3 回 Seasar2 による宣言的トランザクション
本連載では,軽量コンテナ Seasar2 を IBM WebSphere Application Server や IBM DB2 と連携させる方法について紹介します.連載の第 3 回目となるこの記事では,Seasar2 の宣言的トランザクションについて紹介します.
    2008/03/28  
 
Groovy を DSL として用いてプラグイン機能を実現する
これまでアプリケーションの設定を保持するファイルとして、XML が広く使われてきました。しかしコードに密接に関連した設定内容は、XML のかわりにプログラミング言語を利用して記述した方が、簡単に書ける場合が少なくありません。本稿ではアプリケーションにプラグイン機能を追加するためのプラグインライブラリを例として取り上げ、Groovy 言語を設定ファイルとして利用する方法について解説します。
    2008/03/28  
 
IBM Web 2.0 Feature Pack を使って Ajax スタイルのアーキテクチャーを作成する
この記事では、IBM(R) WebSphere(R) Application Server Feature Pack for Web 2.0 を利用することによって、J2EE (Java(TM) 2 Platform, Enterprise Edition) アプリケーションを Ajax スタイルのアーキテクチャーでどのように強化できるのかを説明します。そして Web アプリケーション全体を再作成することなく、既存のアプリケーションに Ajax スタイルのアーキテクチャーを組み合わせる方法を学びましょう。またこの記事では IBM WebSphere Application Server 用の皆さん自身の J2EE アプリケーションに Web 2.0 Feature Pack を適用する方法についての考え方の一端も学びます。
    2008/03/18  
 
Java Portlet Specification V2.0 (JSR 286) の新たな内容とは?
Java Portlet Specification のバージョン 2.0 (JSR 286) の全容を学んでください。仕様の内容と API の数が 2 倍以上になったバージョン 2.0 では、ほとんどの使用事例をベンダーの拡張機能なしで実装することができます。また、ポートレットのプログラミング・モデルにはイベントと共通レンダリング・パラメーターが用意されているため、現在使用しているポートレットから大規模な複合アプリケーションを構築したり、さまざまなシナリオでポートレットを再利用したりすることができます。
    2008/03/18  
 
メインフレームで動く WebSphere Application Server の世界: 第 1 回 メインフレームでの Java 活用
この連載では、メインフレームで動く Java およびサーバー・ミドルウェアの IBM WebSphere Application Server for z/OS の世界を連載でご紹介します。第 1 回は、IBMメインフレーム OS である z/OS と、z/OS の Java をバッチ処理で活用する方法についてご紹介いたします。
    2008/03/14  
 
動的計画法と配列アラインメント
分子生物学では、コンピューター・サイエンスのアルゴリズムを研究用のツールとしてますます利用するようになってきています。この記事では、コンピューターを使って生物学上の問題を解決する、バイオインフォマティクス (bioinformatics: 生命情報科学) を紹介します。そして多くのプログラミング・プロジェクトで役立つ高度なアルゴリズム手法である、動的計画法の基本を学びます。
    2008/03/11  
 
Grails をマスターする: Groovy Server Pages によるビューの変更
GSP (Groovy Server Pages) は、Grails Web フレームワークの Web の部分になります。連載「Grails をマスターする」の第 3 回目では、Scott Davis が GSP の操作について詳細に説明します。Grails TagLib は簡単に使用できること、そして GSP のコード・フラグメントを組み合わせたり、scaffold により自動的に生成されるビューのデフォルト・テンプレートをカスタマイズしたりするのも簡単であるということを学んでください。
    2008/03/11  
 
万人のためのオートメーション: 継続的インテグレーションのアンチパターン、第 2 回
継続的インテグレーション (CI) はプロジェクトでのリスクを軽減する上で極めて有効ですが、それと同時に、コーディングに関連する日常のタスクがなおのこと重要になってきます。CI アンチパターンを話題にした 2 回連載の第 2 回目となるこの記事では、オートメーションのエキスパートであり、『Continuous Integration: Improving Software Quality and Reducing Risk』の著者でもある Paul Duvall が引き続き一連の CI アンチパターンを取り上げ、さらに肝心なその回避方法を伝授します。
    2008/03/04  
 
Javaの理論と実践: フォークを活用する、第 2 回
Java 7 で登場する java.util.concurrent パッケージに追加されているものの 1 つが、フォーク/ジョインのスタイルによる並列分割のライブラリーです。このシリーズの第 1 回で著者の Brian Goetz が紹介したのは、さまざまなアルゴリズムを分解し、ハードウェアによる並列処理を効果的に活用するための機構を、フォーク/ジョインで提供する方法です。この第 2 回の記事では ParallelArray クラスについて説明します。ParallelArray クラスを利用すると、メモリー内のデータ構造に対する並列ソートや並列検索の操作を単純化することができます。
    2008/03/04  
 
Seasar2: 第 2 回 UOWManager によるトランザクションの制御
WebSphere Application Server(以下WAS)のV6.0.2.19またはV6.1.0.9以降では,WASのトランザクション・コンテキストを制御するための新しいインターフェースUOWManagerが使用できます。Seasar2などのフレームワーク製品は,このインターフェースを使用してトランザクション制御を行っています。
    2008/02/29  
 
名前付きパラメーターを使って CallableStatement を処理する
IBM Informix Dynamic Server (IDS) の強力な新機能、「CallableStatement 内の名前付きパラメーター」について学んでください。パラメーターを順番で識別する代わりに、名前で識別することを可能にするこの機能は、CallableStatement が適用可能な範囲を広げ、順番によってもパラメーター名によっても CallableStatement を使用できるようにします。この記事では、パラメーターを識別するこの 2 つの手法の違いを説明し、パラメーターを順番で指定する代わりに名前付きパラメーターを使用した場合の利点を探ります。
    2008/02/21  
 
多忙な Java 開発者のための Scala ガイド: クラスの動作
Java 開発者が Scala を理解するための最初のポイントとしてオブジェクトに言及することは妥当なことです。この、「多忙な Java 開発者のための Scala ガイド」の第 2 回である今回は、Ted Neward が言語を評価するための基本前提に従って話を進めます。その前提とは、言語の能力は、新しい機能 (この場合は複素数のサポート) を統合する能力と直接関連させることで評価できる、というものです。この記事では、そうした言語の能力を説明する中で、Scala でのクラスの定義と使い方に関連する興味深い内容についてもいくつか学びます。
    2008/02/19  
 
Grails をマスターする: GORM: おかしな名前の真面目な技術
どんな優れた Web フレームワークにも、確固としたパーシスタンス・ストラテジーは必要です。連載「Grails をマスターする」の第 2 回目では、Scott Davis が GORM (Grails Object Relational Mapping) API を紹介します。この記事を読めば、Grails アプリケーションでテーブル間の関係を作成し、データ検証ルールを設定し、さらにリレーショナル・データベースを変更するのがいかに簡単であるかがわかるはずです。
    2008/02/12  
 
JSF と CSS、JavaScript を使用して作成する Ajax アプリケーション: 第 2 回 動的な JSF フォーム
この 2 回連載の第 1 回目の記事では、Java 開発者である著者、Andrei Cioroianu が JSF (JavaServer Faces) コンポーネントのスタイル属性を使用し、これらの属性にデフォルト値を設定する方法を紹介しました。2 回目となるこの記事では、標準 JSF コンポーネントが持つ JavaScript 関連の属性を使用する方法を取り上げます。DOM (Document Object Model) API、JavaScript、そして CSS (Cascading Style Sheets) をベースとしたいくつかの Web テクニックを学んでださい。また、Web ページを更新しないで、オプションの JSF コンポーネントを非表示にしたり表示したりする方法、Web ブラウザーで実行されるクライアント・サイドの検証を実装する方法、さらに Web フォームの入力要素に関するヘルプ・メッセージを表示するカスタム・コンポーネントを開発する方法を紹介します。
    2008/02/12  
 
XML を使った RESTful な SOA
SOA (Service Oriented Architecture) は通常、大企業のための重量級の技術を意味します。しかし SOA によるアーキテクチャー・パターンの利点は小規模な環境にも当てはまります。SOA の原則に従うためには、大規模な環境では便利なオーバーヘッドが必ずしもすべて必要なわけではありません。REST のように軽量な原則を使って SOA を利用することもできるのです。この記事ではその方法を説明します。
    2008/02/12  
 
ロープ: 理論と実践
Java 言語のデフォルトの String クラスと StringBuilder クラスは、大量のストリング・データを処理するシステムとなると十分に対応しきれません。この場合、これらのデフォルト・クラスより優れた手段となるのがロープ (rope) というデータ構造です。この記事では Java プラットフォームのロープ実装、Ropes for Java について紹介し、パフォーマンス上の問題を探るとともに、このライブラリーの効果的な使い方をアドバイスします。
    2008/02/12  
 
Seasar2: 第 1 回 WebSphere Application Server へ Web アプリケーションをデプロイする
本連載では、軽量コンテナ Seasar2 を IBM WebSphere Application Server(以降 WAS と表記)や IBM DB2 と連携させる方法について紹介します。連載の第1回目となるこの記事では、Seasar2 を利用するWebアプリケーションをWASへデプロイする際に気をつけるべき事柄について説明します。
    2008/02/01  
 
Castor によるデータ・バインディング: 第 3 回 スキーマ間のマッピング
扱いにくくて不自由な XML 文書を Castor を使ってカスタム Java オブジェクトに変換してください。
    2008/01/29  
 
JSF と CSS、JavaScript を使用して作成する Ajax アプリケーション: 第 1 回 JSF ページの外観を整える
一般的な Web アプリケーションには、カスケーディング・スタイル・シート (CSS) と JavaScript を JSF (JavaServer Faces) などのサーバー・サイド・フレームワークと一緒に使用する必要があります。CSS によって Ajax やその他のアプリケーション内での Web コンポーネントの視覚的特徴を変更し、見た目のよい独特の外観にすることができるからです。この 2 回連載記事の第 1 回目では、標準 JSF コンポーネントが持つ CSS 関連の属性を利用する方法を説明します。さらに、ネストされたコンポーネントのデフォルト・スタイルを設定するカスタム JSF コンポーネントを作成する方法も学びます。この方法を使えば、Web アプリケーションのすべてのページを統一された外観にするのが非常に簡単になるだけでなく、他のコンポーネントの属性をプログラムによって設定することも可能になります。続く第 2 回目の記事では、JavaScript を使って JSF フォームを一層動的にする方法を紹介します。
    2008/01/29  
 
Eclipse で開発する iPhone の Web アプリケーション
iPhone の Web サイトを Eclipse、Aptana の iPhone Development プラグイン、そして iUi フレームワークを使って作成する方法を学んでください。この記事では iPhone の Javadoc ビューアーを開発する手順に沿って、ユーザー・インターフェースを設計する際のヒントを明らかにするとともに、今後の iPhone アプリケーション開発について説明します。
    2008/01/29  
 
XMLBeans からのイベント受信
XMLBeans は XML と Java のデータのバインディングを行う素晴らしい技術ですが、モデル変更のオブザーバーを登録することはできません。ただし、生成された POJO (Plain Old Java Object) をカスタマイズすれば、必要なインターフェースと変更の通知を組み込むことができます。この記事では、数独 RCP (Rich Client Platform) のゲーム・アプリケーションを Eclipse で作成し、イベンティング (イベント通知機能) を使用してユーザーの入力を検証する方法を学びます。
    2008/01/29  
 
コンポジット・アプリケーション連載: 第2回 QRコード を活用しよう(後編)
前編では、インターネット上で公開されているQRコード生成サイトを利用したコンポーネントを開発し、サンプルとして提供した別のコンポーネントと合わせて1つのコンポジット・アプリケーションに配置・ワイヤリングしました。今回は前編の続きのステップ2として、QRコードを表示するコンポーネントを改良していきます。
    2008/01/25  
 
多忙な Java 開発者のための Scala ガイド: オブジェクト指向のための関数型プログラミング
Java プラットフォームは、その登場以来ずっとオブジェクト指向プログラミングの領域のものでしたが、熱烈な Java 言語支持者でさえ、アプリケーション開発における『古いものは新しい』という最近の傾向である、関数型プログラミングに注目し始めています。この新しいシリーズでは、Ted Neward が Scala を紹介します。Scala は JVM に対して関数型の手法とオブジェクト指向型の手法を組み合わせたプログラミング言語です。Scala を紹介する中で、なぜ Scala を学ぶために時間を費やす必要があるのか、その理由 (1 つは並行性です) を説明し、また学んだことをすぐに生かせることを示します。
    2008/01/22  
 
J2EE プロジェクトの IBM Lotus Expeditor V6.1 へのマイグレーション
IBM Lotus Expeditor Toolkit を使って J2EE プロジェクトを IBM Lotus Expeditor V6.1 にマイグレートし、マイグレートされたプロジェクトを Lotus Expeditor ランタイムにデプロイしましょう。この記事では、J2EE プロジェクトをマイグレートするためにはどのようなステップが必要なのか、また J2EE のどの機構が Lotus Expeditor ではサポートされていないのかを説明します。
    2008/01/22  
 
pureQuery について学ぶ: 第 2 回 クラス・モデラーを支援するためのデータ・モデリング
オブジェクト指向開発者が従来のクラス・モデリングを使用してデータベース・リレーショナル成果物を定義する上で、pureQuery の機能がどのように役立つかを学んでください。
    2008/01/17  
 
Grails をマスターする: 初めての Grails アプリケーションのビルド
最新の Web 開発フレームワークを採用するために、Java プログラマーが好みの言語や既存の開発インフラストラクチャーを放棄する必要はありません。毎月 1 回お届けする新連載、「Grails をマスターする」の第 1 回目では、Java のエキスパートである Scott Davis が Grails を紹介し、初めての Grails アプリケーションをビルドする方法を手ほどきします。
    2008/01/15  
 
JavaFX Script で作るリッチ・アプリケーション
昨年春にデビューした JavaFX Script は、Java SE (Java Platform, Standard Edition 6) 上で動作し、高度なユーザー・インターフェースを簡単にコーティングできるようにするスクリプト言語です。この記事を読んで、JavaFX スクリプト言語の基本事項を学ぶとともに、サンプル・アプリケーションの作成を通して基本的な UI コンポーネントについて理解してください。
    2008/01/15  
 
jpa2web を使って Ajax J2EE Web アプリケーションを生成する
新しいオープンソース・ツール、jpa2web を学び、試し、そしてこのツールに貢献しましょう。jpa2web は JPA アノテーション付きの Bean から J2EE Ajax ベースの Web アプリケーションを生成します。ZK フレームワークを利用してこのツールで生成されたアプリケーションでは、使いやすい Ajax ベースの Web ユーザー・インターフェースをとおして、データベースに同期されたオブジェクトのインスタンスの追加、削除、検索、修正、さらにはそのインスタンス間の相互接続をすることができます。
    2008/01/15  
 
万人のためのオートメーション: オートメーションによるデプロイメントの円滑化
自動ビルドは開発チームのためだけのものではありません。自動ビルドを拡張することで、ソフトウェアを開発から実動へと容易に移行させることもできます。「万人のためのオートメーション」では今回、オートメーションのエキスパート、Paul Duvall が Ant を Java Secure Channel と組み合わせて使用して、リモートでソフトウェアを複数のターゲット環境にデプロイする方法を説明します。
    2008/01/08  
 
コンポジット・アプリケーション連載: 第1回 QRコードを活用しよう (前編)
第0回ではコンポジット・アプリケーションを学ぶ上で有用な背景知識を整理しました。今回からはプログラムコードを交えて、実際のアプリケーション開発のステップの例を紹介していきます。
    2007/12/21  
 
pureQuery について学ぶ: 第 1 回 Java データベース・アプリケーション作成のための IBM の新しいパラダイム
pureQuery プロジェクトは、データベース・アプリケーション開発者に設計および実装の両フェーズで大幅に生産性を向上させる手軽な GUI ベースの手段を提供します。これを実現するのは、データにアクセスして操作する際にユーザーが起動する、リレーショナル・データから Java オブジェクトへの自動変換です。変換後のオブジェクトは、ビジネス・ロジックやベースとなるコードを作成する際に、通常の OO プログラミング・パラダイムでそのまま使用することができます。問い合わせ言語を Java 自体に統合する pureQuery の機能によって、実質的に、従来の JDBC プログラミングは排除されることになります。この記事は、pureQuery に関するシリーズの第 1 回です。
    2007/12/14  
 
javax.tools を使って動的アプリケーションを作成する
最近のアプリケーションの多くには、アプリケーションの静的機能を拡張した難解な計算をユーザーが提供できるといった、動的機能が必要になってきていますが、このような目標を達成するとっておきの手段となるのが、Java SE (Java Platfo rm, Standard Edition) 6 に Java ソースのコンパイル用標準 API として追加されたパッケージ、javax.tools です。この記事では、このパッケージに含まれる主要なクラスについて概説します。さらに、これらのクラスを使用してファイルではなく Java String から Java ソースをコンパイルするためのファサードを作成し、このファサードを使って対話型のグラフ描画アプリケーションをビルドする方法を実演します。
    2007/12/11  
 
多忙な Java 開発者のための db4o ガイド: トランザクションと分散管理、そしてセキュリティー
db4o のようなオブジェクト指向データベースにオブジェクトを直接保存することで、Java 開発者はさまざまなメリットを得ることができます。しかし分散環境でトランザクションをサポートしたりデータを使用したり (さらにそれをセキュアに保つことが) できないと、あまり OODBMS の使い道はありません。今回は Ted Neward が「多忙な Java 開発者のための db4o ガイド」シリーズの最終回として、Java によるエンタープライズ開発での 3 つの主な懸念事項 (トランザクションと分散データ管理、そして Web アプリケーションのセキュリティー) を db4o がどのように処理するかを説明します。
    2007/12/11  
 
ヒント: 非同期コールバックを最大限に利用する
JavaScript アプリケーションで Ajax データ・ソースに対する非同期コールバックを最大限に利用するためには、ある程度工夫した処理が必要です。このヒントでは、なぜ Ajax データ・ソースに対して非同期コールバックを使う必要があるのかについて説明します。また、相互に依存するアプリケーションのデータ・ソースを適宜利用できるように調整し、いつでも非同期呼び出しに対応できるようにする例についても説明します。
    2007/12/11  
 
Castor によるデータ・バインディング: 第 2 回 XML のマーシャリングとアンマーシャリング
このシリーズの前回の記事では、Cator をダウンロードしてインストールし、セットアップしました。今回の記事では、Java(TM) クラスを XML に変換し、そしてその XML を Java コードに逆変換する方法について学びます。また Castor がどのように動作するのかについて、そして Castor の API でうまく動作するようにクラスを設計する方法についても説明します。
    2007/12/10  
 
コンポジット・アプリケーション連載: 第0回 コンポジット・アプリケーションを取り巻く技術
コンポジット・アプリケーションとは、複数の画面を集約し、さらに連携させることによって既存の資産を再利用しながら作業効率のよい新しいアプリケーションを作るモデルです。 この概念自体は決して新しいものではありません。しかしながら適用された場はまだまだ少ないのではないかと思います。IBMではコンポジット・アプリケーションを作業効率のよいユーザー・インターフェースを実現するための重要な概念と位置づけ、このモデルを採用したアプリケーション、ミドルウェア、開発ツールを提供しています。 本連載ではデベロッパーの皆様がお持ちの資産や技術をどのようにコンポジット・アプリケーションに適用できるのか、どのように新規にコンポーネントを作ることができるのか、サンプルコードを交えてご紹介する予定です。
    2007/12/07  
 
万人のためのオートメーション: 継続的インテグレーションのアンチパターン、第 1 回
継続的インテグレーション (CI) はプロジェクトでのリスクを軽減する上で極めて有効ですが、それと同時に、コーディングに関連する日々の取り組みがなおのこと重要になってきます。連載「万人のためのオートメーション」では今回、オートメーションのエキスパートであり、『Continuous Integration: Improving Software Quality and Reducing Risk』の著者でもある Paul Duvall が一連の CI アンチパターンを一つひとつ明らかにし、さらに肝心なその回避方法を伝授します。
    2007/12/04  
 
ロボットと迷路、そしてサブサンプション・アーキテクチャー
ロボット・シミュレーターは本格的な研究ツールであると同時に、IBM のコンピューター・プログラマー Paul Reiners がこの記事で示すように、Java プログラミングを使った本格的な楽しみへの道でもあります。光を求めて迷路を進む仮想ロボットを、Java 言語で Simbad を使って作成する方法を学びましょう (Simbad は Java の 3D 技術をベースにするオープンソースのロボット・シミュレーターです)。そしてサブサンプション・アーキテクチャーによるロボット設計の概念を実現する方法を学びましょう。
    2007/12/04  
 
Java EE 5: その威力と生産性、そして軽減された複雑さ
Java EE 5 (Java Platform, Enterprise Edition 5) のコンテナー・サポート、開発者向けツール、教材が改善され、そして開発者コミュニティーが実績を積んだことから、このプラットフォームを導入する組織は着実に増えてきています。この記事では Java EE 5 での新しい生産性向上機能と強化された API の概要を説明し、その単純化された開発モデルを実証する Web サービスの例を紹介します。
    2007/11/29  
 
XSLT 2.0 でカスタム照合を使う
XSLT 2.0 で注目すべき点の 1 つは、国際化、特にテキストのソートと比較に関する国際化サポートが改善されたことです。この記事では、カスタム照合関数を作成するための方法と、その関数を XSLT 2.0 のスタイルシートから呼び出す方法について説明します。
    2007/11/27  
 
開発元直送シリーズ: OmniFind ESSearchApplication 解説
IBM OmniFind Enterprise Edition(以下OmniFind)は、イントラネットに存在する様々な情報を検索可能にするエンタープライズ向けサーチシステムを提供するソフトウェアです[文献1, 2, 3]。エンドユーザーはOmniFindのESSearchApplicationというWebアプリケーションを通じて、必要な情報を簡単に検索することが可能になります。このESSearchApplicationは、製品として利用可能なWebアプリケーションであると同時に、開発者が自由にカスタマイズできるようにソースコードも付属しております。開発者は、エンドユーザーの要望に添うようにアプリケーションを書き換え、よりビジネスニーズにあった検索ソリューションを提供することが可能になっています。本稿では、このESSearchApplicationの概要を紹介するとともに、実際の処理の流れを追いながらコードの解説を行っていきます。
    2007/11/23  
 
developerWorks インタビュー: Web 2.0 EXPO Tokyoにてティム・オライリー氏に聞く
2007年11月15、16日、アジアで初となる Web 2.0 EXPO Tokyo が開催されました。私は、アドバイザリー・ボード・メンバーとして、USからロッドスミスを迎え、キーノート・スピーチの準備をするなど、このイベントを裏で支えてきました。Web 2.0 という単語の生みの親とも言えるティム・オライリー氏と、2日目のキーノートの直後にちょっとした会話をする機会を得ました。ティムはとてもフランクに、そして、楽しそうに会話してくれました。そのときの様子をIBMのXMLデータベース/Info 2.0 エバンジェリストである中林紀彦とともにお送りします。
    2007/11/19  
 
Castor によるデータ・バインディング: 第 1 回 Castor のインストールとセットアップ
データ・バインディング用にCastor をダウンロード、インストール、そして構成します。
    2007/11/13  
 
Javaの理論と実践: フォークを活用する、第 1 回
Java 7 で登場する java.util.concurrent パッケージに追加されているものの 1 つが、フォーク/ジョインのスタイルによる並列分割のフレームワークです。フォーク/ジョインによる抽象化では、さまざまなアルゴリズムを分解し、ハードウェアによる並列処理を効果的に活用するための機構が提供されています。このシリーズの次回の記事では、メモリー内のデータ構造に対する並列ソートや並列検索の操作を単純化することができる、ParallelArray クラスについて説明します。
    2007/11/13  
 
Java EE と Web 2.0 との出会い
標準 Java EE (Java Platform, Enterprise Edition 5) ベースの手法で開発した Web 2.0 アプリケーションはパフォーマンスとスケーラビリティーに関する深刻な問題に直面します。その理由は、同期 API の使用をはじめ、Java EE プラットフォーム設計の基礎となる多くの原則が、Web 2.0 ソリューションの要件には適用されないためです。この記事では、Java EE と Web 2.0 での手法の違いを解説し、非同期設計がもたらすメリットを検討するとともに、Java プラットフォームで非同期 Web アプリケーションを開発する際のソリューションをいくつか取り上げて評価します。
    2007/11/06  
 
Java の診断を IBM スタイルで: 第 4 回 分析モジュールで IBM Dump Analyzer for Java を拡張する
連載第 1 回目の記事では、フォーマット済みシステム・ダンプを分析して問題の診断を支援するツール、IBM Dump Analyzer for Java を紹介しました。このツールが非常に優れている点の 1 つは、独自の分析モジュールを作成して機能を拡張できることです。今回の記事では、Java プラットフォーム用 IBM 診断ツールに関する連載の締めくくりとして、アナライザーの作成方法を紹介します。独自のアナライザーを作成して、システム・ダンプの詳細を完全に把握し、Java コードを微調整するのに役立ててください。
    2007/10/23  
 
AjaxTags で Ajax 開発を容易にする
Web 2.0 の時代には、Web ベースのアプリケーションのユーザビリティーと応答性に関する開発者やユーザーの期待はずっと高くなっています。この 2 年間ほど岩の下に住んでいたのでもない限り、皆さんはAjax (Asynchronous JavaScript + XML) の手法について聞いたことがあるはずです。Ajax を使えば、洗練されていていて、応答性が良く、しかも非常に動的なブラウザー・ベースのユーザー・インターフェースを、ブラウザーがページをリロードせずに作成することができます。この記事では AjaxTags について見ていきます。AjaxTags は Java/JavaScript ライブラリーであり、JSP ページに Ajax の機能を容易に統合することができます。
    2007/10/23  
 
Java の診断を IBM スタイルで、第 3 回: Lock Analyzer for Java を使って同期とロックの問題を診断する
alphaWorks から入手できる IBM Lock Analyzer for Java は、実行中の Java アプリケーションで、ロックが起こっていないかをリアルタイムで監視するツールです。このツールを使うと、ロック競合の問題があり、アプリケーションのパフォーマンスを劣化させている可能性があるスレッドが明らかになります。開発者はこの情報を利用して、ロック競合が軽減するようアプリケーションを修正し、パフォーマンスを向上させることができます。今回の記事では IBM Lock Analyzer for Java を取り上げ、その基礎となるアーキテクチャーを説明するとともに、このツールの将来的な方向についての見解を紹介します。
    2007/10/16  
 
Ajax による JSF フォームの自動保存: 第 3 回
この連載の第 1 回では、Java 開発者である著者の Andrei Cioroianu が Ajax (Asynchronous JavaScript + XML) によって Web フォームのユーザー入力を送信し、JSF (JavaServer Faces) によって Ajax リクエストを処理する方法を説明しました。続く第 2 回では、サーバー側でのデータ管理を取り上げ、自動的に保存されたフォーム・データを維持するためのデータ・リポジトリーを紹介しました。3 回からなる連載の最終回となるこの記事で説明するのは、おそらく読者が想像する以上に巧妙な JSF フォーム・データのリストア方法です。興味深い JSF 手法として、JSF コンポーネントの immediate および onclick 属性を使用する方法、JSF リクエスト処理のライフ・サイクルのいくつかのフェーズを省略する方法、隠しフォーム要素を使って JSF リスナーを起動する方法を学んでください。この記事ではさらに、JSP/JSF 式を JavaScript コードに組み込む方法や JSF コンポーネントのレンダラーで生成された HTML フォーム要素と併せて JavaScript を使用する方法、そしてアプリケーション Bean のシリアライズおよびデシリアライズを行うサーブレット・コンテキスト・リスナーを実装する方法も説明します。
    2007/10/09  
 
XForms を Google Web Toolkit と統合する、第 3 回: GWT を使って XForms を作成する
この 4 回シリーズでは、GWT (Google Web Toolkit) と XForms とを組み合わせて動的な Web アプリケーションを作成する方法を説明します。第 1 回では、それぞれの技術について解説し、両者が JavaScript という基盤とどのような関係を持っているかを説明しました。第 2 回では、2 つのページを持つ小さなアプリケーションを作成する方法を説明しました。1 つのページは、レコード会社が管理するアーティストのリストを GWT を使って表示し、もう 1 つのページは、ある特定のアーティストが録音したアルバムを XForms を使って表示しました。第 3 回では、同じページで GWT と XForms を使い、それぞれの技術と JavaScript との関係を活用し、JavaScript を使って GWT と XForms との間の対話動作を実現します。
    2007/10/09  
 
Java の診断を IBM スタイルで、第 2 回: Extensible Verbose Toolkit を使用したガーベッジ・コレクション
IBM の新しいツール、Extensible Verbose Toolkit は、診断を支援し、メモリーに関連した Java パフォーマンス上の問題を分析することを目的に設計されています。4 回連載記事の第 2 回目では、このツールキットの入手方法と使用方法を説明し、Extensible Verbose Toolkit を使って一般的な問題を素早く診断する手順を実例で紹介します。
    2007/10/09  
 
XML と Java 技術: 基本に戻る
Brett McLaughlin が、文書構造から始まって、属性か要素か、という昔ながらの問題に至るまで、XML の基本のいくつかに立ち返ります。XML を最適化する方法を再び学び、いつも XML を最高の状態に保ちましょう。
    2007/10/09  
 
オブジェクトの安全な公開と実質上の不変性を組み合わせてパフォーマンスを改善する
複数のスレッドが可変のコレクションへのアクセスを共有できるようにする一般的な方法、つまりコレクションへアクセスする際の同期は、パフォーマンスのボトルネックになり得ます。この記事を読んで、頻繁に読み取られる一方、更新頻度の少ないデータ構造に対してこのボトルネックを最小限に抑える手法を学んでください。この手法は Java 5.0 以降で使用することができます。
    2007/10/02  
 
Java の診断を IBM スタイルで、第 1 回: IBM Dump Analyzer for Java の紹介
Java アプリケーションがますます複雑になった今、Java アプリケーションの問題を診断するのは容易なことではありません。場合によっては外部サービス組織との広範な作業も必要になってきます。そんななか、診断を正しい方向に導く指針があれば時間と経費の両面での節約になります。IBM Dump Analyzer for Java は、フォーマット済みシステム・ダンプで基本的な分析を行い、簡潔なレポートを生成して次に取るべき措置を示すツールです。
    2007/10/02  
 
Java SE 6 でのパフォーマンスの監視と診断
パフォーマンスに重点を置いた Java SE (Java Platform, Standard Edition) バージョン 6 では、アプリケーションの管理、監視用ツール、そして一般的な問題を診断するためのツールが拡張されています。この記事では Java SE プラットフォームにおける監視および管理の基礎を概説するとともに、それに関連する Java SE 6 での機能強化について詳しく説明します。
    2007/09/25  
 
XForms を Google Web Toolkit と統合する、第 2 回: アーティストとアルバムの管理フォームを作成する
この 4 回シリーズでは、GWT (Google Web Toolkit) と XForms とを組み合わせて動的な Web アプリケーションを作成する方法を説明します。第 1 回では、それぞれの技術の基盤としての JavaScript について調べました。第 2 回では、こうした JavaScript の基盤を使用して 2 つの技術を共存させ、ロック・スターのアプリケーションの作成を開始します。
    2007/09/25  
 
Acegi を使って Java アプリケーションをセキュアにする、第 3 回: Java オブジェクトのアクセス制御
Acegi Security System を紹介するこの 3 回連載の最終回では、Bilal Siddiqui が Java クラスのインスタンスへのアクセスをセキュアにする方法を説明します。Java クラスへのアクセスをセキュアにしなければならない理由、Spring が Java クラスのインスタンスを生成してセキュアにする仕組み、そして Java アプリケーションにクラスのセキュリティーを組み込むように Acegi を構成する方法を学んでください。
    2007/09/25  
 
Ajax による JSF フォームの自動保存: 第 2 回
連載「Ajax による JSF フォームの自動保存」の第 1 回では、Java 開発者である著者、Andrei Cioroianu が Ajax (Asynchronous JavaScript + XML) および JSF (JavaServer Faces) 技術を用いて、Web フォームを自動的に保存する Java アプリケーションを作成する手順を紹介しました。この手順に沿って、JavaScript と XMLHttpRequest を使ってフォーム・データを取得、エンコード、送信する方法、Ajax リクエストの処理に JSF リクエスト処理のライフ・サイクルを適応させる方法、JSF コンポーネント・ツリーから送信されたデータをサーバー側で取得する方法を理解できたはずです。3 回連載の 2 回目となるこの記事では、ブラウザー・セッション間で匿名ユーザーを識別する方法、複数のユーザーとページに対して自動保存されたフォーム・データを管理する方法、データ・リポジトリーを選択する方法、そしてスレッド・セーフの問題に対処する方法を説明します。
    2007/09/18  
 
コード品質を追求する: ビヘイビア駆動開発を舞台にした冒険
テスト駆動開発 (TDD) は実際には素晴らしいアイデアですが、一部には、テストという言葉に結び付けられた考え方の飛躍にどうしてもついていけないという開発者もいます。そこでこの記事では、より自然な形で TDD のこの考え方をプログラミング・プラクティスに取り入れる方法を紹介します。JBehave を使ったビヘイビア駆動開発 (BDD) を試して、結果ではなくプログラムの振る舞いに重点を置くと、どんな変化が生まれるのか自分自身で確かめてください。
    2007/09/18  
 
多忙な Java 開発者のための db4o ガイド: 配列とコレクション
コレクションと配列によって、「多忙な Java 開発者のための db4o ガイド: 単純なオブジェクトを越える」で最初に解説した構造化オブジェクトは、一層複雑なものになります。幸い、db4o は多重度を持った関係の処理にも問題なく対処できるので、皆さんも恐れる必要はありません。
    2007/09/18  
 
XForms を Google Web Toolkit と統合する、第 1 回: GWT の JSNI (JavaScript Native Interface) を紹介する
この 4 回シリーズでは、GWT (Google Web Toolkit) と XForms とを組み合わせて動的な Web アプリケーションを作成する方法を説明します。第 1 回ではまず、GWT と XForms とを組み合わせて使う場合の問題をボトムアップの方法で説明します。それぞれの技術の基盤をいくつか調べ、両者をうまく共存させるための共通基盤を検証します。こうした作業は、GWT と XForms の両方を使う Web アプリケーションを開発するための基礎となります。
    2007/09/18  
 
eJFace を使って組み込みアプリケーションを開発する
今後数年間はモバイル機器用アプリケーションの需要が増えると考えて間違いないでしょう。そんな今こそ、オープン・スタンダードの組み込み JFace ライブラリー、eJFace を学ぶにはちょうどいい時期です。組み込みアプリケーションの新しいビルド技術として登場した eJFace (embedded JFace) は eRCP (embedded Rich Client Platform) のコンポーネントの 1 つで、組み込みアプリケーションのユーザー・インターフェースを構成するための組み込み環境を開発者に提供します。この記事では eJFace を JFace と比較し、eJFace を使用してアプリケーションを開発する方法を紹介します。
    2007/09/11  
 
XML と Java 技術: 3 つのタイプの XML パーシスタンス
XML を利用すると、ありとあらゆる興味深いことができます。しかし XML をファイルに保持することができないと、すべては無駄になってしまいます。この記事では Brett McLaughlin が、XML のパーシスタンスに関するさまざまな戦略と、それぞれの長所、短所を解説します。
    2007/09/11  
 
Java プログラミングで XML サービス定義を操作する
SOA (Service-Oriented Architecture) は通常、一連のサービスをエクスポートします。XML サービスをモデル化し、さらにこれらのサービスをユーザー (人間、機械、あるいは他のサービス) が利用する上で、Java 技術は XML データを処理する強力な機構を提供してくれます。また SOA の概念を利用する上での重要な基礎でもあります。XML と Java 技術を利用した実用的な SOA の側面を調べ、この一見複雑に思える技術が、なぜこれほど人気が高いのかを示す明確な例を見つけましょう。
    2007/09/11  
 
動的言語を動的に呼び出す、第 2 回: 実行時にスクリプトを発見し、実行し、そして変更する
Java SE 6 に追加された Java スクリプト API、そして Java SE 5 との後方互換性によって、非常にさまざまな種類のスクリプト言語を、実行中の Java アプリケーションから単純で統一された方法で呼び出すことができます。この 2 回シリーズの記事の『第 1 回』では、この API の基本的な機能を紹介しています。第 2 回では、この API の強力さを、さらに詳しく紹介します。Ruby と Groovy、そして JavaScript で記述された外部スクリプトをプログラムの実行時に実行でき、また変更できることを説明し、それによってアプリケーションを停止して再起動せずにビジネス・ロジックを変更できることを示します。
    2007/09/11  
 
動的言語を動的に呼び出す、第 1 回: Java スクリプト API 入門
動的言語を Java アプリケーションで使用するために Java バイトコードにコンパイルする必要はありません。Java コードからは、非常にさまざまな種類のスクリプト言語を、単純で統一された方法で実行時に呼び出すことができます。そのためには、Java SE (Java Platform, Standard Edition 6) に追加され、Java SE 5 と後方互換性がある、スクリプト・パッケージを使います。2 回シリーズの第 1 回である今回は、Java スクリプト API の機能について紹介します。この記事では単純な Hello World アプリケーションを使いながら、Java コードがスクリプト・コードをどのように実行するか、また逆にスクリプトはどのように Java コードを実行するかについて説明します。第 2 回では Java スクリプト API の実力を掘り下げて解説します。
    2007/09/04  
 
Geronimo への転向: 統合パッケージを使用する: GlassFish JSTL 1.2 と Apache Geronimo 2.0
Apache Geronimo チームが、新しい話題の Java EE (Java Platform, Enterprise Edition) 5.0 仕様の実装に成功しました。Java EE 5 で注目に値する特徴の 1 つは、新規 JSTL (Java Standard Tag Library) 仕様です。JSTL 1.2 の鍵である統一式言語により、JSF (JavaServer Faces) と併せてJSTL 選り抜きの機能を使用できるようになります。連載「Geronimo への転向」では今回、Java Web 技術の歴史を振り返って JSTL 1.2 の重要性を説明し、Geronimo チームが JSTL 1.2 サポートを Geronimo に追加するために、どのように GlassFish JSTL 1.2 の実装を活用したかを紹介します。
    2007/08/28  
 
リッチ・クライアント・アプリケーションのパフォーマンス、第 2 回: メモリー・リークの修復
Eclipse リッチ・クライアントのパフォーマンスに関するこの 2 回連載記事の第 1 回では、アプリケーションのパフォーマンス測定、インスツルメンテーション手法の適用、UI の応答性維持、そして誤ったスレッド化を避けるための Job の使用についての基本を説明しました。第 2 回となる今回は、メモリー使用量に焦点を当て、メモリー・リークを突き止める方法を説明します。
    2007/08/07  
 
Java EE 5 の紹介
新たな Java EE 5 仕様、その大幅な機能拡張の数々、そしてこの仕様が WebSphere アプリショーンにとって何を意味するかを概説します。
    2007/08/01  
 
リッチ・クライアント・アプリケーションのパフォーマンス、第 1 回: パフォーマンス分析のツール、手法、そしてヒント
どんなに綿密に計画されたアプリケーションであっても、重大なパフォーマンス問題というのは持ち上がるものです。この 2 回連載の記事では、Chris Grindstaff がパフォーマンス問題を分析し、それに対処する手法を紹介します。第 1 回となる今回の記事では、Eclipse ベースの RCP (Rich Client Platform) アプリケーションのパフォーマンスを測定し、速度低下が CPU または I/O のどちらのボトルネックによって発生しているかを判断し、応答性を維持するために UI スレッドをアイドル状態にしておく方法を説明します。続く第 2 回ではメモリー問題を取り上げます。
    2007/07/31  
 
Java Web サービス: 第 3 回 Axis2 でのデータ・バインディング
Apache Axis2 Web サービス・フレームワークは、当初から複数の XML データ・バインディング手法をサポートするように設計されています。現行のリリースで完全にサポートしているのは、XMLBeans および JiBX データ・バインディング、そして Axis2 専用に開発されたカスタム ADB (Axis Data Binding) の手法です。この記事では、Axis2 でこれらの異なるデータ・バインディングを使用する方法を紹介するとともに、アプリケーションに応じてデータ・バインディングを使い分ける理由を説明します。
    2007/07/26  
 
Geronimo への転向: 統合パッケージを使用する: Codehaus の Woodstox
XML パーサーがハイパフォーマンスで堅牢なアプリケーションの鍵となることは珍しくありません。従来からの XML の構文解析手法には DOM (Document Object Model) と SAX (Simple API for XML) などがありますが、今や革新的な新しい構文解析手法が登場しています。それが、Java EE (Java Platform, Enterprise Edition) 5 仕様に統合されるほど有益な StAX (Streaming API for XML) です。Java EE 5 の完全実装である Apache Geronimo 2.0 でも、StAX パーサーとして Codehaus の Woodstox を組み込んでいます。今回の記事では、StAX の利点、そして Geronimo チームが StAX パーサーとして Woodstox を選んだ理由を説明します。
    2007/07/24  
 
Eclipse でとびきり快適にする Mac OS X Java の開発エクスペリエンス
Mac OS X は、Java 開発のための強力なプラットフォームです。Java 開発環境は Mac OS X にすっかり統合されていますが、Eclipse 統合開発環境 (IDE) を使えば、一貫したクロスプラットフォームな体験を実現する完全に統合された Java 開発環境を Mac OS X にもたらすことができます。この記事を読んで、Eclipse IDE を使用して既存の Xcode プロジェクトを Eclipse にインポートする方法、キーの割り当てを調整する方法、そして Eclipse を Mac OS X にバインドされた CVS (Concurrent Versions System) に統合する方法を学んでください。
    2007/07/24  
 
コード品質を追求する: Ajax アプリケーションのユニット・テスト
Ajax アプリケーションを作るのはワクワクすることですが、そのアプリケーションのユニット・テストには実に四苦八苦します。今回の記事で Andrew Glover が取り上げるのは、そんな Ajax のマイナス面 (マイナス面のひとつである)、非同期 Web アプリケーション特有のユニット・テストの問題です。彼が発見したように、Google Web Toolkit の助けを借りれば、この非同期 Web アプリケーションのコード品質の問題を思ったより簡単に解決することができます。
    2007/07/24  
 
XPath インジェクションによる危険を回避する
単純な XML API、Web サービス、そしてリッチ・インターネット・アプリケーション (RIA) が普及したことにより、構成ファイルからリモート・プロシージャー・コールに至るすべてのものに対して XML をデータ・フォーマットとして採用する組織が増えてきました。なかには、フラット・ファイルやリレーショナル・データベースの代わりに XML 文書を使っている人までいます。しかし、外部のユーザーに対してデータの実行依頼を許可する他のあらゆるアプリケーションや技術と同じく、XML アプリケーションはコード・インジェクションによる攻撃、具体的には XPath インジェクション攻撃を受けやすいものです。
    2007/07/17  
 
Geronimo 内部の Apache Pluto を管理する
Web 2.0 対応アプリケーションを開発するときには言うまでもなく、ポータルとポートレット技術による開発は身に付けていたい最新の手腕です。Apache Pluto プロジェクトは Java Portlet Specification のリファレンス実装で、元々は Java Community Process と JSR (Java Specification Request) 168 によって作成されました。Java Portlet Specification は、Java プログラミング言語で開発するポータルおよびポートレット・コンポーネントに関するガイドラインを定義しています。この仕様は現在、従来のポータルに関する世界共通の標準、そしてプラグ可能な Web アプリケーションを構築するためのフレームワークとして認められています。この Pluto プロジェクトと Apache Geronimo の Java EE (Java Platform, Enterprise Edition) プラットフォームとを組み合せることによって、ポータルとポートレットを使用してカスタマイズ可能かつ管理しやすいシステムをビルドできる、極めて柔軟で強力な環境が実現することを学んでください。
    2007/07/17  
 
XML と Java 技術: Sun の Java API と XML API は役に立つのか、それとも邪魔者なのか
長年 Brett McLaughlin の記事を読んできた人は、彼が SAX を好み、DOM はあまり好きではないことを知っているでしょう。彼がことさら快く思っていないことは、Sun がこれらの API をJAXP (の初期のバージョン) のようなパッケージの中にラップしてしまうだけではなく、最新バージョンの Java 技術と J2SE (Java 2 Platform, Standard Edition 1.2-1.4) が、ほとんど完全にこれらの API に取って代わろうとしていることです。
    2007/07/10  
 
万人のためのオートメーション: アーキテクチャー健全性のアサーション
皆さんのソフトウェア・アーキテクチャーは思い通りのものになっていますか? ソース・コードに関して言えば、お互いに伝達し合った設計が、必ずしも期待していたとおりに実現されるとは限りません。今回、Paul Duvall が再開する連載「万人のためのオートメーション」では、アーキテクチャー上の逸脱をそれが発生してから見つけるのではなく、JUnit、JDepend、そして Ant を使って作成したテストで事前に見つける方法を紹介します。
    2007/07/10  
 
Hamlet を実装する
Hamlet フレームワークは、Java サーブレットを拡張してコンテンツと表示を強制的に分離するために開発されました。この記事では、著者の Ren Pawlitzek が、このフレームワークをさらに進化させ、テンプレート・エンジンの洗練した使い方をすることで、動的コンテンツを提供するための、新しい方法を紹介します。
    2007/07/03  
 
Merlinの魔術: もう1つのシンプルなフレーム
AWT Frameクラスを変えることによって、タイトル・バーなどのプラットフォーム固有のウィンドウ装飾をプログラム上で隠すことや、フレームを最大化することができます。
    2007/07/01  
 
多忙な Java 開発者のための db4o ガイド: 単純なオブジェクトを越える
前回までは、db4o の中でオブジェクトを作成したり操作したりすることはとても簡単に見えました。実際のところ、少し簡単すぎるかもしれません。今回の記事では、熱狂的な db4o 支持者である Ted Neward が、単純なオブジェクトが、構造化オブジェクト (つまりオブジェクトを参照するオブジェクト) になった場合に何が起こるのか、また無限再帰やカスケーディング動作、参照整合性などの問題が発生した場合に何が起こるかについて説明します。
    2007/06/26  
 
Geronimo への転向: OpenEJB 3.0 の最新情報
J2EE (Java 2 Platform, Enterprise Edition) の仕様は Java 技術をエンタープライズ・アプリケーション開発における最高位の技術にのし上げました。その地位を守るべく長年進歩を重ねている Java 技術ですが、Java EE 5 (Java Platform, Enterprise Edition 5) の仕様では特に大きな飛躍を遂げています。OpenEJB は当初から Geronimo に欠くことのできない部分となっていましたが、その 3.0 リリースが Java EE 5 の仕様を Geronimo へ実装する際の中核となっています。今回の「Geronimo への転向」では、EJB (Enterprise JavaBean) 3 を支える原動力、そして OpenEJB が Geronimo に大胆な新機能を提供するまでに強化された過程を明らかにします。
    2007/06/26  
 
プロパティー・エディターの調整
JVEを利用していると、「自分のコンポーネントもJVEできちんと使いたい」と思うようになります。自分で作成したコンポーネントを共通部品のような形で再利用し、ビジュアル・エディターの上で活用するには、ツールそのものを拡張していく必要があります。今回から、JVEを拡張(改造)して、独自コンポーネントをビジュアルエディターに統合する方法を紹介していきます。
    2007/06/20  
 
JOLAP による複雑な分析型クエリーの実行
Shashank Tiwari が、Java エンタープライズ・プラットフォームでの OLAP (On Line Analytical Processing) データおよびメタデータの作成と管理をサポートする前途有望な仕様、JOLAP を紹介します。
    2007/06/19  
 
JOLAP による複雑な分析型クエリーの実行
Shashank Tiwari が、Java エンタープライズ・プラットフォームでの OLAP (On Line Analytical Processing) データおよびメタデータの作成と管理をサポートする前途有望な仕様、JOLAP を紹介します。
    2007/06/19  
 
Javaの理論と実践: volatile を扱う
Java 言語に元々含まれている同期機構として、synchronized ブロック (およびメソッド) と volatile 変数の 2 つがあります。どちらも、スレッド・セーフにコードを描画するために提供されています。2 つのうち、volatile 変数の方が同期の仕組みとしては強力でない (しかし場合によると、より単純、あるいはコストが安い) のですが、誤った使い方をしやすいものでもあります。今回の Java の理論と実践では、Brian Goetz が volatile 変数を正しく使うためのパターンをいくつか調べ、volatile 変数を適用できる限界について注意を促します。
    2007/06/19  
 
Cypal Studio for GWT を使って Ajax 開発をもっと簡単にする
GWT (Google Web Toolkit) を使えば、Java プログラマーが完全に Java プログラミング言語でリッチな Ajax (Asynchronous JavaScript + XML) アプリケーションを作成することができます。この GWT 構造の管理サポートするのが、Eclipse IDE 用に設計された Cypal Studio for GWT です。この記事を読んで、Cypal Studio for GWT が GWT モジュールの新規作成を支援する方法、そしてリモート・プロシージャー呼び出しをサポートして Web アプリケーションを簡単に表示、デプロイできるようにする仕組みを学んでください。
    2007/06/19  
 
第2回スーパー・カブロボ・コンテスト: 上級編(6)
約1ヶ月半に渡って紹介してきましたスーパー・カブロボ・コンテスト 上級編の紹介ですが、定期連載としてはいよいよ今回が最終回になります。今まではどちらかというと上昇する株や下落する株の選び方をテクニカル指標をベースにしたり、ファンダメンタル情報に基づきながら選別する方法を中心に紹介してきました。今回は少し視点を変えて、選別された株の注文方法を工夫するような投資ロボットを作ってみます。
    2007/06/15  
 
第2回スーパー・カブロボ・コンテスト: 上級編(5)
前回に引き続きファンダメンタル的な情報を元に投資を行うカブロボの例を紹介します。今回紹介するのは、PER や PBR といった個別銘柄の「お買い得感」を計算によって求めた上で、業績と比較して割安な、いわゆる「バリュー株」を探して売買する、というロジックをカブロボに実装してみます。
    2007/06/15  
 
リアルタイム Java、第 5 回: リアルタイム Java アプリケーションの作成とデプロイメント
リアルタイム Java を話題にした 6 回連載の第 5 回では、IBM WebSphere Real Time に用意されたツールを使ってリアルタイム Java アプリケーションを作成し、デプロイする方法を紹介します。サンプル・アプリケーションを例に、ガーベッジ・コレクションによる一時停止を制御する Metronome ガーベッジ・コレクター、ランタイム・コンパイルによる一時停止を回避するための AOT (Ahead-Of-Time) コンパイラー、そしてとりわけ厳しいタイミング要件に対応するための NoHeapRealtimeThread について説明します。
    2007/06/12  
 
Apache Pluto を組み込んだ Apache Geronimo に対してポートレットを作成し、デプロイする
ポートレットは、複数の場所にあるデータの集約や、異なるアプリケーションの統合を実現し、さまざまなユーザーのグループが協力する作業空間を提供するための、強力なツールです。Apache Pluto はポートレット仕様の参照実装であり、開発中のポートレットをテストするのに適しています。この記事は、Apache Geronimo サーバーの中に Pluto ポートレット・コンテナーをインストールし、構成するための方法について解説します。
    2007/06/12  
 
シームレスな JSF、第 3 回: JSF と相性のいい Ajax
JSF のコンポーネント・ベースの手法は抽象化を促進しますが、大抵の Ajax 実装は基礎となる HTTP 交換を公開するため、抽象化の妨げとなります。連載「シームレスな JSF」の最終回となるこの記事では、Dan Allen が Seam Remoting API と Ajax4jsf コンポーネントを使って、ブラウザー・サイドの Bean と通信しているかのようにサーバー上の管理対象 Bean と通信する方法を説明します。JSF イベント駆動型アーキテクチャーにふさわしい改善として Ajax を利用するのがどれほど簡単か、そして JSF コンポーネント・モデルに影響を与えずにこの改善を行う方法を学んでください。
    2007/06/12  
 
JavaOne 2007: Sun が再びクライアントに力を入れ始めています
作成されたコード、討議された言語拡張、そしてダンスするロボットに、大量消費されたビール。どれを取っても今年の JavaOne 開発者のカンファレンスは成功でした。Elliotte Rusty Harold が振り返ってみると、カンファレンス最大のニュースだったのは JavaFX Script を初めとするクライアント・サイドのイニシアチブです。Sun がクライアントに再び力を入れていることが、この先 1 年、Java ベースのリッチ・インターネット・アプリケーション開発でどんな意味を持つのか、この記事で読んでください。
    2007/06/05  
 
Apache Solr でもっと賢く検索する: 第 2 回 エンタープライズに対応した Solr
Solr の紹介を締めくくるこの記事では、Lucene Java のコミッター Grant Ingersoll が、管理インターフェース、高度な構成オプション、そしてキャッシング、複製、ロギングなどのパフォーマンス機能を含め、Solr のエンタープライズ向け機能を説明します。
    2007/06/05  
 
第2回スーパー・カブロボ・コンテスト: 上級編(4)
今回は一般的なテクニカル分析の範疇からはいったんはずれて、どちらかというとファンダメンタル的な情報を元に動作するようなカブロボの例を紹介します。具体的にはカブロボの SDK を利用して取得できる外国為替の情報を頼りに、輸出関連銘柄や輸入関連銘柄を売買する、というロジックを実装してみます。
    2007/06/01  
 
Eclipse 流のユニット・テスト
皆さんのレガシー・コードをテストする場合、そのソース・コード・ベースに対して実行するのに適したクラスを集めたテスト・スイートが必要でしょうか。jMock は、そうした目的に最適なテスト・フレームワークです。しかし、jMock はすべてのケースに最適とは限らず、特に jMock の想定外の方法でオブジェクトを作成しなければならない場合には最適とは言えません。アプリケーションの中でのユニット・テストをサポートするためにカスタムのモック・オブジェクト一式を作成する手間を避けるために、RMock を調整することで jMock をシームレスに扱うことができ、望ましい結果を得ることができます。
    2007/05/29  
 
Apache Solr でもっと賢く検索する: 第 1 回 基本機能と Solr スキーマ
Solr は Lucene をベースにしたエンタープライズ対応の検索サーバーで、ファセット検索、検索結果の強調表示、そして複数の出力形式をサポートします。Solr を紹介するこの 2 回の連載記事では、Lucene Java コミッターの Grant Ingersoll が Solr ならではの優れた全文検索機能を簡単に Web アプリケーションに取り込む方法を伝授します。
    2007/05/29  
 
Rational Application Developer V7 を使って JSR 168 連携ポートレットを作成し、デプロイする
IBM Rational Application Developer V7 で利用できる連携ポートレット (cooperative portlet) ツールについて、単純な連携アプリケーションを作成して IBM® WebSphere Portal 6.0 サーバーにデプロイしながら学びましょう。ここで示すサンプル・アプリケーションでは JSR 168 の JavaServer Faces ポートレットを中心に説明しますが、基本ポートレットと Struts ポートレットについても簡単に説明します。
    2007/05/29  
 
Apacheの戦士Geronimoが持つ実力: 第2回 WTPを使用したWebアプリケーション開発
前回は、Geronimoの導入と、アプリケーション開発環境となるEclipseとWeb Tools Platform(WTP)をインストールしました。今回は、WTPを使用して簡単なWebアプリケーションを開発する方法を紹介します。
    2007/05/25  
 
第2回スーパー・カブロボ・コンテスト: 上級編(3)
スーパー・カブロボ・コンテストの Java プログラミング上級編も第3回目を迎えました。前回は「過去の株価を取得する方法」を紹介しましたが、今回はこれを応用してカブロボ SDK で用意されていないテクニカル手法を実装したロボットを作ります。具体的には「サイコロジカルライン」というテクニカル手法を取り上げます。
    2007/05/25  
 
Apacheの戦士Geronimoが持つ実力: 第4回 GBean×DI徹底解剖
コンポーネントの疎結合化・再利用を促す手法であるDI(Dependency Injection)ですが、Geronimoカーネルの最大の特徴は、GBeanの取り扱いにこのDIの考え方を取り入れている点と言えるかもしれません。今回は、GBeanに活用されているDIの仕組みを紹介します。
    2007/05/25  
 
Apacheの戦士Geronimoが持つ実力: 第3回 GeronimoカーネルとGBeanアーキテクチャー
Tomcat、Jetty、ActiveMQ、OpenEJBなど、至難と思われたさまざまなオープンソースミドルウェアの柔軟な統合を実現したGeronimo。今回は、その統合を強力に支えるGeronimo特有の柔軟なアーキテクチャーを紹介します。統合用部品GBeanの疎結合連携を実現するDIカーネル機構などを通して、Geronimoが秘めた本当のポテンシャルを体験してみましょう。
    2007/05/25  
 
Apacheの戦士Geronimoが持つ実力: 第6回 Ruby on Geronimoを試す(後編)
J2EEアプリケーションサーバ「Apache Geronimo」の魅力に迫ってきた本連載も、いよいよ今回で最終回となります。今回は、RoGの実現を通して、GBeanの原理をより深く理解してください。
    2007/05/25  
 
Apacheの戦士Geronimoが持つ実力: 第1回 勇気を出してジェロニモとお近づきになってみる
J2EEアプリケーションサーバ「Apache Geronimo」が静かにブレイクの兆しを見せています。本連載では、このGeronimoの魅力に迫っていきます。まず、Geronimoの導入ポイントと、Eclipse+Web Tools Platformを使った開発の流れを紹介しましょう。
    2007/05/25  
 
Apacheの戦士Geronimoが持つ実力: 第5回 Ruby on Geronimoを試す(前編)
Geronimoでオープンソースミドルウェアの柔軟な統合を実現できるなら、独自のミドルウェアも統合できるはず! 今回は、統合の実例として、近年注目を集めるRubyのランタイム環境をGeronimo上に統合してみます。
    2007/05/25  
 
多忙な Java 開発者のための db4o ガイド: db4o を使ってデータベースをリファクタリングする
Java コードのリファクタリングはリレーショナル・データベースのリファクタリングよりもずっと簡単ですが、幸いにもオブジェクト・データベースの場合には、そうとも言えません。今回の「多忙な Java 開発者のための db4o ガイド」では、Ted Neward が、彼の好きなオブジェクト・データベースの、もう 1 つの利点を紹介します。つまり db4o によって、ほとんど取るに足らないと思えるほどリファクタリングを単純化できるのです。
    2007/05/22  
 
Atom の署名と暗号化、そして暗号化解除
Atom は情報を中継するためには優れたフォーマットですが、セキュリティーの懸念はないのでしょうか。XML デジタル署名は、データが信頼できる相手から来たものであること、そして変更されていないことを保証します。また XML 暗号化は、機密情報が盗み見られないように防ぐことができます。しかしこうした技術を、Atom の構造を破壊せずに使うにはどうすべきなのでしょう。この記事では、Apache Abdera API を使うことによって、Atom データにデジタル署名と暗号化を容易に適用する方法を説明します。
    2007/05/22  
 
Apache Derby を使用した開発 ― 3 連単を当てる: Apache Derby を使用した開発 ― 3 連単を当てる: Apache Derby を使用した Java データベース開発、パート 5
Apache Derby データベース・アプリケーションで準備済みステートメントを使うときに利用できる拡張機能について学んでください。まず初めに、ij ツールで動的に PreparedStatement を実行して迅速なプロトタイプ化を有効にします。続いてデータを PreparedStatement に流し込んで大量のデータを特定の列に効率的に挿入する方法、そして ParameterMetaData オブジェクトを使って、ベンダー固有の実装詳細をはじめ、PreparedStatement に含まれる個々のパラメーターに関する情報を取得する方法を説明します。
    2007/05/22  
 
テストファーストによるソフトウェア開発の衝撃(前編)
皆さんはテストの本質を理解されていますか? 実は、テストには機能検証をするということ以上に重要な役割があるのです。本稿では、テストファーストがソフトウェアアーキテクチャーに及ぼす多大な影響について説明します。
    2007/05/18  
 
テストファーストによるソフトウェア開発の衝撃(後篇)
テストファーストがソフトウェアアーキテクチャーに及ぼす多大な影響について説明する本稿。後編では、「究極の仕様書」と言っても差し支えないであろう受け入れテストについて触れたいと思います。
    2007/05/18  
 
第2回スーパー・カブロボ・コンテスト: 上級編(2)
スーパー・カブロボ・コンテストの Java プログラミング上級編の第2回目である今回は、「過去の株価を取得する方法」を紹介します。
    2007/05/18  
 
理論的・計画的なWebアプリケーションのテストの実現: Mercury QuickTest Professionalを使ったテスト
オープンソースの機能テストツールであるJameleonを使ったWebアプリケーションのテスト作成とは別に、今回は、商用製品である「QuickTest Professional 9.0」を用いて同様の内容を行ってみます。
    2007/05/18  
 
テスト: Jameleonを使った理論的・計画的なWebアプリケーションのテストの実現
Jameleon 3.3-M4を使ってJameleonの機能を説明していきます。まずはサンプルスクリプトで行われている内容を解説した後、実際にテストスクリプトを作成してみましょう。
    2007/05/18  
 
第2回スーパー・カブロボ・コンテスト: 上級編(1)
スーパー・カブロボ・コンテストに Java ロボットで参加を検討している皆さんからより高度な投資アルゴリズムの実装方法の紹介についてのご意見を多くいただております。そこで IBM developerWorks のカブロボサイトでは、改めて「上級編」として、カブロボ SDK のより高度な使い方を紹介していくことにします。まず第一回目はカブロボ SDK で用意されているテクニカル指標の使い方を紹介します。
    2007/05/11  
 
リアルタイム Java、第 4 回: リアルタイム・ガーベッジ・コレクション
Java の技術がリアルタイム (RT) 開発に適した環境となるのを妨げていたのは従来のガーベッジ・コレクション (GC) の確定性のない一時停止ですが、そんな Java 言語で確定性のある GC 動作を実現するのが、IBM WebSphere Real Time の一部となっている Metronome GC です。Metronome を他の機能と組み合わせれば、開発者は Java 言語でハード RT アプリケーションを作成することができます。今回の記事では、Metronome が確定性のある GC のために使用する手法、Metronomeの開発に伴う技術的問題、そしてGC を調整するために用意されているツールと機能について説明します。
    2007/05/02  
 
新入学生/新社会人応援企画: 第1回 ディストリビューションの選び方、試し方
春は出会いと別れの季節。入学や就職で、新しい生活を始める人も多いでしょう。そこで本連載では、新入学生/新社会人応援企画として、オープンソースで作る環境構築を解説していきます。また、デスクトップ環境のほか、新しくプログラミングを始める人のために、Web/Java開発の第一線でいまどのように環境が使われているかを紹介します。
    2007/04/27  
 
第2回スーパー・カブロボ・コンテスト: 予習編(7)
予習編の最後である今回は、作成したロボットをコンテストに登録して、更には正しく動作するかどうかのテストを行うまでの手順を紹介します。この手順を行うことでスーパー・カブロボ・コンテストに参加登録をすることになります。
    2007/04/27  
 
第2回スーパー・カブロボ・コンテスト: インタビュー編(4)
カブロボの達人に聞くインタビュー企画を続けてきましたが、第四弾となる今回はいままでとは少し趣向を変えて、カブロボに参加する側ではなく、プロジェクトに携わる側からの見解を伺うべく、早稲田情報技術研究所の代表取締役社長でもある加藤浩一様にインタビューを行いました。コンテスト全般のことから、参加するための要件など、気になる内容を伺ってきました。
    2007/04/27  
 
日本 Java ユーザグループ結成総会/記念講演会 ウェブレポート
Java が生まれて今年で 12年。日本におけるJava技術の一層の向上・発展と 普及・活性化をめざし、コミュニティが立ち上がりました。その名も、日本 Java ユーザグループ (Japan Java User Group: JJUG(ジェイ・ジャグ))。結成の記念講演会・総会に2007年4月23日出席してきました。
    2007/04/25  
 
リアルタイム Java、第 3 回: スレッド化と同期
リアルタイム Java を話題にした 6 回連載の第 3 回では、RTSJ (Real-time Specification for Java) 実装のサポート要件であるスレッド化と同期の特徴について検討します。また、リアルタイム・アプリケーションを開発してデプロイする際に念頭に置くべき重要なスレッド化および同期に関連する考慮事項についても取り上げます。
    2007/04/24  
 
レガシーなやり方を高度な GWT コントロールに導く
GWT (Google Web Toolkit) は、Java プログラミング言語で Ajax アプリケーションを開発するためのライブラリーやツールを提供しています。しかし残念なことに、GWT の標準 UI コントロール (ウィジェット) のギャラリーは、最近のエンタープライズ・アプリケーションで要求される高度な機能を提供していません。この記事は、この高度な機能を提供するための手法を説明します。比較的単純なコーディングによって一般的な JavaScript グリッド・コンポーネントと GWT アプリケーションとを統合することで、GWT コントロールに高度な機能を持たせる方法を学びましょう。
    2007/04/24  
 
作って学ぶ、今どきのWebサービス: 第7回 Webアプリケーション開発にチャレンジ(後編)
PerlによるWebプログラミングの基礎から応用まで解説してきた本連載の締めくくりとして、今回は、これまで学んだことを踏まえた上で、実際にWWW::OpenSearchを使ってアプリケーションを組み立てていきましょう。
    2007/04/20  
 
第2回スーパー・カブロボ・コンテスト: 予習編(6)
前回までの紹介でゴールデンクロス・デッドクロスにあわせた売買や、ポジション管理の手法を紹介しましたが、今回は空売りに挑戦します。残念ながら(ある意味、健全なことではありますが)株式相場は右肩上がりとは限らず、全般的なトレンドが下落基調になる時もあります。そんな中での投資で利益を得ようとすると、全般的には下落的な中でも成長する銘柄を見つけ出すか、或いは空売りのポジションを取って下落を利益に結びつける必要があります。前者が分かれば苦労はしませんので、今回は後者を紹介します。
    2007/04/20  
 
リアルタイム Java、第 2 回: コンパイル技術を比較する
リアルタイム Java についての 5 回連載の第 2 回では、Java 言語でのネイティブ・コードのコンパイルに伴う問題について取り上げます。動的コンパイル (Just-in-time) も、静的コンパイル (Ahead-of-time) も、単独では Java アプリケーションのすべての要件に適合できません。そこで、著者がこの 2 つのコンパイル技術をさまざまな実行環境で比較し、それぞれが互いの長所をどのように生かすかを説明します。
    2007/04/17  
 
Apache Derby を使用した開発 ― 3 連単を当てる: Apache Derby を使用した Java データベース開発、パート 4
SQL カーソルの概要、そして SQL カーソルを使用して Apache Derby データベースで動的にデータを変更する方法を学んでください。SQL カーソルは、ij ツールを使って明示的に使用することも、該当する Java メソッドを呼び出して暗黙的に使用することもできます。この機能をマスターすれば、ビジネス・アプリケーションに合わせて選択的にデータを変更可能な Java アプリケーションを作成できるようになれるはずです。
    2007/04/17  
 
シームレスな JSF、第 1 回: JSF 用にあつらえたアプリケーション・フレームワーク
JSF (JavaServer Faces) は Java Web アプリケーション向けに初めて標準化されたユーザー・インターフェース・フレームワークです。この JSF を拡張する強力なアプリケーション・フレームワークが、Seam です。この 2 つのフレームワークの絶好の相性について、新しい 3 回連載の第 1 回目となるこの記事で学んでください。Dan Allen が、コンテキストに依存した状態管理、RESTful な URL、Ajax remoting、適切な例外処理、そして構成上の規約など、Seam が持つ JSF ライフ・サイクルの拡張機能を紹介します。
    2007/04/17  
 
第2回スーパー・カブロボ・コンテスト: インタビュー編(3)
カブロボの達人に聞くインタビュー企画も今回が第三弾になります。今回は第一回スーパー・カブロボ・コンテストにおいて、過去9年分のバックテスト環境での運用成績が第一位となったロボットの作者である岡崎裕史さんをお迎えしました。岡崎さんの開発されたロボット「わらしべロジック」は仮想の資本金 5000 万円を9年間でなんと14倍以上となる7億円を超えるまでにする、という驚異的な成績をたたき出したロボットです。この秘密を伺ってきました。
    2007/04/13  
 
第2回スーパー・カブロボ・コンテスト: 予習編(5)
極端な言い方をすれば、どの銘柄をいつ買ったとしても、その段階では大きなリスクはありません。問題は「買った銘柄をどのように決済するか」です。利益だけを求める投資が理想ですが、現実にはそうはいかないこともありますので、「どのレベルで損切を行うか」といったリスク管理を実装するロボットの作り方を今回のテーマとしてみます。
    2007/04/13  
 
第2回スーパー・カブロボ・コンテスト: 予習編(3)
今回は株式を買う際の銘柄選定というロジックをカブロボに実装する例を紹介します。
    2007/04/11  
 
第2回スーパー・カブロボ・コンテスト: 予習編(1)
2007年春に第2回スーパー・カブロボ・コンテストが開催予定です。今のうちにロボットを作って準備しておきたい、よく分からないけど「投資のロボット」って面白そう、そんな皆さん必見の情報を IBMより(フライング気味に)いち早くお送りします。
    2007/04/11  
 
リアルタイム Java、第 1 回: リアルタイム・システムに Java 言語を使用する
リアルタイム Java に関する 5 回連載の第 1 回目となるこの記事で取り上げるのは、Java 言語を使用してリアルタイム・パフォーマンス要件を満たすシステムを開発する際にキーとなる課題です。まず全体像を取り上げ、リアルタイム・アプリケーションを開発するという意味、そしてリアルタイム・アプリケーションの要件を満たすランタイム・システムの設計方法を説明します。5 人の著者が紹介する実装は、標準ベースの技術を組み合わせてリアルタイム Java という難問に対処します。
    2007/04/10  
 
境界を越える: Rails のケース・スタディー
Ruby on Rails による開発と Java™ による開発とは根本的に異なります。「境界を越える」シリーズの最終回である今回は、Bruce Tate が、複雑でスケーラブルな Web サイトをゼロから開発する際に Rails を使う中で発見した、両者の主な違いを概説します。
    2007/04/10  
 
Apache Geronimo で Apache Pluto ポータル・アプリケーションを開発し、デプロイする
Apache Geronimo の機能セットにはあらかじめポータル・サーバーが統合されてはいませんが、Geronimo をポータル・アプリケーションのテストと開発用の環境として使うことができます。この記事では、Apache Pluto のドライバーとコンテナーを Geronimo にデプロイする手順をステップごとに追いながら、ポータル・アプリケーションのための 100% オープンソースの環境を実現します。そして Pluto と Geronimo でサンプルのポータル・アプリケーションを開発し、デプロイし、テストするための方法を学びます。
    2007/04/10  
 
第2回スーパー・カブロボ・コンテスト: 予習編(4)
前回の紹介記事では、ゴールデンクロスによって購入する銘柄の選別を行う例を紹介しました。ただ、せっかく上昇が見込める株を選別して買ったとしても、ただやみくもに決済しては選別した意味も半減してしまいます。今回は前回の続きとして、決済するタイミングを調整する例を紹介します。
    2007/04/06  
 
第2回スーパー・カブロボ・コンテスト: インタビュー編(2)
カブロボの達人に聞くインタビュー企画の第二段を紹介します。今回は第一回スーパー・カブロボ・コンテスト期間中における運用成績が第一位となったロボットの作者である伊本晃暉さんにインタビューしました。伊本さんは最優秀ロボットの作者 10 名中、唯一汎用ロボットで参加されたこともあり、その辺りも伺ってみました。
    2007/04/06  
 
ICPCレポート: 最終決戦!ACM国際大学対抗プログラミング・コンテスト
3月15日、ヒルトン東京ベイ東京ディズニーリゾートにて『ACM国際大学対抗プログラミング・コンテスト』の最終決戦が行われました。午前8時。これから5時間に渡って繰り広げられるバトルの会場に、選手たちが入場。6大陸82カ国の中の、1756大学6099チームから勝ち残った88チーム。264名の顔には闘志と自信が漲り、会場の音楽、歓声、拍手がさらに選手たちを鼓舞する。午前8時15分、プログラミングのワールドカップ、あるいはオリンピックとも言える大会が、いよいよスタートを切りました。
    2007/04/06  
 
イベント作成を容易にする Muse と WEF
Web Services Distributed Management (WSDM) Event Format (WEF) は、システム管理関連のイベントを XML 形式でシリアライズする方法を記述した OASIS 標準です。この標準は、指定が必須な値、任意指定の値、およびそれぞれの意味構造を詳細にカバーしていますが、実際のシステムの実装方法については説明していません。しかし幸いなことに、Apache Muse プロジェクトには WEF が実装されており、単純な Java API を使用して WEF イベントを作成、送信、および受信することが可能です。この記事では、Apache Muse アプリケーション内からこれらの処理方法について解説します。
    2007/04/03  
 
コード品質を追求する: Selenium と TestNG を使ったプログラムによるテスト
Selenium は、Web アプリケーションでのユーザー受け入れテストを簡単に実行できるテスト用フレームワークです。Andrew Glover が今月紹介するのは、この Selenium のテストを、TestNG をテスト・ドライバーとして使い、プログラムによって実行する方法です。TestNG の柔軟なテスト機能 (パラメーターを使ったフィクスチャーを含め) を Selenium 固有のツールキットに加えれば、後は DbUnit と Cargo の助けをほんの少し借りるだけで、完全に自動化した、しかも論理的に反復可能な受け入れテストを作成できます。
    2007/04/03  
 
第2回スーパー・カブロボ・コンテスト: インタビュー編(1)
第一回スーパー・カブロボ・コンテストにて IBM 特別賞を獲得された大阪府立大学大学院の長尾優さんにインタビューしました。長尾さんは最優秀ロボットの作者 10 名中、唯一の現役(修士)学生さんでもあります。このインタビューは 2007 年3月15日に実施しました。
    2007/03/30  
 
developerWorksの歩き方 第1回
現場で使える技術を求めて日々Webサイトを巡回する技術者は多い。国内ではコアな情報を扱うサイトや雑誌が少ないが、developerWorksには多くの有益な情報が存在している。本連載では、developerWorksを徹底的に活用するためのガイドを提供します。
    2007/03/30  
 
作って学ぶ、今どきのWebサービス: 第6回 Webアプリケーション開発にチャレンジ(前篇)
本連載ではこれまで、PerlによるWebプログラミングの基礎から応用まで解説してきました。今回は、これまで学んだことを踏まえた上で、Webサービスを使ったWebアプリケーション開発にチャレンジします。
    2007/03/30  
 
作って学ぶ、今どきのWebサービス: 第4回 Webサービスって実はこんなに簡単
前回まで3回に渡って、PerlにおけるWebプログラミングの基礎を解説してきました。今回は一歩進めて、より実用的なアプリケーションを作るため、その足がかりとなるであろうXML Webサービスの使い方について解説していきたいと思います。
    2007/03/30  
 
developerWorksの歩き方: 第2回 ゾーンを巡る
前回は、日本語による技術情報が集約された「IBM developerWorks」を紹介しました。今回は、developerWorksにはどういったコンテンツがどのように配置されているのかを紹介します。
    2007/03/30  
 
developerWorksの歩き方: 第3回 トレンドをつかむ
developerWorksのコンテンツを十分に味わうには、外部のサービスなども活用した方がいいでしょう。今回は、RSSやソーシャルブックマークを活用してdeveloperWorksの人気記事をチェックしていきます。
    2007/03/30  
 
作って学ぶ、今どきのWebサービス: 第5回 Amazon Webサービスを料理してみる
Webサービスを使いこなすといっても、Web検索の機能をアプリケーションに統合するだけでは、いまいち面白みがありません。今回は、Amazon.comが提供するAmazon Webサービスを料理してみましょう。
    2007/03/30  
 
100 パーセント、サーブレット: ビューについて考え直す
動的コンテンツを持つ Web ページで開発者とUI 設計者のコンサーンを分け隔てる方法としては、JSP (JavaServer Pages) 技術が大々的に勧められていますが、残念ながら JSP は多くの設計者にとってあまりにも複雑すぎます。そのため Java 開発者が自ら JSP コードを処理するはめになりがちですが、その結果は大抵の場合、満足できないものです。そこでこの記事では、代わりとなる型破りな方法がもたらす利点を紹介します。その方法とは、単純なヘルパー・オブジェクトを使ってサーブレットにのみ基づいた Web インターフェースをビルドするというものです。
    2007/03/27  
 
多忙な Java 開発者のための db4o ガイド: クエリー、更新、そして ID
データを探し出して、取得するための主要な機構として、RDBMS は SQL を使いますが、OODBMS では、いくつかの異なる機構の中から 1 つを選んで使うことができます。Ted Neward によるシリーズ第 2 回目の今回は、そうした機構の例として、Query by Example や OODBMS 特有のカスタム機構などのオプションを紹介します。これから彼が説明するように、SQL に代わる方法のいくつかは、SQL そのものよりも簡単に使うことができます。
    2007/03/27  
 
dW が Jolt Hall of Fame 賞を受賞。dW の著者、Booch、Ambler も受賞の栄誉に輝きました
シリコン・バレーの SD West コンファレンスで先週開催された第 17 回 Annual Jolt Product Excellence Award (「業界のオスカー」と呼ばれています) 授賞式で、IBM developerWorks が Jolt Hall of Fame 賞を受賞しました。この賞は、ソフトウェア開発業界で製品あるいはリソースに与えられる最高の栄誉とされています。
    2007/03/27  
 
Acegi を使って Java アプリケーションをセキュアにする、第 1 回: アーキテクチャーの概要とセキュリティー・フィルター
この 3 回からなる連載記事で紹介するのは、Java エンタープライズ・アプリケーションのための非常に優れたオープン・ソース・セキュリティー・フレームワーク、Acegi Security System です。第 1 回目のこの記事では、Bilal Siddiqui が Acegi のアーキテクチャーとコンポーネントを取り上げ、Acegi を使用して単純な Java エンタープライズ・アプリケーションをセキュアにする方法を紹介します。
    2007/03/27  
 
第2回スーパー・カブロボ・コンテスト: 予習編(2)
前回はカブロボをプログラミングするための準備作業の手順を紹介しました。前回の内容を一通り済ませていない方は、以下を参照する前に前回の内容を参照しておいてください。では何はともあれ「習うより慣れろ」ということで、実際にカブロボを作ってみましょう!
    2007/03/23  
 
Axis2 と JiBX を使って Java クラスを Web サービスに変換する: 第 2 回 XML を完全機能の Web サービスに変換する
XML は、ほとんど何についてでも定義できるという意味で強力です。しかも、大部分のアプリケーションにとって、特にこのシリーズの目的である Axis2 と JiBX にとっては、外部から読み取り可能なフォーマットの基本でもあります。それに加え、Web サービスがより一般的になってきたため、レガシーの Java(TM) プロジェクトを完全機能の Web サービスに変換することの緊急度が次第に高まっています。これまで、Web サービスの自動生成は 1 つのサービスや1 つのクラスに限定されていましたが、現在では、既存のプロジェクトの中にあるさまざまな Java クラスから 1 つ以上のサービスを生成するという選択肢があります。この記事は 2 回シリーズの第 2 回として、Axis2 と JiBX を使って、XML から、そして既存の Java クラスから、完全機能の Web サービスへの移行を行います。
    2007/03/22  
 
多忙な Java 開発者のための db4o ガイド: 紹介と概要
このシリーズ記事の第 1 回では、db4o を紹介し、今日のリレーショナル・データベースに対する重要な代替手段となった理由を説明します。
    2007/03/20  
 
Axis2 と JiBX を使って Java クラスを Web サービスに変換する: 第 1 回 XML を使って Java クラスから Web サービスを定義する
XML は、ほとんど何についてでも定義できるという意味で強力です。しかも、大部分のアプリケーションにとって、特にこのシリーズの目的である Axis2 と JiBX にとっては、外部から読み取り可能なフォーマットの基本でもあります。それに加え、Web サービスがより一般的になってきたため、レガシーの Java プロジェクトを完全機能の Web サービスに変換することの緊急度が次第に高まっています。これまで、Web サービスの自動生成は 1 つのサービスや1 つのクラスに限定されていましたが、現在では、既存のプロジェクトの中にあるさまざまな Java クラスから 1 つ以上のサービスを生成するという選択肢があります。この記事は 2 回シリーズの第 1 回として、XML を使って既存の Java クラスから Web サービスを定義します。
    2007/03/20  
 
JavaScript での有限状態マシン: 第 3 回 ウィジェットをテストする
この連載では、有限状態マシンを使用して、単純な Web ウィジェット(ビューでフェードイン、フェードアウトする動画化されたツールチップ) の複雑な振る舞いを体系づけて設計する方法を説明しています。作成されるコードはコンパクトかつ簡潔でロジックもわかりやすく、その動画は負荷の高いプロセッサーでも滑らかに動作するものとなります。
    2007/03/13  
 
境界を越える: Rails での拡張
Java プログラミング言語は長年の間、エンタープライズ・ライブラリー統合のための依存性注入コンテナーから EJB (Enterprise JavaBeans) 技術に至るまで、そして Eclipse 用のコンポーネント・モデルに至るまで、表現力豊かで強力な統合機能を持つ、偉大な「るつぼ」でした。非常に多くの概念やアーキテクチャーがあるため、Java開発者は、本質的に異なるソフトウェア・ライブラリーやコンポーネントをつなぎ合わせ、まとまりを持ったものとするための新しい方法を開拓してきました。しかし、優れた統合技術を持っているのは Java 開発者だけではありません。この記事では、Ruby on Rails のプラグインの動作について、一般的なプラグインを調べながら説明していきます。
    2007/03/13  
 
UIMA 101 後編 - テキスト分析エンジンを開発する
前編ではUIMAの概要を紹介して、UIMA SDKに付属のサンプルからテキスト分析エンジンがどのように構成されているかを見てきました。後編ではEclipse上でテキスト分析エンジンを開発する手順を紹介します。
    2007/03/09  
 
UIMA 101: 前編 - UIMAことはじめ
世の中にひしめく多数のデータのうち8割は構造化されていないデータ(非構造化データ)として存在していると言われています。UIMAはこれらの非構造化データの取り扱いに対して、IBMが示した解のひとつです。本稿ではUIMAの概要を紹介すると共に、サンプルのテキスト分析エンジンを動かしながらUIMAコンポーネントの構成を解説します。
    2007/03/09  
 
Little-G: アプリケーション・サーバーをコンパクトにする
単純なアプリケーションをビルドしたものの、アプリケーションのデプロイメントには大掛かりなアプリケーション・サーバーを使わなければならなかったという経験は何度ありますか。Java EE (Java Platform, Enterprise Edition) の機能のうち、通常使用している機能は何パーセントかご存知でしょうか。私が推測するところ、10% そこそこでしかありません。代表的な例として、Apache Geronimo は安定したオープン・ソースの J2EE (Java 2 Platform, Enterprise Edition) 1.4 認定アプリケーション・サーバーですが、機能満載で持て余すほど巨大です。そこで、Apache の関係者は Web アプリケーション用に単純で軽量ながらも十分役目を果すコンテナーをビルドするという目的で、オリジナルの Geronimo アプリケーション・サーバーから余分な機能を取り除いた最小構成バージョンを作成しました。それが、Apache Geronimo Little-G です。Little-G は J2EE 認定アプリケーション・サーバーではありませんが、完全な Web コンテナー、トランザクション・マネージャー、データベース接続をはじめ、よく使用されている J2EE 準拠の機能をほとんど備えています。この記事では、Little-G の機能を紹介し、Web アプリケーションを Little-G 上でデプロイして実行する方法を説明します。
    2007/03/06  
 
Geronimo への転向: Spring Framework を使って、データ・アクセスと構成の問題を軽減する
典型的な開発者であれば間違いなく、データ・アクセスの問題へのソリューションを歓迎して、構成を楽にするためのツールなら何でも喜んで採り入れるはずです。けれども Web アプリケーション全般の話、そしてデータ・アクセスの問題についての具体的な話をスムーズに進めるには、誰かにどこかの時点で Spring について説明してもらわないわけにはいきません。そもそも他の Web アプリケーション・フレームワークは本当に必要なのでしょうか。私が連載「Geronimo への転向」で Apache Geronimo と Spring の共通部分を取り上げた記事を書こうと決めたのは、Spring Framework フレームワークの人気の全容を突き止める潮時だとわかっていたからです。そこで私の質問攻めに遭ったのは、Jeff Genender です。
    2007/02/27  
 
Google Web Toolkit、Apache Derby、Eclipse を使用して Ajax アプリケーションをビルドする 第 4 回: デプロイメント
この連載ではこれまで 3 回の記事で、GWT (Google Web Toolkit) を使って単純ながらも機能的な Web アプリケーションをビルドしました。今までは、GWT のホスト・モードを使用して、このアプリケーションを編集し、デバッグしてきました。そのため、Java 開発ツール内で Web サーバー環境をシミュレートできましたが、残念ながらすべてのユーザーにこの Web アプリケーションを実行するためだけに Eclipse をダウンロードしてもらうのは、現実的ではありません。そこで連載 4 回目となる今回の記事では、Java Web アプリケーション・サーバー内で GWT をデプロイする方法と、Apache Derby データベースを使って GWT を動作させる上でのヒントを紹介します。
    2007/02/27  
 
コード品質を追求する: TestNG-Abbot による GUI テストの自動化
TestNG-Abbot は、GUI コンポーネントのテスト方法に新風を吹き込むテスト用フレームワークです。今月は Andrew Glover が、TestNG-Abbot による GUI テストで最も難解な部分、つまりユーザー・シナリオがどのように展開するかを把握すること、について説明します。これさえ理解してしまえば、このフレームワークの便利なフィクスチャー・オブジェクトを使って GUI コンポーネントを分離して検証するのが、どれほど簡単であるかがわかるはずです。
    2007/02/27  
 
Javaの理論と実践: Java 5 の言語機能を以前の JDK で使う
Java 5 には、Generics や列挙、アノテーション、Autoboxing、そして拡張 for ループなど、いくつかの強力な言語機能が追加されています。しかし多くの職場では相変わらず JDK 1.4 やそれ以前のバージョンが使われており、今後もしばらく、それが続くかもしれません。しかしそうした職場の開発者も、Java 5 以前の JVM へのデプロイを続けながら、こうした強力な言語機能を利用できるのです。今回の「Java の理論と実践」では、久しぶりに戻ってきた Brian Goetz が、そのための方法を解説します。
    2007/02/27  
 
緩い不変性モデルを実装する
不変オブジェクトは、スレッド・セーフなソフトウェアを書く上で大いに役立ちます。Java™ 言語では、不変性を保証するための基本的な機構として final フィールドを使います。しかし final フィールドはコンストラクターで設定する必要があり、しかも場合によると、この要求は厳しすぎることがあります。この記事では、もう少し制限の緩い不変性モデルを効率的に実装するための方法として、通常のキャッシュ・フィールドを使う方法を説明します。キャッシュ・フィールドの値には、同期を行わなくても安全にアクセスできるのです。
    2007/02/20  
 
Apache Derby を使用した開発 ― 3 連単を当てる: Apache Derby を使用した Java データベース開発、パート 3
Java プログラムから Apache Derby データベースを変更する方法を学んでください。今回は連載の前の 2 回の記事を基に、Java アプリケーション内から Apache Derby データベースのテーブルを作成および削除する方法、データを挿入、更新、削除する方法を説明します。また、JDBC の Statement および <code>PreparedStatement</code> クラスの使用方法、そして SQL バッチによってパフォーマンスを改善する方法も取り上げます。
    2007/02/20  
 
Apache Geronimo の JNDI ネーミングおよび Java リソース接続プール、第 3 回: メール・セッション
この連載ではこれまで、データ・ソース接続と JMS (Java Message Service) リソース・グループを作成し、それぞれが Apache Geronimo および JNDI (Java™ Naming and Directory Interface) とどのように連動するかを説明してきました。4 回連載の第 3 回目となるこの記事では、Apache Geronimo、JNDI、メール・セッションが相互に作用する仕組みについて取り上げます。単純な Geronimo アプリケーションで JNDI を使ってメール・セッションを作成する方法、そしてメール・セッションにアクセスする方法を紹介します。
    2007/02/13  
 
Google Web Toolkit、Apache Derby、Eclipse を使用して Ajax アプリケーションをビルドする 第 3 回: 通信
この連載ではこれまで 2 回の記事で、GWT (Google Web Toolkit) と Apache Derby リレーショナル・データベースによる単純な Web アプリケーションの作成方法を紹介してきました。第 1 回では、GWT を使用して Slicr というピザ宅配システムのフロントエンドをビルドする方法に焦点を当てました。第 2 回では、Derby を使って実際にリレーショナル・データベースを作成し、データベースの行を Java オブジェクトに変換するメカニズムの基本を説明しました。話がいよいよ面白くなってきたところで、第 3 回となるこの記事では、クライアントとサーバーを互いに対話させる方法を説明します。GWT 内のリモート・プロシージャー・コール (RPC) フレームワークを使えば、Java メソッド呼び出しを作成するのと同じくらい簡単にサーバーからデータを取得できるようになります。
    2007/02/13  
 
Simple Persistence for Java を使用した、構成不要なオブジェクト・パーシスタンス
Simple Persistence for Java は、オープン・ソースのオブジェクト・リレーショナル・パーシスタンス・ライブラリーです。このライブラリーでは、カスタムの問い合わせ言語と組み込みデータベースのサポートにより、Java アプリケーションでのオブジェクト・パーシスタンスが単純化されます。この記事では、ソフトウェア・アーキテクト Sami Salkosuo がこのライブラリーを紹介し、管理も構成も不要な、オブジェクト・パーシスタンスへのアプローチを説明します。
    2007/02/13  
 
Geronimo への転向: JSF との対面
前回「Geronimo への転向」を書いたとき、私は Spring のどこがそんなに素晴らしいのか不思議でしたが、その謎が解けたとき、今度は JSF (JavaServer Faces) の人気の理由を教えてくれる人が必要だと冗談にしました。その後どうなったかと言うと、JSF の実装に焦点を当てた Apache Geronimo と Apache MyFaces の共通部分に関する記事を書いて欲しいというリクエストが寄せられました。この話題を取り上げたのは正解でした。Geronimo と MyFaces の統合に取り組んでいる IBM の Tim McConnell から話を聞いた私は、このような仕様が実際はどのように実装されるかについて期待以上のことを学んだのです。
    2007/02/06  
 
境界を越える: Lisp の美しさ
Lisp は長年の間、偉大なプログラミング言語の 1 つと考えられてきました。その長い歴史 (ほぼ 50 年) をとおして多くの熱狂的な信奉者を生んだという事実は、Lisp が何か特別なものであることを物語っています。MIT では、すべてのプログラマーに対するカリキュラムの中で、Lisp が基本的な役割を担っています。Paul Graham などの起業家は、新規事業を成功へと推進する力として、Lisp の持つ信じられないほどの生産性を活用しました。しかし Lisp の信奉者にとっては残念なことに、Lisp が主流になることはありませんでした。皆さんも Java プログラマーとして、この失われた黄金郷である Lisp を少しばかり研究してみると、コーディング方法をより良い方向に変えるための多くのヒントを見つけられるはずです。
    2007/02/06  
 
2007 年の Java: この 1 年を占う
2007 年は、Sun Microsystems が Java プラットフォームのコントロールをあきらめ、オープンソース・ライセンスの下で Java 開発者コミュニティーに解放した年として歴史に残ろうとしています。この記事では、Java 開発者である Elliotte Rusty Harold が、Java プラットフォームの新しい方向について、スクリプト言語からバグ修正、新しい構文まで、さまざまな面から予測します。
    2007/02/06  
 
Web 2.0 ユーザー・インターフェース・テクノロジー
Web 2.0 で使用するアプリケーションを新たに作成するという仕事が、あなたに与えられたとします。HTML ベースのユーザー・インターフェースを心から歓迎するユーザーがいる一方で、自分の使用するすべてのアプリケーションが Excel のように動作することを望むユーザーもいます。
    2007/01/30  
 
Apache Derby を使用した開発 ― 3 連単を当てる: Apache Derby を使用した Java データベース開発、パート 2
ApacheDerbyデータベースに対して単純なデータベース・クエリーを実行する方法、そして結果を選んで処理する方法を完全に把握してもらうには、Statement、ResultSet、そして ResultSetMetaData という 3 つの新しい JDBC クラスについて紹介しなければなりません。この記事では、この 3 つのクラスを JDBC データベース接続で使用して、Apache Derby データベースから独自の Java アプリケーションに短時間で簡単にデータを抽出する方法を説明します。
    2007/01/30  
 
Google Web Toolkit、Apache Derby、Eclipse を使用して Ajax アプリケーションをビルドする 第 2 回: 信頼できるバックエンド
GWT (Google Web Toolkit) を使用した Ajax (Asynchronous JavaScript + XML) アプリケーションのビルド方法についての連載第 2 回目では、Web アプリケーションのための Apache Derby データベースをビルドして GWT の制御に使用する方法について学びます。第 1 回の記事では GWT の概要と、GWT を使用して Web アプリケーションのリッチ・クライアント・フロントエンドを作成する方法を紹介しました。今回は舞台裏に回り、データベース、そして GWT が使用できる形式にデータを変換するためのコードでバックエンドをセットアップする方法について学びます。この記事を読み終える頃には、フロントエンドとバックエンドが対話する準備が完了しているはずです。
    2007/01/23  
 
万人のためのオートメーション: Eclipse プラグインによるコードの改善
コードをビルドする前にコードに潜む問題を発見できるとしたらどうでしょう。大変興味深いことに、JDepend や CheckStyle などの Eclipse プラグインをツールとして使うと、問題がソフトウェアに現れる前にそれを見つけ出すことができます。連載「万人のためのオートメーション」では今回、オートメーションのエキスパート Paul Duvall が、開発ライフ・サイクルの初期段階で問題を防ぐための静的分析プラグインを Eclipse でインストール、構成、そして使用する例を紹介します。
    2007/01/11  
 
Hierarchical Inherited Rule-Interpreted XML の詳細研究
新しい XML 技術、Hierarchical Inherited Rule-Interpreted XML を使用すると、標準 Java プロパティーを動的バージョンに置き換えることができます。この技術では単純な表現、さらには Groovy を使った表現で、アプリケーションの状態に基づいて評価されるプロパティーを定義できるため、たった 1 つのプロパティー・ファイルでアプリケーションの複数のインスタンスに対応できます。この記事では、単純かつ実際的な例を使って、この技術を Java プロパティー・ファイルの代わりとして適用する方法を説明します。
    2007/01/09  
 
境界を越える: JavaScript の言語機能
JavaScript はプログラミング言語の厄介者として、あざけりの対象となりがちです。その原因には、貧弱な開発ツールや、HTML ページ用の文書オブジェクト・モデルとして複雑で一貫性に欠けること、ブラウザーによって実装が異なることなどがあげられます。しかし JavaScript は、単なるオモチャをはるかに上回るものです。この記事では、Bruce Tate が JavaScript の言語機能を探ります。
    2006/12/19  
 
StAX で XML を処理する 第 3 回: カスタム・イベントの使用方法と XML の作成方法
StAX は下位レベルのカーソル API に加え、イベント・オブジェクトを使って解析したストリームに関する情報を通信するというイテレーター・ベースの強力な XML 処理手段があります。第 2 回ではカーソル API の詳細を探り、その使用例をいくつか紹介しました。この記事ではアプリケーション定義のイベントを使用するカスタマイズ手法について取り上げます。具体的にはカスタム・イベント・クラスを作成して XML をイベント・イテレーター API で処理する方法を説明します。そして最後に StAX が XML をトークンならびにイベント・オブジェクトのストリームとして作成するために提供しているシリアライゼーション API について検討します。
    2006/12/12  
 
Apache Geronimo の JNDI ネーミングおよび Java リソース接続プール、第 2 回: Java メッセージ・サービスの使用
JNDI (Java Naming and Directory Interface) は、オブジェクトに名前を関連付けるメソッド、そしてその名前に基づいてディレクトリー内のオブジェクトを検索するメソッドをアプリケーションに提供するアプリケーション・プログラミング・インターフェース (API) またはライブラリーです。連載第 2 回目のこの記事では、Apache Geronimo、JNDI、そして JMS (Java Message Service) リソース・グループの相互関係について説明します。さらに、JMS リソース接続を作成し、JNDI を使って単純な Geronimo アプリケーション内で JMS リソースにアクセスする方法についても学びます。
    2006/12/12  
 
境界を越える: Ajax on Rails
Web ページの対話性を高める技術、Ajax に対する熱狂が、さらに高まっています。また Ruby on Rails フレームワークの人気も高まっていますが、その理由の 1 つは Ajax と非常にうまく統合できるという強みがあるためです。Ajax on Rails が、なぜそれほど強力な組み合わせなのか、この記事で学びましょう。
    2006/12/05  
 
境界を越える: Ajax on Rails
Web ページの対話性を高める技術、Ajax に対する熱狂が、さらに高まっています。また Ruby on Rails フレームワークの人気も高まっていますが、その理由の 1 つは Ajax と非常にうまく統合できるという強みがあるためです。Ajax on Rails が、なぜそれほど強力な組み合わせなのか、この記事で学びましょう。
    2006/12/05  
 
StAX で XML を処理する 第 2 回: プル解析とイベント
Streaming API for XML (StAX) が提供するイベント・イテレーター API には、パフォーマンスとユーザビリティーに関して他の XML 処理方法に勝る利点が独特に融合されています。第 1 回では StAX を紹介し、カーソル API について詳しく説明しました。今回の記事ではイベント・イテレーター API の詳細を深く掘り下げ、Java(TM) 開発者にとってのメリットを探ります。
    2006/12/05  
 
Java Web サービス: 第 2 回 Axis2 の徹底調査: AXIOM
Apache Axis2 Web サービス・フレームワークは、SOAP メッセージを効率的に処理するための新たな XML 文書モデル、AXIOM に基づいています。AXIOM は従来の文書モデルとは異なり、アクセスしている文書表現のみをメモリー内に構築します。このオンデマンド構築が何故 SOAP の処理方法として優れているのか、そして AXIOM の全体像のなかで XOP/MTOM 添付、データ・バインディング、パフォーマンスがどのような位置を占めるかを学んでください。
    2006/11/30  
 
コード品質を追求する: JUnitPerf によるパフォーマンス・テスト
パフォーマンス・テストは通常、アプリケーション開発サイクルの最後まで棚上げにされます。パフォーマンス・テストが重要でないというわけではなく、不明な変数がありすぎるため効率的にテストするのが困難だからです。今月の「コード品質を追求する」シリーズでは、Andrew Glover が開発サイクルの一環としてのパフォーマンス・テストを提案し、2 つの簡単なテスト方法を紹介します。
    2006/11/29  
 
Web アプリケーションを複数のブラウザーに適応させる
Web ページの動作は、ブラウザーの種類、あるいはブラウザーの設定によって変わってきます。この記事では、すべての環境で Web アプリケーションの順応性を向上させるために役立つヒントを紹介します。
    2006/11/21  
 
Apache Geronimo の JNDI ネーミングおよび Java リソース接続プール、第 1 回: データ・ソース接続
JNDI (Java Naming and Directory Interface) は、Apache Geronimo アプリケーション・サーバーにある接続プールとのインターフェースです。このインターフェースを介して、開発者は EJB (Enterprise Java Bean) をはじめとするすべての Java オブジェクトにアクセスします。この連載記事では、JNDI を使用してデータ・ソース、JMS (Java Messaging Services)、メール・セッション、そして URL 接続のための接続プールにアクセスする方法をそのコンセプトとともに説明します。
    2006/11/21  
 
MIDlet を国際化する
国際化は単なる流行ではありません。アプリケーション開発にとって、国際化は必須の要求となっています。JSR-238 は、Java&trade; ME (Java Platform, Micro Edition) 開発者が MIDP (Mobile Information Device Profile)/CLDC (Connected Limited Device Configuration) を利用した国際化を行う際の作業を最小限にとどめられるように設計されています。この記事では、MIDlet を迅速かつ容易に国際化するための方法を学びます。
    2006/11/14  
 
3、2、1 ... Geronimo! 第 4 回: ものごとのスキーマ
Web ブラウザーはデータベース・スキーマで始まる行の終わりにマークを付けますが、優れたデータベース・スキーマとはどうやって作成するのでしょうか。それには効率的なツールだけではなく、計画が必要です。データベースの設計は、科学でもあり、芸術でもあります。この記事を読んで、データベースの設計手腕を磨きましょう。この記事には、高速かつ効率的で、変更にすぐに対応できるデータベース・スキーマを設計するのに役立つヒントが記載されています。
    2006/11/14  
 
Ajax と REST、第 2 回
Ajax の人気は急上昇しています。古い Web フレームワークでは Ajax をサポートするための改良が進行中で、新たな Ajax のみでのフレームワークの開発が進んでいます。また、Ajax の採用を検討中であったり、Ajax アプリケーションの構築をすでに開始したという組織も多数あります。そんなブームとは裏腹に、Ajax アプリケーションのデプロイメントに成功した組織は数えるほどです。2 回連載のこの最後の記事は、実際の IT アプリケーションで Ajax を使用するべきかどうかを判断する際の手掛かりとなるとともに、Ajax 開発の成功率を高めることを目的としています。
    2006/11/14  
 
コード品質を追求する: テストのカテゴリー化による素早いビルド
開発者によるテストが重要であることは誰もが認めていますが、テストの実行にはどうしてそんなに時間がかかるのでしょうか。今月の記事では、Andrew Glover がエンド・ツー・エンドのシステムの安定性を確実にするために必要な 3 つのテスト・カテゴリーにスポットライトを当て、テストを自動でカテゴリー別に分類して実行する方法を紹介します。これにより、今日の膨大なテスト・スイートでさえもビルド時間が劇的に短縮されることになります。
    2006/10/31  
 
3、2、1 ... Geronimo! 第 3 回: ステートの問題
コンピューターと Web は日常的な仕事を一層手軽なものにしますが、その一方で、新しい課題ももたらします。今や、インターネットが HTML でコーディングされた Web ページの要求に応答するだけでいいだけの時代は終わりました。現代の Web サイトは、ユーザーに関する山のような情報を維持し、数々の複雑なタスクを管理できなければなりません。このようなステートに関する問題は、幸いにも最先端のツールによって単純化することができます。セッション状態という長年の問題に対する、業界ならではのソリューションとは何でしょう。この記事では、IT マネージャーを安心させるために Apache Geronimo が何千もの同時接続のステートを維持する方法について説明します。
    2006/10/31  
 
中間を省く: Informix Dynamic Server で J/Foundation を使用して Java アプリケーション・サービスをホストする
IBM Informix Dynamic Server (IDS) ユーザー定義ルーチン (UDR) は、C 言語、Java、そして SPL (Stored Procedure Language) で作成できます。最近文書化された Java UDR サポートの拡張機能 (コード名 Solano) では、HTTP サーバーなどの Java アプリケーション・サービスをデータ・サーバー内から直接ホストすることができます。
    2006/10/26  
 
DB2 で XML と Java を使う
DB2 9 では pureXMLの強力さを活用でき、しかもそれをアプリケーション開発環境に統合することができます。この強力な技術を Java アプリケーションに統合する方法を学び、また新しい DB2 Developer Workbench を使うことで開発を容易に進められることを学びましょう。
    2006/10/26  
 
IBM WebSphere 開発者向け技術ジャーナル: スタンドアロン Java アプリケーションを WebSphere MQ V6.0 で実行する
IBM WebSphere MQ V6.0 でメッセージを送受信する J2SE アプリケーションの開発方法を学んでください。この方法で開発するアプリケーションは J2EE の標準 JMS と JNDI API を使用しますが、J2EE アプリケーション・サーバーでのデプロイメントは必要ありません。
    2006/10/25  
 
JSON を使ったキャッシング
データ検証は、すべてのエンタープライズ Web アプリケーションにとって最も困難な、そして変化し続ける部分です。多くの場合、検証メタデータによって、JavaScript モジュールの中にサーバーサイド・コードが混在することになります。この記事では、サーバー・コードの助けを借りてクライアントサイドにメタデータをキャッシュするという、スマートな方法を学びます。サーバー・コードが JSON (JavaScript Object Notation) フォーマットでストリング化されたメタデータを提供するのです。またこの手法では、マルチバリュー属性とマルチグループ属性を、Ajax と似た方法で処理することができます。
    2006/10/17  
 
Rational Application Developer による Web アプリケーションへの Crystal Reports の統合 第 2 回: 設計時に JDBC 接続、実行時に JNDI 接続を使用する Crystal Reports を Web アプリケーションに組み込む
この記事は、Web アプリケーションに Crystal Reports を組み込んでレポートを作成したいという開発者を対象としています。5 回連載の第 2 回では、実地体験として、IBM Rational Application Developer で Crystal Reports を使用してみます。この記事ではとくに、Crystal Reports を Web アプリケーションに組み込んで、設計時には JDBC (Java Database Connectivity) 技術を使用し、実行時には JNDI (Java Naming and Directory Interface) 技術に切り替える方法を説明します。この記事に記載する多くの情報は、設計時と実行時の両方で JDBC 接続を使用する方法を説明した第 1 回と重複しますが、実行時に JDBC 接続の代わりに JNDI 接続を使用できれば、コネクション・プーリングや、アプリケーション・サーバーが提供するその他の機能を利用できるようになります。この記事は、連載第 1 回で説明した知識を前提として作成されています。第 1 回をまだ読んでいなくても、この記事には第 1 回に記載した関連情報がすべて含まれているため、2 つの記事を交互に読む必要はありません。第 1 回をすでに読んだという方は、両方の記事に共通の情報にはその旨を明記しているので、スキップして読み進めることができます。
    2006/10/17  
 
NumberFormat の構文解析問題の解決
Java SE (Standard Edition) API の NumberFormat クラスでは、数値を表す定形式テキストをプログラムで構文解析できます。追加設定なしですぐにローカライズを行える Java SE API は、すべての Java プログラマーにとって便利なツールですが、残念ながら、基礎となる DecimalFormat クラスによって予告もなしに符号やデータを損失する場合があります。この記事では、Joe Sam Shirah がこの問題を説明し、問題を正しく処理するためのコードを紹介します。
    2006/10/17  
 
3、2、1 ... Geronimo! 第 2 回: 素材を形にする
料理本のようなガイドを手に、Apache Geronimo をダウンロード、インストールして、生産的に使用できるように構成してください。ちょっとした味付けをあれこれ加えると、最先端の Java 2 Platform, Enterprise Edition (J2EE) 認定サーバーというごちそうが完成します。
    2006/10/10  
 
WebSphere Studio Application Developer
この記事では、日本アイ・ビー・エム研修サービス株式会社(以下LSJ)が提供する研修情報Webサービスにアクセスし、LSJの研修情報をインターネットから取得する手順を紹介します。
    2006/10/10  
 
WebSphere Studio Application Developer
この資料は、現存するWebSphereとWebサービスを使ってWebSphere上のサーバー・アプリケーションと.NETのクライアントコードを連携させる検証を行った結果をまとめたものです。
    2006/10/10  
 
Apache Geronimo PetStore デモの分析
実際的な手順に従って、ビジネスに実用できるエンタープライズ・アプリケーションを構築してみませんか。iBATIS PetStore アプリケーションは、Sun Java BluePrints プログラムから作成されたサンプル・アプリケーションです。このアプリケーションは、iBATIS パーシスタンス・フレームワーク、Java のみによる Apache Derby データベース、そして Java EE (Java Platform, Enterprise Edition) の機能を使用して単純なクロスプラットフォーム・エンタープライズ・アプリケーションを開発する方法を教えてくれます。この記事では、iBATIS、Derby、Apache Geronimo の機能を活用して柔軟かつ実用的な PetStore アプリケーションの実装を作成する際に参考にできるヒントと技法を紹介します。
    2006/10/03  
 
Ajax と REST、第 1 回
サーバー・サイド Web アプリケーションがリッチ・アプリケーション・モデルに従ってパーソナライズされたコンテンツを配信し、ますます実体験のようになるにつれ (没入型 Web アプリケーション)、そのアーキテクチャーが Web のアーキテクチャー・スタイル、REST (Representational State Transfer) に違反することも多くなってきています。このような違反によって、アプリケーションのスケーラビリティーは損なわれ、システムはより複雑になります。Ajax アーキテクチャーは REST との調和を実現することによって、没入型 Web アプリケーションがそのようなマイナス効果を排除し、REST 本来の特性を十分活用できるようにします。
    2006/10/02  
 
Rational Application Developer を使用して、Informix の Web サービスとして Java UDR をデプロイする
この記事では、IBM Informix のユーザー定義ルーチン (UDR) またはユーザー定義データ型 (UDT) を Web サービスとして Web 上で公開する方法を説明します。JavaBean で Informix の UDR または UDT を操作し、Rational Application Developer を使用して Web サービスとしてデプロイする方法が分かるようになります。
    2006/09/28  
 
コード品質を追求する: 反復可能なシステム・テスト
論理的再現性を持つテストの作成は、特にサーブレット・コンテナーを組み込む Web アプリケーションのテストとなると、とりわけ困難です。この記事では、コード品質の改善を追求し続ける Andrew Glover がコンテナー管理を汎用手順で自動化する Cargo を紹介します。このオープン・ソース・フレームワークによって、毎回論理的に反復可能なシステム・テストを作成できるようになります。
    2006/09/26  
 
ファズ・テスト
ファズ・テストは単純な手法ですが、コード品質に与えるその影響は計り知れません。この記事では Elliotte Rusty Harold が、障害部分を調べるためにランダムな不良データを故意にアプリケーションに注入すると、どのような結果になるかを説明します。また、チェックサム、XML データ・ストレージ、そしてコード検証など、ランダム・データに対するプログラムの脆弱性を解消するための防衛的コーディング手法についても説明しています。そして最後に、コードを守るための決定的手法として、コード・クラッカーとしての思考を持つ訓練で記事を締めくくっています。
    2006/09/26  
 
EJB の提唱: SOA はコンポーネント・ベース・アプリケーションの進化における次のステップを提示
なぜか今度は立場が逆になりました。今月の EJB の提唱では、Enterprise JavaBeans 関連の仕様を提唱する以外に、SCA (Service Component Architecture) など、SOA 関連の仕様も提唱する立場になりました。
    2006/09/20  
 
Javaの理論と実践: JMX を使ったアプリのインスツルメンテーション
デバッガーやプロファイラーはアプリケーションの動作の実態を教えてくれますが、私たちがこのようなツールを持ち出してくるのは通常、重大な問題が発生したときだけです。モニター・フックをアプリケーションに組み込めば、デバッガーを使用しなくてもプログラムが何を行っているか簡単に理解できるようになります。JMX (Java Management Extensions) が Java SE プラットフォームに統合され、jconsole ビューアーが汎用モニター GUI を提供するようになった今、これまで以上に簡単、効率的に JMX でアプリケーションにウィンドウを組み込めます。
    2006/09/19  
 
OmniFind 検索アプリケーション開発の基礎
IBM WebSphere Information Integrator OmniFind Edition v8.3 (以下、OmniFind)[文献1,2,3] は、イントラネットおよびエクストラネットにおける、Web サイトやその他の広範なコンテンツ・リポジトリーを検索するための、IBM の戦略的業務用検索ソリューションです。ここでは、SIAPI を使ったシンプルな検索アプリケーションを紹介し、検索アプリケーションの流れや特徴をご説明します。
    2006/09/19  
 
実用的なGroovy: Groovy を使って不要なコードを除去する
Groovy の簡潔な構文のおかげで、開発者はコードのコンパイルに必要でありながらプログラムが本当に成し遂げようとしていることの表現には役に立たない典型的な Java&trade; の構成から解放されます。「実用的な Groovy 」シリーズの再開にあたって今回は、Groovy 開発者にしてゲスト・コラムニストである J.Scott Hickey が、同じ内容の普通の Java コードと比較しながら、この刺激的な言語 Groovy の利用によって些細なことにとらわれずにコーディングの重要な側面に集中できる理由について解説します。
    2006/09/19  
 
万人のためのオートメーション: 継続的インテグレーション・サーバーの選択
継続的インテグレーション (CI) サーバーにはありとあらゆる選択肢があるため、自分にぴったりのものを決めるのは大変です。連載「万人のためのオートメーション」の第 2 回では、開発オートメーションのエキスパート、Paul Duvall が一貫した評価基準とわかりやすいサンプルを使い、Continuum、CruiseControl、および Luntbuild に絞ってオープン・ソース CI サーバーを調べます。
    2006/09/05  
 
商用に XMLBean を使い、XML と Java を融合する
SOA (Service-Oriented Architecture) と XML、そして XMLBean が現実のビジネス問題に対応する上で重要な役割を果たすことを、娯楽業界のケース・スタディーを通して学びましょう。この記事の目的はコードを学ぶことではありません。XML が必要となるすべての状況において、なぜ、どのように XMLBean を利用できるのかを学ぶことが目的です。
    2006/09/05  
 
コード品質を追求する: JUnit 4 対 TestNG
新たなアノテーション・ベースのフレームワーク、JUnit 4 には TestNG の選り抜きの機能がいくつか含まれていますが、それによって TestNG が使われなくなることを意味するのでしょうか。この記事では、Andrew Glover がそれぞれのフレームワークの特徴を検討し、まだ TestNG にしか見当たらない高度な 3 つのテスト機能を明らかにします。
    2006/08/29  
 
プラグイン・サポートを使用して、Geronimo でクリック 1 つでアップグレードを実現
Apache Geronimo 1.1 リリースでもっとも期待されていた新機能のうちの 1 つが、プラグインのインストールおよび作成機能です。この記事では、Geronimo プラグインを紹介し、プラグインを見つける方法とインストールする方法、さらに独自のプラグインを作成する方法を説明します。
    2006/08/22  
 
3、2、1 . . . Geronimo! 第 1 回: J2EE をシンプルに
キャリアを飛躍させる準備はできていますか? 開発中のアプリケーションのタイプが何であれ、J2EE (Java 2 Platform, Enterprise Edition) は今日普及している重要な標準です。これをマスターすることが、あなたのプログラマーとしての評価をあと押しすることは疑いようがありません。
    2006/08/15  
 
Apache Geronimo EJB トランザクションのオプションを比較検討する、第 3 回: まとめ
この記事で、Apache Geronimo アプリケーション・サーバーでのコンテナー管理 EJB トランザクションと Bean 管理 EJB トランザクション両方の特徴、そしてその他のインプリメンテーション・オプション、構成オプションを把握してください。
    2006/08/15  
 
境界を越える: Rails のマイグレーション
Ruby on Rails は進歩的な Web 開発フレームワークであり、過激な概念、例えばコンフィギュレーションよりも規約優先、メタプログラミング偏重、ドメイン固有言語、オブジェクト・リレーショナル・マッピングではなくデータベース・ラッピングなどを実装しています。この記事では、Rails のスキーマ・マイグレーションの考え方、つまり各データベース・スキーマの変更を、ベースとなるオブジェクト・モデルから分離する考え方について検証します。
    2006/08/15  
 
緊急特集!「スーパー・カブロボに挑戦」への第一歩: 後編
前回、スーパー・カブロボ・コンテストの記事を紹介したところ、予想以上に大きな反響があり、筆者自身も少し驚いています。本記事は前回に続いて Java によるロボットの開発方法を紹介する後編ですが、今回は少しだけ本格的な(変な日本語ですが・・)テクニカル分析を実装したロボット2体を紹介します。
    2006/08/11  
 
JSTL の SQL アクションを使った簡単なデータベース・クエリー
この記事では、著者の Meenakshi G. Khanna が、単純な JSTL 1.1 SQL タグと Tomcat 5.5、そして Apache Derby データベースを使って、データベース・クエリーを容易に行う方法について解説します。
    2006/08/10  
 
WebSphere Studio Application Developer
この記事では、.NETからWebサービスを使ってWebSphereの機能(メソッド)にアクセスする手順を紹介します。(1)
    2006/08/10  
 
WebSphere Studio Application Developer
Webサービスは、多くの場合インターネットに置かれています。WSDLを利用すれば簡単にアクセスできるため、システムインテグレーションを短期化したり、コストを削減することができます。
    2006/08/08  
 
AppFuse を使用する 7 つの簡単な理由
Spring、Hibernate、あるいは MySQL などの Java プラットフォームを対象としたオープン・ソース・ツールを使い始めるのは難しい場合があります。オープン・ソース・プロジェクトの統合につきものの悩みの種を取り除いてくれるのが、AppFuse です。
    2006/08/08  
 
Eclipse と JET を使って、より多くの、より良いコードを作成する
(成果物を生み出す) ベスト・プラクティスを体系化したテンプレートを作成できるという能力は強力です。こうした能力を利用すれば、大きな時間節約を実現でき、また退屈なコーディング作業を削減することができます。この記事では、コード生成フレームワークであり Eclipse 技術プロジェクトの 1 つでもある、JET について紹介します。
    2006/08/08  
 
JMX で Apache Geronimo を管理する
Java コミュニティーでは、システム、アプリケーション、そしてリソース管理の標準として、JMX (Java Management Extension) 仕様およびフレームワークを受け入れています。この記事を読んで、JMX を使って Geronimo プラットフォームを管理する方法を理解してください。
    2006/08/01  
 
Java Web サービスのデプロイ
複数コンテナーでの Java Web サービスのデプロイメントは、開発者に問題を提起するはずです。Java コミュニティーがどのようにこの問題を対処し始めているかについて学ぶとともに、いくつかのデプロイメント記述子の実装についても学びます。
    2006/07/28  
 
Apache Geronimo EJB トランザクションのオプションを比較検討する、第 1 回: コンテナー管理トランザクション
全 3 回のこのシリーズで、Apache Geronimo での EJB (Enterprise Java Beans) コンテナー管理トランザクションと Bean 管理トランザクションの両方について学んでください。第 1 回では、この 2 つのタイプのトランザクションの違い、そしてコンテナー管理トランザクションでは、どのようにしてトランザクション・ロジックと管理の複雑さをなくし、エンタープライズ Bean のビジネス・ロジックに専念できるようにしているかがわかります。また、コンテナー管理トランザクションを Geronimo アプリケーション・サーバーに実装する方法、さらに Geronimo、OpenEJB、XDoclet を使って、やっかいな EJB コーディングから逃れる方法についても学びます。
    2006/07/25  
 
境界を越える: 動的型定義の言語による Web 開発の方法
JSP プログラミングを超えた Java Web 開発を実現するためのフレームワークは生まれつつありますが、それらは動的言語の能力の前には力不足です。この記事では、Ruby を使って Web ページを開発する方法を説明し、また Seaside による過激な方法にも触れて行きます。
    2006/07/25  
 
Ajax と Java EE との統合を容易にする
Ajax が一般的になるにつれ、このホットな話題についての俗説を払拭し、また Ajax を使う上での問題に取り組む必要性が高まってきました。この記事では、シニア IT スペシャリストである Patrick Gan が、Java EE Web アプリケーションに Ajax 技術を導入する場合、開発ライフサイクル全体において、どのような影響が考えられるかを検証します。
    2006/07/25  
 
Javaの理論と実践: 効果的なテストを行う、第 2 回
6 月の Java の理論と実践コラムでは、FindBugs のような静的分析ツールが、特定のバグに焦点をあてずに、あらゆるカテゴリーのバグに焦点をあてることによって、どのようにソフトウェア品質の管理に影響を与えることができるのかを示しました。今月の記事では、バグつぶしのプロである Brian Goetz が、より本格的なバグ・パターン検出機能の構築とチューニングのプロセスについて、詳細に説明します。
    2006/07/25  
 
境界を越える: Haskell を使った関数型プログラミング
この記事では、Haskell を使いながら、関数型プログラミングの基本について解説します。関数型プログラミングを学ぶことによって、Java プログラミングに対する皆さんの考え方も変わってくるのではないかと思います。
    2006/07/18  
 
DWR が Ajax によるポートレット間メッセージングを簡単にする
オープン・ソースの DWR (Direct Web Remoting ) ライブラリーを使うと、Java クラスが JavaScript クラスに自動的に変換されるため、Java 開発者は Ajax 開発を簡単に行うことができます。DWR と JSR-168 準拠のポートレットを使って、Ajax アプリケーションを素早く簡単にビルドする方法を学びます。
    2006/07/14  
 
Apache Geronimo および POJO を使用して SOA フレームワークを構築する
Apache Geronimo フレームワークは、高度なアプリケーションおよびサービスを構築するために、POJO 開発用の強固なインフラストラクチャーを提供します。POJO の戦術を使用してサービス指向の開発を成功させるために使用できる Geronimo フレームワークのコンポーネントと技法の一部を探索しましょう。
    2006/07/11  
 
コード品質を追求する: 多弁なコードを黙らせるために
今回の「コード品質を追求する」では、品質のエキスパートである Andrew Glover が過剰なコードを見分けるためのヒントを説明し、次に、PMD や JavaNCSS などのツールを使って、さらに正確にコードの複雑さを見極める方法を紹介します。
    2006/06/30  
 
WebSphere Application Server でメモリー・リークを検出して分析する: パート 1: メモリー・リークの概要
この記事では、Java ヒープ・メモリー・リークに対処するために IBM WebSphere Application Server で使用可能な手法の概要を示します。
    2006/06/28  
 
Apache Geronimo、JMSを使いイベントドリブンフレームワーク構築する
リアルタイムで発生する変化やイベントに即座に応答できることは、エンタープライズ・フレームワークにとって重要な要求です。この記事では、リアルタイムの刺激に対してアプリケーションやサービスが効果的に応答できるように、またアーキテクチャーの仮想レイヤーにまたがってイベントを送受信できるようにするための機能として、Apache Geronimoフレームワークの中に具体化されている技術や機構を紹介します。
    2006/06/27  
 
Java開発者のためのAjax: Google Web Toolkitを探る
この記事では、リモートのWeb APIから気象情報をフェッチしてブラウザーに表示する、単純なGWTアプリケーションの作成手順を説明します。その中で、GWTの機能について可能な限り多く取り上げるようにし、また皆さんが突き当たりそうな潜在的な問題についても触れることにします。
    2006/06/27  
 
Java コンテンツ・リポジトリー API の紹介
この記事では、JSR-170 のオープン・ソース Apache Jackrabbit インプリメンテーションを用いてウィキペディアのような百科事典バックエンドを設計しながら、この有望なフレームワークの機能を探っていきます。
    2006/06/27  
 
Graphical Editing Frameworkを使用してEclipseベースのアプリケーションを作成する
この記事では、GEF(Graphical Editing Framework)を使ってEclipseベースのアプリケーションを作成するための最初のステップを説明します。GEFは、Eclipse用の様々なアプリケーションを構築するために使われてきています(ステート図やアクティビティー図、クラス図、AWT用のGUIビルダー、SwingやSWT、プロセス・フロー・エディターなど)。EclipseもGEFも、オープンソースの技術です。また両者は、IBMのWebSphere Studio Workbenchにも含まれています。
    2006/06/27  
 
セブン・ミニッツ: 自己管理型サーバーのクラシック・モデル
自己構成と自己修復が可能な、無停止、自己管理型の Java ベース・サーバーのオートノミック・コンピューティング・モデルを体験し、 Common Base Event によるログを効率化することを学びます。 そして、カーネギー・メロン (Carnegie Mellon) 大学によるセルフ・セキュアリング・ストレージとセルフ・セキュアリング・デバイスに関する研究の奥深いライブラリーを探ります。 そこで、オートノミック・コンピューティングが、どのようにヘルシンキやサンフランシスコの空港のセキュリティーを拡張しているかを調べます。 また企業間にまたがる異種の IT 情報の自動ディスカバリーのためのコマンド・センター (CCMDB) についても見ていきます。 これらのすべてとその他関連することが、IBM と世界中のオートノミック・コンピューティングを 2 週間を超える期間で調べるシリーズである Seven minutes の中にあります。 このシリーズでは、IBM、および世界におけるオートノミック・コンピューティングを 2 週間に渡って見ていきます。 この特集では、ニュース、イベント、ツール、ヒントといった項目と、その他システムやソフトウェアのオートノミック化に役立つ情報で構成しています。
    2006/06/20  
 
Geronimoへの転向、第8回: Apache Geronimoの将来
Apache Geronimoの将来への見通しを知りたいのであれば、このシリーズの今回の記事が役立つはずです。今回は、Geronimoへの転向者が、Geronimoの将来を探ります。つまりGeronimoの開発者達はこのプロジェクトをどこに持って行こうとしているのか、また重要な新機能、改善事項などについて解説します。この記事を読んで頂ければ、皆さんも彼らと共に、Apache Geronimoの次期バージョンの幕開けに参加できるかも知れません。
    2006/06/20  
 
緊急特集!「スーパー・カブロボに挑戦」への第一歩: 前編
過去に日本アイ・ビー・エムおよび developerWorks を通じて運営・開催に協力してきたカブロボが、「スーパー」になって帰ってきました。カブロボコンテストは過去2回行われており、今回が第三回目になります。が、今回は趣向を大幅に変更し、改めて「第一回 スーパー・カブロボ・コンテスト」として開催されます。
    2006/06/19  
 
エレガントな JavaScript を作成するための関数型プログラミングの使用
関数型プログラミング、つまり宣言型プログラミングは、非常に強力なプログラミング・メソッドであり、ソフトウェア業界で評判を得ています。この記事では、関数型プログラミングに関連する概念を紹介し、その概念を有効に使った例を示します。また関数型プログラミングのコンストラクトとフィーチャーを JavaScript に取り入れ、JavaScript でエレガントなコードを作成する方法について説明します。
    2006/06/13  
 
Java技術、IBMスタイル: モニタリングと問題判別
この記事は、Java技術のIBM実装の最新バージョンで実装されている機能の中の主な3つ、トレース・エンジンとダンプ・エンジン、そしてDTFJツールAPIについて解説します。これらはどれも、Java開発者が問題シナリオの根本原因を判別する上で役立つものです。
    2006/06/13  
 
Java SCAの呼び出しスタイル
この記事では、SCA(Service Component Architecture)のPOJO(Plain Old Java Object: ごく普通のJavaオブジェクト)コンポーネントの中でJavaを使う場合の概要と、POPJコンポーネントの入出力データの流れの概要について説明します。
    2006/06/06  
 
セブン・ミニッツ: シミュレーション用にタッチポイントをモデル化
この新しいシリーズ、『セブン・ミニッツ(Seven minutes)』では、こうした話題を、そしてさらに様々な話題を取り上げます。IBMや世界各地でのオートノミック・コンピューティングを、2週間の周期で観察して行きます。
    2006/06/06  
 
Javaの理論と実践: 割り込み例外の処理
Thread.sleep() やObject.wait() など、JavaTM言語のメソッドの多くは割り込み例外をスローします。これはチェックされる例外なので無視することはできませんが、どう処理すればいいでしょうか。今月の「Javaの理論と実践」では、並行アルゴリズムの専門家であるBrian Goetzが割り込み例外とは何か、なぜスローされるのか、キャッチしたらどうすべきかについて説明します。
    2006/05/23  
 
Apache Geronimoディストリビューションの最適化
ここでは、listenとアプリケーションサービスの停止/再開方法、必要な各アプリケーションモジュールとWebアプリケーションのアンデプロイ/再デプロイ方法について説明し、Apache Geronimoディストリビューションによるデプロイメントを必須のコアサービスやアプリケーションにまで効率的に利用できるようにします。
    2006/05/12  
 
DAOを繰り返すな!
Java 5ジェネリックの採用により、汎用の(ジェネリックな)型安全なDAO(Data Access Object:データ・アクセス・オブジェクト)実装というアイデアが現実のものになりました。この記事では、Hibernateに基づくジェネリックDAO実装クラスについて解説します。また、Spring AOPイントロダクションを使用して、このクラスに、クエリー実行のための型安全なインターフェースを追加する方法も示します。
    2006/05/12  
 
XMLBeanを使ってApache GeronimoにSOAアプリをデプロイする
皆さんはXMLBeanに興味があるでしょうか。この、高度で使いやすいXML-Javaバインディング技術を利用すると、Java オブジェクトやJavaBeanにアクセスする場合と同じようにXMLファイルにアクセスすることができます。この記事では、XMLBean技術について、特にApache Geronimoで使う方法について学びます。また、XMLBeanによってSOA(service-oriented architecture)開発が単純化、合理化できることも学びます。
    2006/05/09  
 
高度なFaceletsプログラミング
この記事は、好評を博した「FaceletsはぴったりとJSFにフィットします」のフォローアップです。今回は、JSF(Java Server Faces)とELとの隙間を埋める橋渡しとして、より高度な方法を紹介します。Webページを『容易に』国際化し、構成コンポーネントにカスタムのロジック・タグを追加し、そしてFacelets開発にメタプログラミングを取り入れる方法を学びましょう。
    2006/05/09  
 
拡張XMLのバリデーション
XSLTスタイルシートは、XMLドキュメントの変換を目的として設計されています。また、文法ベースのバリデーションでは必要な制約をすべてカバーできないときには、Java拡張機能とスタイルシートを組み合わせることで、XMLスキーマを機能強化することもできます。ここでは、XSLTとJava拡張機能を使ってドキュメントをバリデーションする場合を取り上げ、実用的なガイダンスとサンプルコードを示します。
    2006/05/09  
 
オープン・ソース・フレームワークを使用したJavaアプリケーションのWebサービス統合パターン、第1回:呼び出しパターンの実装
Webサービスを統合するには、主に4つのパターンがあります。この2回シリーズの最初の記事では、普及しているオープン・ソース・フレームワークを使用して、これら4つのすべてのサービス・エンドポイント・パターンについてWebサービスを呼び出すためのサービスとクライアントの開発方法を紹介します。
    2006/05/05  
 
Apache Directory ServerへのJavaオブジェクトの保管 第1回
この2部構成の記事では、ApacheDS (Apache Directory Server) にJava (TM) オブジェクトを保管する手順を詳しく説明します。この第1回目の記事では、Bilal SiddiquiがApacheDSを紹介し、コア・アーキテクチャーの概要を説明します。ApacheDSは主にJavaオブジェクトを保管するLDAPサーバーとして使用されるため、LDAPの概念と用語の概要について説明します。また、JXplorerを使用して属性タイプ、オブジェクト・クラスなどのLDAPスキーマ・コンポーネントを表示する方法、およびデータ・オブジェクトをApacheDSに格納する方法も示します。
    2006/05/02  
 
Apache Directory ServerへのJavaオブジェクトの保管 第2回
ApacheDS (Apache Directory Server) へのJava(TM) オブジェクトの保管手順を説明するこの記事では、第1回目の記事で説明した概念を、Bilal Siddiquiが9つのアプリケーションを例に取って解説していきます。また、ApacheDSを使用したJavaオブジェクトの保管、検索、取得、変更の各手順をすべて紹介した上で、LDAPスキーマ・コンポーネントを使用してこれらの機能をApacheDS内で組み合わせる再使用可能なJavaクラスを最後に説明します。
    2006/05/02  
 
Webサービスに後方互換性を持たせて進む
この記事では、Rational Application Developerの使い方の詳細に大きな部分を割いています。ここで説明する方法によって、Webサービスへの変更を実装する場合にサービス・プロバイダーとサービス・コンシューマー双方への影響を減少させることができます。
    2006/05/01  
 
XMLの論考: マイクロフォーマットのパイプストリーム
コンピューティングにおける最もエレガントな概念の1つは、UNIXのパイプ構造です。パイプを使用すると、あることをうまく処理できる小さなプログラムを再利用し、そのプログラムを接続して、あるプログラムからの出力を別のプログラムへの入力として送ることができます。あいにく、UNIXのパイプは、ほとんどが行指向なので、XML処理に簡単に応用することはできませんでした。この記事では、これを解決するために試されたいくつかの既存ツールをレビューします。
    2006/04/25  
 
コード品質を追求:ソフトウェア設計者にとってのコード品質
よく設計されたソフトウェア・アーキテクチャーのほとんどは、システムの拡張性、保守性、および信頼性をサポートすることを目的としています。残念ながら、品質問題を軽視すれば、ソフトウェア設計者の努力は水の泡になります。今回の「コード品質を追求する」では、品質のエキスパートであるAndrew Gloverが、ソフトウェア・アーキテクチャーの長期的存続に影響するコードの品質面を継続的に監視し、訂正する方法を説明します。
    2006/04/25  
 
Swingによる動的インターフェース設計
Swing UIツールキットは、常に簡単ではありませんが、イベントまたはユーザー・アクションに応じてユーザー・インターフェースを動的に更新することを可能にします。この記事では、動的に更新するUIを構築するための一般的な方法と、その過程で遭遇する可能性のあるいくつかの落とし穴を解説します。また、正しい手法が何であるかを判断するための原則について解説します。
    2006/04/25  
 
Geronimoへの転向: Apache GeronimoのJMS実装: ActiveMQ
Geronimoには、プロジェクトのニーズに応えて作成されたJMS (Java Message Service)の実装であるActiveMQが用意されています。この記事では、ActiveMQの共同創設者James StrachanにActiveMQ、メッセージング、およびメッセージング重視のアプリケーションの未来について話を伺いました。
    2006/04/25  
 
Javaの理論と実践: ノンブロッキング・アルゴリズムの紹介
ノンブロッキング・アルゴリズムの設計と実装はきわめて困難になる場合がありますが、より高いスループットが期待でき、デッドロックや優先順位の逆転などのliveness(ライブネス)問題に対してより強固な対応が可能になります。今回の記事では、並行アルゴリズムの専門家であるBrian Goetzが、単純なノンブロッキング・アルゴリズムの仕組みを説明します。
    2006/04/18  
 
AOP@Work: Contract4Jを使用したコンポーネント設計
Design by Contractは、コンポーネント設計の詳細の明確化、クライアントに適した使用法のドキュメント化、およびプログラムによる使用法準拠のテストに定評のある技法です。AOP@Workシリーズの最後となるこの記事でDean Wamplerは、Design by ContractツールのContract4Jを紹介します
    2006/04/11  
 
レガシー・コードのテスト
この記事ではjEditを例として使用し、これまでにテストしたことのないレガシー・コードのテスト・スイートを開発する方法について紹介します。jEditは人気の高いオープン・ソースのテキスト・エディターですが、テスト・スイートはまったく用意されていません。jEditを使用した開発をより生産的に、効率的に、楽しいものにするテスト・スイートを開発していきます。
    2006/04/04  
 
ConTestを使用したマルチスレッド・ユニットのテスト
この記事ではConTestというツールを紹介します。これは、並列プログラムのテストやデバッグ、カバレッジの測定に使用するツールです。これから説明しますが、ConTestは単体テストに代わるものではなく、並列プログラム上での単体テストの問題点を解決する補助的なテスト手法です。
    2006/04/04  
 
カブロボ:テクニカル分析と、そのアルゴリズムの紹介(その7 (最終回) サイコロジカルラインと RSI による長期シミュレーション)
この連載も最終回である7回目を迎えました。前回はカブロボコンテストのルールによる制限をあえて無視して、長期間の投資シミュレーションを行うことを目的とする内容を紹介しました。今回はサイコロジカルラインと RSI という、2つの似た手法を紹介します。更にこれらを使って前回同様長期シミュレーションを行ってみます。
    2006/03/31  
 
クラスワーキング・ツールキット:ジェネリックス・データ構造の解析
今回は、変換を容易にするために ASM Java バイトコード操作フレームワークを中心としたデータ構造解析プログラムを作成し、このプログラムでジェネリックス情報を変換することにより、アプリケーションに使用されるデータの実際の型の詳細な一覧を作成します。
    2006/03/28  
 
EJB 3.0 Java Persistence APIを使用したエンタープライズ・アプリケーションの設計
この記事では、Enterprise JavaBeans(EJB)3.0の新しいJava Persistence API(JPA)を活用したJava Platform, Enterprise Edition(Java EE 5)の設計手法について紹介します。JPAは、Hibernateなどのサード・パーティ製フレームワークに頼る必要のない、標準的なオブジェクト関連マッピング・ソリューションを提供します。
    2006/03/28  
 
境界を越える: Javaモデルを超える型定義戦略
この、『境界を越える』シリーズでは、著者であるBruce Tateが、「今日のJavaプログラマーは、他の手法や言語を学ぶことから多くを得ることができる」という概念を押し進めます。皆さんが書くPython(あるいはRubyやSmalltalk、その他何であれ)コードによって、皆さんのJavaコーディングに対する取り組みも変わる可能性があるのです。
    2006/03/25  
 
Javaの理論と実践: 良いハウスキーピング習慣を身につける
ガーベジ・コレクションを利用すればリソース管理を無視できる場合が多いのですが、時には自分で掃除(ハウスキーピング)をする必要があります。今回の『Javaの理論と実践』では、Brian Goetzが、ガーベジ・コレクションの限界と、自分で掃除すべき場合について解説します。
    2006/03/21  
 
境界を越える: 継続とWeb開発、そしてJavaプログラミング
『境界を越える』シリーズは、Javaではない言語が大きな問題をどのように解決しているかを学び、そうした解決方法が今日のJava開発者にとって何を意味するのかを考えます。今回の記事では、SmalltalkのSeasideのようなフレームワークの背景技術である、継続(continuation)を探ります。
    2006/03/21  
 
カブロボ テクニカル分析と、そのアルゴリズムの紹介: その6 移動平均によるドテン売買と長期シミュレーション
「買いと売りのタイミングを測るアルゴリズム」の代表格といえば移動平均によるゴールデンクロス/デッドクロスだと思います。今回はこの移動平均アルゴリズムの紹介を行うと共に、長期間のシミュレーションでどの程度の精度があるのか、また移動平均を計算する日数を微調整することで精度がどのように変わっていくのか、をシミュレートしてみることにします。
    2006/03/17  
 
独自のプロファイリング・ツールを構築する
この記事では、ソフトウェア・アーキテクトのAndrew Wilcoxが、プロファイリングの利点と、現状で利用可能なプロファイリングの選択肢について、またそれらの欠点について説明します。その後で、新しいJava 5エージェント・インターフェースと単純なアスペクト指向プログラミング手法を使って、独自のプロファイラーを構築する方法を説明します。
    2006/03/14  
 
ECF(Eclipse Communication Framework)入門
ECF(Eclipse Communication Framework)は新しいEclipseプロジェクトであり、Eclipseプラットフォーム上でコミュニケーション・ベース・アプリケーションを作成するためのオープンソース・フレームワークです。ECFと、その基本機能、将来の方向性について学びましょう。
    2006/03/14  
 
カブロボ テクニカル分析と、そのアルゴリズムの紹介: その5 十字線、同時線
この第5回では少し見直し、これからテクニカル分析を行う方にも比較的理解しやすいテクニカル指標を紹介します。いわば入門編です。
    2006/03/10  
 
境界を越える: アクティブ・レコードを探る
このシリーズでは、他の言語が大きな問題をどのように解決しているか、そうした解決方法がJava開発者にとって何を意味するのかを探ります。今回は第1回目として、Ruby on Railsの背後にあるパーシスタンス・エンジンである、アクティブ・レコードについて調べます。また、スキーマ・マイグレーションについても解説します。
    2006/03/07  
 
カブロボ テクニカル分析と、そのアルゴリズムの紹介: その4 MACD
4回目となる本連載では MACD を扱います。数あるテクニカル指標の中でも比較的精度が高く、実際に参考されながら売買判断を行っている方も多い、いわば「本命」の登場です。 今回はこの MACD を用いたアルゴリズムを紹介するとともに、MACD そのものの考え方を少し改良して、オリジナルのテクニカル分析アルゴリズムを作ってみることにします。
    2006/03/03  
 
コード品質を追求する: FITで解決する
この記事では、コード品質の完璧主義者であるAndrew Gloverが、FITとJUnitの良いところを組み合わせてチームワークを改善し、効果的なエンド・ツー・エンド・テストを行うための方法を解説します。
    2006/02/28  
 
Shaleのベールを剥ぐ:ShaleはStrutsではない
Shaleは、まだ自動インストーラーや洗練された管理インターフェースも備えておらず、きちんと梱包されているわけでもなく、あまりドキュメント化されてもおらず、よくテストされたわけでもありません。Shaleがどんなものかを知りましょう。
    2006/02/28  
 
カブロボ テクニカル分析と、そのアルゴリズムの紹介: その3 月齢
連載の三回目である今回は少し趣を変えてみます。具体的にはより短期売買向きな考え方に基づく方法を紹介してみます。また、今までは RCI や標準偏差といった、数学的な統計を元に売買判断をするテクニカル分析を紹介してきましたが、今回は数学からも少し離れ、どちらかというと生物学的(?)な分析をしてみます。
    2006/02/24  
 
FaceletsはぴったりとJSFにフィットします
この記事では、熱狂的なJSF支持者であるRick Hightowerが、Faceletsの素晴らしさについて、つまり容易なHTML風テンプレートと再利用可能な構成コンポーネントについて解説します。
    2006/02/21  
 
Apache Geronimoでフェールセーフなトランザクショナル・アプリ構築する
この記事では、IBM Advanced Technology Solutionsチームが、Apache Geronimoでのトランザクション・サポートの概要を説明し、こうした機能を利用することでフェールセーフなトランザクショナル・アプリケーションが構築できることを示します。
    2006/02/21  
 
Javaの理論と実践: 疑似typedefアンチパターン
Java 言語にジェネリックスが追加されたことによって、型システムが複雑になり、また多くの場合、変数やメソッド宣言の冗長性が増しています。型に短縮名を定義するための「typedef」機能が用意されていないため、開発者によっては「溺れる者がつかむ藁」としてエクステンションに頼ろうとし、望ましくない結果に終わっているようです。今回の『Javaの理論と実践』では、JavaのエキスパートであるBrian Goetzが、この「アンチパターン(antipattern)」の限界について説明します。
    2006/02/21  
 
カブロボ テクニカル分析と、そのアルゴリズムの紹介: その2 標準偏差
前回 RCI を用いたテクニカル分析をカブロボに実装する方法を紹介しました。もちろん結果論ではありますが、シミュレート結果がプラスになったことで幸先のよいスタートが切れたものと勝手に解釈しています。今回は数学が好きで好きでたまらない皆様のために、更に高度な標準偏差を用いたテクニカル分析を紹介します。
    2006/02/17  
 
Apache Geronimoでの依存性注入 第2回: 新たな時代
第1回に続いて、Apache GeronimoにおけるDI(dependency injection: 依存性注入)の動作を学びましょう。今回は、Geronimoアーキテクチャーの概要やDIがGeronimoに与える影響、GeronimoでのDI機能によって、コードの書き方がどのように変わるのか、などに関して解説します。
    2006/02/14  
 
Ajax をマスターする: 第 3 回 Ajax での高度な要求と応答
多くの Web 開発者たちにとって、シンプルな要求を行って、シンプルな応答を受け取ることができれば、それですべての必要は満たせます。しかし Ajax をマスターしたいのであれば、HTTP ステータス・コード、Ready 状態、そして XMLHttpRequest オブジェクトを完全に理解することが必須です。今回の記事では、Brett McLaughlin が各種のステータス・コードを紹介し、そのそれぞれをブラウザーがどのように処理するかを説明します。そして最後に、使用されることは少ないものの Ajax を使用して実行できる HTTP 要求を紹介します。
    2006/02/14  
 
Apache Derbyを使用した開発 -3連単を当てる:Apache Derbyの紹介
ほとんどすべてのアプリケーション開発者は、ある時点でデータを保存する必要に迫られます。この回では、Apache Derbyを紹介します。Apache Derbyは、オープン・ソースの、フットプリントの小さい、標準ベースのJavaデータベース・システムです。他のデータベース・システムとの比較を試み、ダウンロードとインストールについて論じます。
    2006/02/14  
 
カブロボ テクニカル分析と、そのアルゴリズムの紹介: その1 RCI
本連載は鳥海氏のコラムを補足する形で、特にカブロボの標準ライブラリでは提供されていない各種テクニカル分析を Java 言語で実装し、ロボットに組み込んでみる、というサンプルを紹介していきく予定です。
    2006/02/10  
 
Java Web サービス: 第 1 回 Java Web サービス、来るべき一年
この先一年の間には、Webサービスの展望に劇的な変化が起こります。Java開発者の関心対象として、こうした変化に含まれるものとしては、新しいWebサービス・フレームワークと、Webサービスの上に構築される新しい機能レイヤーの両方があります。この記事では、Dennis Sosnoskiが新しい「Java Webサービス」シリーズを始めるに当たって、今後起こる変化や、新しい道筋などを解説します。
    2006/02/09  
 
Apache Geronimoでの依存性注入 第1回: J2EEアプリケーションでの分離を新しい角度から見る
この記事は、Apache GeronimoにおけるDI(dependency injection: 依存性注入)の動作を学ぶ2回シリーズの第1回です。ここでは最も軽量なDIコンテナーであるPicoContainerを使う例を通して、DIの理論的な基礎を、複雑な詳細を排除しながら解説して行きます。
    2006/02/07  
 
クラスワーキング・ツールキット: ASMとジェネリックス
この記事では、クラスワーキングの導師であるDennis Sosnoskiが、ASMというJavaバイトコード処理フレームワークを利用すると、Javaクラスのロードというプロセスを経ることなく柔軟にジェネリックス情報にアクセスできることを説明します。また、ジェネリックスをバイナリー・クラス・フォーマットで表現する方法についても触れて行きます。
    2006/02/07  
 
FastSOA: XML、XQuery、ネイティブXMLデータベース・テクノロジーによるSOAの高速化
SOAの実装の多くは、XMLで定義されるメッセージ形式に依存しています。その結果、メッセージ・スキーマは複雑で互換性のない、保守しにくいものになり、拡張性やパフォーマンスに関する深刻な問題を引き起こす可能性もあります。ここでは、SOAの中間層でXML、XQuery、およびネイティブXMLデータベース・テクノロジーを利用することで、SOAのパフォーマンスを向上させる新しい手法とテクニックについて説明します。
    2006/02/07  
 
ネイティブ・オブジェクトからのイベントをJavaコードで処理する
他の言語で書かれたオブジェクトを使う場合、ネイティブのイベント・ソースとJava リスナーとの間の通信は厄介なものですが、特にマルチスレッド環境では非常に面倒です。この記事では、ネイティブ・コードからJVMへのイベント通信を透明な形で扱う設計パターンを利用することによって、伝統的なネイティブ・ライブラリーを効果的に扱う方法について解説します。
    2006/01/31  
 
コード品質を追求する: カバレッジ・レポートに騙されないために
テスト・カバレッジ・ツールを使うとユニット・テストに深みが増しますが、このツールは多くの場合、誤って使われています。今回はAndrew Gloverが、この領域での彼の長い経験を生かして、新しいシリーズ、『コード品質を追求する』を開始します。第1回目である今回は、カバレッジ・レポートに表れる数字が実際に何を意味するのか、また逆に数字に意味がない場合について詳しく見て行きます。
    2006/01/31  
 
カブロボ・コンテスト : カブロボコンテストへのご招待・その3
さて、これまでのコラムでは、カブロボコンテストに参加するための基本情報をお伝えしてきました。しかしながら、参加するからにはちゃんと意味のある売買をしなければいけません。というわけで、最終回である今回は、より実践的な、「テクニカル分析」「カブロボの基本戦略」についてお伝えしていきたいと思います。
    2006/01/25  
 
Javaの理論と実践: ソフト参照でメモリー・リークを塞ぐ
今回の記事では、Referenceオブジェクトの、もう一つの形式、『ソフト参照(soft reference)』を検証します。ソフト参照も、ガーベジ・コレクターの助けを借りてメモリーの使用管理を行い、また潜在的なメモリー・リークを防止するのです。
    2006/01/24  
 
Javaアプリから動的にPDFファイルを生成する
アプリケーションでPDF文書を動的に作成する必要がある場合、iTextライブラリーが必要です。オープンソースのiTextライブラリーを使うと、PDFは簡単に作成できます。この記事ではiTextを紹介し、Java 技術アプリケーションからiTextを使い、PDF文書を生成する方法を順に説明します。
    2006/01/24  
 
Inline tagletを用いたjavadocのNLS化手法
javadocドキュメントのNLS化方法として、inline tagletで言語タグを定義し、その言語タグを用いてjavaソース内に複数の言語でコメントを記述し、javadocコマンド実行時に言語を指定して、指定した言語のドキュメントを取得する手法について説明します。
    2006/01/20  
 
Ajax をマスターする: 第 2 回 JavaScript と Ajax を使用して行う非同期要求
大抵の Web アプリケーションでは、サーバーから HTML ページをまるごと取得する要求/応答モデルを使用します。このモデルを使用したやり取りは、ボタンをクリックしてサーバーからの応答を待ち、また別のボタンをクリックして再び待機するといったものになってしまいます。一方 Ajax と XMLHttpRequest オブジェクトを使用すれば、ユーザーがサーバーからの応答を待つ必要のない要求/応答モデルを使用することができます。今回の記事では、Brett McLaughlin が特定のブラウザーに依存しないように XMLHttpRequest インスタンスを作成する方法、要求を作成して送信する方法、そしてサーバーからの応答を処理する方法を説明します。
    2006/01/17  
 
Java Web開発者フレームワーク内でのVoiceXMLページの作成 : XML
インターネットでページを表示することと電話で問い合わせに答えることの間には大きな隔たりがあるように見えますが、実際にはそうでもありません。この記事では、Webページを動的に作成するのと同じテクニックで、(ヴァーチャルな)電話に対応できることを説明します。
    2006/01/17  
 
Geronimoへの転向: Geronimoについて、そしてApacheライセンスの苦闘と収穫
ここではNealが、アプリケーションを構築する度に同じものを開発し直す苦労から解放するために、新たなコード・フレームワークに取り組む開発者達の努力を語ります。また、そうした努力と、Apache Geronimoプロジェクトとライセンスとが、どのように関係してくるかについても説明します。
    2006/01/17  
 
カブロボ・コンテスト : カブロボコンテストへのご招待・その2
前回のコラムでは、カブロボコンテストの概要と、サンプルロボットの作り方、および最も簡単なカブロボの作成方法をお伝えしました。今回はカブロボを作る上での基本技術である、情報取得方法、売買注文の方法および、コンテストへのロボットの登録方法についてお伝えしていきます。
    2006/01/13  
 
カスタムSWTコンポーネントでのMVCの実装
Eclipse SWT(Standard Wideget Toolkit)は、カスタムメイドのウィジェットを実装するための豊富なAPIセットを提供します。この記事では、MVC(Model-View-Controller)アーキテクチャーを概説し、構造化ビューアーの形での現在のMVC実装を説明し、カスタムSWTウィジェットを使用する実装を示します
    2006/01/11  
 
Ajax による SOAP Web サービスの呼び出し - パート 2: Web サービス・クライアントの拡張
今回は、Ajax (Asynchronous JavaScript + XML) の設計パターンを使用して Web ブラウザー・ベースの SOAP Web サービス・クライアントを実装する方法について解説します。このパート 2 では、Web Services Addressing Language仕様および Web Services Resource Framework仕様への基本サポートを実装することにより、前回の JavaScript ライブラリーの諸機能を拡張します。
    2006/01/10  
 
MD5 cryptによるLinuxでのJavaアプリの保護
UNIX/Linux PAM互換システムは、crypt()システム・コールに対するGNU MD5拡張に基づく認証を使用します。この記事では、これらの拡張を説明し、UNIX/Linuxシステムと互換性のあるMD5 cryptのJava実装を示します。
    2006/01/10  
 
Apache GeronimoにJ2EEアプリケーションをデプロイする
Apache GeronimoにJSP (Java Server Pages)、サーブレット、およびさまざまなEJB (Enterprise JavaBeans)をデプロイする方法を学びます。この記事では、他のJ2EE (Java 2 Platform, Enterprise Edition)コンテナーとは異なるApache Geronimoに必要なデプロイメント手順を説明します。
    2006/01/03  
 
KabuRobo 早稲田情報技術研究所 加藤社長インタビュー
developerWorksのWeb Servicesゾーンは、e-ビジネス、e-コマース、そしてエンタープライズに対してWebアプリケーションを構築する開発者のためのリソースです。ここでは、日本語記事を一覧で紹介しています。
    2006/01/01  
 
カブロボ・コンテスト : カブロボコンテストへのご招待
ついに第二回カブロボコンテストが2005年12月19日にスタートしました。第一回コンテストとはおおまかには変わらず、第一回コンテストで出場したカブロボをそのまま出場させることも可能です。
    2005/12/20  
 
ローカライズ・データを正規表現で検証する
Java 言語の正規表現サポートを利用すると、データ検証を容易に行うことができます。有効なデータ記述する正規表現を定義し、それと一致するかどうか、Javaランタイムにチェックさせるのです。しかし、あるタイプのデータでは、ロケールによってフォーマットが異なります。ところがResourceBundleクラスを利用すると、ロケール固有のデータを優雅に扱うことができます。この記事では、この2つの技術を組み合わせ、データ入力に関する一般的な問題を解決します。
    2005/12/20  
 
カブロボ・コンテスト概要
ゲーム感覚で楽しみながら参加するもよし、本格的な株式投資の自動売買技術開発のプラットフォームにするもよし。
    2005/12/19  
 
クラス・ローディング問題の神秘を解く 第2回: クラス・ローディングに関する基本的な例外
この4回シリーズの記事では、アプリケーション開発者が問題を理解し、デバッグできるようになることを目標に、Java のクラス・ローディングを検証しています。この第2回では、IBM Hursley Labs のLakshmi ShankarとSimon Burnsが、幾つかの例外に関して取り上げます。これらは非常に簡単なものですが、新人の開発者でも経験豊かな開発者でも、しばしば戸惑いがちな問題でもあります。
    2005/12/06  
 
Ajax をマスターする: 第 1 回 Ajax の紹介
HTML、JavaScript、DHTML、そして DOM からなる Ajax は、魅力のない Web インターフェースをインタラクティブな Ajax アプリケーションに変換するための卓越した手法です。この記事では Ajax のエキスパートである著者が、Ajax を構成する技術が連動して極めて効率的な Web 開発を容易に実現する仕組みを、その概要から詳細に至るまで実例で説明します。さらに XMLHttpRequest オブジェクトをはじめ、Ajax の中心となる概念についても明らかにします。
    2005/12/06  
 
Javaの理論と実践: 弱参照でメモリー・リークを塞ぐ
この記事では、清掃技術者であるBrian Goetzが、意図せずにオブジェクトが残ってしまう場合についての一般的な原因を究明し、弱参照(weak reference)によって漏れ(leak)を防ぐ方法を解説します。
    2005/11/22  
 
ビューのリンクでEclipseアプリケーションを豊かに
この記事では、Eclipseでのビューを、他のビューの状態と協調、応答動作させるための方法を説明します。また、ある場合には、他の方法よりもビューをリンクする方法の方が良いことについても説明します。
    2005/11/15  
 
IBM Workplace Services Express 2.5技術概説: J2EEアプリケーションのセルフ・デプロイメントを可能にする仕組み
2005年8月末に発売されたIBM Workplace Services Express (以下WSE) は、SMBマーケットをターゲットとしたフロントエンド統合のためのミドルウェアです。本稿では、WSEのアーキテクチャの技術的概説を行うと共に、エンドユーザーコンピューティングのアプローチをJ2EEの環境で実現するWorkplaceアプリケーションとテンプレートの考え方にフォーカスを当ててご紹介をします。
    2005/11/04  
 
特集: IBM Workplace & Notes/Dominoがわかる!
今月LotusDay2005が東京会場を皮切りに各地で開催されていますが、その余韻も冷めやらぬまま来月はIBM WorkplaceとLotus Notes/Dominoを特集します。
    2005/10/28  
 
実用的なGroovy: スムースな演算子
Andrew Gloverが『実用的なGroovy』シリーズの最終回として、多重定義可能な演算子の3つのカテゴリーについて、ごく一般的な使い方を、手順を示しながら解説します。
    2005/10/25  
 
Geronimoアプリケーション・サーバーでのトランザクション
この記事では、J2EEトランザクションに関する重要事項について、またApache Geronimoアプリケーション・サーバーでのトランザクションの使い方について、Java開発者であるNeal Sancheが解説します。
    2005/10/11  
 
SPARQLでRDFデータを検索する
RSSのようなRDFフォーマットで保存されるデータが増えてきたために、特定な情報を見つけるための簡単な方法が必要になってきました。強力な、新しいクエリー言語であるSPARQLは、その要求に応えるものであり、これを利用することによって、RDFの山の中から必要なデータを容易に見つけることができます。SPARQLの機能を訪ねるツアーに出かけましょう。Jena Semantic Web Toolkitを使って、皆さん自身のJavaアプリケーションからSPARQLクエリー行う方法を学びます。
    2005/10/01  
 
クラス・ローディング問題の神秘を解く 第1回: クラス・ローディングとデバッグ・ツール
皆さんがJava開発を行う中で出会いがちなローディングに関する様々な問題を、Lakshmi ShankarとSimon Burnsが解説し、また問題発生の原因と、その解決方法を解説します。第1回の今回は、Javaのクラス・ローディングがどのように動作するのか、またJVMで利用可能な、クラス・ローディングの問題を診断する上で役立つツールについて解説します。
    2005/09/29  
 
Javaの理論と実践: パフォーマンスに関する都市伝説を再検証する
掲示板やニュースグループでJavaのパフォーマンスに関する話題を見ると、JVMの実際の動作に関して、非常に大きな誤解があるようです。JVMではアロケーションが遅いという、繰り返し伝えられているパフォーマンスの迷信に対して、Brian Goetzが風穴を開けます。
    2005/09/27  
 
実用的なGroovy: MOPとミニ言語について
今月のコラムでは、GroovyがMOPをどのように実装しているかを説明します。そして実例を使いながら、非常に実際的なアプリケーション、ミニ言語として機能する辞書アプリケーションを紹介します。
    2005/09/20  
 
StrutsとVelocityを統合する
この記事では、Strutsアプリケーションの中にVelocityテンプレート・エンジンを統合する方法と、使い方について説明します。説明としては、最初に公式を示し、その後から順を追って手順を説明します。
    2005/09/20  
 
JUnit 4の現状を紹介する
この記事では、コード・テストの偏執狂、Elliotte HaroldがJUnit 4を取り上げ、この新しいフレームワークを皆さんの作業の中でどのように使用するかについて解説します。この記事は、既にJUnitに経験のある読者を対象にしています。
    2005/09/13  
 
クラスワーキング・ツールキット: JiBXによるコード生成の内側
この記事では、コード生成に使用している内部構造や、生成されるコードが確実にJVMのルールに従うようにするために彼がたどった手順について議論します。
    2005/09/06  
 
Javaの理論と実践: 動的プロキシーで装飾する
動的プロキシー機能(dynamic proxy facility)はjava.lang.reflectパッケージの一部であり、JDKのバージョン1.3に追加されたものですが、この機能を利用すると、プログラムでプロキシー・オブジェクトを作ることができます。今回は、Brian Goetzが、動的プロキシーに関する幾つかのアプリケーションを調べます。
    2005/08/30  
 
JDBC Data Mediator ServiceとService Data Objectsに関するベスト・パフォーマンス・プラクティス、第1回
JDBC(Java DataBase Connectivity)のDMS(Data Mediator Service)コードを書き、単純な選択ステートメントから複数テーブルを含む高度なクエリーまで、幾つかのJDBCクエリーを行いましょう。2人の著者が、SDO(Service Data Object)の背景にある基本的な原理と、WebSphere Application Server V6.xが提供するJDBC DMSを紹介します。
    2005/08/30  
 
Eclipseで、未解決のプラグイン依存関係を見つける
未解決のプラグイン依存関係を見つけるのは大変な作業であり、時間もかかります。そのプラグインを手動で的確に見つけようとすると、予想以上に時間と手間がかかるものです。このプラグイン・チェックを自動化する方法がないかと思っている人は、ぜひこの先を読んでください。
    2005/08/23  
 
実用的なGroovy: カレー化クロージャーによるファンクショナル・プログラミング
今回はゲスト著者のKen BarclayとJohn Savageが、クロージャーの合成やVisitor設計パターンといった標準的な使い方を、カレーを少し加えて一味違った味付けにするヒントを解説します。curry() メソッドはHaskell Curryが発明したものですが、JSR準拠リリースの以前からGroovy言語の中にあったものです。
    2005/08/23  
 
Eclipse Voice Tools Project
Eclipse Voice Tools Projectは、音声認識業界の企業と個人が協力して、標準準拠でオープン・ソースな音声開発ツールの共通セットを作成しようという新しい取り組みです。この記事では、Voice Tools Project環境のセットアップとカスタマイズの方法を説明します。新しい機能を追加するプロセスも説明します。
    2005/08/23  
 
効果的なログ習慣がエンタープライズ開発を楽にする
エンタープライズ・アプリケーションで効果的なログを行うためには、よく練った計画と、訓練が必要です。この記事では、コンサルタントであるCharles Chanが、プロジェクトの最初から効果的なログ・コードを書くためのベスト・プラクティスを紹介します。
    2005/08/09  
 
Geronimoのデプロイメント・アーキテクチャーを理解する
この記事では、Geronimo開発者であるSrinath Pereraが、Geronimoがこうした目標をどのように実現しているかを解説し、また、Geronimoユーザーから見えるものとGeronimoサーバー・アーキテクチャーの下にある概念とを結びつけます。
    2005/08/09  
 
Webサービスを実装するためのSOAプログラミング・モデル 第5回: サービス指向ユーザー・インターフェース
今回はIBMのSOAプログラミング・モデルに関するシリーズの第5回目として、ユーザーが接するサービスや、HTM(Human Task Manager)を通してユーザーに提供されるサービスに関して説明します。このシリーズの過去の記事では、SOA(service-oriented architecture)の概念に基づいて、Webサービスのための言語に中立なデータ・アクセスとプログラミングのモデルを紹介してきました。
    2005/08/09  
 
Geronimoにサードパーティー・コンポーネントを統合する
この記事では、Apache Geronimoのチーム・メンバーでありコミッターでもあるJeff Genenderが、この機能について解説します。ここではOpenSymphonyのQuartzスケジューラーをGeronimoの中に統合するGBeanを使いながら、サードパーティーのオープンソース・プロジェクトを構築し、コンフィギュレーションを行います。
    2005/08/02  
 
クラスワーキング・ツールキット: 注釈とコンフィギュレーション・ファイル
このコラムでは、Javaの標準プロセスやオープンソース・プロジェクトの多くが、メタデータに対して注釈ベースの手法に切り換えられつつある現実を、開発者としてどう見るべきかについても説明するつもりです。
    2005/08/02  
 
Javaの理論と実践: 良き(イベント)リスナーであるために
リスナーを登録したり、呼び出したりする際に一般的な落とし穴が、幾つかあります。今回のJavaの理論と実践では、Javaの治療師であるBrian Goetzが、良きリスナーであるための、そして、正しくリスナーに接するための良き助言を提案します。
    2005/07/26  
 
セキュアなエンタープライズ・インフラをGeronimoで構築する
この記事では、IBM Advanced Technology Solutionsチームが、Apache Geronimoアプリケーション・サーバーの持つセキュリティー機能の全体的な概要と、こうした機能を利用してエンタープライズ・アプリケーションをセキュアにする方法について解説します。
    2005/07/26  
 
実用的なGroovy: Groovyの成長が加速
今回は、Groovyの素敵な新パーサーによって正式となった最も重要な変更、つまり変数宣言(variable declaration)とクロージャー(closure)を紹介して、Groovyの成長を祝おうと思います。
    2005/07/19  
 
Tigerを使いこなす: コレクション・フレームワーク
今回はJohn Zukowskiが、新しいコレクション・タイプや、既存のクラスやインターフェースへの追加機能など、他の機能強化を幾つか取り上げます。
    2005/07/19  
 
クラスワーキング・ツールキット: 古いJVMでJ2SE 5.0の機能を使う
この記事では、Retroweaverを扱うための基本を解説します。5.0以前のJDKで動作するように、Retroweaverを使ってJDK 5.0コンパイラーの制限を回避する方法を解説します。
    2005/07/06  
 
XJによるXML処理の単純化
この記事では、Javaプログラミング言語にXMLの直接サポートを追加する言語拡張のセット、XML Enhancements for Java(XJ)をわかりやすく紹介します。著者は、XJを開発したチームのメンバーです。
    2005/06/28  
 
Apache GeronimoにWebサービスをデプロイする
この記事では、Javaの専門家である Kunal Mittalが、GeronimoのWebサービス機能の紹介として、標準的なJ2EE Webサービス・コードをGeronimoで書き、開発する方法を解説します。
    2005/06/28  
 
JavaプログラマーのためのCSP 第3回
今回は、JSCPによる開発での高度な話題として、AOPとの類似性、またjava.util.concurrentと比較してのJCSP、JSCPによる高度な同期化、などを取り上げます。
    2005/06/21  
 
JavaプログラマーのためのCSP 第2回
今回は、Abhijit Belapurkarが、JavaベースのJCSPライブラリーを使って、マルチスレッドのJavaアプリケーションを書く方法を説明します。
    2005/06/21  
 
Geronimoアプリケーション・サーバーにデータベースを接続する3つの方法
この記事に含まれるアプリケーション例とダウンロード可能なEclipse IDEプロジェクトを使って、アプリケーションを接続する方法や、GeronimoでデプロイされたJDBCコネクション・プールを通して通信する方法を学んでください。
    2005/06/21  
 
Eclipseでヘルプを集中化する
この記事では、ヘルプの目次を持つEclipseプラグインの作り方や、ヘルプ・ファイルを外部化するためのInfocenterの使い方、また、集中化されたヘルプ・リポジトリーにEclipseのメイン・メニューからアクセスできるような、新しいメニュー・アイテムの作り方などに焦点を当てます。
    2005/06/21  
 
JavaプログラマーのためのCSP 第1回
3回シリーズのこの記事では、developerWorksに何度か寄稿しているAbhijit Belapurkarが、マルチスレッド・プログラミングに関して皆さんが抱く恐怖感を完全克服するための道に案内します。今回は最初として、最も一般的な問題、つまり競合の危険性、デッドロック、ライブロック(livelock)、リソース不足(resource starvation)などの概要を見て行きます。
    2005/06/21  
 
Geronimoの中でTomcatの力を解き放つ
この記事ではTomcatのベテラン・ユーザーであるSing Liが、GeronimoをTomcat用にコンフィギュレーションしなおす方法を解説します。Tomcatおなじみの基本機能をGeronimoで利用するにはどうすべきか、そして、それらの機能を強化する方法を学びましょう。
    2005/06/14  
 
クラスワーキング・ツールキット: 注釈とASM
このコラムでは、ASMバイトコード操作フレームワークを、J2SE 5.0のもう一つの新機能であるインスツルメンテーション・パッケージ(instrumentation package)と組み合わせ、クラスをJVMの中にロードする際に、注釈で指示された通りにクラスを変換する方法を解説します。
    2005/06/07  
 
Geronimo用のクライアント・アプリケーションを作る
Geronimoのクライアント・アプリケーション・コンテナーを活用するか、あるいは自分独自のものを作り出す。
    2005/06/07  
 
JCA 1.5 第3回: メッセージ・インフロー
3回シリーズ最終回の今回は、新しいメッセージ・インフロー契約(message-inflow contract)を紹介します。
    2005/06/07  
 
Javaの理論と実践: データベース無しにデータベース・クエリーを行う
今回のJavaの理論と実践では、一時的なデータに対して、SQLやXQueryなど操作用の金槌をどのように適用するかについて解説します。
    2005/05/31  
 
Webアプリケーション用のテスト・ケースを作る
この記事では、サンプル・アプリケーションを使いながら、簡潔なテスト・ケースを生成する方法を、順を追ってjWebUnitを説明します。
    2005/05/31  
 
JAXPのすべて 第2回
ここでは、JAXPを使用してXMLドキュメントを変換する方法と、XSLスタイルシートをキャッシュしてパフォーマンスを最大限に高める方法について説明します。
    2005/05/31  
 
実用的なGroovy: JavaアプリケーションにGroovyを混ぜ込む
今回の実用的なGroovyでは、JavaコードにGroovyを組み込むための様々な方法を、Andrew Gloverが紹介します。そして、それが、いつ、どういう場合に適切なのかを解説します。
    2005/05/24  
 
Geronimo!: 第2回 野生のJ2EE 1.4を使いこなす
この第2回では、Sing LiがGeronimoの実際を取り上げます。最新のGeronimoディストリビューションを使って、Webアプリケーションやエンタープライズ・アプリケーション、EJB(Enterprise Java Beans)などをテストし、またデプロイを行います。
    2005/05/24  
 
Tigerを使いこなす: 成長するAWT
この記事では、Java 2プラットフォーム5.0リリースでのAWTの変更点について解説します。
    2005/05/24  
 
Geronimo!: 第1回 J2EE 1.4エンジンへの道
Geronimoは、既存のオープンソース・コンポーネントを元にJ2EE 1.4認証されたサーバーを構築しようとする、大規模なプロジェクトです。第1回目は、Geronimoの存在理由や設計ゴール、アーキテクチャー、また中核的な概念や用語などを解説します。
    2005/05/17  
 
クラスワーキング・ツールキット: ASMクラスワーキング
今回のクラスワーキング・ツールキットでは、コンサルタントのDennis Sosnoskiが、ASMバイトコード操作フレームワークを、彼が以前Javaプログラミングのダイナミックス・シリーズの中で議論したBCEL(Byte Code Engineering Library)やJavassistフレームワークと比較します。
    2005/05/12  
 
より良いJ2EEサーバーを、オープンソースの方法で構築する
IBMがGluecodeを買収するというニュースの後、私達はGeronimoの主要貢献者の1人でありGluecodeのCTOでもあるJeremy Boynesに対して、GeronimoやJava の方向性、オープンソースの現状などについてのインタビューを行いました。
    2005/05/10  
 
Apache Geronimoアプリケーションを作成しデプロイしデバッグする
Apache Geronimoサーバー用の新しいEclipseプラグインを使って、Webアプリケーションを開発し、デプロイするための方法を学びましょう。
    2005/05/10  
 
Javaでビジネス最適化
この記事では、2回に渡りJavaによる最適化について取り上げます。
    2005/05/09  
 
JAXPのすべて 第1回
Java API for XML Processing(JAXP)では、さまざまなAPIを使用してXMLの検証、解析、変換を行うことができます。JAXPは使いやすく、ベンダー中立です。JAXPを紹介する2回シリーズの第1回であるこの記事では、このAPIの解析および検証機能を活用する方法について説明します。第2回では、JAXPを使用したXSL変換について述べます。
    2005/05/07  
 
Coberturaでテスト対象範囲を調べる
この記事では、コード・カバレッジ(テスト対象範囲)に関するベスト・プラクティスを使ってCoberturaを活用する方法を解説します。
    2005/05/03  
 
JCA 1.5 第2回: 作業管理とトランザクション・インフロー
2回目の今回は、新しいJCA作業管理契約(JCA work-management contract)を紹介します。
    2005/05/03  
 
Javaの理論と実践: 初期化の原子性を使用可能にする
今回は、APIの設計手法として、self-returnイディオムを使うことによって、ある状況では、皆さんのAPIがユーザーにとって非常に使いやすくなることを説明します。
    2005/04/27  
 
Tigerを使いこなす: 列挙型の基礎を乗り越える
今月のTigerを使いこなすでは、コラムニストのJohn Zukowskiが、列挙型クラスとその事前定義メソッドの扱い方を説明します。
    2005/04/19  
 
ApacheのBeehive入門
この記事では、Beehiveを使い始めるための手掛かりを紹介し、またBeehiveアプリケーションを作るためのEclipseプラグインである、Pollinateを簡単に紹介します。
    2005/04/19  
 
実用的なGroovy
この記事で手軽に使えるマークアップを瞬時に作りたい場合に、Groovy Builderがどれほど便利なものか、皆さんも理解できるでしょう。
    2005/04/12  
 
EclipseのASTParserを試す
この記事では、既にEclipseを使っている人への朗報としてJDTとASTParserが利用できることを紹介します。
    2005/04/12  
 
JCA 1.5第1回: 最適化とライフサイクル管理
今回は、3回シリーズの第1回として、J2EE(Java 2 Enterprise Edition)のConnector Architecture、JCA 1.5で行われた最適化を紹介します。
    2005/04/05  
 
クラスワーキング・ツールキット: アスペクトを使ってパフォーマンスを計測する
アスペクトでコード汚染をクリーンアップできるのか? ロギングにAspectWerkzフレームワークを使うことが第一歩
    2005/04/05  
 
国際化JSPアプリケーションを構築する
この記事では、JSPアプリケーション設計の鍵となる問題は何かを明確にし、実践的手法に基づく2つの解決手段を示します。
    2005/03/29  
 
Javaの理論と実践: XQueryによるscreen-scraping
今回は、XQueryをHTMLのscreen-scrapingエンジンとして効果的に使う方法を解説します。
    2005/03/22  
 
Tigerを使いこなす: 仮想マシンに関するアップデート情報
今回の記事では、最新Java仮想マシンの起動時間がどのように改善され、メモリー要求が減少し、またパフォーマンスが向上しているかについて解説します。
    2005/03/15  
 
実用的なGroovy: Groovyでサーバー側に対応する
この記事では、Groovlet、GSP(GroovyServer Pages)フレームワークと、その使い方を紹介します。
    2005/03/15  
 
クラスワーキング・ツールキット: アスペクトを動かす
この記事では、ロギングにとって、AOPは役立つものなのか、AspectWerkzフレームワークを使って、その真偽を見て行きます。
    2005/03/08  
 
JUnit用アサーション・エクステンション
JUnitXは、JUnitフレームワーク内で実行する一連の複合アサーションを提供します。alphaWorksからの、この新しいパッケージを使って、Javaソフトウェアの信頼性と堅牢性を向上させる方法を学んでください。
    2005/03/08  
 
Jesterでテストをテストする
この記事ではJesterを紹介し、最善の結果を得るための使い方を説明します。
    2005/03/03  
 
Javaの理論と実践: 欠陥マイクロベンチマークを分析する
今回の記事では、Java言語構成体のパフォーマンス測定が見かけよりもずっと難しいのはなぜなのかを解説します。
    2005/02/22  
 
実用的なGroovy: Groovyテンプレートを使ったMVCプログラミング
今回は、Groovyのテンプレート・エンジン・フレームワークを使用してビュー・プログラミングを単純化し、長期間に渡ってコードを維持管理しやすくする方法について解説します。
    2005/02/15  
 
Tigerを使いこなす: Tigerで痛み止め
今回の記事では、どうすればコンテント・ペインを使わずに済むのかを説明します。
    2005/02/15  
 
Webサービス・プログラミングのヒントと秘訣: J2EEテクノロジーと.NETの間のインターオペラビリティーを改良 第3回
今回は、J2EE技術と.NETとの間での命名規則の違いが、どのようにWebサービスのインターオペラビリティーに影響するかについて解説します。
    2005/02/10  
 
クラスワーキング・ツールキット: ヘンゼルとグレーテルでコードをカバーする
今回はクラスワーキング・ツールを中心に取り上げる新しいシリーズの最初の記事として、コード・カバレッジ・ツールをテストの品質チェックに活用する方法について解説します。
    2005/02/08  
 
JSFを信じない人のために: JSFに関するFUDをクリアーする
この4回構成の新シリーズでは、developerWorksに頻繁に投稿しているRick Hightowerが、事実とFUDを切り分けます。
    2005/02/03  
 
進歩したSynth
この記事では、Synthの概念を順を追って説明しながら、Synthルックを持つアプリケーションをゼロから作り上げます。
    2005/02/01  
 
Javaの理論と実践: Generics、了解!
今回のJavaの理論と実践 では、genericを初めて使う人が陥りがちな落とし穴について解説します。
    2005/01/25  
 
パフォーマンスの目: ウェイト・リーク
今回の記事では、ウェイト・リーク(wait leaks)と呼ばれる、特別な競合状態を見つけ出す方法を説明します。
    2005/01/20  
 
SyncMLによる異種構成データベース複製
この記事では、Jayanthi SuryanarayanaとNeil Tunnicliffeが、JDBCとSyncML標準を使った、汎用データベース複製ソリューションを提供します。
    2005/01/18  
 
実用的なGroovy: GroovyによるJDBCプログラミング
今回は、GroovySqlの使い方として、単純なデータ・レポート・アプリケーションの構築を解説します。
    2005/01/11  
 
PMDでバグを退治する
この記事ではPMDに組み込まれているルールの使い方と、Javaコードの品質を改善するためにカスタムのルール・セットをどのように作るかを説明します。
    2005/01/07  
 
TestNGでJavaユニット・テストを楽々行う
この記事では、Javaアプリケーションのテスト用の新しいフレームワークであるTestNGを紹介します。
    2005/01/06  
 
Javaの理論と実践: 動的コンパイルとパフォーマンス測定
今回の記事では、動的コンパイルによってパフォーマンス・テストが複雑になる事例の中から幾つかを解説します。
    2004/12/21  
 
実用的なGroovy: GroovyによるAntスクリプト
Groovyの実用的なアプリケーションに関する新シリーズの第2回目として、今回はGroovyのビルダー・ユーティリティーを紹介します。
    2004/12/14  
 
Hibernateで継承マッピングを単純化する
この記事では、複雑なオブジェクト・モデルをリレーショナル・データベース・モデルにマップするために、日々のプログラミング作業の中で使用することのできる3つの戦略について解説します。
    2004/12/14  
 
Tigerを使いこなす: JDK 5.0ソースコード・ライセンス
今回の記事は休憩として、新しいコード・リリースの詳細から離れ、ライセンス条件と、ソースから何が得られるのかの概要を説明します。また、最近意外にもアクセスできるようになった、J2SE 6.0リリースであるMustangにも軽く触れます。
    2004/11/30  
 
for/inでJava 5.0 のループを拡張
この記事では、for/inループがどのようにして不必要な型変換を回避するかのみならず、for/inイテレーターを配列とコレクションに対して使用する方法を含め、多くを学びます。
    2004/11/30  
 
RELAX NGとカスタム・データ型ライブラリ
この記事では、ある数字が素数(prime)であることを検証する方法を通して、こうしたインターフェースを紹介します。
    2004/11/23  
 
Javaの理論と実践: アトミックで行く
この記事では、java.util.concurrentにアトミック変数クラスが追加されたことによって、いかに高度にスケーラブルな非ブロック・アルゴリズムがJavaで開発できるようになったかを解説して行きます。
    2004/11/23  
 
One-JARでアプリケーションの配布を単純化
この記事ではOne-JARを紹介します。One-JARはカスタムのクラスローダーを使って、実行形式のJARファイル内にあるJARファイルから動的にクラスをロードするツールです。
    2004/11/23  
 
JAXP 1.3は何が新しいのか? 第1回
今回の記事では、JAXP仕様の簡単な概要とjavax.xml.parsersパッケージに加えられた変更の詳細を説明し、また強力なスキーマのキャッシュと妥当性検証フレームワークについて解説します。
    2004/11/09  
 
列挙型を使う
この記事では、Tigerの新しい機能のうちの一つ列挙型構成体について、列挙とは何か、プログラムの中でどのように使えば良いのか、またなぜ昔からある、例のpublic static finalコードをその中に放り込めるのかを説明します。
    2004/11/09  
 
Groovyを使って、より高速にJavaコードをユニット・テストする
alt.lang.jreシリーズの一部として書かれた、Groovyの紹介記事の反応が非常に大きかったので、この新しい技術を使うための実際的なガイドとして、コラムを始めることになりました。
    2004/11/09  
 
ただ今上映中: オンラインMPEG-4映画を作る
この記事では、SDKライブラリーを使ってカスタムのJava MPEG-4プレーヤーをどのようにコード化するか、またオンデマンドでダウンロードできるMPEG-4プレーヤーを作るためのアプレットの使い方、配信用のコンテンツの用意の仕方を解説します。
    2004/11/02  
 
Javaの理論と実践: JDK 5.0における、より柔軟でスケーラブルなロック
JDK 5.0では、ハイ・パフォーマンスの同時アプリケーションの開発用に、強力な選択肢が追加されています。例えばjava.util.concurrent.lockのReentrantLockクラスが、Java言語のsynchronized機能の置き換えとして提供されています。
    2004/10/26  
 
Tigerを使いこなす: OceanとSynthがMetalに出会う
今回の記事では、新しく利用できるようになったOceanとSynthというルック・アンド・フィールを探ります。
    2004/10/19  
 
JCAトランザクションを理解する
この記事では、別々のEIS(エンタープライズ情報システム)がどのようにしてJ2EE Connector Architecture を介してトランザクションにて機能できるかを説明します。
    2004/10/19  
 
TableModel FreeフレームワークでSwing開発を容易にする
この記事ではTableModel Free (TMF)フレームワークを紹介します。これを使うと、Swing JTablesでTableModelsを使う必要が無くなります。
    2004/10/12  
 
XDocletでコードの肥大化を防ぐ
この記事では、XDocletを取り上げます。単純ながら優雅な設計で作られているXDocletの核心部分を明らかにし、皆さんがこの技術を理解して生産的に使用できるように解説して行きます。
    2004/10/05  
 
Tigerを使いこなす: 環境変数を取得し、サブ・プロセスを呼び出す
今回は、ProcessBuilderクラスによって新しいプラットフォーム固有の情報へのアクセスがこれまでないほど簡単になることを説明します。
    2004/09/30  
 
パフォーマンスの目: Troveコレクション・クラス
今回は、皆さんが慣れているJavaコレクションとTroveクラスがどのように異なるのか、どのような場合に使うべきかについて見て行きます。
    2004/09/28  
 
SDOの紹介
J2EE プログラミング・モデルと API が原因で、開発者が技術固有の構成、プログラミング、そしてデバッグにあまりにも多くの時間を費やすことになっていると考えているのなら、ぜひ、この記事を読んでください。Java&trade; 開発者の多くが、異種のデータに一様にアクセスできるという方法には懐疑的で、この問題の解決策を提案する各種のプログラミング・フレームワークに失望した経験があります。この記事では、Java 開発者である Bertrand Portier と Frank Budinsky が、SDO (Service Data Objects) を使用した次世代のデータ・プログラミングを紹介します。
    2004/09/28  
 
Eclipseプラグインのロギング・フレームワークをプラグイン
この記事で、Apache Log4jを基にしたプラグインそのものであるEclipseプラグインのロギング・フレームワークを使用して構成する方法を学びましょう。
    2004/09/27  
 
Jazzyに勝るものはありません
この記事では、コンピューターをベースにしたスペル・チェックの主要なアルゴリズムの詳細にわたる説明を提供し、それからJazzy APIを活用することによりそれらの最もおいしい部分をどのようにしてJavaアプリケーションに取り入れられるかを考察します。
    2004/09/22  
 
Eclipse と AJDT でアスペクト指向の Java アプリケーションを作成する
この記事では、AJDT を読者に紹介します。ツールのインストール方法、AspectJ アプリケーションの作成・実行・デバッグ、そしてアスペクト指向プログラミングに固有のクロスカットの構造を視覚化そしてナビゲートする方法について学びます。
    2004/09/21  
 
動的プロキシーでJava検証
この記事では、動的プロキシーがどのようにしてコア・アプリケーション・コードを検証ルーチンから免れるようにし、ビジネス・ロジックのみに専念させるかを考察します。
    2004/09/14  
 
Tigerでのアノテーション 第1回: Javaコードにメタデータを追加する
今回は、なぜメタデータがそれほど便利なのかを説明します。またJava言語でのアノテーションについて紹介し、次にTigerに組み込まれているアノテーションについて見て行きます。
    2004/09/02  
 
パフォーマンスの目: 極限におけるプロファイル
今回の記事では、ファット・クライアント(fat client)にプロファイラーを使った経験に関連してお話しします。
    2004/09/02  
 
Tigerでのアノテーション 第2回: カスタム・アノテーション
今回の記事では、カスタム・アノテーションの作り方を説明し、次にドキュメントへのアノテーションをどのように注釈付けし、さらなるコードのカスタム化をどう行うかを解説します。
    2004/09/02  
 
オンデマンド・オペレーティング環境
オンデマンド・オペレーティング環境は、SOA (Service Oriented Architecture) の概念に基づいています。SOA では、すべてのアプリケーションやリソースを、特定の、識別可能な一連の (ビジネス) 機能を実装するサービスとみなします。オンデマンド環境でのサービスは、ビジネス機能の他にも、環境に対する広範な構成やオペレーション、モニタリングに参加するための管理インターフェースを実装することもあります。この記事では、オンデマンド・オペレーティング環境について紹介します。
    2004/08/24  
 
Javaアプリケーションのテスト用に証明書チェーンを生成
ソフトウェアをテストするためにデジタル証明書チェーンを作成する方法を学びましょう。簡単に入手可能なOpenSSLツールキットを使用し、このあまり文書化される機会に恵まれないプロセスを明確にします。
    2004/08/18  
 
CodeRally 作ってみよう!
ここでは、仮想的な2次元グリッド上で車(オブジェクト)の自律的な動きをプログラミングによって競うラリーカーゲームCodeRallyをご紹介します。
    2004/08/13  
 
CodeRally ゲーム紹介
ここでは、仮想的な2次元グリッド上で車(オブジェクト)の自律的な動きをプログラミングによって競うラリーカーゲームCodeRallyをご紹介します。
    2004/08/13  
 
CodeRally FAQ
ここでは、仮想的な2次元グリッド上で車(オブジェクト)の自律的な動きをプログラミングによって競うラリーカーゲームCodeRallyをご紹介します。
    2004/08/13  
 
CodeRally 試してみよう!(6)
ここでは、仮想的な2次元グリッド上で車(オブジェクト)の自律的な動きをプログラミングによって競うラリーカーゲームCodeRallyをご紹介します。
    2004/08/13  
 
CodeRally 試してみよう!(5)
ここでは、仮想的な2次元グリッド上で車(オブジェクト)の自律的な動きをプログラミングによって競うラリーカーゲームCodeRallyをご紹介します。
    2004/08/13  
 
CodeRally 試してみよう!(4)
ここでは、仮想的な2次元グリッド上で車(オブジェクト)の自律的な動きをプログラミングによって競うラリーカーゲームCodeRallyをご紹介します。
    2004/08/13  
 
CodeRally 試してみよう!(3)
ここでは、仮想的な2次元グリッド上で車(オブジェクト)の自律的な動きをプログラミングによって競うラリーカーゲームCodeRallyをご紹介します。
    2004/08/13  
 
CodeRally 試してみよう!(2)
ここでは、仮想的な2次元グリッド上で車(オブジェクト)の自律的な動きをプログラミングによって競うラリーカーゲームCodeRallyをご紹介します。
    2004/08/13  
 
Tigerを使いこなす: スレッドでのデフォルト例外処理
この記事では、デフォルトの振る舞いを入れ換えることで出力をカスタム化する方法を説明します。
    2004/08/10  
 
パフォーマンスの目: 変更の危険性を判断する
コード再構成はどんな種類のものであれ、正確にスケジュールを立てるのは現実的に不可能です。幸いなことに、ここにソフトウェア・メトリックスという形の助けがあります。
    2004/07/30  
 
Javaの理論と実践: Web層での状態複製
この記事では、状態複製に関わる幾つかのオプションと、良好なスケーラビリティやパフォーマンスを得るためにはHttpSessionをどのように使えば最も効果的かを説明します。
    2004/07/29  
 
Element Construction Setを使い、フォーマットしたログを作る
この記事では、ECSを紹介しながら、ECSを使ってログファイルから形式の整ったステータス・レポートを生成する方法を、順を追って説明します。
    2004/07/22  
 
AUIMLツールキット入門
この記事では、Abstract User Interface Markup Languageツールキットの入手方法、またインストールや使用の方法を手順を追って説明します。
    2004/07/21  
 
AOPを使いコントラクトを実施する
この記事では、コードをすっきりとしていて柔軟な状態に保ちながらコンポーネント間の明確なコントラクトを設計・定義することを促すことにより、どのようにしてAOPがリスクを緩和するかを論議します。
    2004/07/15  
 
パフォーマンスの目: ガーベジ・コレクションを調整する
今回の記事では、最近の熱狂的なblog騒ぎに加わっている人であれば聞いたことがある、Blog-Cityについて解説いたします。
    2004/06/30  
 
CodeRulerで中世世界の王国を攻略
至高のCodeRulerを使い、一日中一生懸命に頑張れば、(スキル習得と領地収得を含む)勝利と栄光は全てあなたのもの。戦争シミュレーションの熱狂者は、究極の王国支配への王道へとあなたをいざないます。
    2004/06/29  
 
Javaの理論と実践: バグを確実につぶす
今回は、このコラムで説明してきた設計原則にコードが合致するかどうかの静的解析にFindBugsを使う方法を説明します。
    2004/06/29  
 
Jena入門書
この記事では、Javaアプリケーションの中のRDFデータ・モデルを活用するためにJena Semantic Web Toolkitを使用する方法を紹介します。
    2004/06/23  
 
Tigerを使いこなす: 並行コレクション
今回の記事では、コレクション・フレームワークにあるQueueインターフェースに関して、非並行・並行実装、並行Map実装、特別用途の並行List実装とSet実装などについて説明します。
    2004/06/16  
 
Javaプログラミングのダイナミックス 第8回: リフレクションに取って代わるコード生成
今回、ランタイムclassworkingをいかにして活用するかをデモンストレーションすることにより、この「Javaプログラミングのダイナミックス」シリーズに終止符を打ちます。
    2004/06/10  
 
Standard Widget Toolkit でのJava 2D画像
この記事では、SWTコンポーネントやDraw2D図形にJava 2D画像を描くのがいかに簡単なものかを説明します。
    2004/06/01  
 
Standard Widget Toolkit でのJava 2D画像
この記事では、SWTコンポーネントやDraw2D図形にJava 2D画像を描くのがいかに簡単なものかを説明します。
    2004/06/01  
 
Javaの理論と実践: 例外をめぐる議論
最近何人かの著名なライターが、良質なJavaのクラス設計において非チェック例外というのは、以前思われていた以上に意味を持つのだ、という立場を取るようになっています。
    2004/05/25  
 
FindBugs第1回: コード品質を改善する
2部構成のこのシリーズでは、上級ソフトウェア・エンジニアがコードの品質改善や、隠れているバグを取り去るのにどれほど役に立つかを説明します。
    2004/05/25  
 
FindBugs 第2回: カスタムのチェック機能を書く
シリーズ第2回目の今回は、アプリケーション特有のバグを検出するチェック機能(detectors)を書く方法を説明します。
    2004/05/25  
 
パフォーマンスの目: ガーベジ談義
ガーベジ・コレクションの問題をどのように特定すべきか、また皆さんの疑問・・つまり一体ガーベジ・コレクターは何をしているのか、と言う疑問に対する答えを説明してくれます。
    2004/05/21  
 
EclipseをJakarta Tomcatの開発環境として使う
この記事では統合のために、手順を追ってEclipse、Jakarta Tomcat、Eclipse Tomcatランチャー・プラグインをインストールして行きます。
    2004/05/20  
 
Java共有クラス
この記事では、JVMにおける共有クラスの背景にある概念、また共有クラスがどのように動作するのか、ユーザーはどのようにこの技術を利用できるのかについて説明します。
    2004/05/08  
 
Eclipse Visual Editor Projectで、GUIを作成
この記事では、AWT/Swing アプリケーションを構築する際のVisual Editor 0.5の機能の短いデモンストレーション、そしてVisual Editor 1.0でのSWTサポートの下見と共に紹介します。
    2004/05/04  
 
Javaの理論と実践: J2EEをコンテナから誘い出す
今回は、J2EEコンテナ外に存在するいくつかのJ2EE技術をどのようにしてJ2SEアプリケーションに使うかについて見て行きます。
    2004/04/20  
 
Eclipse Modeling Frameworkでモデリング: 第1回
Eclipse Modeling Framework(EMF)とは、モデル主導のアプリケーションを開発するためのオープン・ソース・フレームワークです。
    2004/04/15  
 
DbUnitとAnthillによるテスト環境の制御
連続的な統合にいかにして対処するか、そして(テスト前にデータベースの状態を設定してテスト環境を一貫して制御する為に)JUnitと同時進行でいかにしてDbUnitを使用するかをこの記事で説明します。
    2004/04/13  
 
コンテナを使わないオブジェクト・リレーション・マッピング
この記事ではdeveloperWorks に定期的に寄稿しているRick Hightowerが現実世界での例を使って、企業用途にとって興奮すべき新しい技術の2つを紹介します。
    2004/04/13  
 
メッセージを理解する: J2EE 1.4のメッセージング
この記事では、特にメッセージングに関するJ2EE仕様の変更に着目します。何を変更すべきか、何を現状維持出来るか、そしてどのような新しい可能性が待ち受けているかを、ここで学べます。
    2004/04/09  
 
Eclipse用Easy Strutsを使用したStruts開発
この記事では、Easy Strutsプラグインからの助けを借りてEclipse IDE内でStrutsアプリケーションを開発する方法を紹介します。
    2004/04/08  
 
Tigerを使いこなす: 書式制御出力
Tigerによって、Javaプログラミングの世界でもprintf形式の書式制御出力ができるようになります。今回はCから吹き込まれたprintfのサポートと書式制御文字列のあらゆる面に関して説明します。
    2004/04/02  
 
Javaの理論と実践: Javaメモリ・モデルを修正する 第2回
今回は新しいJMMの下でvolatileやfinalの意味体系がどのように変わるか、またそうした変更によって、意味体系が大部分の開発者の直感に合うようになることを明らかにします。
    2004/03/30  
 
パフォーマンスの目: NIOでMegaJogosを強化する
今回の記事ではKirk PepperdineとJack Shiraziが、Marcosが苦難の道すがら見つけたNIOパフォーマンスの微妙な点のいくつかを解説します。
    2004/03/17  
 
レガシーJavaアプリケーションの保守にAOPを使用する
この記事では、レガジーアプリケーションの最も不透明である内部動作への先例のないビューを獲得するためにアスペクト指向プログラミング(AOP)を使用する方法を説明します。
    2004/03/09  
 
Runtime SpyでEclipseの起動パフォーマンスを調整する: 第1回
この記事ではEclipse.orgからコア・ツールの一つとして入手できるRuntime Spyを紹介します。
    2004/03/04  
 
Javaプログラミングのダイナミックス 第6回: Javassistを使用したアスペクト指向の変更
今回の記事では、どのようにJavassistの探索・置換サポートが、テキスト・エディターの全置換コマンドと同じぐらい簡単にJavaのバイトコード編集を行うかを示してくれます。
    2004/03/02  
 
Tigerを使いこなす: XMLからのプロパティのロード
Tigerのリリースはプロパティクラスをさらに高め、等号(=)によって分けられた一行をキーと値を指定するためだけに使用するのではなく、それらのキーと値のペアを保存したり、XMLファイルを使用してロードすることができます。
    2004/02/25  
 
Javaの理論と実践: Javaメモリ・モデルを修正する 第1回
今回の記事では、JMMを修正するためにvolatileやfinalの意味体系をどのように強化するかを説明します。こうした変更の一部は既にJDK 1.4に統合されており、残りはJDK 1.5に統合される事になっています。
    2004/02/24  
 
AOPが密結合の憂うつさを取り除く
この記事ではAOPの機能設計概念の一つである静的横断(static crosscutting)を使う事により、密に結合されて絡み合ってしまう可能性のあるコードが、強力で拡張可能なエンタープライズ・アプリケーションに変えられることを説明します。
    2004/02/18  
 
パフォーマンスの目: 例外の例外
今回はJavaRanchに立ち寄り、例外に関して起きている井戸端会議での話題に対して、裏の裏を解説しながら反論を試みます。
    2004/02/10  
 
Servlet APIとNIO: ついにServlet APIとNIOが結合できる
この記事では、Java開発者Taylor Cowanが、どのようにproducer/consumerモデルをconsumernonblocking I/Oに適用するかを教えてくれます。
    2004/02/03  
 
Javaプログラミングのダイナミックス 第5回: オンザフライでクラスを変換する
この回では、アスペクト指向の柔軟な「ジャストインタイム」機能を扱うためにJavassistフレームワークを使用して、実際のクラスのロード処理と変換を組み合わせる方法をあなたに教えます。
    2004/02/03  
 
J2EEパスファインダー: Java Servlet 2.4のフィルタリング
最終回である今回は、典型的なフィルタの実装方法を3つのステップを通して説明します。さらに、正式リリースされたJava Servlet 2.4仕様から、興味深い変更のいくつかについてもこっそり教えてくれます。
    2004/01/27  
 
Javaの理論と実践: ガベージコレクションとパフォーマンス
今回の記事では、コレクタの選び方によるパフォーマンスへの影響、コーディング形式の違いによるガベージコレクションへの影響、さらにメモリ確保やそれに関連する動作がJava仮想マシンに与える負担について論じます。
    2004/01/27  
 
WS-AtomicTransactionとJTAによる分散トランザクション
この記事では、Webサービス・トランザクションの概念と、トランザクション・サービスとの相互動作、具体的にはJ2EEのトランザクション・モデルとJava Transaction APIとの相互動作について紹介します。
    2004/01/27  
 
Tigerを使いこなす: Tigerのプレリリース版がお試しできます
Sunは、「Tiger」として知られているJ2SE 1.5のアルファ版をリリースしました。この最初の記事中で、プレリリースソフトウェアをどこで入手するのか、およびインストール方法を紹介しています。
    2004/01/20  
 
JavaプログラミングでのXML-RPC
この記事では、ソフトウェア開発者であり指南役であるRoy Millerが、XML-RPCとは何か、そして効果的に使用する方法について話します。
    2004/01/13  
 
Merlinの魔術: Genericsのプロトタイプ
J2SE 1.5(別名Tiger)はまだ正式にはリリースされてはいませんが、genericsプロトタイプ版のearly access(初期リリース)をダウンロードして試すことはできます。
    2003/12/19  
 
パフォーマンスの目: マイクロパフォーマンスのベンチマーキング
今回の記事では、低レベルのパフォーマンス・チューニングに関する面白い質問など、こうした質問のいくつかに答えるべく、バイトコード解析に飛び込んでみます。
    2003/12/05  
 
EclipseとHSQLDB: リレーショナル・データベース・サーバーをEclipseに埋め込む 第2回
2回目の今回は、Eclipseのフィーチャーを使って、どのように前回開発したプラグインの限界を乗り越えるかをとりあげます。
    2003/12/04  
 
J2EE パスファインダー: JAASとJSSEを備えたJavaセキュリティ
今回の記事では、エンタープライズJava開発者であり、教育者であるKyle Gabhart氏が、Java Authentication and Authorization Service (JAAS)とJava Secure Socket Extension (JSSE)を紹介します。
    2003/11/25  
 
Javaの理論と実践: 1.4.1 JVM中のガーベジ・コレクション
今回の記事では、どのように1.4.1JVMがガーベジ・コレクションを処理しているのか、マルチプロセッサ・システム用の新しいガーベジ・コレクションのオプションのいくつかを含めて調査します。
    2003/11/25  
 
SWTアプリケーションにコンテンツ・アシスタントを備える
この記事ではどんなSWTベースのアプリケーションにも簡単にコンテンツ・アシスタント機能を追加する方法を説明します。
    2003/11/19  
 
Merlinの魔術: 不確定プログレス・バー
今回の記事では、コラムニストのJohn ZukowskiがJProgressBarの使い方を復習し、その上で新しい不確定モードを説明します。
    2003/11/18  
 
JNDI迷宮を進む
この記事では、成功のうちに、JNDIネームスペースの中で公開されているEJBコンポーネントを見つけるクライアントコードの書き方を説明します。
    2003/11/18  
 
JXTA 2: ハイパフォーマンス、大規模スケーラブルP2Pネットワーク
この記事は2年前に発表されたSing LiのJXTAシリーズ、 P2Pを相互運用可能にする 、を元にして、新しいプラットフォームの主な変更点を説明します。
    2003/11/11  
 
Javaアプリケーションで繰り返しタスクをスケジューリングする
この記事では、簡単かつ一般的なタスクのスケジューリング・フレームワークを、任意で複雑なスケジュールに合わせて構築するにはどうすべきかを説明します。
    2003/11/04  
 
TriActive JDOの実践入門
この記事では、どのようにドメインモデルがMySQLデータベースと永続するのか示すことにより、TJDOへの入門を提供します。
    2003/11/04  
 
パフォーマンスへの目: ストレス負荷
今回の記事では、ストレス・テストと負荷テストについての問題を精査し、ツールの選び方でどれほど大きな結果の差が生じるかをお話します。
    2003/10/28  
 
Javaの理論と実践: ガーベッジ・コレクション小史
今回の記事で、Brian Goetzはガーベッジ・コレクションの最も一般的なテクニックについて解説します。
    2003/10/28  
 
J2EEパスファインダー: 5つの簡単なステップでJSPカスタム・タグを実装する
この記事では、自分の新しいXMLデータ・バインディング用のフレームワークをJavaアプリケーションの中で使って作業する方法を示します。
    2003/10/22  
 
Merlinの魔術: 動的イベント・リスナー・プロキシー
この記事ではコラムニストのJohn Zukowskiが、どうしたら手書きのコーディングに匿名内部クラスを使えるかを説明します。
    2003/10/21  
 
Preferences APIを使用してオブジェクトを保存する
この記事は、Preferences APIの入門を提示し、オブジェクトがどのように保存されるかを説明し、コードライブラリーを提供し実際の処理を明示します。
    2003/10/14  
 
上級DAOプログラミング
この記事では、自分の新しいXMLデータ・バインディング用のフレームワークをJavaアプリケーションの中で使って作業する方法を示します。
    2003/10/07  
 
強いインパクトのあるウェブ層クラスタリング: 第2回 JavaSpacesで適応性、拡張性を持ったソリューションを構築する
日用品レベルのPCをベースとしたサーバーやネットワークのハードウェアをオープンソースのJavaソフトウェアと組み合わせることで、Webサービスやアプリケーションを効果的に拡大展開することができます。
    2003/09/30  
 
EclipseとHSQLDB: リレーショナル・データベース・サーバーをEclipseに埋め込む 第1回
Pure Javaのリレーショナル・データベース・サーバーであるHSQLDBをEclipseワークベンチに埋め込むプラグインを、どのように開発するかを説明します。
    2003/09/30  
 
Javaの理論と実践: スレッド・セーフの特性について
スレッド・セーフは「全てかゼロか」の命題ではなく、定義が難しいものです。しかし、クラスがスレッド・セーフであるかどうかの分類をJavadocの中に記述する手間をかけるのは非常に重要なことなのです。
    2003/09/23  
 
Struts、Tiles、JavaServer Facesを統合する
Struts-Faces統合ライブラリのクラス群をTilesやJSFで動くようにどうカスタム化するか、そうすることの背景・意味、また新しく作られたクラスの一式を実際に動作する例の中でどう使うかの詳細などについて説明していきます。
    2003/09/23  
 
Merlinの魔術: SpringLayoutマネージャ
この記事ではMerlinのベテランであるJohn Zukowskiが、この新しいレイアウト・マネージャの使い方をお見せします。
    2003/09/17  
 
みんなのリファクタリング
この記事ではEclipseのリファクタリングを調査し、それぞれのツールをなぜ、どうやって使うか例を挙げて説明します。
    2003/09/09  
 
Echoウェブフレームワークを使用する、パート1: Echoへの入門
この2部にわたるシリーズでは、リッチなクライアントの外観、動きに似たウェブ・アプリケーションを構築するために、Echoフレームワーク、オープンソース、Javaテクノロジーベースのプラットフォームへの入門を提供します。
    2003/09/09  
 
JavaアプリケーションからUSBデバイスにアクセスする
この記事では、2つのプロジェクトについて考察します。それらのプロジェクトは、JavaアプリケーションからUSBデバイスを利用可能にするAPIを用いることで、処理をより簡単にします。
    2003/09/02  
 
JSPベスト・プラクティス: まとめてしまおう!
JSP準拠のWebコンテナでの簡単な保守・配布・設置のための、カスタムtaglibのJARファイルへのパッケージ化について説明します。
    2003/09/02  
 
パフォーマンスへの目: オブジェクトを参照する
今回はJava Games のWebサイトに注目し、ガーベジ・コレクションに際してアプリケーションがオブジェクトを解放しない場合に起きる問題をゲーム開発者がどのように特定し、解決しているかを見ていきます。
    2003/08/26  
 
J2EE パスファインダー: 暗黙オブジェクトの多くの用途
今回の記事では、前回の記事で紹介しましたセッション・スコープの続きとしてJSP暗黙オブジェクトの多くの用途について説明します。
    2003/08/26  
 
Javaの理論と実践: 優れたHashMapの構築
util.concurrentパッケージのConcurrentHashMap機能は、HashtableやsynchronizedMapよりも高い並行性が備わっています。
    2003/08/21  
 
JSPベスト・プラクティス: カスタム・タグでのエラー・ハンドリング
今回のJSPベスト・プラクティスシリーズでBrett McLaughlin氏は、その根元でIllegalArgumentExceptionをトラップしてオーバーライドする方法を解説します。
    2003/08/19  
 
ヒント: ContentHandlerの要素とテキスト
この記事では、SAXを使い特定要素のテキストの内容を得て、そのデータに対して何らかの操作をすることの過程について説明します。
    2003/08/14  
 
Merlinの魔術: 数字と通貨をフォーマッティングする
今回のMerlinの魔術ではJohn Zukowskiが数字をどうフォーマットするかを説明し、新しく追加された機能である、その地域の通貨コードを見つける機能について説明します。
    2003/08/13  
 
JSPベスト・プラクティス: JSPタグのカスタム属性を作る
今回は、カスタムのタイム・スタンプ・タグ(lastModified)を属性で拡張する方法について説明します。
    2003/08/05  
 
J2EEパスファインダー: ステートフルなWebアプリケーションの作成と管理
今回の記事では、Java開発者でありコンサルタントであるKyle Gabhart氏が、ステートフルなWebアプリケーションを開発するための4つのJ2EEセッション・スコープの適切な処理について説明いたします。
    2003/07/30  
 
パフォーマンスへの目: 開発プロセスを改善する
この記事では、JavaRanchに進み出て、コンパイル・スピード、例外、ヒープサイズ調整に関する議論を取り上げます。
    2003/07/30  
 
JSPベスト・プラクティス: taglib入門
今回の記事では、スクリプトレットをJSPのカスタム・タグへ変換する方法、カスタム・タグをカスタム・タグ・ライブラリーへ追加する方法、JSPの開発でカスタム・タグを使用する方法について説明いたします。
    2003/07/23  
 
Javaの理論と実践: 並行コレクション・クラス
今回、Brian Goetz氏は、HashtableやsynchronizedMapをConcurrentHashMapに変えるだけで、並行プログラムはどれだけ恩恵を得ることができるかについて説明をいたします。
    2003/07/23  
 
EclipseでのJava Development Toolsの拡張
この記事では、Eclipseでの拡張に際してリファクタリングを作成するためのステップについて手ほどきをいたします。
    2003/07/22  
 
Merlinの魔術: フォーカス、フォーカス、フォーカス
今回のMerlinの魔術 では、John Zukowski氏が初期のフォーカスの問題点を改善する数多くのMerlinの変更点のうちの1つについて説明をします。
    2003/07/15  
 
Javaプログラミングのダイナミックス 第3回: 実用的なリフレクション
この記事で、Dennis氏はコマンド・ライン引数でそれ自身を実際に処理するオープン・ソース・ライブラリーについて概説いたします。
    2003/07/15  
 
JSPベスト・プラクティス: タイム・スタンプの力
今回は、JSPページへタイム・スタンプを追加することによって、Webサイトの使いやすさを向上させる方法、および追加方法の様々なテクニックについて説明しています。
    2003/07/01  
 
強いインパクトのあるウェブ層クラスタリング: 第1回 JavaGroupsを使用してウェブサービスやアプリケーションをスケーリングする
このシリーズでは、Sing LiがJavaGroupsで始まった高い効果のあるウェブ層クラスタリングを可能にする3つのオープンソースソフトウェア基板を調査します。
    2003/07/01  
 
エクストリーム・プログラミングの神秘を解く: Just-in-time 設計
XPの提唱者Roy MillerはJIT設計がいかに安全かつ簡単であり、まさにそれがコードの書き方に革命をもたらし得るのだということを、このシリーズの最後として締めくくります。
    2003/07/01  
 
Javaの理論と実践: そもそも誰のオブジェクトですか?
この記事では、Java開発者がオブジェクトの所有権に関して注意を払うべきいくつかの状況についてBrian Goetz氏が説明しています。
    2003/06/24  
 
J2EEパスファインダー: JMSを利用したエンタープライズ・メッセージング
今回の記事では、エンタープライズ・アーキテクチャーへのメッセージング・サービスの必要性、ソリューションが克服しなければならない障害、Java Message Service(JMS)の選択肢についてご説明します。
    2003/06/24  
 
Java Web Startを使用して、SWTアプリケーションを配置する
この記事では、見栄えの良いクライアント側Javaアプリケーションを配置させる強力なツールとなる、Java Web StartとSWTとの調和について説明します。
    2003/06/19  
 
JSPベスト・プラクティス: Webサイトへコンテンツをインポートする
今回の記事では、ベテランWeb開発者であるBrett McLaughlin氏がこの方法について解説します。
    2003/06/17  
 
あくせく働くのではなく賢く働こう: Kent Beck氏へのインタビュー
今回のdeveloperWorksの単独インタビューから、Kent氏がソフトウェア開発の成功(もしくは失敗)に対するJavaプラットフォームの役割についてどう考えているかを見出してください。
    2003/06/17  
 
JavaOne 2003: Javaロードマップ(技術的基本方針)
今回、Sun副社長であるGraham Hamiltonおよび最高技術責任者Timothy Lindholmは、次の12~18か月間におけるJavaテクノロジーに関し、いくつかの顕著な方向とフォーカスの転換を提示しました
    2003/06/17  
 
JavaOne 2003: より少ない誇大広告、より多くの満足度
テクノロジー・プロダクトの経済と市場は、全体として確実にここ数年間で事実上の変化を遂げました。
    2003/06/17  
 
JavaOne 2003: テクニカル・セッション・サンプラー
developerWorksコラムニストBrian Goetzは、パフォーマンス管理のセッションから目立ったコンセプトを抽出するために、時間をとりました。
    2003/06/17  
 
Jamesの使用 第2回: matcherとmailetを使った電子メール・ベースでのアプリケーション構築
今回は、ユーザーにAvailableかUnavailableのフラグを立てたり、Unavailable状態になることにしたユーザーから送信者へ自動的にメッセージを送る、といった実践的なアプリケーションを実装することにします。
    2003/06/10  
 
Jamesの使用 第1回: ApacheのJamesエンタープライズ・電子メール・サーバーの紹介
この記事では、Jamesの理解、およびサーバーサイドの電子メールアプリケーション開発の基礎を築きます。
    2003/06/10  
 
Javaプログラミングのダイナミックス 第2回: リフレクション入門
この記事では、ソフトウェア・コンサルタントDennis Sosnoski氏が、リフレクションの使い方およびそのときのコストについて紹介してくれます。
    2003/06/03  
 
ゾーン・リーダーのコラム :Robocodeコミュニティの手による大会プロジェクト発足
Robocodeコミュニティの手による大会プロジェクトが発足しました。
    2003/05/29  
 
Merlinの魔術: J2SE 1.4.2の新しい2つのルック・アンド・フィ・・
今回の記事では、John Zukowski氏がWindowsユーザーに向けて、Windows XPの新しい外観やLinuxデスクトップで一般的なGTK+ の外観を実現する方法を説明します。
    2003/05/27  
 
Javaの理論と実践: ハッシュの徹底
今回の記事では、Java開発者であるBrian Goetz氏が、Javaクラスの作成時に hashCode() と equals() を効果的かつ適切に定義するために従うべき規則とガイドラインについて説明します。
    2003/05/27  
 
JSPベスト・プラクティス: JSTLでJSPページを書き換える
今回の記事では、Brett McLaughlin氏がJSTLについて概説し、その高機能なタグを使用するようJSPページを変換する方法について説明します。
    2003/05/27  
 
Linux上にLSID認定システムを構築する
ここでは、ごくわずかなデータ・セットを用いたシステムやたんぱく質配列データベースSwiss-Protからダウンロードしてきたデータを用いたシステムをLinuxのプラットフォームに構築します。
    2003/05/27  
 
エクストリーム・プログラミングの神秘を解く:ジョブに最適な (XP) ツール
今月、Roy Miller氏は、理論を実践に移し、使用すべきツールとその使用法について説明します。
    2003/05/27  
 
JFaceウィザードの開発
JFaceウィザードは、Standard Widget Toolkit (SWT) 内の他のコンポーネントと組み合わせて使用することにより、ユーザー入力を系統的に収集し、データの検証を実行するための柔軟なメカニズムを提供します。
    2003/05/21  
 
JSTL入門 第4回: SQLおよびXMLコンテンツへのアクセス
IBM, IBM Japan, e-business,日本IBM,e-business on demand,ThinkPad,ホームページビルダー
    2003/05/20  
 
Javaコードの診断:痛みを伴わないJava総称クラス 第4回
この記事では、総称型を使用してミックスインに対するサポートを追加することの効果について考察します。
    2003/05/13  
 
JSPベスト・プラクティス:JavaBeansコンポーネントとJSPテクノロジーの組み合わせ
JavaBeansコンポーネントとJSPテクノロジーを組み合わせてデータの保存やWebページ間のデータの受け渡しを行う方法を説明するとともに、より動的なサイトの設計につながる組み合わせについて詳しく説明します。
    2003/05/13  
 
ネイティブなクロスプラットフォームGUIアプリケーションを作成する (再考)
この記事では、GNU Compiler for Java、Linux、そしてStandard Widget Toolkit (SWT) を組み合わせて、ネイティブなクロスプラットフォームJavaアプリケーションから、Windows、GNOME、そしてSWT 2.0のサポートを取り上げます。
    2003/05/13  
 
魅力的なJython
この記事では、Javaのライブラリー・アクセスや、Jythonインタープリター・シェルおよびコード・ファイルのサンプルを示しながら、両者の違いを説明します。
    2003/05/06  
 
J2EEパスファインダー: 永続データの管理 第2回
IBM, IBM Japan, e-business,日本IBM,e-business on demand,ThinkPad,ホームページビルダー
    2003/05/06  
 
Javaプログラミングのダイナミックス 第1回:クラスとクラスのロード処理
IBM, IBM Japan, e-business,日本IBM,e-business on demand,ThinkPad,ホームページビルダー
    2003/04/29  
 
JSPベスト・プラクティス:jsp:includeを使用して動的コンテンツを操作する
この記事では、Javaの優れた助言者である著者が、JSPテクノロジーのインクルード機能を動的コンテンツ用に拡張する方法を説明します。
    2003/04/29  
 
Merlinの魔術:グラフィック表示を完全に制御する
IBM, IBM Japan, e-business,日本IBM,e-business on demand,ThinkPad,ホームページビルダー
    2003/04/29  
 
エクストリーム・プログラミングの神秘を解く: テスト主導型プログラミング
今回の記事では、テスト主導型プログラミングとは何か、なぜそれがプログラマーの生産性と品質を飛躍的に向上させるのか、およびテストを書くために必要な技法について説明します。
    2003/04/22  
 
Eclipse Platformを使用したC/C++ 開発
この記事では、Eclipseで使用可能な最も優れたC/C++ ツールキットであるC/C++ Development Toolkit (CDT) の使用方法を学習します。
    2003/04/22  
 
JavaにおけるXML:データ・バインディング 第4回 JiBXの使用法
この記事では、自分の新しいXMLデータ・バインディング用のフレームワークをJavaアプリケーションの中で使って作業する方法を示します。
    2003/04/18  
 
JSPベスト・プラクティス: JSPのインクルード・インクルード・メカニズムを使用してルック・アンド・フィールを向上させる
新シリーズ第1回のこの記事では、JavaServer Pagesの include のメカニズムをご紹介します。include を使用してWebサイトやWebアプリケーションのページに静的なヘッダーおよびフッター・ファイルを組み込む方法を説明します。
    2003/04/15  
 
JSTL入門: プレゼンテーションがすべて
全4回シリーズの第3回となる今回の記事で、再びJSTLを取り上げ、データを書式設定および国際化対応させるための fmt タグについて説明します。
    2003/04/15  
 
Javaコードの診断: 痛みを伴わない総称クラス 第3回
JSR-14およびTigerにおける総称(generic)型に関する解説の続編である今回の記事では、総称型の「ネイキッドな」型パラメーターに対する new 操作をサポートする方法について詳細に考察します。
    2003/04/09  
 
プロジェクト管理: Mavenでもっと簡単に
今回の記事では、Mavenの機能を紹介し、Mavenのプロジェクト設定を順を追って説明します。Mavenは、Antが提供する機能をすべて網羅したうえで、さらに多くの機能を提供します。
    2003/04/08  
 
LinuxのJavaサービスに対する安全性を高める
この記事では、Javaサーバー・テクノロジーはLinuxになじむテクノロジーであるという持論を展開した後、LinuxにTomcatのJavaサーブレット・エンジンを「安全に」セットアップするためのヒントを紹介します。
    2003/04/01  
 
J2EEパスファインダー: 永続データの管理 第1回
2回にわたり、データの永続性を維持するためのJ2EEの優れたテクノロジーであるエンティティーBean、JDBC、およびJDOを紹介し、いくつかの異なる環境でこの3つを比較します。今回は、JDBCとエンティティーBeanの比較です。
    2003/04/01  
 
Javaの理論と実践: パフォーマンス管理 -- しっかり計画していますか?
この記事では、Java言語を使用したプロジェクトで最もよく見られるいくつかのパフォーマンスに関する失敗について説明します。
    2003/03/25  
 
Merlinの魔術: Merlinの新しいI/Oバッファーの詳細
この記事では、J2SE 1.4の新しいI/Oパッケージについて、プリミティブ型の値の読み込み/書き込みやメモリー・マップ・ファイルの操作といったタスクを実行する方法を説明します。
    2003/03/25  
 
Tomcatを使いやすくする: Tomcat 5のフィルター処理の技
新しいTomcat 5サーバーは、フィルターを使って新しいレベルの配備の柔軟性を実現します。この記事では、新しい機能拡張をひととおり解説した後、実際的な例題をいくつか紹介します。
    2003/03/25  
 
JSTL入門: 核心(core)に触れる
前回は、JSP標準タグ・ライブラリー(JSTL)の概要を学びました。今回の記事では、引き続きJSTLを調べ、core ライブラリー内のフロー制御とURL管理に役立つタグを中心に説明します。
    2003/03/18  
 
ユーザー作成の分散管理ソリューション
EJBテクノロジーは最も広く使用されている企業向け開発環境の1つですが、すべての場合に適しているわけではありません。この記事では、その代替手段について説明します。
    2003/03/18  
 
Eclipse Platformを使用したコードの共有
この記事では、Eclipse Platformがどのようにソフトウェア・プロジェクトにおけるソース・コードのバージョン管理をサポートするかについて説明します。
    2003/03/13  
 
Javaコードの診断: 痛みを伴わないJava総称クラス 第2回
今月も引き続き、JSR-14およびTigerにおける総称型(Generic Types)について説明します。Javaの拡張に課されたいくつかの制限について概説します。
    2003/03/11  
 
エクストリーム・プログラミングの神秘を解く: ペアで勝つ
この記事では、ペア・プログラミングの作成方法についてお話します。その中で、ペアリングにまつわる誤解、ペアリングに嫌悪感を抱く理由、そして、ペアリングがプロジェクトの成功に非常に重要である理由について触れたいと思います。
    2003/03/11  
 
J2EEパスファインダー: ステートフル・ネットワークのためのJ2EEテクノロジー
前回は、J2EEでステートレス・ネットワークを管理するための最適な選択肢について説明しました。今回は、ステートフル・ネットワークを管理するためのテクノロジーについて説明します。
    2003/03/04  
 
Eclipse Workbench以外でのEclipse GUIの使用 第3回: アクション、メニュー、およびツールバーを追加する
シリーズ最後のこの第3回目の記事では、第1回および第2回の記事で開始したファイル・エクスプローラーの例に、アクション、メニューバー、ポップアップ・メニュー、およびツールバーを追加して完成させます。
    2003/03/04  
 
SDAOを用いたJ2EEテストの段階的アプローチ
この記事では、シミュレート・データ・アクセス・オブジェクト(SDAO) を用いた層別テストについて説明します。
    2003/03/04  
 
Merlinの魔術: Javaネットワーキングの拡張
この記事では、John Zukowskiが、Javaネットワーキング・テクノロジーの新機能と変更点について、J2SE 1.4の最新ネットワーキング機能であるIPv6サポート、URI、ネットワーク・インターフェース、セキュア・ソケット、アンバウンド・ソケットなどを取り上げながら説明します。
    2003/02/25  
 
グリッドの権威: Argonne国立研究所Steve Tueckeとのインタビュー
グリッド・コンピューティングの刺激的なビジョンを実現するために最も積極的に活動している人々の一人、Steve Tueckeにインタビューを行いました。
    2003/02/18  
 
Eclipse Workbench以外でのEclipse GUIの使用 第2回: JFaceイメージ・レジストリーを使用する
今回の記事では、シリーズ第1回のサンプルを引き続き使用して、コンテンツ・プロバイダーとラベル・プロバイダーを見栄え良く変更し、JFaceのビューアーでソートやフィルタリングを実行する方法について説明します。
    2003/02/14  
 
Javaコードの診断: 痛みを伴わないJava総称クラス
今月は、2003年後半にリリース予定のJavaバージョン1.5、通称Tigerに組み込まれる総称型(Generic Types)と、それをサポートする特性について紹介します。
    2003/02/11  
 
dW-J Zone Leaderによる注記
dW-J Zone Leaderによる、「EJBベスト・プラクティス: 動的Delegate」に関する注記です。
    2003/02/07  
 
JSTL入門: 式言語
新シリーズ第1回となる本稿では、JSPページでスクリプト要素の使用を避けるためにJSTLタグを使用する方法を示し、また、ソフトウェア保守を単純化する方法について学びます。
    2003/02/01  
 
エクストリーム・プログラミングの神秘を解く: 価値を重視する
この記事では、XPチームがプロジェクトのスポンサー (ソフトウェアへの出資者) との考え方を共有するような形で、スポンサーとの対話を深めていく方法を説明します。
    2003/02/01  
 
EJBベスト・プラクティス: 妥当性チェック・ヘルパー・クラス
今回のEJBベスト・プラクティスでは、前回紹介した妥当性チェックの手法を発展させ、最初の設計概念を改良します。
    2003/01/01  
 
Javaコードの診断: 保守が容易なコードの設計
この記事では、不必要な変異を回避および制御することにより、堅固で保守が容易なコードを作成する方法について解説します。
    2003/01/01  
 
Javaの理論と実践: ポイントは何処ですか?
この記事では、Javaプログラムで非整数型を扱うときに直面する落とし穴について説明します。
    2003/01/01  
 
エクストリーム・プログラミングの神秘を解く: XPにおける顧客役の役割
前回は、XPを使用するために考え方を変える必要があることを説明しました。今回は、この変化に対応するために最も苦労するのが顧客役 (業務の意思決定者) である理由について説明します。
    2002/12/01  
 
Javaコードの診断: キラー・コンボ -- ミックスイン、Jam、単体テスト
今回の記事では、ミックスイン (親クラスによってパラメーター化されたクラス) の概念と、それらが単体テストにもたらす利点について説明します。
    2002/12/01  
 
ブラック・ボックスからエンタープライズへ 第3回: 実践的なJMX統合
シリーズ最終回の本稿では、実際のNetwork Management System(NMS)を使用し、JMXによって作成されたJavaアプリケーションをモニターし、NMS/JMX統合で使用されている典型的な技法やJMXを展開する際に生じる可能性のある共通の問題を明らかにします。
    2002/12/01  
 
JavaCC、構文解析ツリー、およびXQueryの文法: 第1回
この記事では、まず文法、パーサー、およびBNFについて説明し、それから有名なパーサー生成ツールであるJavaCCを使ってカスタム・パーサーを作成する方法を紹介します。
    2002/12/01  
 
Eclipseプラグインの開発
この記事では、Plug-in Development Environmentのコード生成ウィザードを使ってEclipseプラグインを作成する方法、ランタイム・ワークベンチでプラグインを実行してデバッグする方法、完成したプラグインをEclipseにインストールする方法を紹介します。
    2002/12/01  
 
Javaの理論と実践: (若干) シンプルになった並行性
今回の記事では、広く使用されている高品質のオープン・ソースの並行性ユーティリティー・パッケージである、 util.concurrent パッケージについて紹介します。
    2002/11/01  
 
疑似オブジェクトによる単体テスト
今回の記事では、ファクトリー・メソッドの設計パターンに基づいて疑似オブジェクトを生成するリファクタリング技術について説明します。
    2002/11/01  
 
EJBベスト・プラクティス: 動的Delegate
今回のEJBベスト・プラクティスで紹介してくれるのは、さらに汎用性の高いBusiness Delegateクラスである動的Delegate (dynamic delegate) の作成方法です。
    2002/11/01  
 
Javaコードの診断: パッケージの依存関係の分離
この記事では、Java言語を使用したコンポーネント・ベース・プログラミングのための強力なフリー・ツールであるJiazziの例を用いて、このようなプログラミングの概念を説明します。
    2002/11/01  
 
Eclipse Platform入門
この記事では、Eclipseプラグインを使ってアプリケーションの編集、コンパイル、およびデバッグを行います。また、Eclipse Platformの概要を説明し、UMLモデル化用のプラグイン拡張機能を示します。
    2002/11/01  
 
エクストリーム・プログラミングの神秘を解く: 考え方を変える
XPの指導者であり開発者である著者が、XPの「魅力的な」プラクティスに取り組む前に、皆さんがXPの使用を開始できるように、これまでの考え方を変える方法を示します。
    2002/11/01  
 
エクストリーム・プログラミングの神秘を解く: 「XPの真髄」に立ち戻る 第3回
XPプラクティスの検討の締めくくりとして、顧客役(Customer)のプラクティスと管理役(Management)のプラクティスを見ていきます。これまでの記事で検討したプラクティスと併せて、XPのプラクティスの全体像をつかんでいきましょう。
    2002/10/02  
 
Swingベース開発ツールのEclipseへの組み込み
独立したSwingベース・エディターをプラグインとしてEclipse Platformに統合する方法を学びましょう。簡単なテクニックを利用するだけで、SwingツールやEclipse Platform、および各種のSWTウィジェットの間でリソースを共用できます。
    2002/10/01  
 
Javaコードの診断: 単体テストと自動コード分析の連携
今回の記事では、単体テストと静的分析の関係を調べ、それぞれのバックボーンとなるツールをどのように使用すれば、相互に連携して互いに利点をもたらすものとなるかについて説明します。
    2002/10/01  
 
透過的なネットワークの復元: 第2回
シリーズ2回目の今回の記事では、Javaアプリケーションが、アプリケーションのよりハイレベルの部分のネットワーク障害物を隠すために使用できるフレームワークを説明しています。
    2002/10/01  
 
EJBベスト・プラクティス: エンティティーBeanの保護
エンティティーBeanが直接Web層から見えないようにしつつ、ユーザーがアプリケーション・データにアクセスできるようにするには、どうすればよいのでしょうか。この記事では、エンティティーBeanの安全性とアプリケーションの全体的な効率を確保するための解決策を紹介します。
    2002/10/01  
 
EJBベスト・プラクティス: Business Delegateパターン
アプリケーションを計画する際に最も複雑な問題の1つが、ビジネス層と実装層とを分離する必要があるという点です。この分離を行うために、Business Interfaceパターンを確立しました。一方、Business Delegateパターンは、アプリケーションの保守やアップグレードを困難にしてしまう結合を回避する上で役に立ちます。
    2002/10/01  
 
Javaの理論と実践: ファイナル・アンサー?
final は、クラスやメソッドの宣言では過度に使用される一方、誤った使い方をされることの多いキーワードです。今月は、final の有効な使用法に関するいくつかのガイドラインを説明します。
    2002/10/01  
 
Java 2参照クラスを使用するためのガイドライン
Java 2プラットフォームでは、java.lang.refパッケージが導入され、この中にはオブジェクトをメモリーに固定することなく参照を可能にするクラスが含まれています。本稿では、SoftReference、WeakReference、およびPhantomReferenceクラスの機能と振る舞いについて説明します。
    2002/10/01  
 
ブラック・ボックスからエンタープライズへ 第2回: Bean、JMX 1.1スタイル
JMXに関する3回に渡る連載の第2回である本稿では、Javaベース・アプリケーションに実装コードを迅速に追加する方法について説明します。
    2002/10/01  
 
EJBベスト・プラクティス: 非常に強力なJNDI最適化
今回は、JNDI lookupについて検討します。JNDI lookupは、ほとんどすべてのEJBのやりとりで頻繁に行われる基本的な処理です。本稿では、ホーム・インターフェース・ファクトリーを用いて、EJBアプリケーションでのJNDI lookupのオーバーヘッドを減少させる方法を紹介します。
    2002/09/01  
 
エクストリーム・プログラミングの神秘を解く: 「XPの真髄」に立ち戻る 第2回
今回の記事では、XPチームにおいてプログラマーが持つ意味、そして特にプログラマーの6つのプラクティスを全体像に適合させる方法について説明します。プログラマーのプラクティスは、ソフトウェアを開発するチームの成否のかぎを握るものです。
    2002/09/01  
 
Javaの理論と実践: スレッドはどこへ消えた?
スレッドは、注意していないと、(スタック) トレースに形跡を残さず、サーバー・アプリケーションから跡形もなく消えてしまう可能性があります。今回の記事では、「無許可離隊」してしまうスレッドを防止し検出するためのいくつかのテクニックを紹介します。
    2002/09/01  
 
上級JSSE開発者のためのカスタムSSL
この記事では、JSSE APIのあまり知られていない側面について掘り下げ、SSLの制限のいくつかを回避するプログラミング方法を示しています。
    2002/09/01  
 
ブラック・ボックスからエンタープライズへ 第1回: 管理、JMX 1.1スタイル
Java Management Extension(JMX)についての3回連載の第1回である本稿では、ネットワーク管理ソフトウェアの歴史と、それが今日の洗練されたエンタープライズ管理システムに進化するまでの経緯をたどります。
    2002/09/01  
 
EJBベスト・プラクティス: 値オブジェクトを使ってRMIトランザクションを高速化しよう
今回は、RMIを利用することで生じる大きな代償を支払うことなく、EJBテクノロジーの利点をことごとく活用する方法を探究します。値オブジェクトを利用することで、RMIの最大の欠点である速度の問題を回避する方法を紹介します。
    2002/09/01  
 
Javaコードの診断: 時相論理をバグ・パターンに適用する
時相論理は、プログラムの状態が時間の経過とともにどのように変化するのかを記述するための1つの表記形式です。時相論理とアサーションについての2回目となるこの記事では、ごく一般的なバグ・パターンの多くが、時相論理アサーションを利用することで防止できることが解説されます。
    2002/08/01  
 
透過的なネットワークの復元: 第1回
今回の記事では、ネットワークの透過性がファイアウォールやNATゲートウェイなどの多くの一般的なネットワーク・デバイスによってどのように損なわれているかを説明し、その後でソリューションの基礎について述べます。
    2002/08/01  
 
エクストリーム・プログラミングの神秘を解く: 「XPの真髄」に立ち戻る 第1回
ソフトウェア開発プロジェクトでXPを使用すると、劇的な成功を収める可能性が高くなります。この新規コラムは、好評を博した記事「XPの真髄」に立ち戻ることから始められ、うわさや誇大宣伝をはぎ取ってXPへの理解を助け、なぜXPがそれほど重要なのかを説明します。
    2002/08/01  
 
Castor JDOを始めよう
この記事では、100% Pure Javaテクノロジーに基づいて構築されたデータ・バインディング・フレームワークであるCastor JDOの使用の基本を説明します。まず、リレーショナル・データ・モデルとJavaオブジェクト・モデルについて取り上げ、これらのマッピングの基本について説明します。
    2002/08/01  
 
Robocode Rumble: 優勝者から得たヒント
Robocode Rumbleは終わり、勝利者が宣言されました。それは誰だったのでしょう。そしてその成功の秘密は何だったのでしょうか。勝利ロボットを作った熱狂的な科学者たちに突っ込んだ話を聞きます。さらにMat Nelsonにも話を聞き、彼はRobocode 2.0で計画していることを明かします。
    2002/08/01  
 
QuickによるJavaオブジェクトとXMLの変換
Quickは、実行時の変換に重点を置いた、オープン・ソースのデータ・バインディング・フレームワークです。この記事では、他のデータ・バインディング・フレームワークで必要になるクラス生成セマンティクスを使わずに、このフレームワークを使用してすばやく問題なくJavaデータをXML文書に変える方法について示します。
    2002/08/01  
 
Javaの理論と実践: それをドキュメント化しなければならないか
Java言語は、Javadocコメント規約によるAPIドキュメンテーションへの統合アプローチを採用しています。今回の記事では、Javaドキュメンテーションの現状について苦言を呈し、もっと有益なJavadocを作成するためのいくつかのガイドラインを提示しています。
    2002/08/01  
 
Merlinの魔術: 新しいregexライブラリーによる文字シーケンスの解析
Java 1.4(現在では1.4.1)のリリースには、java.util.regexパッケージの正規表現によるパターン・マッチングに対するサポートが含まれています。この記事では、新しい正規表現ライブラリーによって文字シーケンスを解析し、検索パターンをさらに強力にする方法について説明します。
    2002/08/01  
 
ストリームを反転させる: 第1回
連載第1回目のこの記事では、 出力ストリームに書き込むことしかできないシステムによって作成されたデータを、標準の入力ストリームAPIを使用して効率的に読み取ることを可能にする有用なフレームワークについて説明します。
    2002/07/01  
 
Javaコードの診断: Javaプログラミングにおけるアサーションと時相論理
時相論理の利用により、Javaコードに対するチェックに関して、従来のアサーションでは対応できないギャップを埋めることができます。この記事では、アサーションについて論じ、時相論理について紹介し、プログラムで使用できるツールについて説明します。
    2002/07/01  
 
Javaの理論と実践: スレッド・プールとワーク・キュー
どのサーバー・アプリケーションでもたいてい、スレッド・プールとワーク・キューに関する問題が出てきます。今回の記事では、スレッド・プールを使用する動機、いくつかの基本的な実装と調整のテクニック、回避すべきいくつかの一般的な障害について説明します。
    2002/07/01  
 
Merlinの魔術: Swingのオーディオ
Swingアーキテクチャーは従来から、ネイティブUIをまねる、Javaアプリケーション用のユーザー・インターフェースを開発者が作成する手段を提供してきました。Java 2 Platform, Standard Editionの最新バージョンでは、このアイデアをさらに一歩進めています。この記事では、その機能の利用方法を提示します。
    2002/07/01  
 
Javaコードの診断: ソフトウェア開発の未来
この記事では、ソフトウェア開発の未来において、業界で主流となる傾向と、これらの傾向がもたらすであろう影響のいくつかについて説明をしていきます。
    2002/06/17  
 
Java最適化手法
Javaプログラムの最適化に役立つ手法は数多くあります。この記事では、特定の1つの手法に焦点を合わせるのではなく最適化プロセスの全体を考察します。
    2002/06/11  
 
Merlinの魔術: Swingの新たなJFormattedTextFieldコンポーネント
今回の記事では、新たな JFormattedTextField コンポーネントを使用して、数値、日付、およびフォーマットされた入力に対してプロンプト指示を行う方法について説明します。
    2002/06/01  
 
Javaの理論と実践: 安全な構築のテクニック
今回の記事では、「構築中に this 参照を拡張させる」一般的なスレッド化の問題について取り上げています。無害に見えるこの行動は、予測不可能で望ましくない結果をJavaプログラムにもたらす可能性があります。
    2002/06/01  
 
StrutsとTilesがコンポーネント・ベース開発を支援
今回の記事では、Struts 0.9以降の変更に焦点を当てながら、StrutsとTilesの組み合わせが、なぜWebアプリケーションの作成に優れたツール・パッケージなのか、またそれを使い始めるにはどうしたらよいのかを説明します。
    2002/06/01  
 
Eclipseプラグインの国際化対応
この記事は、国際市場向けにEclipseプラグインを作成するためのロードマップです。まずは国際化対応を行う理由とその技術的な課題を簡単に説明し、その後でプラグインの国際化対応方法をステップに分けて説明します。そして最後に、それらのステップがEclipse Platformの国際化対応にどのように適用されたのかを見てみます。
    2002/06/01  
 
Javaモデリング: UMLワークブック 第4回
この記事では、ユース・ケース・ダイアグラムの基本コンポーネントの1つであるアクターについて詳しく取り上げています。アクターは、UMLモデリングに不可欠であるだけでなく、Javaアプリケーションの作成にも重要な役割を果たしており、さらに、J2EEアプリケーション設計のパターンを提案することもできます。
    2002/06/01  
 
J2ME/MIDPアプリケーションを保護する
この記事では、XMLディジタル署名の重要性と、そのアプリケーションについて説明します。また、Bouncy Castle暗号パッケージのディジタル署名APIについても説明し、J2ME/MIDPワイヤレス・フロントエンドとJSPページ・バックエンド間のセキュアなXMLメッセージングに関連した例を示します。
    2002/06/01  
 
Javaコードの診断: 静的型の場合
「スクリプト記述」言語の多くは静的型チェックからは遠い存在のものになっていますが、静的型チェックはバグの潜入と検出に対抗する重要な武器の1つです。この記事では、Java言語が静的型チェックをサポートすることがなぜ喜ぶべきことなのか、そしてどのようにすればそれをもっとよくできるかを説明します。
    2002/06/01  
 
Robocodeの達人たちが明かす秘訣: 反重力移動
反重力移動 (多くの修正版がある) は、大部分の熟練したRobocodeプログラマーが採用する移動のタイプです。この移動方法では、マップ上で避けるべき地点を定義することができ、移動パターンを容易に作成し、敵の弾丸をかわすことができます。Alisdair Owensが、この有用な技法を実装する方法を紹介します。
    2002/05/01  
 
Robocode達人たちが明かす秘訣: 円形方式の標的合わせ
円形方式の標的合わせは、直線方式の標的合わせを習得した後の次の段階です。少しだけ高度な数学を利用することにより、このシステムでは、円弧を描いて移動するロボットに完ぺきな精度で弾丸を命中させることができます。しかも、直線上を移動するロボットに対する攻撃と同じ効率の良さを保っています。Alisdair Owensは、この技法を実装する方法を説明し、試運転のためのサンプル・ロボットを提供します。
    2002/05/01  
 
Robocodeの達人たちが明かす秘訣: 織込まれた壁の回避策
ロボットが壁に衝突しないようにしながらも、なおかつ、コーナーにはまってしまったり、行きたい方向から大きくそれてしまったりすることのないアルゴリズムを考案するのは難しいことです。簡単な方法は、 織込まれた壁の回避 です。このヒントでは、David McCoyが、この手軽な技法を実装する方法を紹介します。
    2002/05/01  
 
AlphaBot: Robocodeの生みの親Mat Nelson氏へのインタビュー
ゲームをプレイする面とロボットを作成する面の両方でRobocodeの人気がうなぎ登りに高まってきたため、Mat Nelson氏へインタビューを行い、Robocodeを開発したきっかけや、それが将来どこへ向かっているかについて話を伺いました。
    2002/05/01  
 
Robocodeの達人たちが明かす秘訣: 敵の動きを追跡する
どの標的合わせシステムにも限界があります。どんな場合にも、予測するのが難しい移動パターンが存在するからです。この記事から、敵に合わせて最善の移動アルゴリズムを自分のロボットに選択させる方法を学んでください。
    2002/05/01  
 
EJBベスト・プラクティス: 優れた例外処理フレームワークの構築
この記事では、例外処理の場合、少し注意を払うだけで大きな効果が得られることを解説した後、簡単な手法を2つ紹介して、例外処理フレームワークを堅牢で有益なものにするための道筋を示します。
    2002/05/01  
 
AspectJおよび疑似オブジェクトによる柔軟なテスト
この記事では、テスト・ケースの分離に関係する問題を紹介し、疑似オブジェクトとAspectJを使って正確で強力な単体テストを推し進めていく方法を示します。
    2002/05/01  
 
EJBベスト・プラクティス: データ妥当性検証の細かな点
この記事では、EJBテクノロジーを基礎とするシステムでのデータの妥当性検証についてのいくつかの基本的な考え方について紹介します。
    2002/05/01  
 
Javaの理論と実践: JTSを理解する -- 安全とパフォーマンスのバランス
このシリーズの最後となる今回の記事では、J2EEがトランザクション境界と独立性を管理するために提供する機能と、それらを効果的に使用するためのガイドラインについて取り上げています。
    2002/05/01  
 
double-checked lockingとSingletonパターン
Javaプログラム言語には、いくつかの便利なプログラミング・イディオムが含まれています。この記事では、double-checked lockingイディオムのルーツを探り、それがなぜ開発されたのか、また、なぜ機能しないのかを検討します。
    2002/05/01  
 
EJB例外処理のベスト・プラクティス
J2EEとEJBテクノロジーは共に多くの利点を提供しますが、これらの利点によって新たな問題も発生します。この記事では、より迅速な問題解決のためのEJB例外処理のベスト・プラクティスを明らかにしています。
    2002/05/01  
 
EJBベスト・プラクティス: Delegateの限界
Business Delegateパターンは、EJB抽象によく使われる解法ですが、このパターンには重大な制約がいくつかあります。この記事では、それらの制約を概観し、制約を回避する方法を紹介します。
    2002/05/01  
 
闘え、Robocode (ロボコード): 第2ラウンド
高度なロボットの作成とチーム・プレイを包括的に概観するこの記事で、Robocodeの世界にさらに挑戦する準備を整えてください。ユニークで非常に面白い学習方法をフルに活用して、さらに高度なJavaプログラミング技法、アルゴリズム・デザイン、三角法の基礎、そして分散コンピューティングの原理を手ほどきします。
    2002/05/01  
 
Merlinの魔術: JDK 1.4での印刷 第2回
連載第2回目の今回は、印刷操作のイベント・リスナーをセットアップする方法、画面またはコンポーネントの内容を印刷する方法、そして印刷操作から sleep() コールを取り除く方法について説明します。
    2002/04/01  
 
Javaコードの診断: 「付け足し初期化コード」バグ・パターン
今回の記事では、「付け足し初期化コード」バグ・パターンを取り上げて、この種のバグをなぜ、どのように避けるべきかを説明し、起こり得るダメージを最小限に抑える方法を紹介します。
    2002/04/01  
 
P2Pを相互運用可能にする: Jxtaシステムの作成
そもそもJxtaは、今日のTCP/IPベースのネットワークの限界を超えて、インターネットの及ぶ範囲を拡大することを目的に設計されました。Jxtaシリーズの最終回となるこの記事では、このような拡張を行い、また、実践の問題を解決するシステムについて説明します。
    2002/04/01  
 
Javaの理論と実践: JTSを理解する -- 見えない魔法
この記事では、J2EEアプリケーションがどのようにトランザクションとして構造化されるか、またJTSとJ2EEコンテナーが、トランザクション・サービスをどのようにして管理するのかについて説明します。
    2002/04/01  
 
Javaの解放: Jason Hunter氏へのインタビュー
developerWorks は、Java Community ProcessのApacheの代表者であるJason Hunter氏にインタビューを行い、現在の状況について説明してもらいました。
    2002/04/01  
 
Apache SOAP の型マッピング: 第 1 回 Apache の直列化 API について
SOAP では、アプリケーション・レベルのデータを転送するための簡単なワイヤー・プロトコルが定義されています。このプロトコルは、充実した広範な型システムを備えており、Java の任意の型を直列化された XML として簡単に伝送できます。Apache SOAP ツールキットにおける型システム・サポートについての 2 回シリーズの第 1 回である今回の記事で、Gavin Bong 氏は、SOAPの型システムに関する理論的な基礎を紹介します。また、SOAP における直列化と非直列化のプログラム的なサポートの詳細を学習し、最後にツールキット内部の仕組みを紹介します。これらのプロセスの動作原理をよく理解しておけば、独自の分散システムを開発する際に役に立ちます。
    2002/04/01  
 
JavaにおけるXML: Castorによるデータ・バインディング
この記事では、データ・バインディングを紹介し、この手法の魅力について説明しています。それからJavaデータ・バインディングにオープン・ソースCastorフレームワークを使用して、ますます複雑になる文書を処理する方法を紹介します。
    2002/04/01  
 
JMS 1.1のドメイン統合によるメッセージングの簡素化
JMS 1.1は、Point-to-PointメッセージングとPublish/Subscribeメッセージングのドメインを統合することによって、従来の欠点を補います。この記事では、最新のバージョンを使用するJMSクライアント・コードの開発がどれほど簡単であるかを検討してみましょう。
    2002/03/04  
 
J2EEパスファインダー: ステートレス・ネットワークのためのJ2EEテクノロジー
シリーズ最初のこの記事では、ステートレス・ネットワークのための2つのJ2EEテクノロジーであるサーブレットとEJBテクノロジーについて比較します。
    2002/03/01  
 
Javaコードの診断: replによる対話式評価
この記事では、プログラム中の式やステートメントを対話式に評価することのメリットについて説明し、そのために役立つJavaのreplのいくつかを紹介します。また、GUIを開発したり新しいAPIを探求したりする上で、対話式評価がいかに便利かを示します。
    2002/03/01  
 
「 Bitter Java 」の味
この記事では、アンチパターンのエキスパートでありBitter Javaで有名な作家でもあるBruce Tate氏が、アンチパターンがデザイン・パターンにとって、必要で補完的な伴侶である理由と詳細について説明しています。
    2002/03/01  
 
エンタープライズ・レベルのRMI-IIOP
この記事では、RMIとCORBAの結び付きから生まれたRMI-IIOPを紹介し、シンプルなJavaベースのRMI-IIOPクライアント/サーバー型アプリケーションを構築して実行する方法を示します。
    2002/03/01  
 
Apache SOAP型マッピング: 第2回 シリアライゼーションの詳細説明書
SOAPは、データベース、プログラム言語 (例えばJavaプログラム言語)、およびデータ・リポジトリーにおける共通の型を表すためのエンコード方式を指定しています。Apache SOAPのツールキットは、Javaの型を直列化されたXML表現にマップするという、厄介な仕事を行なうクラスである(デ)シリアライザー の基本セットを提供することにより、エンコードをサポートします。この2回シリーズの記事の第1回では、これらの(デ)シリアライザーの使い方を調べました。この第2回で、Gavin Bongは、ツールキットから提供される(デ)シリアライザーがユーザーの要求を満たすことができない場合に、ユーザー独自の(デ)シリアライザーを作成する方法を示します。彼はまた、このシリーズで研究する概念の多くをデモンストレーションする、サンプル・アプリケーションを提供しています。
    2002/03/01  
 
Javaの理論と実践: JTSを理解する -- トランザクションについて
JTSは、J2EEアーキテクチャーの重要な要素です。この記事では、トランザクションとは何か、また、信頼性の高い分散アプリケーションを構築する上でなぜそれが重要になるのか、という点について基本となるポイントを説明します。
    2002/03/01  
 
Merlinの魔術: JDK 1.4での印刷 第1回
1.1以降、Javaプラットフォームの新規リリースが発表されるたびにこのプラットフォームの印刷サポートの枠組みが変更されているかのようです。Merlinの魔術では、この最新の機能を2回に分けて説明します。
    2002/03/01  
 
Javaの理論と実践: 可変性か、不変性か?
今月の Javaの理論と実践では、不変性のメリットと、不変クラス作成時のガイドラインについて説明します。
    2002/02/18  
 
Javaの理論と実践: 次期エンタープライズ・アプリケーションにJMSの採用を
新連載の「Javaの理論と実践」シリーズでは、デザイン・パターンや高信頼性ソフトウェア設計の原理などについて考えていきます。第1回のこの記事では、エンタープライズ・メッセージ・キューイング・テクノロジーについて解説します。
    2002/02/01  
 
Javaコードの診断: 仕様という綱渡り
この記事では、明確に定義された仕様がコードにとってなぜ大切かを説明し、従来のソフトウェア・エンジニアリング手法とエクストリーム・プログラミング手法を比較して、それぞれの長所と欠点を述べます。さらに、プログラム仕様の定義についても解説します。
    2002/02/01  
 
ベンダーに依存しないJMSソリューションの実装
この記事では、JMS、Java Naming and Directory Interface、および適切に作成されたプロパティー・ファイルを組み合わせて、ベンダーに依存しないJMSソリューションを作成する方法をご説明します。
    2002/02/01  
 
Merlinの魔術: アサーションの使用
「Merlinの魔術」の今回の記事では、コードにアサーション・チェック機能を追加し、コマンド行とプログラムの両方からアサーションを有効/無効にする際の基本事項について説明しています。
    2002/02/01  
 
ピアツーピア・コンピューティングの実践: IPマルチキャストによる発見
有効な作業を行うには、P2Pアプリケーションのピアは互いを見つけてやりとりすることができなければなりません。今回の記事では、IPマルチキャストをベースにした発見の実行方法を紹介します。
    2002/01/01  
 
アスペクト指向プログラミングで、モジュール性を改善する
新しいプログラミング手法であるアスペクト指向プログラミングを利用すれば、横断的関心(ロギングのように典型的な責任の分担を越えて横断する動作)をモジュール化できます。この記事では最近リリースされたAspectJを紹介し、AspectJがもたらす設計上の利点を説明します。
    2002/01/01  
 
実用的なXML: XPathのコンパイル
アルファ版リリース間近の、SAX構文解析のためのJavaベースのHCプロジェクトにおいて、DFA構成アルゴリズムのインプリメント方法を説明し、XPathを認識するためのコンパイラー使用例を示します。
    2002/01/01  
 
インテリジェント・データによりSwingをシンプルに保つ
iDataと呼ばれるテクニックについてご紹介します。アプリケーション内に核となるデータ・リポジトリーを作成し、データと表示をもっと分離して、メインテナンスが容易でクリーンなコードを作成できるようになります。オープン・ソース・ツールキットとサンプル・コードも用意しました。
    2002/01/01  
 
Javaコードの診断: 深さ優先visitorと、破綻したディスパッチ
Visitorパターンの変形である 深さ優先visitor を使ってコードをどのように簡潔にできるかを、具体的に説明します。技法の説明、さらにその利点と便利さを示して、これを使用する際のバグ・パターンについて注意を促します。
    2002/01/01  
 
闘え、Robocode (ロボコード) !
Robocodeという名の学習ツール兼大流行のゲームを紹介し、初歩のRobocodeロボットを作成して、読者が世界制覇の道を踏み出すのを支援します。
    2002/01/01  
 
Javaコードの診断: 拡張可能アプリケーションの設計 第4回
今回は、S式を使って便利で軽量なブラック・ボックス拡張性をどのように実現できるかについて説明します。S式にはどんな利点があるか、どんな制限があるか、S式をアプリケーションで使用するのに適さない場合についても、説明していきます。
    2001/12/01  
 
Merlinの魔術: 例外とロギング
今回は、Merlinリリースの新たなロギングと例外の機能のはたらきについて説明し、評価とダウンロードに使用できるサンプル・プログラムを紹介します。
    2001/12/01  
 
特定通知パターンを適用してスレッドの実行順序を制御する
この記事で説明する特定の通知のサポートをJavaプラットフォーム追加することにより、待機中のスレッドの実行を直接制御することが可能になります。
    2001/12/01  
 
実用的なXML: SAX ContentHandler用コンパイラーの作成
新しいプロジェクトのHCでは、イベント・ベースのXMLの構文解析から面倒な作業をなくします。今回は、ContentHandler から状態遷移図までの全体的な設計を分析します。
    2001/11/01  
 
ピアツーピア・コンピューティングの実践: 発見
今回考察するピア発見サービスによって、P2Pアプリケーションのピアは互いを捜し出し、その結果相互のやりとりが可能になります。まず、ピアに他のピアの存在について教え込んでおく最も簡単な方法から始めましょう。
    2001/11/01  
 
Javaコードの診断: 拡張可能アプリケーションの設計 第3回
今回は、どんな場合にシステムをブラック・ボックス拡張性のある設計にするとよいかを説明し、また、どうすればそれを効率の良いものにできるかについて、いくつかの点を提案します。
    2001/11/01  
 
Merlinの魔術: AWTの概要
AWTライブラリーに追加されたいくつかの機能について変更点を解説し、皆さんが時間をかけずに使ってみることができるように、重要な詳細を提供します。
    2001/11/01  
 
Javaモデリング: ホロニックなソフトウェア開発 第2回
ホロニックなソフトウェア開発とプロセスの適用についての議論を中心に、要件収集の概念的な全体像に迫ります。
    2001/10/01  
 
システム負荷を軽減したスレッド化: 常に共用が最善とは限らない
シリーズ第3回のこの記事では、ThreadLocal を紹介し、その実力を活用するためのヒントをお教えします。
    2001/10/01  
 
ピアツーピア・コンピューティングの実践: P2PでSSLを使用する
P2Pアプリケーションにおける信頼の役割について検討した前回の説明を、実践に移します。P2PのセキュリティーでSSL(JSSE経由で) を使用する方法を紹介していきましょう。
    2001/10/01  
 
優れたGUIを構築する
Javaレイアウト・マネージャーを使用して、GUIの設計プロセスと開発プロセスを一致させる方法を説明します。
    2001/10/01  
 
JSci: Java 2Dグラフィック作成のためのオープン・ソースの選択肢
Javaにおいて2Dグラフィックスの作成を考えた場合での、JSciの使用という有効な選択肢を提案します。Swing環境下で2次元のグラフを作成することができます。
    2001/10/01  
 
Java 2が新規フォーカス・サブシステムを実装
Java 2プラットフォームに新規に導入されたAWTフォーカス・サブシステムがどのように実現されているか、また実用に役立つコード例やその他の情報も提供します。
    2001/10/01  
 
Merlinの魔術: プリファレンスを使ってみる
JSR 10でjava.util.prefsパッケージをJava 1.4 APIに追加したことにより、プリファレンス・データと構成データの操作が可能になりました。今回の記事では、Preferencesクラスについて紹介し、その使用法を説明しています。
    2001/10/01  
 
Merlinの魔術: プリファレンスを使ってみる
JSR 10でjava.util.prefsパッケージをJava 1.4 APIに追加したことにより、プリファレンス・データと構成データの操作が可能になりました。今回の記事では、Preferencesクラスについて紹介し、その使用法を説明しています。
    2001/10/01  
 
ストリームを反転させる: 第2回 内部Java I/Oの最適化
2回にわたる連載第2回目である今回の記事では、新たなストリーム・セットを開発し、設計目標としてパフォーマンスに重点を置いて、標準のJava I/Oバイト配列クラスとパイプ・ストリーム・クラスを完成します。
    2001/10/01  
 
グローバリゼーション・レポート: ユーロへの準備は万全ですか?
2002年1月1日より、ユーロはヨーロッパ12か国における唯一の正式通貨となります。IBMのグローバリゼーションのエキスパートであるBaldev Soorは、ロケールの振る舞い、処理方法、および出荷方法の変更を含めて、この通貨の移行の持つ影響に注目し、開発者が通貨の切り替えを円滑に行うために役立つ、独自のヒントを提供します。
    2001/10/01  
 
高信頼性の銀行用システム: J/XFSの紹介 第2回
銀行用ハードウェアをJavaプラットフォームに一体化する国際標準J/XFSを引き続き紹介します。
    2001/09/01  
 
システム負荷を軽減したスレッド化: 競合を低減させる
競合を減らしてプログラムにおけるスケーラビリティーを改善するための、各種の技法を紹介しています。
    2001/09/01  
 
Merlinの魔術: タブ付きペインのスクロール
新しい改良バージョンのJTabbedPaneでは、単一行上のタブをスクロールすることができます。JTabbedPaneのレイアウトの方針を変更する方法を示すとともに、使用可能な例を提示します。
    2001/09/01  
 
Javaコードの診断: 拡張可能アプリケーションの設計 第2回
前回紹介したガラス・ボックス拡張性について、さらに議論を発展させます。ガラス・ボックスをどんなときに使用すべきかを理解し、それ実装するうえでのいくつかのヒントを紹介します。
    2001/09/01  
 
Javaコードの診断: 拡張可能アプリケーションの設計 第1回
今回以降のJavaコードの診断のシリーズでは、システムの拡張性について論じます。第1回は、ソフトウェア・システムを拡張可能にするためのさまざまな方法とその有効性について説明します。
    2001/09/01  
 
Merlinの魔術: Porter-Duffのルール!
今回の「Merlinの魔術」シリーズは、ディジタル・イメージ合成に関する12のPorter-Duffルールに言及し、その働きを紹介します。
    2001/09/01  
 
Javaコードの診断: 「テスト可能な」アプリケーションの設計
テストを念頭においてコード設計を行う際に、基となる7原則の概要を示しています。
    2001/09/01  
 
P2Pを相互運用可能にする: Jxtaコマンド・シェル
シリーズの第2回は、Jxtaシェルの実践です。シェルのコマンド・セットを調査したり、Javaプログラム言語を使って独自のカスタム・コマンドを作成してシェルの機能を拡張してみましょう。
    2001/09/01  
 
Java Web Start
クライアント・サイドのJavaアプリケーションの開発と配布を容易にするための新しいテクノロジーJava Web Startを紹介します。
    2001/09/01  
 
Unicodeエンコード方式
この記事では、Unicodeの最近の成果をかいつまんで説明し、そのエンコード方式であるUTF-8、UTF-16、およびUTF-32を概観します。またこの記事では、簡単なアルゴリズムを使用することによって、これらの3つのエンコード方式をどのように相互運用できるかについても説明します。
    2001/09/01  
 
JSPおよびJDBCテクノロジーによる動的Webベース・データ・アクセス
JSPおよびJDBCテクノロジーを用いて、Webサイトの静的、動的、さらにデータベースのコンテンツを統合する方法について説明します。
    2001/09/01  
 
高信頼性の銀行用システム: J/XFSの紹介 第1回
銀行業務アプリケーションにとって、Javaプラットフォーム用のExtensions for Financial Services (J/XFS) は、信頼のおける安定した業務用アーキテクチャーとなるでしょう。 2回シリーズの第1回は、J/XFSとその導入事例であるFinancial Device Interface (FDI) for J/XFSを紹介します。
    2001/08/01  
 
Javaコードの診断: 虚偽の実装というバグ・パターン: 第2回
第2回目は、虚偽の実装バグを除去するための2つの有用なツールを紹介します。
    2001/08/01  
 
Javaコードの診断: 「みなし子スレッド」バグ・パターン
今回の「Javaコードの診断」では、 マルチスレッド・プログラムがロックしてしまうといったバグ・パターンを検出、修正、および回避する方法について説明します。
    2001/08/01  
 
Javaモデリング: ホロニックなソフトウェア開発
いかにしてホロニックなソフトウェア開発がアジャイルな開発の動きを補って拡大させてゆくのか、またソフトウェア開発者の教育とソフトウェア開発の慣行をどのように変える可能性があるのか探り出します。
    2001/08/01  
 
Merlinの魔術: 挿入順序を保持する
J2SE 1.4でJava Collections Frameworkに取り入れられた、LinkedHashSetとLinkedHashMapの2つの新たな実装について解説します。
    2001/08/01  
 
P2Pを相互運用可能にする: Jxtaの物語
IBM, IBM Japan, e-business,日本IBM,e-business on demand,ThinkPad,ホームページビルダー
    2001/08/01  
 
Robocodeの達人たちが明かす秘訣: 弾丸を追跡する
敵に合わせて最善の標的合わせ技法を使用するには、どの技法が有効で、どの技法が有効でないかについて、正確な統計を得る必要があります。このヒントでは、Ray Vermetteが、まさにそのことを行う BulletTracker クラスを実装する方法を紹介します。
    2001/07/01  
 
Javaコードの診断: クリーンアップ・コード散在バグ・パターン
リソース管理におけるバグ・パターン「Split Cleaner」について解説します。
    2001/07/01  
 
ピアツーピア・コンピューティングの実践: ピアツーピア・ネットワークにおける信頼性とセキュリティー
ピアツーピア・アプリケーションにおける信頼性とセキュリティーの問題を検討し、分散アプリケーションで信頼性を実現するためのツールを紹介します。
    2001/07/01  
 
Merlinの魔術: Swingの新たなSpinnerコンポーネント
この新シリーズでは、Java 2 Standard Edition version 1.4を使用してプログラミングをする際の、豊富な新機能を使いこなすヒントを提供していきます。今回はSpinner コンポーネントを取り上げます。
    2001/07/01  
 
企業ネットワークを貫くトンネル作り
SOAPに代わるHTTP対応のJavaオブジェクトを掘り下げます。これを利用して、企業ネットワークにアクセスする安全で確実なテクニックを見つけましょう。
    2001/07/01  
 
Javaコードの診断:虚偽の実装というバグ・パターン: 第1回
Java言語がインターフェース不変条件の指定を型シグネチャーに限定していることが不十分なドキュメンテーションと組み合わさることによって生じるバグ・パターンを考察し、回避方法を説明します。
    2001/07/01  
 
Merlinの魔術: 長期の永続性
J2SEのバージョン1.4で採用されたJavaBeanコンポーネントの状態をXMLドキュメント内に長期間保存する機能によって、シリアライゼーションを回避する方法を学びましょう。
    2001/07/01  
 
Javaコードの診断: 型詐欺師のバグ・パターン
Impostor型バグ・パターンの症状と原因について検証し、その予防策を明示し、Impostor型を使用しないハイブリッド・インプリメンテーションについて述べます。
    2001/07/01  
 
システム負荷を軽減したスレッド化: 同期化を敵視することはありません
3回シリーズで、Java言語のマルチスレッド・プログラミングの裏に潜む主要な問題について考察していきます。第1回は、同期化についてです。
    2001/07/01  
 
Javaモデリング: UMLワークブック: 第2回
引き続きUnified Modeling Languageとシーケンス・ダイアグラムについて説明します。「汎用」と「インスタンス」という2つの形式のシーケンス・ダイアグラムについて検討しましょう。
    2001/06/01  
 
Webアプリケーションのパフォーマンスとスケーラビリティーの検査
Webアプリケーション開発では、XMLとJavaテクノロジーの組み合わせによるパフォーマンスとスケーラビリティーのテストが不可欠です。JavaオブジェクトとXMLベースのスクリプト言語の組み合わせがテストに役立つ理由や、実際的なWebソフトウェア・テストを行う方法などを紹介します。
    2001/06/01  
 
Tomcatにおけるフィルタリング機能の活用
Tomcat 4におけるフィルタリング(Java Servlet 2.3仕様の一部)を紹介し、フィルターの活用方法を示します。
    2001/06/01  
 
Javaコードの診断:正しいメソッド呼び出しのためのRecorderによるテスト
Recorderをユニット・テストに使用することにより、ユニット・テストでカバーできる大きさより大きく、システム全体より小さなコンポーネントの集合に対して、テストを行うことが可能となります。
    2001/06/01  
 
Javaモデリング: UMLワークブック: 第3回
Javaモデリングの第3回では、ユーザー・インターフェースとシステム・インターフェースの関係に焦点をあて、ユース・ケース・モデリングを介した要件収集を検討します。
    2001/06/01  
 
Unicodeのためのバイナリー・オーダー圧縮法 (BOCU)
Unicodeバイナリー・オーダー圧縮(Binary-Ordered Compression for Unicode ; BOCU) は、Unicodeに対する新しい汎用圧縮形式です。BOCUは、Unicode標準圧縮スキーム(Standard Compression Scheme for Unicode ; SCSU) と同様、データベース内の個々の領域など、小さな文字列に対して優れた圧縮機能を発揮します。他のテキスト圧縮方法と異なり、BOCUにはきわめて重要な1つの特性があります。それは、圧縮された文字列がUnicodeのバイナリー・オーダーのままであるという点です。
    2001/06/01  
 
Javaコードの診断: Javaコードのパフォーマンスを向上させる
末尾再帰メソッドを使用することが必ずしもJavaプログラムのパフォーマンスを向上させるとは限らないという場合を検証しましょう。
    2001/05/01  
 
Javaコードの診断: 破壊工作データのバグ・パターン
内部データが破壊工作データになってしまうようなバグ・パターンについて原因と対策を考えます。
    2001/05/01  
 
J2MEの発展
プラットフォームとしてのJ2MEの現在の仕様を示し、J2MEの構造を説明します。
    2001/05/01  
 
Unicodeの知らざる世界
テクノロジーの世界に生きる私たちのほとんどは、Unicodeを、複数文字セットを扱うための基本的な必需品と考えています。その長所や短所について本気で語る人はいません。とにかく、Unicodeというものが存在する のです。しかし、あらゆる技術ソリューションと同様に、Unicodeにも利点と不利な点があります。競争相手も存在しています。したがって、この記事では、マイナス面が存在するという事実を無視せず、Unicodeの弱点に目を向けています。
    2001/05/01  
 
Javaコードの診断: プラットフォーム依存を引き起こす"犯人"
この記事では、気を付けるべきJavaプログラミングのプラットフォーム依存の側面について説明します。たとえば、末尾再帰呼び出しや、組み込みのベンダー、バージョン、およびオペレーティング・システムへの依存です。さらに、この種の依存性を回避するいくつかの方法も紹介します。
    2001/05/01  
 
JDOMでXMLプログラミングを単純化する
XMLを扱うためのJavaツールキットJDOMについて解説します。XMLアプリケーションを短期間で開発するためにご検討下さい。
    2001/05/01  
 
Javaモデリング: UMLワークブック: 第1回
UMLを学習するために、今回はUMLの構成要素の1つであるシーケンス・ダイアグラミングを紹介しています。シーケンス・ダイアグラム作成の第1歩として、オブジェクト間の対話のモデリングについて説明します。
    2001/05/01  
 
PropertyResourceBundleへの継承の導入
PropertyResourceBundleを使用して、国際化されたJavaアプリケーションを作成すると、設計やインプリメンテーションの面で興味深い問題に気付きます。本稿では、PropertyResourceBundleを基にしたソリューションを探ります。
    2001/05/01  
 
ピアツーピア・コンピューティングの実践:P2Pアプリケーション・フレームワーク
P2Pアプリケーションをインストールする方法、構成する方法、およびアプリケーションの機能の仕組みについて説明します。
    2001/05/01  
 
歴史的なコレクション・クラス - 配列
John Zukowskiの著書「Java Collections」からの抜粋です。ここに抜粋した記事では、配列に関する詳細を扱っています。
    2001/05/01  
 
Javaコードを守る方法 (あるいは他人のJavaコードを参照する方法)
Javaコードを解析したり保護したりする方法を学びましょう。この記事では、Mocha、HoseMocha、jmangle、およびJODEなどのツールを例に、Javaコードの逆アセンブル、逆コンパイル、曖昧化について説明しています。
    2001/05/01  
 
Javaコードの診断: 破綻したディスパッチのバグ・パターン
Broken Dispatchというバグ・パターンの解説と解決方法を述べます。
    2001/05/01  
 
管理アプリケーション・プログラミング: FMAおよびJiro入門
Sun MicrosystemsのJiroテクノロジーおよびDistributed Management Task ForceのWeb-Based Enterprise Managementイニシアチブ (WBEM) により、異機種混合の環境用の管理アプリケーションの作成をどのように単純化できるのかを探る3回シリーズの1回目です。Federated Management ArchitectureとJiroテクノロジーを初心者向けに紹介します。
    2001/05/01  
 
Javaコードの診断: うそつきビューのバグ・パターン
最終的なマニュアル・テストで始めて発見されるようなバグのパターンと症状、原因および、その治療法と予防策について検討します。
    2001/04/01  
 
歴史に残るコンポーネント
この年表では、コンピューターの一般的な歴史という大きな観点から、最近50年間におけるオブジェクト指向プログラミングとコンポーネントに関する重要な出来事のいくつかを探ってみます。
    2001/04/01  
 
Javaベースのスーパーコンピューターの構築
JavaスレッドとJava Remote Method Invocation (RMI) の組み合わせを利用して、Javaベースのスーパーコンピューターを作成する方法を示します。
    2001/04/01  
 
Javaコードの診断: 「二段たどり」バグ・パターン
Double Descentバグ・パターンを見つけて識別する方法と、このパターンの出現を最小限に抑えるためにすべきことを説明します。
    2001/04/01  
 
IRC botの夢
David SeagerがJava言語で非常に簡単なIRC botを作成して、その動作を紹介します。
    2001/04/01  
 
Generic Javaを使用して、コンパイル時のエラー検出を増加させる
Java言語にパラメトリック・タイプを追加することは、コンパイル時のエラーの検出に有効です。パラメトリック・タイプについて紹介し、パラメトリック・タイプの追加方法のひとつであるGJの長所と短所について説明します。
    2001/03/13  
 
テスト、面白いですか?本当に?
単体テストと機能テストの違いについて説明し、開発においてそれらを使用するプロセスの概要を説明します。
    2001/03/01  
 
ピアツーピア・コンピューティングの実践 : 序論と歴史
分散コンピューティングにおけるピアツーピア・コンピューティングを理解しましょう。このシリーズを通してP2Pアプリケーションを作成する力を身につけましょう。
    2001/03/01  
 
再訪: クライアント側のJavaテクノロジー
クライアント側のJavaテクノロジーに再び関心を向けるべき時です。古い技法と新しいテクノロジーを組み合わせ、ユーザー体験を大幅に改善し、かつ、コストを削減できる利点を述べています。
    2001/03/01  
 
EJBベスト・プラクティス: リモート・オブジェクト設計の改善
この新連載では、Enterprise JavaBeansのコンポーネントを設計、最適化する最善の方法や、RMIトラフィックおよびJNDIアクセスを減少させる方法を学びます。第1回目では、ビジネス・インターフェース・パターンを活用することで、リモート・オブジェクト設計を改善できることを示します。
    2001/03/01  
 
システムのセキュリティー保護:危険度の高いシステムにJavaテクノロジーを用いる
このシリーズでは、インターネットからアクセス可能なシステムのセキュリティーを効果的に保護・管理する機能にJavaテクノロジーをどのように使用できるかについて説明します。
    2001/03/01  
 
Eclipse Workbench以外でのEclipse GUIの使用 第1回: スタンドアロン・モードでJFaceおよびSWTを使用する
この3回シリーズでは、スタンドアロン・アプリケーションの作成方法について説明します。第1回では "Hello World" プログラムを例として、段階的にシンプルなファイル・エクスプローラー・アプリケーションを作成していきます。
    2001/03/01  
 
Javaコードの診断:「ヌル・フラグ」バグ・パターン
「ヌル・フラグ」バグ・パターンが、デバッグの難しい予期しない結果を生み出すことを説明し、このパターンの出現を最小限に抑える方法を検討します。
    2001/03/01  
 
e-commerceアーキテクチャーへのアプローチ
Professional Java E-Commerce (Wrox Press社)からの抜粋です。この記事では、J2EEを利用したe-commerceアプリケーション開発の方法について論じます。
    2001/03/01  
 
JavaCon 2001: 次はJiniネットワーキング・テクノロジー
Jiniネットワーキング・テクノロジーと、次世代分散コンピューティングの課題についての、Jim Waldo氏のInternational Conference for Java Developmentでの基調演説と、New York Java SIGでの演説の要約、および、developerWorksとのインタビューの内容です。
    2001/03/01  
 
XPの真髄
Javaプログラミングによるソフトウェア開発をより効率的にするアジャイル方法のひとつXPについて説明します。
    2001/03/01  
 
Javaコードの診断: 「宙ぶらりん複合型」バグ・パターン
Javaプログラミングにおいて最も頻発するバグの1つ、ヌル・ポインター例外を取り上げます。
    2001/03/01  
 
J2EEの積み木で遊ぶ
International Conference for Java Developmentにおける、ThoughtWorksのMartin Fowler氏とDavid Rice氏による講義について、および、Computer AssociatesのYogesh Gupta氏へのエンタープライズ開発に関するインタビューです。
    2001/03/01  
 
Java大学 東海岸キャンパス
International Conference for Java Development 2001で開かれたJava Universityの2つの課程について紹介します。
    2001/03/01  
 
ネイティヴパフォーマンスを使ってのメディアプレイヤーのための外観が変更(skinnable)可能なJave UIsのデザイン
複数のプラットフォームをまたがってコンパイルし、ネイティヴコード同様の速さで動作するJavaコードが書けますか?これはJava開発者には、特に複雑なUIを使ってのアプリケーションとなるとやっかいな問題です。この記事では、開発者であるVladimir Silvaがこの問題に対する興味深い解決法を提示しています。SLIK、つまりWindowsとUNIXの双方でネイティヴパフォーマンスを提供するクロスプラットフォームのC APIへアクセスするためには、どのようにJNIを利用すればよいかを学習します。
    2001/02/01  
 
GB 18030: 巨大なコード・ページ
本稿では、重要な中国語GB 18030-2000標準と、中国語市場のソフトウェアとの関係について簡単に説明します。GB 18030は、独特の問題点を抱えたまま標準として採用されました。ここでは、これらの問題点を説明すると共に、そうした問題点の対応策を提案します。
    2001/02/01  
 
象牙の塔をJavaテクノロジーが登る
学問の世界のニーズに応じるには、Javaテクノロジーが万能の道具ということになりそうです。今日、大学などの教育機関は、異種コンピューティング環境、多様なコンピューティング・ニーズ、そして大量かつ複雑な情報を共有および保管する必要性の増大に直面しています。また、大学の多くは、これらすべての要求を非常に厳しい予算の内で満たさなければなりません。この記事では、米国内の大学のキャンパスがどのようにJavaに基づくソリューション群 (一部は学生達によって作成されたもの)を使用して、学校経営の負担を緩和し、また学生達による情報の体系化、およびその情報へのアクセスを容易にし、さらには教育の質を高めているかについて考察します。
    2001/02/01  
 
スタイルを使用してUMLシーケンス・ダイアグラムを作成する
効果的なUMLシーケンス・ダイアグラムを作成するために、ここで説明するヒントを参考にしてください。本稿は、The Object Primer 2nd Edition の第6章に手を加えたものです。
    2001/02/01  
 
Javaセキュリティーの進化: 第2回
前回に引き続きJavaセキュリティー・モデルについて説明します。
    2001/02/01  
 
Swingモデルのフィルター処理
モデルのフィルター処理の技法について論じます。これはSwingコンポーネント・アーキテクチャーを更に柔軟で強力にします。
    2001/02/01  
 
バグ・パターン
プログラミング作業に役立つJavaソリューションを取り上げる新連載コラムです。今回はバグ・パターンという概念について紹介します。
    2001/02/01  
 
Translatorパターンを使ってより良いWebサイトを作る
サイトのメンテナンスを容易にするのに役立つTranslatorパターンについて紹介し、TranslatorパターンをJSPテクノロジーやサーブレットの環境で使用する方法を説明します。
    2001/02/01  
 
Jiveトーク: オープン・ソースJavaフォーラム・ソフトウェア
カスタマイズされたスピーディなフォーラムのサーバー・サイドJavaフォーラム・ソフトウェア「Jive」を使用してみましょう。
    2001/02/01  
 
マルチスレッド化Javaアプリケーションの作成
この記事では、マルチスレッド化に関連した問題に焦点をあて、よく発生する問題についてのソリューションを提示します。
    2001/02/01  
 
Javaアプリケーションでのイメージ作成
「Beginning Java 2 - JDK 1.3 Edition」からの抜粋です。独自のグラフィック・ファイルを作成する場合の基本事項を説明します。
    2001/02/01  
 
JSPアーキテクチャー
designerJavaServer Pagesテクノロジーを使用するメリットの1つは、Webデザイナーとソフトウェア開発者の役割を分担できる点です。Webアプリケーションのアーキテクチャーの設計は、役割分担にとって非常に重要です。
    2001/02/01  
 
Struts、オープン・ソースMVC実装
Strutsを、Webプロジェクトの変更を制御したり、特殊化を促進したりするのに役立てて下さい。
    2001/02/01  
 
Javaプログラムでのメモリー・リークの処理
Javaプログラムでメモリー・リークが発生するのでしょうか? その通りです。一般に信じられていることとは異なり、Javaプログラミングでもメモリーの管理を考慮する必要があります。この記事では、メモリー・リークの原因は何か、そしてそれが問題になるのはどんな場合かを説明します。また、プロジェクトでメモリー・リークの問題に取り組む上での実際的な例も含まれています。
    2001/02/01  
 
Javaセキュリティーの進化: 第1回
JDK 1.2のリリースによって、アプレットおよびアプリケーションのセキュリティーが統一された、まったく新しい詳細制御セキュリティー・モデルが導入されました。
    2001/02/01  
 
EJBと非EJB環境へのサービス・インプリメンテーション
EJB環境に依存しないサービス・インプリメンテーションを設計する方法について説明します。
    2001/02/01  
 
Unicodeのキリル文字
本稿では、Thomas Burger氏が、キリル文字フォントを取り上げ、Linuxでキリル文字を表示するためのいろいろな方法 (UTF-8など) について説明します。キリル文字フォントのサポートとインストールをセットアップする方法や、アプリケーションの中でキリル文字をサポートする方法などが、その具体的な内容になります。さらに、UTF-8のキリル文字フォントを使用することによって、本当の意味での最初の国際的なオペレーティング・システムになるのはLinuxであるという自説も展開しています。
    2001/01/01  
 
J2EE 1.2での複数アプリケーションのデプロイメント
この記事では、EJBeansコンポーネントの一般的な再利用のシナリオを基に、いくつかの考慮事項について説明し、アプリケーションの最適なパッケージングとデプロイメントの選択方法について提案します。
    2001/01/01  
 
log4jによって可能になるログの制御
Java用のポピュラーなロギング・パッケージであるlog4jの機能と設計理論について説明します。
    2001/01/01  
 
遊離クローンによるEJBネットワーク・トラフィックの軽減
EJBを扱う際に、遊離クローンを使用してパフォーマンス上の問題を解決するための、簡単かつ強力な技法について解説します。
    2001/01/01  
 
JavaServer Pagesテクノロジーを使用した動的XMLの生成
実際の例を使いながら、XML文書テンプレートとしてJSPページを作成する方法を見ていきましょう。
    2000/12/01  
 
マルチリンガル・ドメイン・ネーム競走:位置について…用意…待った
そろそろ、その筋が、マルチリンガル・ドメイン・ネームをサポートするための、より効果的な方法を提示してもいいころだ -- それを疑う人はほとんどいません。問題は、どの方式が最も優れているかを決めるということです。この記事では、Suzanne Toppingがこの難問を徹底的に詳しく調査します。また、このジレンマを解決するための注目に値するいくつかのプロポーザルと、ソリューションのインプリメントの現実についても説明します。
    2000/12/01  
 
国際化対応
Javaベースのテクノロジーを国際化するためのプロセスについて説明し、国際化テクノロジーの開発と維持管理における問題管理に役立つツールの1つであるResource Bundle Managerを紹介します。
    2000/12/01  
 
Javaアプリケーションのためのレガシー統合テクニック
JavaやJ2EEやEJBをベースにしたアプリケーションを簡単に レガシー・システムと統合するためには、どうしたらよいでしょうか。本稿では、そのための基本的な統合ストラテジーを4つ取り上げます。
    2000/11/16  
 
AntとJUnitを用いた漸進的開発
ソフトウェア開発において、ソフトウェア品質の向上のため、単体テストを開発プロセスに取り入れるメリットを探ります。
    2000/11/01  
 
SwingのJTableコンポーネントでセルを描く
Professional Java Programming 第6章からの抜粋です。JTableの描画機能および編集機能の動作を説明し、読者自身のインプリメンテーション時の設定についても検討します。
    2000/11/01  
 
フレームワークは救世主
プロジェクトのコストを低減し、ソフトウェアの品質を高めることができる軽量のフレームワークを紹介しましょう。
    2000/10/31  
 
Java accessorのvisibility
この記事ではaccessorメソッドのvisibilityに関する指針を示します。これは、The Object Primer 2<sup>nd</sup> Edition の第8章を変更したものです。
    2000/10/19  
 
Accessorを使用するとJavaコードの堅牢性が高まります
Scott Amblerがaccessorの使用方法を説明し、そしてなぜaccessorを開発標準の1つとして推進していくべきかを述べています。この記事は、The Object Primer 2<sup>nd</sup> Edition の第8章を変更したものです。
    2000/10/12  
 
JavaSpacesの活用
分散データ構造の概念を分かりやすくまとめ、さらに、幅広い用途をもったチャネル分散データ構造の構築方法と使用方法を示し、分散MP3エンコード・アプリケーションへの応用例を取り上げます。
    2000/10/01  
 
Practical Javaからの抜粋
以下の記事は、Addison-Wesley 出版の「Practical Java」という著書からの抜粋です。この本は、Borders.com で注文できます。著者Peter Haggarへのインタビュー をお読み下さい。
    2000/10/01  
 
Practical Javaからの抜粋:共用変数にアクセスするときにはsynchronizedまたはvolatileを使用する
「Practical Java」からの抜粋です。今回は共用変数にアクセスする時のメソッドの使い方についてです。
    2000/10/01  
 
DBMSストアード・プロシージャーをセッションEJBコンポーネントのメソッドとしてラッピングする
Webアプリケーションとデータベース管理 (DBMS) テクノロジーを統合することは、多くの新規ビジネス・アプリケーションで共通の要件です。この記事では、この統合の1つの面、つまり、セッションEnterprise JavaBeans (EJB) コンポーネントで既存のDBMSストアード・プロシージャーのラッピングや呼び出しを行うメソッドの設計/開発を行う方法について考えます。この記事から最大限の益を得るには、EJBテクノロジー、構造化照会言語 (SQL)、およびJava Database Connectivity (JDBC) の基礎に通じている必要があります。
    2000/10/01  
 
コンテンツ・ベースのルーティングにおけるJMS APIとXMLの使用
Javaテクノロジー、JMS API、およびXMLを使用して、 コンテンツに基づいてメッセージの経路を決めるメッセージング・インフラストラクチャーを構築する方法を示します。
    2000/10/01  
 
Practical Javaからの抜粋:ロックされたオブジェクトのオブジェクト参照子を再割り当てしてはいけない
Addison-Wesley出版の「Practical Java」からの抜粋です。ロックされたオブジェクトに再割り当てを行うと何が起こるでしょうか?
    2000/10/01  
 
もしも自分が王様だったら: Javaプログラム言語のスレッド化不具合への解決策提案
より強力で、オブジェクト指向の考えを取り入れた、Java言語のスレッド化モデルの変更を提案しています。
    2000/10/01  
 
アクティブ化可能なJiniサービス: RMIアクティブ化をインプリメントする
Jiniサービスの可用性の向上のために、RMIアクティブ化を使用する方法について説明します。
    2000/10/01  
 
接続プール
J2EE環境における接続プール・リソースの必要性を、種々のリソースとそれらのリソースにアクセスするEJBコンポーネントに共通する性質を基に説明します。
    2000/10/01  
 
Practical Javaからの抜粋:デッドロックを避けるため、複数のロックを固定されたグローバルな順序で獲得する方法
この記事は、Practical Java (Addison-Wesley 発行)の抜粋です。デッドロックを回避する方法について述べています。
    2000/09/01  
 
Javaセキュリティーを利用した信頼できるe-mail
e-businessにとって、 インターネット・トランザクション、 とくにメッセージのやり取りは生命線です。この記事では、 e-businessトランザクションでセキュリティーを実現するために開発者が利用できるJavaテクノロジーを紹介します。
    2000/09/01  
 
CORBAテクノロジーに触れる
6 月の記事では、CORBA と Java テクノロジーをなぜ選ぶのかについてお話ししました。今月は、CORBA テクノロジーのさまざまな面がよくわかる簡単な例から話を始めます。ただし、わたしたちの目標を見失わないようにしましょう。つまり、あるコンピューターに常駐するクライアントを使って、別のコンピューター上で実行されているサービスを要求する分散アプリケーションを作成することです。ハードウェアやオペレーティング・システム・ソフトウェアなど細かいことを気にする必要はありません。欲しいのは、クライアントの要求を満たすサービスだけです。
    2000/07/06  
 
Enterprise JavaBeansコンポーネントとは? : 第2回 : EJBプログラミング・モデル
「Enterprise JavaBeans コンポーネントとは?」シリーズの第 2 回では、 Enterprise JavaBean コンポーネントの作成に必要な Java インターフェースおよびクラスの役割について説明します。enterprise bean の 2 つの主要なタイプであるセッション bean とエンティティー bean の違いを述べ、 EJB コンテナーと EJB サーバーとの関係について説明します。
    2000/07/01  
 
Enterprise JavaBeansコンポーネントとは ?: 第3回: Enterprise JavaBeansコンポーネントの配置と使用
「Enterprise JavaBeans コンポーネントとは ?」シリーズの最終回は、EJB コンポーネントの開発と使用について学びましょう。また、EJB コンポーネントとCORBA の関係についても述べられています。
    2000/07/01  
 
EJB 2.0に関するすべて
新しい EJB 2.0 仕様は、新しいポイント・リリースというだけでなく、CMP コンポーネント・モデルや新しい bean タイプなどに、アプリケーション開発の柔軟性と移植性を向上させる画期的な変更が加えられています。公式なドラフトとして今月リリースされた新しい仕様の機能を一足先に学習しましょう。
    2000/06/01  
 
Enterprise JavaBeans コンポーネントとは? : 第1回
シリーズで Enterprise JavaBeans (EJB) テクノロジーの概要を説明します。 EJB の基本的な概念を短時間で理解することができます。第 1 回では EJB テクノロジーの歴史、ゴール、利点などを説明し、その技術内容についても探っていきます。
    2000/06/01  
 
Javaセキュリティーの進歩とその概念、第1回: セキュリティーのボルトとナット
コンピューター・セキュリティーに関する一般的な解説と、Java プログラム言語に特有の課題を取り上げるシリーズです。1回目のこの記事では、コンピューター・セキュリティーと暗号化についての一般的な概念を解説します。
    2000/05/09  
 
Javaアプリケーションでの値による受け渡し
以前に developerWorks に掲載された記事「パラメーターは参照ではなく値によって渡されることを理解する」について寄せられた質問やコメントに対する著者 Peter Haggar からの回答です。
    2000/05/01  
 
 結果  936    1 - 100 件を表示する     概要の非表示    
 
お探しの記事は見つかりませんでしたか? コンテンツを提案する