(57)【要約】ＪａｖａアプリケーションをＢＲＥＷ用に変換する。  Ｊａｖａソースコードを前記バイナリコードに変換する第１の手段と、Ｊａｖａバイトコードを前記バイナリコードに直接変換する第２の手段とのいずれかを選択的にコンピュータに構築する自動変換用プログラムを、開発者の操作端末が任意にアクセスすることができるコンピュータネットワークに備えられたプログラム変換サーバに搭載しておき、Ｊａｖａ（ソース／バイナリ）コードから成るアプリケーションが開発者の操作端末がプログラム変換サーバに入力されたときに、それをＢＲＥＷアプリケーションに自動変換して上記操作端末に返信する。【特許請求の範囲】
【請求項１】
Ｊａｖａコードで記述されたＪａｖａアプリケーションをＢＲＥＷのバイナリコードで記述された実行形式のＢＲＥＷアプリケーションに人手を介することなく自動変換するためのプログラムであって、
Ｊａｖａソースコードを前記バイナリコードに変換する第１の手段と、
Ｊａｖａバイトコードを前記バイナリコードに直接変換する第２の手段とのいずれかを選択的にコンピュータに構築するための自動変換用プログラム。
【請求項２】
それぞれプロファイルが異なる複数種類のＪａｖａアプリケーションの各々から前記ＢＲＥＷアプリケーションに変換するための手順を定めたライブラリを個々のＪａｖａプログラムを形成するＪａｖａコードの種類を識別するための識別コードと対応付けて所定のメモリに格納するライブラリ管理手段と、
変換対象となるＪａｖａアプリケーションのＪａｖａコードの種類が特定されたときに前記ライブラリ管理手段を通じて当該Ｊａｖａコードに対応するライブラリを前記メモリから読み出し、読み出したライブラリに基づいて前記第１の手段又は前記第２の手段のいずれかに前記特定されたＪａｖａコードで記述されたＪａｖａアプリケーションからＢＲＥＷアプリケーションへの自動変換を促す第３の手段と、をさらに前記コンピュータに構築するための請求の範囲第１項記載の自動変換用プログラム。
【請求項３】
前記Ｊａｖａアプリケーションで使用されるコンテンツデータを読み取って、そのコンテンツデータのデータ構造が何かを特定するデータ構造解析手段と、
このデータ解析手段により特定したデータ構造をＢＲＥＷアプリケーションで使用するデータ構造に変換するデータ構造変換手段と、をさらに前記コンピュータに構築するための請求の範囲第１項記載の自動変換用プログラム。
【請求項４】
前記コンテンツデータが、画像データ、音声データ、又はその組み合わせである、
請求の範囲第３項記載の自動変換用プログラム。
【請求項５】
Ｊａｖａソースコード又はＪａｖａバイトコードで記述されたＪａｖａアプリケーションをＢＲＥＷのバイナリコードで記述された実行形式のＢＲＥＷアプリケーションに人手を介することなく変換する自動変換用プログラムを格納したプログラム格納手段と、
それぞれプロファイルが異なる複数種類のＪａｖａアプリケーションの各々から前記ＢＲＥＷアプリケーションに変換するための手順を定めたライブラリを個々のＪａｖａプログラムを形成するＪａｖａコードの種類を識別するための識別コードと対応付けて所定のメモリに格納するライブラリ管理手段と、
変換対象となるＪａｖａコードを所定のコンピュータネットワークを通じて電子データの形式で受け付けるＪａｖａコード受付手段と、
このＪａｖａコード受付手段で受け付けたＪａｖａコードの種類が特定されたときに前記ライブラリ管理手段を通じて当該Ｊａｖａコードに対応するライブラリを前記メモリから読み出し、さらに前記プログラム格納手段から前記自動変換用プログラムを読み出し、読み出したライブラリを用いて前記自動変換用プログラムを実行させることにより前記受け付けたＪａｖａコードからバイナリコードへの変換を行う変換手段と、
変換されたバイナリコードを前記Ｊａｖａコードの送出元へ返信する返信手段と、を備えて成る、プログラム変換サーバ。
【請求項６】
前記Ｊａｖａコードから前記バイナリコードへの変換を望むユーザを登録するユーザ登録手段を備えており、
ユーザ登録手段に登録されたユーザによる１回の課金単位による前記Ｊａｖａコードの受付を繰り返し許容する、
請求の範囲第５項記載のプログラム変換サーバ。
【発明の詳細な説明】
【技術分野】  本発明は、例えば携帯電話用のアプリケーションを開発する際に、使用される言語、開発環境の自動変換手法に関する。
【背景技術】  近年、携帯電話において、ユーザがアプリケーションをダウンロードして使うというサービスが、携帯端末の性能アップにより可能となり、実用に供されている。その際にアプリケーションを開発するために使用されるソフトウェア言語としては、ハードウェアの依存性がない携帯電話用のＪａｖａ（ＳｕｎＭｉｃｒｏｓｙｓｔｅｍｓ社が開発したプログラミング言語）が主に使用されている。
しかしながら、Ｊａｖａは、ＪａｖａＶＭ（Ｊａｖａ仮想機械）という携帯電話にとっては重いソフトウェアを実装しなければならない。そのため、高性能なハードウェアを必要とする。また、携帯電話において通信用とアプリケーション用に別々のＣＰＵ（プロセッサ）を使うといった複雑な構成も必要となる。
一方、このような状況を鑑み、Ｊａｖａではなく、従来よりソフトウェア開発に主流として用いられてきた「Ｃ」，「Ｃ＋＋」といった言語を使用し、これらの言語を使った携帯電話用のライブラリを提供するという手法も提案されている。この手法により、簡単な構成のハードウェアを使用して、Ｊａｖａよりも高性能なソフトウェアを提供することができる。例えば、Ｑｕａｌｃｏｍｍ社のＢＲＥＷ（Ｂｉｎａｒｙ  Ｒｕｎｔｉｍｅ  Ｅｎｖｉｒｏｎｍｅｎｔ  ｆｏｒ  Ｗｉｒｅｌｅｓｓ：携帯電話でプログラムを開発・利用できる環境）がそれである。このようなアプリケーションは、ＢＲＥＷアプリケーションと呼ばれている。
上記の経緯により、携帯電話用のアプリケーションとしては、携帯電話用Ｊａｖａを使ったものが、数多く開発されており、世の中に多数存在している。ＢＲＥＷアプリケーションは、いわゆる後発のアプリケーションであるが故に、開発されたアプリケーションの数量としては、Ｊａｖａのものに比べて遙かに少ない。ソフトウェア開発は人手による作業なので、早急にそれを完成することは難しい。そのため、メリットが多いＢＲＥＷアプリケーションでのソフトウェア開発を容易にする手段が求められている。
上記問題を解決するために、ＪａｖａアプリケーションをＢＲＥＷアプリケーションに開発しなおす際に、使われるライブラリを整備する方法が提案されている。
しかし、この方法は、あくまでも基本的なライブラリを整備するだけであり、どのライブラリを使うかは、人手で選択ないし実行することになり、開発期間の短縮には、一定の限界がある。
また、ＪａｖａにあってＢＲＥＷにない機能、例えばガベージコレクション（使用されていないメモリを開放する手法：「ＧＣ」と略称する）等については、全く別のものを追加で作る必要がある。これは、人手によらばければならない。
携帯電話用のアプリケーションを開発する際、プログラムの開発が人手作業であり、この作業を短縮することは極めて難しいことは上述したとおりである。
携帯電話のアプリケーションに対する需要は、携帯電話の画面解像度の高精細化、端末ＣＰＵの処理性能の向上、通信料金の定額化（パケット定額等）等を背景として、ますます高まっている。しかしながら、Ｊａｖａですでに開発されたアプリケーションであっても、それをＢＲＥＷ用のアプリケーションとして開発する際には、人手をかけて開発する必要があるし、また、Ｊａｖａ自体にも、ＮＴＴ  ＤｏＣｏＭｏ社用のＪａｖａや米国ＳｕｎＭｉｃｒｏｓｙｓｔｅｍｓ社が規定したＪａｖａ等、様々な言語の方言が存在し、それぞれのＪａｖａで開発されたアプリケーションには互換性はない。
本発明は、上記の背景に鑑み、以下の課題を解決するものである。
１．すでにＪａｖａ言語を使用したアプリケーションが開発済みであって、同じアプリケーションをＢＲＥＷ用に開発する際に、再度別の開発工程が必要となり、開発時間、開発コストが発生する。
２．すでにＪａｖａ言語を使用したアプリケーションが開発済みであって、同じアプリケーションをＢＲＥＷ用に開発する際に、Ｊａｖａ言語を開発できるプログラマー以外にＢＲＥＷを開発できるプログラマーが必要となる。
３．あるアプリケーションをＪａｖａ用とＢＲＥＷ用と同時に開発する際に、開発資源（人的資源、開発時間）が完全に２倍必要となる。
【発明の開示】
上記課題を解決するため、本発明は、自動変換用プログラムとプログラム変換サーバを提供する。
本発明が提供する自動変換用プログラムは、Ｊａｖａコードで記述されたＪａｖａアプリケーションをＢＲＥＷのバイナリコードで記述された実行形式のＢＲＥＷアプリケーションに人手を介することなく自動変換するためのプログラムであって、Ｊａｖａソースコードを前記バイナリコードに変換する第１の手段と、Ｊａｖａバイトコードを前記バイナリコードに直接変換する第２の手段とのいずれかを選択的にコンピュータに構築するための自動変換用プログラムである。
Ｊａｖａバイトコードから構成される、エンドユーザに利用されるアプリケーションをＪａｖａアプリケーションファイルという。
変換の処理を簡略化する観点からは、自動変換用プログラムを、それぞれプロファイルが異なる複数種類のＪａｖａアプリケーションの各々から前記ＢＲＥＷアプリケーションに変換するための手順を定めたライブラリを個々のＪａｖａプログラムを形成するＪａｖａコードの種類を識別するための識別コードと対応付けて所定のメモリに格納するライブラリ管理手段と、変換対象となるＪａｖａアプリケーションのＪａｖａコードの種類が特定されたときに前記ライブラリ管理手段を通じて当該Ｊａｖａコードに対応するライブラリを前記メモリから読み出し、読み出したライブラリに基づいて前記第１の手段又は前記第２の手段のいずれかに前記特定されたＪａｖａコードで記述されたＪａｖａアプリケーションからＢＲＥＷアプリケーションへの自動変換を促す第３の手段と、をさらに前記コンピュータに構築させるものとする。
好ましくは、前記Ｊａｖａアプリケーションで使用されるコンテンツデータ、例えば画像データ、音声データ、又はその組み合わせのデータを読み取って、そのコンテンツデータのデータ構造が何かを特定するデータ構造解析手段と、このデータ解析手段により特定したデータ構造をＢＲＥＷアプリケーションで使用するデータ構造に変換するデータ構造変換手段と、をさらに前記コンピュータに構築させるようにする。
本発明のプログラム変換サーバは、Ｊａｖａソースコード又はＪａｖａバイトコードで記述されたＪａｖａアプリケーションをＢＲＥＷのバイナリコードで記述された実行形式のＢＲＥＷアプリケーションに人手を介することなく変換する自動変換用プログラムを格納したプログラム格納手段と、それぞれプロファイルが異なる複数種類のＪａｖａアプリケーションの各々から前記ＢＲＥＷアプリケーションに変換するための手順を定めたライブラリを個々のＪａｖａプログラムを形成するＪａｖａコードの種類を識別するための識別コードと対応付けて所定のメモリに格納するライブラリ管理手段と、変換対象となるＪａｖａコードを所定のコンピュータネットワークを通じて電子データの形式で受け付けるＪａｖａコード受付手段と、このＪａｖａコード受付手段で受け付けたＪａｖａコードの種類が特定されたときに前記ライブラリ管理手段を通じて当該Ｊａｖａコードに対応するライブラリを前記メモリから読み出し、さらに前記プログラム格納手段から前記自動変換用プログラムを読み出し、読み出したライブラリを用いて前記自動変換用プログラムを実行させることにより前記受け付けたＪａｖａコードからバイナリコードへの変換を行う変換手段と、変換されたバイナリコードを前記Ｊａｖａコードの送出元へ返信する返信手段と、を備えて成るプログラム変換サーバである。
ある実施の態様では、前記Ｊａｖａコードから前記バイナリコードへの変換を望むユーザを登録するユーザ登録手段を備えており、ユーザ登録手段に登録されたユーザによる１回の課金単位による前記Ｊａｖａコードの受付を繰り返し許容するようにプログラム変換サーバを構成する。
本発明のプログラム変換サーバによれば、例えばアプリケーション開発者は、Ｊａｖａバイトコードを送るだけで、自動的に変換されたＢＲＥＷのバイナリコード（実行コード）を受け取ることができ、自動変換サービスの提供方法が自動化され、開発者にとって極めて短期間に開発を終了することが可能になる。
開発者は、一度エントリーすれば、つまり一度ユーザとしてプログラム変換サーバに登録すれば、何度でも変換サービスが受けることができる。これにより、プログラム改良のために、細かな改良を開発者が自分の責任で実行することが可能になる。アプリケーションプログラムの開発の際には、携帯端末の機能制限（アプリケーションサイズや使用するメモリサイズの制限等）や細かな改良を行うために、プログラムを何度も細かく変更する作業が必要になる。何度でも変換サービスが受けられるようにすることにより、開発者はこの機能を利用して、こまかなプログラムの調整を極めて短時間に行うことが可能になる。また、変換されたＢＲＥＷバイナリコードを実際に携帯端末にダウンロードしてテストすることも並行して可能となる。上記サービスを提供するにあたって、何度も変換サービスを受けられる場合に、サービスの課金単位としては、ひとつのプログラムの変換につき単位料金を想定している。しかし、ひとつのエントリーで何度でも変換できるサービスにすると、複数のプログラムをひとつのエントリーで変換してしまう恐れがある。この問題を解決するためにＢＲＥＷのコードにうめこまれるサービスコードがひとつであることを利用した変換サービスを提供することができる。
自動変換用プログラムをコンピュータに実行することにより、すでに多数存在するＪａｖａアプリケーションを極めて短期間に、また人手が介在しないことから低コストでＢＲＥＷアプリケーションに変換することができる。自動変換する際に、Ｊａｖａのソースコートから変換することもできるし、Ｊａｖａバイトコードと呼ばれる機械語から直接変換することもできるので、極めて安易にプログラム変換ができるようになる。
ＪａｖａバイトコードはユーザがＪａｖａアプリケーションを利用する際に使っている形式である。Ｊａｖａバイトコードから直接変換する場合には、以下のようなメリットが存在する。
（１）開発会社がアプリケーションを開発する際に、Ｊａｖａのソースコードを提出すると、機密保持契約が必要になる、またソースコードの版権を別の会社が所有している場合（開発者とコンテンツ提供者が異なる場合等）には、ソースコードを開示してもらえない可能性がある。変換をＪａｖａバイトコードから行うことによりこの問題は解決される。
（２）どのプロファイルで記述されたアプリケーションでも、ＢＲＥＷに変換するプログラムを提供するために、変換する際にもちいるライブラリをＮＴＴ  ＤｏＣｏＭｏ社用のＪａｖａ（ＤｏＪａ）用の場合には、ＤｏＪａ用のライブラリを準備しておき、またＳｕｎＭｉｃｒｏｓｙｓｔｅｍｓ社のＪａｖａ用（ＭＩＤＰ）の場合は、ＭＩＤＰ用のライブラリを準備しておき、変換される元のアプリケーションに応じたライブラリを使用することにより、各種のプロファイルに違いを吸収して変換することができる。
（３）アプリケーションに使用される画像データや音声データにも、各通信事業者で様々なものが利用されているが、これも、どの通信事業者のものでも自動的に検出、デコードして変換するプログラムを提供する。画像データとして、ＮＴＴ  ＤｏＣｏＭｏ社用のものは「ｇｉｆ」という圧縮形式を採用しており、ＫＤＤＩは、「ｐｎｇ」という圧縮形式を採用している。自動変換プログラムに、使用されるデータの形式、構造を解析する機能をもたせることにより、画像データや音声データをその圧縮形式や画像、音声データに応じた利用でできる機能を提供する。
【図面の簡単な説明】  図１は、変換プログラムの処理概要図である。
図２は、Ｊａｖａアプリケーションの例を示した説明図である。
図３は、Ｊａｖａ２ＢＲＥＷトランスレータにより作成されたＢＲＥＷアプリケーションの例を示した図である。
図４は、自動変換処理の概要説明図である。
図５は、前処理の概要説明図である。
図６は、前処理後のデータをＢＲＥＷソースコードへ変換するときの概要を示した図である。
図７は、変換されたＢＲＥＷソースコードをＢＲＥＷバイナリファイルにコンパイルする処理の概要説明図である。
図８は、変換プロセスの詳細な手順説明図である。
【発明を実施するための最良の形態】  以下、本発明の実施の形態例を説明する。
ここでは、自動変換用プログラムその他のコンピュータプログラム（ＯＳ、ＢＩＯＳ等）を格納したプログラム格納手段、ユーザ登録手段、Ｊａｖａライブラリ管理手段、Ｊａｖａコード受付手段、変換手段、返信手段を備えて成るプログラム変換サーバを、アプリケーション開発者が自由にアクセスできるコンピュータネットワークに配備することにより実現されるサービスシステムについて説明する。
プログラム変換サーバは、サーバ機能を有するコンピュータであり、プロセッサ（ＣＰＵ）とこのプロセッサに読み取られて実行されるコンピュータプログラムを格納したメモリとを備えている。自動変換用プログラムは、このコンピュータプログラムの一つとなるものである。
自動変換用プログラムは、例えば以下のような５種類の機能をプログラム変換サーバに与えるためのプログラムの集合を含んで構成される。
（ａ）ライブラリチェックツール
実際に自動変換を行う前に、Ｊａｖａのアプリケーションで使用されているライブラリが、すべて変換ツールで変換可能なものであるかどうかをチェックするためのものである。ライブラリが足りない場合は自動変換はできないので、該当ライブラリ整備してから自動変換を実行する必要がある。
このライブラリチェックツールは、まず、変換対象のＪａｖａアプリケーションのクラスファイル中のコンスタントプール、フィールド、メソッド（すべてＪａｖａ言語仕様による）から実際に使用されているライブラリを抽出する。その後、実装済のクラスライブラリ・リストと比較し、Ｊａｖａアプリケーションが用いているライブラリの集合が実装済のライブラリ・クラス・リストにすべて含まれているか、含まれていないならば何個含まれていないものがあるか、それが何であるかの情報を表示する。
（ｂ）例外処理
Ｊａｖａ言語の例外処理は、Ｊａｖａ実行時にメソッド呼び出し（特定の処理、関数など）及びフィールドアクセス（データの参照）時に、Ｊａｖａクラスファイル内に指定される特定の処理を行うためのものである。この例外処理の機能をＢＲＥＷの変換先プログラムにおいて実現する。
ＢＲＥＷの変換先プログラムにおいて実現するために、この実施形態では、メソッド呼び出し及びフィールドアクセスなど例外が発生する可能性がある処理（クラスファイル内に記述されている）の後に例外が発生したか調べる処理を挿入し、例外が発生した場合には特定の処理（クラスファイル内に記述されている）を行わせることにより、ＢＲＥＷにおいてもＪａｖａと同等の例外処理を実装している。
（ｃ）コンテナー
コンテナーは、Ｊａｖａ携帯アプリケーションにおける実行フレームワーク（枠組み）をＢＲＥＷ環境で再現するためのプログラムである。Ｊａｖａでは、初期化、開始、サスペンド（停止）、レジューム（再開）などに対するイベントが発生し、各イベントに対してアプリケーションプログラム及びライブラリプログラムが予め定められたＪａｖａ規格通りの動作をする。
そのため、ＢＲＥＷ環境で、ＢＲＥＷアプリケーションに対して同様のイベントを発生させ、各イベントに対するアプリケーションプログラム及びライブラリプログラムの動作を制御するプログラムが「コンテナー」である。アプリケーションプログラムは、アプリケーションごとに異なるため、各アプリケーションごとに対応するコンテナーを生成する必要がある。
（ｄ）環境オブジェクト
ＢＲＥＷアプリケーションで自動変換するためには、コンテナー、アプリケーションプログラム、ライブラリプログラムが用いるデータを含むオブジェクトが必要になる。このオブジェクトが「環境オブジェクト」である。
環境オブジェクトは、すべてのプログラムから共通に使えるデータを集めて記録することにより実現する。このようなデータには、例えば、上述したＧＣに関するデータ、Ｊａｖａ言語での静的データなどがある。静的データの場合、アプリケーションクラス及びライブラリクラスそれぞれに対応する静的データを記録する必要がある。アプリケーションプログラムはアプリケーションごとに異なるため、各アプリケーションごとに対応する環境オブジェクトを生成する。
（ｅ）ライブラリ変換
Ｊａｖａ言語環境で使われるＪａｖａ言語仕様による標準ライブラリと同じ働きをするＢＲＥＷプログラムを提供するものである。この標準ライブラリと同じ働きをするＢＲＥＷプログラムを各Ｊａｖａライブラリクラスごとに作成し、ライブラリを整備することにより実現する。ライブラリ変換の例としては、「ｊａｖａ．ｌａｎｇ．Ｓｔｒｉｎｇクラス」に対応するＢＲＥＷで実装された「ｊａｖａ＿ｌａｎｇ＿Ｓｔｒｉｎｇクラス」が挙げられる。ＢＲＥＷで実装されたライブラリクラスには、Ｊａｖａのライブラリクラスと同じフィールド（データ）及び働きをするメソッド（処理）を持つ。フィールド及びメソッドは、Ｊａｖａと同等のインターフェース（呼び出し規則）を持つ。
プログラム変換サーバのプロセッサは、自動変換用プログラムを読み取って実行することにより、以下の内部処理を行う。
１．Ｊａｖａアプリケーションファイル（Ｊａｖａバイトコートから構成されるエンドユーザに利用されるデータを、以後こう呼ぶ）の前処理
２．前処理後のデータのＢＲＥＷソースコードへの変換
３．ＢＲＥＷソースコードのＢＲＥＷバイナリコードへのコンパイル
以下それぞれについて、記述する。
１．Ｊａｖａアプリケーションファイルの前処理
開発依頼元から受け取るのは、Ｊａｖａアプリケーションファイルである。Ｊａｖａアプリケーションファイルは一つのファイルにまとめられているので、ここからアプリケーションクラスファイル、画像・音声等のデータ等のファイルに分解する。入力されるＪａｖａとしては、ＮＴＴ  ＤｏＣｏＭｏ用のＤｏＪａやＳｕｎｍｉｃｒｏｓｙｓｔｅｍｓ社の標準であるＭＩＤＰ等があるが、開発依頼元から提出されるＪａｖａバージョン情報は、分解されたデータに付加して、次の変換処理に渡され、プロファイルに応じた変換を行うための情報を与える。
前処理の概要を図５に示す。開発依頼元から、ＪａｖａアプリケーションファイルとＪａｖａバージョン情報が、入力される。Ｊａｖａアプリケーションファイルでは、データが圧縮されてＪａｒファイルとしてひとつにまとめられているので、Ｊａｒコマンドを用いてこれの解凍処理を行い、アプリケーションファイル、画像データ、音声データ等のファイルに分解する。Ｊａｒファイルとは  Ｊａｖａアプリケーションの配布方式として一般的に広く普及している標準方式であり、Ｊａｖａ  言語のツールとして一般的に広く普及しているＪａｒ  コマンドを使うことによって解凍展開することができる。
２．前処理後のデータのＢＲＥＷソースコードへの変換
前処理後のデータを、ＢＲＥＷソースコードに変換する。具体的には、ＪａｖａアプリケーションファイルをＣ＋＋のヘッダーファイルとプログラムファイルに変換する。変換先のＢＲＥＷにもＢＲＥＷ１．０、ＢＲＥＷ２．０、ＢＲＥＷ２．１、ＢＲＥＷ３．０等のいくつかのバージョンが存在するが、変換プロセスでは、開発依頼元から指定されたバージョンにＢＲＥＷライブラリＤＢを参照して、変換する方法をここでは実施例として記述している。
変換の詳細を記述する。Ｊａｖａソースファイル、Ｊａｖａクラスファイルにはクラスやフィールド、メソッドなどプログラム実行の方式を記述した情報が含まれている。これらのクラスやフィールド、メソッドをＣ＋＋  言語の文法に添うよう変換する。Ｊａｖａのフィールドは、同じ働き、動きをするＣ＋＋言語のフィールドへ、Ｊａｖａのメソッドは同じ働き、動きをするＣ＋＋言語のメソッドへそれぞれ変換する。これにより  Ｊａｖａの各クラスはＣ＋＋のクラスへ変換され、変換されたＣ＋＋のクラスは  Ｃ＋＋の実行環境（ＢＲＥＷ環境を含む）の上で動作し、これは変換元となったＪａｖａクラスのＪａｖａ実行環境の上における動作と同じである。
Ｊａｖａアプリケーションは、クラス（一つまたは複数）がＪａｖａ実行環境上で動作するため、Ｃ＋＋の実行環境上で変換されたＣ＋＋のクラス（一つまたは複数）は同じ動作をする。以上からＣ＋＋言語に変換されたアプリケーションは、ＢＲＥＷ環境を含むＣ＋＋の実行環境上で変換元となるＪａｖａアプリケーションと同一の動作をする。
変換する際に、前処理により生成されたアプリケーションクラスファイルは、Ｃ＋＋言語のアプリケーションヘッダーファイルとアプリケーションソースクラスファイルとして変換される。また、この変換以外に、このアプリケーションで使用されるＪａｖａクラスライブラリも、ＢＲＥＷのライブラリを参照して変換後のデータに追加される。
さらに、Ｊａｖａ言語にあって、Ｃ＋＋言語には無い機能（例えばＧＣ）等も、この変換後のデータに追加される。さらに、入力されるＪａｖａで使用される圧縮画像データのフォーマットが、ＢＲＥＷでサポートされている画像データと異なる場合、例えば、入力ＪａｖａがＤｏＣｏＭｏのＪａｖａで画像フォーマットがＧＩＦ形式で、ＢＲＥＷで使用される画像フォーマットがＧＩＦ形式でない場合は、ＧＩＦのデコーダ機能も変換後のデータに追加される。サウンドデータについても同様の処理が行われる。
前処理後のデータのＢＲＥＷソースコードへの変換の概要を図６に示す。
前処理されたデータのＪａｖａアプリケーションクラスファイルが、開発依頼元から指定されたＢＲＥＷのバージョンに応じて、Ｃ＋＋のアプリケーションヘッダーファイルとアプリケーションソースクラスファイルに変換される。また、Ｊａｖａアプリケーションファイルで使用されているＪａｖａクラスライブラリもソースファイルとして、Ｃ＋＋のアプリケーションファイルに加えられる。
その他のファイルとして、ＧＣソースファイルや画像デコーダーファイル、サウンドデコーダーファイル等が必要に応じて、Ｃ＋＋のソースファイルに追加される。
図６における変換プロセスは、例えば図８に示す手順で行われる。すなわち、プログラム変換サーバのプロセッサは、Ｊａｖａコードの入手を契機に、ライブラリチェックツールを起動させる（ステップＳ１０１，Ｓ１０２）。ライブラリが変換可能でなければ、上述したように、変換可能になるまでライブラリの追加整備を行う（ステップＳ１０３：Ｎ、Ｓ１０４）。
ライブラリが変換可能になった場合、プログラム変換サーバのプロセッサは、自動変換用プログラムを実行し、ライブラリ変換、ＧＣ実装、例外処理実装、コンテナー、環境オブジェクトを行う（ステップＳ１０３：Ｙ，Ｓ１０５）。これにより、ＢＲＥＷソースコードとデータを得る（ステップＳ１０６）。
なお、この実施形態では、変換する際に開発依頼元から指定されたＢＲＥＷのバージョンに応じたＢＲＥＷライブラリＤＢを用意しておき、それを使用して変換を行う方法を記述したが、変換するライブラリを一つにして、実行時にバージョンを判別して必要な処理を行うという方法も本発明によれば実施が可能である。
３．ＢＲＥＷソースファイルのＢＲＥＷバイナリコードへのコンパイル
生成されたＢＲＥＷソースファイルを、携帯電話で使用されているＣＰＵ用のコンパイラを用いて、ＢＲＥＷバイナリコードへのコンパイルを行う。生成されたアプリケーションのヘッダーファイル、ソースファイル、クラスライブラリのヘッダーファイル、ソースファイル、その他、ＧＣ、画像デコーダー、サウンドデコーダー用のヘッダーファイル、ソースファイルは、ＢＲＥＷ環境で実行することができるソースコードとなっているため、ＢＲＥＷアプリケーションを生成することができるコンパイラ（ＡＲＭ社コンパイラ、ｇｃｃなど）を用いてコンパイルすることにより、ＢＲＥＷ環境用バイナリが生成される。
変換されたＢＲＥＷソースコードをＢＲＥＷバイナリファイルにコンパイルする処理の概要を図７に示す。コンパイルされた後のデータは、自動変換サービスシステムから、ただちにアプリケーション開発会社に送付される。
上記１−３のステップの処理概要を示したのが図１である。
また、変換プログラムを使用して実際に変換されたプログラムを携帯電話で走らせた例を図２および図３に示している。図２が変換前、図３が変換後の例を示している。
また、Ｊａｖａ２ＢＲＥＷトランスレータにより作成されたＢＲＥＷアプリケーションの例を図７に示している。同じアプリケーションがＪａｖａ端末とＢＲＥＷ端末で、同じように動作しているのが検証されている。なお、このアプリケーションはゲームのプログラムであり、それぞれゲームのある瞬間を捕らえたものなので、画像は異なっているが、Ｊａｖａアプリケーションの出力と変換した結果のプログラムの出力画面である。
＜プログラム変換サービス＞
携帯電話端末用の自動変換プログラムをもちいて、変換サービスを提供する際に必ず問題になるのが、変換プログラムにより出来上がったアプリケーションを、検証、デバッグ、調整する作業をどのように行うかという問題である。
本発明では、この検証、デバッグ、調整の作業をＪａｖａソースコードを用いて改良を行い、その結果を再度変換して、検証、デバッグ、調整を行う方法を提供している。アプリケーション開発会社は、Ｊａｖａでアプリケーションを開発し、それを自動変換サービスを利用することにより、瞬時に変換結果を受け取ることができ、ただちにそれを検証、調整、デバッグすることができる。
また、検証、調整、デバッグした後にＪａｖａソースコードを改良して、その結果のＪａｖａアプリケーションファイルを変換サービスにだすことにより、何度でも変換サービスをうけられ、細かなアプリケーションの改良が行える。
この仕組みにより、以下のような課題を解決することができる。
・すでにＪａｖａ言語を使用したアプリケーションが開発済みであって、同じアプリケーションをＢＲＥＷ用に開発する際に、再度別の開発工程が必要となり、開発時間、開発コストが発生する。
・すでにＪａｖａ言語を使用したアプリケーションが開発済みであって、同じアプリケーションをＢＲＥＷ用に開発する際に、Ｊａｖａ言語を開発できるプログラマー以外にＢＲＥＷを開発できるプログラマーが必要となる。
・あるアプリケーションをＪａｖａ用とＢＲＥＷ用と同時に開発する際に、開発資源（人的資源、開発時間）が完全に２倍必要となる。
図４を参照して、プログラム変換サービスを行うシステムの運用例を説明する。
図４は、自動変換サービスシステムの機能ブロック図である。
アプリケーション開発会社は、自動変換サービスを利用するに際して、自動変換サービス提供会社に対してＷＥＢを通じて契約を締結する。
図では、自動変換サービスシステムのＷＥＢサーバに申し込み用のページが用意されており、そこに記入することにより自動変換サービスの利用を申し込む。
利用を申し込んだアプリケーション開発会社は、変換サービスを受けようとするＪａｖａアプリケーションファイルをネットを通して自動変換サービス提供会社に送付する。その際に、Ｊａｖａのバージョン情報と変換先のＢＲＥＷのバージョン情報を付加して、サービスを申し込む。また、アプリケーション開発会社はＱｕａｌｃｏｍｍ社にそのアプリケーションのクラスＩＤを申請し、同時にその情報もあわせて自動変換サービス提供会社に通知する。自動変換サービス提供会社では、アプリケーション開発会社とＪａｖａアプリケーションファイル情報、Ｊａｖａのバージョン情報、変換先のＢＲＥＷのバージョン情報とアプリケーションのクラスＩＤを認証サーバに登録する。
その後、変換サーバに、Ｊａｖａアプリケーションファイル情報、Ｊａｖａのバージョン情報、変換先のＢＲＥＷのバージョン情報とアプリケーションのクラスＩＤが渡され、変換処理が実行される。その結果のＢＲＥＷバイナリーファイルは、変換処理が終了した後にアプリケーション開発会社に送信される。
アプリケーション開発会社では、送られてきたＢＲＥＷバイナリコードの検証、調整、デバッグを行う。この工程で、問題があり、改良が必要な場合には、Ｊａｖａソースコードを用いて改良を行い、その結果のＪａｖａアプリケーションファイルを自動変換サービスシステムに再度送って、変換サービスを受ける。この方法を用いることにより、プログラムの調整に必要な開発サイクルを極めて短期間に繰り返し実行することが可能になる。
その際に、アプリケーション開発会社が以前登録したのと同じアプリケーションファイル情報で、別のアプリケーションプログラムを変換しようとしても、返される結果のＢＲＥＷバイナリーファイルにはユニークなクラスＩＤがつけて返されるので、別のプログラムとしてそれをサービスに用いることができず、変換サービスが悪用されるのを防ぐ効果がある。
【産業上の利用可能性】  自動変換用プログラムおよびこれを実行するサーバによるプログラム自動変換サービスを実現することにより、すでにＪａｖａアプリケーションが存在する場合には、極めて短時間のうちにＢＲＥＷバイナリーファイルを開発、サービスに提供することが、可能となる。また、何度でも変換できるシステムを利用することにより、全体としてのプログラムの開発期間（本来開発、調整、デバッグ、検証のサイクルで回るもの）を極めて短期間に完成することが可能となり、プログラムの生産性の向上、プログラム資産の有効利用が図れる。
【図１】
2006009287.tif 000002
【図２】
2006009287.tif 000003
【図３】
2006009287.tif 000004
【図４】
2006009287.tif 000005
【図５】
2006009287.tif 000006
【図６】
2006009287.tif 000007
【図７】
2006009287.tif 000008
【図８】
2006009287.tif 000009
【国際調査報告】
2006009287.tif 000010
2006009287.tif 000011
2006009287.tif 000012
2006009287.tif 000013