JPWO2006009287A1 - 自動変換用プログラムおよびプログラム変換サーバ - Google Patents
自動変換用プログラムおよびプログラム変換サーバ Download PDFInfo
- Publication number
- JPWO2006009287A1 JPWO2006009287A1 JP2006527809A JP2006527809A JPWO2006009287A1 JP WO2006009287 A1 JPWO2006009287 A1 JP WO2006009287A1 JP 2006527809 A JP2006527809 A JP 2006527809A JP 2006527809 A JP2006527809 A JP 2006527809A JP WO2006009287 A1 JPWO2006009287 A1 JP WO2006009287A1
- Authority
- JP
- Japan
- Prior art keywords
- java
- code
- application
- program
- brew
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/52—Binary to binary
Abstract
JavaアプリケーションをBREW用に変換する。 Javaソースコードを前記バイナリコードに変換する第1の手段と、Javaバイトコードを前記バイナリコードに直接変換する第2の手段とのいずれかを選択的にコンピュータに構築する自動変換用プログラムを、開発者の操作端末が任意にアクセスすることができるコンピュータネットワークに備えられたプログラム変換サーバに搭載しておき、Java(ソース/バイナリ)コードから成るアプリケーションが開発者の操作端末がプログラム変換サーバに入力されたときに、それをBREWアプリケーションに自動変換して上記操作端末に返信する。
Description
本発明は、例えば携帯電話用のアプリケーションを開発する際に、使用される言語、開発環境の自動変換手法に関する。
近年、携帯電話において、ユーザがアプリケーションをダウンロードして使うというサービスが、携帯端末の性能アップにより可能となり、実用に供されている。その際にアプリケーションを開発するために使用されるソフトウェア言語としては、ハードウェアの依存性がない携帯電話用のJava(SunMicrosystems社が開発したプログラミング言語)が主に使用されている。
しかしながら、Javaは、JavaVM(Java仮想機械)という携帯電話にとっては重いソフトウェアを実装しなければならない。そのため、高性能なハードウェアを必要とする。また、携帯電話において通信用とアプリケーション用に別々のCPU(プロセッサ)を使うといった複雑な構成も必要となる。
一方、このような状況を鑑み、Javaではなく、従来よりソフトウェア開発に主流として用いられてきた「C」,「C++」といった言語を使用し、これらの言語を使った携帯電話用のライブラリを提供するという手法も提案されている。この手法により、簡単な構成のハードウェアを使用して、Javaよりも高性能なソフトウェアを提供することができる。例えば、Qualcomm社のBREW(Binary Runtime Environment for Wireless:携帯電話でプログラムを開発・利用できる環境)がそれである。このようなアプリケーションは、BREWアプリケーションと呼ばれている。
上記の経緯により、携帯電話用のアプリケーションとしては、携帯電話用Javaを使ったものが、数多く開発されており、世の中に多数存在している。BREWアプリケーションは、いわゆる後発のアプリケーションであるが故に、開発されたアプリケーションの数量としては、Javaのものに比べて遙かに少ない。ソフトウェア開発は人手による作業なので、早急にそれを完成することは難しい。そのため、メリットが多いBREWアプリケーションでのソフトウェア開発を容易にする手段が求められている。
上記問題を解決するために、JavaアプリケーションをBREWアプリケーションに開発しなおす際に、使われるライブラリを整備する方法が提案されている。
しかし、この方法は、あくまでも基本的なライブラリを整備するだけであり、どのライブラリを使うかは、人手で選択ないし実行することになり、開発期間の短縮には、一定の限界がある。
また、JavaにあってBREWにない機能、例えばガベージコレクション(使用されていないメモリを開放する手法:「GC」と略称する)等については、全く別のものを追加で作る必要がある。これは、人手によらばければならない。
携帯電話用のアプリケーションを開発する際、プログラムの開発が人手作業であり、この作業を短縮することは極めて難しいことは上述したとおりである。
携帯電話のアプリケーションに対する需要は、携帯電話の画面解像度の高精細化、端末CPUの処理性能の向上、通信料金の定額化(パケット定額等)等を背景として、ますます高まっている。しかしながら、Javaですでに開発されたアプリケーションであっても、それをBREW用のアプリケーションとして開発する際には、人手をかけて開発する必要があるし、また、Java自体にも、NTT DoCoMo社用のJavaや米国SunMicrosystems社が規定したJava等、様々な言語の方言が存在し、それぞれのJavaで開発されたアプリケーションには互換性はない。
本発明は、上記の背景に鑑み、以下の課題を解決するものである。
1.すでにJava言語を使用したアプリケーションが開発済みであって、同じアプリケーションをBREW用に開発する際に、再度別の開発工程が必要となり、開発時間、開発コストが発生する。
2.すでにJava言語を使用したアプリケーションが開発済みであって、同じアプリケーションをBREW用に開発する際に、Java言語を開発できるプログラマー以外にBREWを開発できるプログラマーが必要となる。
3.あるアプリケーションをJava用とBREW用と同時に開発する際に、開発資源(人的資源、開発時間)が完全に2倍必要となる。
しかしながら、Javaは、JavaVM(Java仮想機械)という携帯電話にとっては重いソフトウェアを実装しなければならない。そのため、高性能なハードウェアを必要とする。また、携帯電話において通信用とアプリケーション用に別々のCPU(プロセッサ)を使うといった複雑な構成も必要となる。
一方、このような状況を鑑み、Javaではなく、従来よりソフトウェア開発に主流として用いられてきた「C」,「C++」といった言語を使用し、これらの言語を使った携帯電話用のライブラリを提供するという手法も提案されている。この手法により、簡単な構成のハードウェアを使用して、Javaよりも高性能なソフトウェアを提供することができる。例えば、Qualcomm社のBREW(Binary Runtime Environment for Wireless:携帯電話でプログラムを開発・利用できる環境)がそれである。このようなアプリケーションは、BREWアプリケーションと呼ばれている。
上記の経緯により、携帯電話用のアプリケーションとしては、携帯電話用Javaを使ったものが、数多く開発されており、世の中に多数存在している。BREWアプリケーションは、いわゆる後発のアプリケーションであるが故に、開発されたアプリケーションの数量としては、Javaのものに比べて遙かに少ない。ソフトウェア開発は人手による作業なので、早急にそれを完成することは難しい。そのため、メリットが多いBREWアプリケーションでのソフトウェア開発を容易にする手段が求められている。
上記問題を解決するために、JavaアプリケーションをBREWアプリケーションに開発しなおす際に、使われるライブラリを整備する方法が提案されている。
しかし、この方法は、あくまでも基本的なライブラリを整備するだけであり、どのライブラリを使うかは、人手で選択ないし実行することになり、開発期間の短縮には、一定の限界がある。
また、JavaにあってBREWにない機能、例えばガベージコレクション(使用されていないメモリを開放する手法:「GC」と略称する)等については、全く別のものを追加で作る必要がある。これは、人手によらばければならない。
携帯電話用のアプリケーションを開発する際、プログラムの開発が人手作業であり、この作業を短縮することは極めて難しいことは上述したとおりである。
携帯電話のアプリケーションに対する需要は、携帯電話の画面解像度の高精細化、端末CPUの処理性能の向上、通信料金の定額化(パケット定額等)等を背景として、ますます高まっている。しかしながら、Javaですでに開発されたアプリケーションであっても、それをBREW用のアプリケーションとして開発する際には、人手をかけて開発する必要があるし、また、Java自体にも、NTT DoCoMo社用のJavaや米国SunMicrosystems社が規定したJava等、様々な言語の方言が存在し、それぞれのJavaで開発されたアプリケーションには互換性はない。
本発明は、上記の背景に鑑み、以下の課題を解決するものである。
1.すでにJava言語を使用したアプリケーションが開発済みであって、同じアプリケーションをBREW用に開発する際に、再度別の開発工程が必要となり、開発時間、開発コストが発生する。
2.すでにJava言語を使用したアプリケーションが開発済みであって、同じアプリケーションをBREW用に開発する際に、Java言語を開発できるプログラマー以外にBREWを開発できるプログラマーが必要となる。
3.あるアプリケーションをJava用とBREW用と同時に開発する際に、開発資源(人的資源、開発時間)が完全に2倍必要となる。
上記課題を解決するため、本発明は、自動変換用プログラムとプログラム変換サーバを提供する。
本発明が提供する自動変換用プログラムは、Javaコードで記述されたJavaアプリケーションをBREWのバイナリコードで記述された実行形式のBREWアプリケーションに人手を介することなく自動変換するためのプログラムであって、Javaソースコードを前記バイナリコードに変換する第1の手段と、Javaバイトコードを前記バイナリコードに直接変換する第2の手段とのいずれかを選択的にコンピュータに構築するための自動変換用プログラムである。
Javaバイトコードから構成される、エンドユーザに利用されるアプリケーションをJavaアプリケーションファイルという。
変換の処理を簡略化する観点からは、自動変換用プログラムを、それぞれプロファイルが異なる複数種類のJavaアプリケーションの各々から前記BREWアプリケーションに変換するための手順を定めたライブラリを個々のJavaプログラムを形成するJavaコードの種類を識別するための識別コードと対応付けて所定のメモリに格納するライブラリ管理手段と、変換対象となるJavaアプリケーションのJavaコードの種類が特定されたときに前記ライブラリ管理手段を通じて当該Javaコードに対応するライブラリを前記メモリから読み出し、読み出したライブラリに基づいて前記第1の手段又は前記第2の手段のいずれかに前記特定されたJavaコードで記述されたJavaアプリケーションからBREWアプリケーションへの自動変換を促す第3の手段と、をさらに前記コンピュータに構築させるものとする。
好ましくは、前記Javaアプリケーションで使用されるコンテンツデータ、例えば画像データ、音声データ、又はその組み合わせのデータを読み取って、そのコンテンツデータのデータ構造が何かを特定するデータ構造解析手段と、このデータ解析手段により特定したデータ構造をBREWアプリケーションで使用するデータ構造に変換するデータ構造変換手段と、をさらに前記コンピュータに構築させるようにする。
本発明のプログラム変換サーバは、Javaソースコード又はJavaバイトコードで記述されたJavaアプリケーションをBREWのバイナリコードで記述された実行形式のBREWアプリケーションに人手を介することなく変換する自動変換用プログラムを格納したプログラム格納手段と、それぞれプロファイルが異なる複数種類のJavaアプリケーションの各々から前記BREWアプリケーションに変換するための手順を定めたライブラリを個々のJavaプログラムを形成するJavaコードの種類を識別するための識別コードと対応付けて所定のメモリに格納するライブラリ管理手段と、変換対象となるJavaコードを所定のコンピュータネットワークを通じて電子データの形式で受け付けるJavaコード受付手段と、このJavaコード受付手段で受け付けたJavaコードの種類が特定されたときに前記ライブラリ管理手段を通じて当該Javaコードに対応するライブラリを前記メモリから読み出し、さらに前記プログラム格納手段から前記自動変換用プログラムを読み出し、読み出したライブラリを用いて前記自動変換用プログラムを実行させることにより前記受け付けたJavaコードからバイナリコードへの変換を行う変換手段と、変換されたバイナリコードを前記Javaコードの送出元へ返信する返信手段と、を備えて成るプログラム変換サーバである。
ある実施の態様では、前記Javaコードから前記バイナリコードへの変換を望むユーザを登録するユーザ登録手段を備えており、ユーザ登録手段に登録されたユーザによる1回の課金単位による前記Javaコードの受付を繰り返し許容するようにプログラム変換サーバを構成する。
本発明のプログラム変換サーバによれば、例えばアプリケーション開発者は、Javaバイトコードを送るだけで、自動的に変換されたBREWのバイナリコード(実行コード)を受け取ることができ、自動変換サービスの提供方法が自動化され、開発者にとって極めて短期間に開発を終了することが可能になる。
開発者は、一度エントリーすれば、つまり一度ユーザとしてプログラム変換サーバに登録すれば、何度でも変換サービスが受けることができる。これにより、プログラム改良のために、細かな改良を開発者が自分の責任で実行することが可能になる。アプリケーションプログラムの開発の際には、携帯端末の機能制限(アプリケーションサイズや使用するメモリサイズの制限等)や細かな改良を行うために、プログラムを何度も細かく変更する作業が必要になる。何度でも変換サービスが受けられるようにすることにより、開発者はこの機能を利用して、こまかなプログラムの調整を極めて短時間に行うことが可能になる。また、変換されたBREWバイナリコードを実際に携帯端末にダウンロードしてテストすることも並行して可能となる。上記サービスを提供するにあたって、何度も変換サービスを受けられる場合に、サービスの課金単位としては、ひとつのプログラムの変換につき単位料金を想定している。しかし、ひとつのエントリーで何度でも変換できるサービスにすると、複数のプログラムをひとつのエントリーで変換してしまう恐れがある。この問題を解決するためにBREWのコードにうめこまれるサービスコードがひとつであることを利用した変換サービスを提供することができる。
自動変換用プログラムをコンピュータに実行することにより、すでに多数存在するJavaアプリケーションを極めて短期間に、また人手が介在しないことから低コストでBREWアプリケーションに変換することができる。自動変換する際に、Javaのソースコートから変換することもできるし、Javaバイトコードと呼ばれる機械語から直接変換することもできるので、極めて安易にプログラム変換ができるようになる。
JavaバイトコードはユーザがJavaアプリケーションを利用する際に使っている形式である。Javaバイトコードから直接変換する場合には、以下のようなメリットが存在する。
(1)開発会社がアプリケーションを開発する際に、Javaのソースコードを提出すると、機密保持契約が必要になる、またソースコードの版権を別の会社が所有している場合(開発者とコンテンツ提供者が異なる場合等)には、ソースコードを開示してもらえない可能性がある。変換をJavaバイトコードから行うことによりこの問題は解決される。
(2)どのプロファイルで記述されたアプリケーションでも、BREWに変換するプログラムを提供するために、変換する際にもちいるライブラリをNTT DoCoMo社用のJava(DoJa)用の場合には、DoJa用のライブラリを準備しておき、またSunMicrosystems社のJava用(MIDP)の場合は、MIDP用のライブラリを準備しておき、変換される元のアプリケーションに応じたライブラリを使用することにより、各種のプロファイルに違いを吸収して変換することができる。
(3)アプリケーションに使用される画像データや音声データにも、各通信事業者で様々なものが利用されているが、これも、どの通信事業者のものでも自動的に検出、デコードして変換するプログラムを提供する。画像データとして、NTT DoCoMo社用のものは「gif」という圧縮形式を採用しており、KDDIは、「png」という圧縮形式を採用している。自動変換プログラムに、使用されるデータの形式、構造を解析する機能をもたせることにより、画像データや音声データをその圧縮形式や画像、音声データに応じた利用でできる機能を提供する。
本発明が提供する自動変換用プログラムは、Javaコードで記述されたJavaアプリケーションをBREWのバイナリコードで記述された実行形式のBREWアプリケーションに人手を介することなく自動変換するためのプログラムであって、Javaソースコードを前記バイナリコードに変換する第1の手段と、Javaバイトコードを前記バイナリコードに直接変換する第2の手段とのいずれかを選択的にコンピュータに構築するための自動変換用プログラムである。
Javaバイトコードから構成される、エンドユーザに利用されるアプリケーションをJavaアプリケーションファイルという。
変換の処理を簡略化する観点からは、自動変換用プログラムを、それぞれプロファイルが異なる複数種類のJavaアプリケーションの各々から前記BREWアプリケーションに変換するための手順を定めたライブラリを個々のJavaプログラムを形成するJavaコードの種類を識別するための識別コードと対応付けて所定のメモリに格納するライブラリ管理手段と、変換対象となるJavaアプリケーションのJavaコードの種類が特定されたときに前記ライブラリ管理手段を通じて当該Javaコードに対応するライブラリを前記メモリから読み出し、読み出したライブラリに基づいて前記第1の手段又は前記第2の手段のいずれかに前記特定されたJavaコードで記述されたJavaアプリケーションからBREWアプリケーションへの自動変換を促す第3の手段と、をさらに前記コンピュータに構築させるものとする。
好ましくは、前記Javaアプリケーションで使用されるコンテンツデータ、例えば画像データ、音声データ、又はその組み合わせのデータを読み取って、そのコンテンツデータのデータ構造が何かを特定するデータ構造解析手段と、このデータ解析手段により特定したデータ構造をBREWアプリケーションで使用するデータ構造に変換するデータ構造変換手段と、をさらに前記コンピュータに構築させるようにする。
本発明のプログラム変換サーバは、Javaソースコード又はJavaバイトコードで記述されたJavaアプリケーションをBREWのバイナリコードで記述された実行形式のBREWアプリケーションに人手を介することなく変換する自動変換用プログラムを格納したプログラム格納手段と、それぞれプロファイルが異なる複数種類のJavaアプリケーションの各々から前記BREWアプリケーションに変換するための手順を定めたライブラリを個々のJavaプログラムを形成するJavaコードの種類を識別するための識別コードと対応付けて所定のメモリに格納するライブラリ管理手段と、変換対象となるJavaコードを所定のコンピュータネットワークを通じて電子データの形式で受け付けるJavaコード受付手段と、このJavaコード受付手段で受け付けたJavaコードの種類が特定されたときに前記ライブラリ管理手段を通じて当該Javaコードに対応するライブラリを前記メモリから読み出し、さらに前記プログラム格納手段から前記自動変換用プログラムを読み出し、読み出したライブラリを用いて前記自動変換用プログラムを実行させることにより前記受け付けたJavaコードからバイナリコードへの変換を行う変換手段と、変換されたバイナリコードを前記Javaコードの送出元へ返信する返信手段と、を備えて成るプログラム変換サーバである。
ある実施の態様では、前記Javaコードから前記バイナリコードへの変換を望むユーザを登録するユーザ登録手段を備えており、ユーザ登録手段に登録されたユーザによる1回の課金単位による前記Javaコードの受付を繰り返し許容するようにプログラム変換サーバを構成する。
本発明のプログラム変換サーバによれば、例えばアプリケーション開発者は、Javaバイトコードを送るだけで、自動的に変換されたBREWのバイナリコード(実行コード)を受け取ることができ、自動変換サービスの提供方法が自動化され、開発者にとって極めて短期間に開発を終了することが可能になる。
開発者は、一度エントリーすれば、つまり一度ユーザとしてプログラム変換サーバに登録すれば、何度でも変換サービスが受けることができる。これにより、プログラム改良のために、細かな改良を開発者が自分の責任で実行することが可能になる。アプリケーションプログラムの開発の際には、携帯端末の機能制限(アプリケーションサイズや使用するメモリサイズの制限等)や細かな改良を行うために、プログラムを何度も細かく変更する作業が必要になる。何度でも変換サービスが受けられるようにすることにより、開発者はこの機能を利用して、こまかなプログラムの調整を極めて短時間に行うことが可能になる。また、変換されたBREWバイナリコードを実際に携帯端末にダウンロードしてテストすることも並行して可能となる。上記サービスを提供するにあたって、何度も変換サービスを受けられる場合に、サービスの課金単位としては、ひとつのプログラムの変換につき単位料金を想定している。しかし、ひとつのエントリーで何度でも変換できるサービスにすると、複数のプログラムをひとつのエントリーで変換してしまう恐れがある。この問題を解決するためにBREWのコードにうめこまれるサービスコードがひとつであることを利用した変換サービスを提供することができる。
自動変換用プログラムをコンピュータに実行することにより、すでに多数存在するJavaアプリケーションを極めて短期間に、また人手が介在しないことから低コストでBREWアプリケーションに変換することができる。自動変換する際に、Javaのソースコートから変換することもできるし、Javaバイトコードと呼ばれる機械語から直接変換することもできるので、極めて安易にプログラム変換ができるようになる。
JavaバイトコードはユーザがJavaアプリケーションを利用する際に使っている形式である。Javaバイトコードから直接変換する場合には、以下のようなメリットが存在する。
(1)開発会社がアプリケーションを開発する際に、Javaのソースコードを提出すると、機密保持契約が必要になる、またソースコードの版権を別の会社が所有している場合(開発者とコンテンツ提供者が異なる場合等)には、ソースコードを開示してもらえない可能性がある。変換をJavaバイトコードから行うことによりこの問題は解決される。
(2)どのプロファイルで記述されたアプリケーションでも、BREWに変換するプログラムを提供するために、変換する際にもちいるライブラリをNTT DoCoMo社用のJava(DoJa)用の場合には、DoJa用のライブラリを準備しておき、またSunMicrosystems社のJava用(MIDP)の場合は、MIDP用のライブラリを準備しておき、変換される元のアプリケーションに応じたライブラリを使用することにより、各種のプロファイルに違いを吸収して変換することができる。
(3)アプリケーションに使用される画像データや音声データにも、各通信事業者で様々なものが利用されているが、これも、どの通信事業者のものでも自動的に検出、デコードして変換するプログラムを提供する。画像データとして、NTT DoCoMo社用のものは「gif」という圧縮形式を採用しており、KDDIは、「png」という圧縮形式を採用している。自動変換プログラムに、使用されるデータの形式、構造を解析する機能をもたせることにより、画像データや音声データをその圧縮形式や画像、音声データに応じた利用でできる機能を提供する。
図1は、変換プログラムの処理概要図である。
図2は、Javaアプリケーションの例を示した説明図である。
図3は、Java2BREWトランスレータにより作成されたBREWアプリケーションの例を示した図である。
図4は、自動変換処理の概要説明図である。
図5は、前処理の概要説明図である。
図6は、前処理後のデータをBREWソースコードへ変換するときの概要を示した図である。
図7は、変換されたBREWソースコードをBREWバイナリファイルにコンパイルする処理の概要説明図である。
図8は、変換プロセスの詳細な手順説明図である。
図2は、Javaアプリケーションの例を示した説明図である。
図3は、Java2BREWトランスレータにより作成されたBREWアプリケーションの例を示した図である。
図4は、自動変換処理の概要説明図である。
図5は、前処理の概要説明図である。
図6は、前処理後のデータをBREWソースコードへ変換するときの概要を示した図である。
図7は、変換されたBREWソースコードをBREWバイナリファイルにコンパイルする処理の概要説明図である。
図8は、変換プロセスの詳細な手順説明図である。
以下、本発明の実施の形態例を説明する。
ここでは、自動変換用プログラムその他のコンピュータプログラム(OS、BIOS等)を格納したプログラム格納手段、ユーザ登録手段、Javaライブラリ管理手段、Javaコード受付手段、変換手段、返信手段を備えて成るプログラム変換サーバを、アプリケーション開発者が自由にアクセスできるコンピュータネットワークに配備することにより実現されるサービスシステムについて説明する。
プログラム変換サーバは、サーバ機能を有するコンピュータであり、プロセッサ(CPU)とこのプロセッサに読み取られて実行されるコンピュータプログラムを格納したメモリとを備えている。自動変換用プログラムは、このコンピュータプログラムの一つとなるものである。
自動変換用プログラムは、例えば以下のような5種類の機能をプログラム変換サーバに与えるためのプログラムの集合を含んで構成される。
(a)ライブラリチェックツール
実際に自動変換を行う前に、Javaのアプリケーションで使用されているライブラリが、すべて変換ツールで変換可能なものであるかどうかをチェックするためのものである。ライブラリが足りない場合は自動変換はできないので、該当ライブラリ整備してから自動変換を実行する必要がある。
このライブラリチェックツールは、まず、変換対象のJavaアプリケーションのクラスファイル中のコンスタントプール、フィールド、メソッド(すべてJava言語仕様による)から実際に使用されているライブラリを抽出する。その後、実装済のクラスライブラリ・リストと比較し、Javaアプリケーションが用いているライブラリの集合が実装済のライブラリ・クラス・リストにすべて含まれているか、含まれていないならば何個含まれていないものがあるか、それが何であるかの情報を表示する。
(b)例外処理
Java言語の例外処理は、Java実行時にメソッド呼び出し(特定の処理、関数など)及びフィールドアクセス(データの参照)時に、Javaクラスファイル内に指定される特定の処理を行うためのものである。この例外処理の機能をBREWの変換先プログラムにおいて実現する。
BREWの変換先プログラムにおいて実現するために、この実施形態では、メソッド呼び出し及びフィールドアクセスなど例外が発生する可能性がある処理(クラスファイル内に記述されている)の後に例外が発生したか調べる処理を挿入し、例外が発生した場合には特定の処理(クラスファイル内に記述されている)を行わせることにより、BREWにおいてもJavaと同等の例外処理を実装している。
(c)コンテナー
コンテナーは、Java携帯アプリケーションにおける実行フレームワーク(枠組み)をBREW環境で再現するためのプログラムである。Javaでは、初期化、開始、サスペンド(停止)、レジューム(再開)などに対するイベントが発生し、各イベントに対してアプリケーションプログラム及びライブラリプログラムが予め定められたJava規格通りの動作をする。
そのため、BREW環境で、BREWアプリケーションに対して同様のイベントを発生させ、各イベントに対するアプリケーションプログラム及びライブラリプログラムの動作を制御するプログラムが「コンテナー」である。アプリケーションプログラムは、アプリケーションごとに異なるため、各アプリケーションごとに対応するコンテナーを生成する必要がある。
(d)環境オブジェクト
BREWアプリケーションで自動変換するためには、コンテナー、アプリケーションプログラム、ライブラリプログラムが用いるデータを含むオブジェクトが必要になる。このオブジェクトが「環境オブジェクト」である。
環境オブジェクトは、すべてのプログラムから共通に使えるデータを集めて記録することにより実現する。このようなデータには、例えば、上述したGCに関するデータ、Java言語での静的データなどがある。静的データの場合、アプリケーションクラス及びライブラリクラスそれぞれに対応する静的データを記録する必要がある。アプリケーションプログラムはアプリケーションごとに異なるため、各アプリケーションごとに対応する環境オブジェクトを生成する。
(e)ライブラリ変換
Java言語環境で使われるJava言語仕様による標準ライブラリと同じ働きをするBREWプログラムを提供するものである。この標準ライブラリと同じ働きをするBREWプログラムを各Javaライブラリクラスごとに作成し、ライブラリを整備することにより実現する。ライブラリ変換の例としては、「java.lang.Stringクラス」に対応するBREWで実装された「java_lang_Stringクラス」が挙げられる。BREWで実装されたライブラリクラスには、Javaのライブラリクラスと同じフィールド(データ)及び働きをするメソッド(処理)を持つ。フィールド及びメソッドは、Javaと同等のインターフェース(呼び出し規則)を持つ。
プログラム変換サーバのプロセッサは、自動変換用プログラムを読み取って実行することにより、以下の内部処理を行う。
1.Javaアプリケーションファイル(Javaバイトコートから構成されるエンドユーザに利用されるデータを、以後こう呼ぶ)の前処理
2.前処理後のデータのBREWソースコードへの変換
3.BREWソースコードのBREWバイナリコードへのコンパイル
以下それぞれについて、記述する。
1.Javaアプリケーションファイルの前処理
開発依頼元から受け取るのは、Javaアプリケーションファイルである。Javaアプリケーションファイルは一つのファイルにまとめられているので、ここからアプリケーションクラスファイル、画像・音声等のデータ等のファイルに分解する。入力されるJavaとしては、NTT DoCoMo用のDoJaやSunmicrosystems社の標準であるMIDP等があるが、開発依頼元から提出されるJavaバージョン情報は、分解されたデータに付加して、次の変換処理に渡され、プロファイルに応じた変換を行うための情報を与える。
前処理の概要を図5に示す。開発依頼元から、JavaアプリケーションファイルとJavaバージョン情報が、入力される。Javaアプリケーションファイルでは、データが圧縮されてJarファイルとしてひとつにまとめられているので、Jarコマンドを用いてこれの解凍処理を行い、アプリケーションファイル、画像データ、音声データ等のファイルに分解する。Jarファイルとは Javaアプリケーションの配布方式として一般的に広く普及している標準方式であり、Java 言語のツールとして一般的に広く普及しているJar コマンドを使うことによって解凍展開することができる。
2.前処理後のデータのBREWソースコードへの変換
前処理後のデータを、BREWソースコードに変換する。具体的には、JavaアプリケーションファイルをC++のヘッダーファイルとプログラムファイルに変換する。変換先のBREWにもBREW1.0、BREW2.0、BREW2.1、BREW3.0等のいくつかのバージョンが存在するが、変換プロセスでは、開発依頼元から指定されたバージョンにBREWライブラリDBを参照して、変換する方法をここでは実施例として記述している。
変換の詳細を記述する。Javaソースファイル、Javaクラスファイルにはクラスやフィールド、メソッドなどプログラム実行の方式を記述した情報が含まれている。これらのクラスやフィールド、メソッドをC++ 言語の文法に添うよう変換する。Javaのフィールドは、同じ働き、動きをするC++言語のフィールドへ、Javaのメソッドは同じ働き、動きをするC++言語のメソッドへそれぞれ変換する。これにより Javaの各クラスはC++のクラスへ変換され、変換されたC++のクラスは C++の実行環境(BREW環境を含む)の上で動作し、これは変換元となったJavaクラスのJava実行環境の上における動作と同じである。
Javaアプリケーションは、クラス(一つまたは複数)がJava実行環境上で動作するため、C++の実行環境上で変換されたC++のクラス(一つまたは複数)は同じ動作をする。以上からC++言語に変換されたアプリケーションは、BREW環境を含むC++の実行環境上で変換元となるJavaアプリケーションと同一の動作をする。
変換する際に、前処理により生成されたアプリケーションクラスファイルは、C++言語のアプリケーションヘッダーファイルとアプリケーションソースクラスファイルとして変換される。また、この変換以外に、このアプリケーションで使用されるJavaクラスライブラリも、BREWのライブラリを参照して変換後のデータに追加される。
さらに、Java言語にあって、C++言語には無い機能(例えばGC)等も、この変換後のデータに追加される。さらに、入力されるJavaで使用される圧縮画像データのフォーマットが、BREWでサポートされている画像データと異なる場合、例えば、入力JavaがDoCoMoのJavaで画像フォーマットがGIF形式で、BREWで使用される画像フォーマットがGIF形式でない場合は、GIFのデコーダ機能も変換後のデータに追加される。サウンドデータについても同様の処理が行われる。
前処理後のデータのBREWソースコードへの変換の概要を図6に示す。
前処理されたデータのJavaアプリケーションクラスファイルが、開発依頼元から指定されたBREWのバージョンに応じて、C++のアプリケーションヘッダーファイルとアプリケーションソースクラスファイルに変換される。また、Javaアプリケーションファイルで使用されているJavaクラスライブラリもソースファイルとして、C++のアプリケーションファイルに加えられる。
その他のファイルとして、GCソースファイルや画像デコーダーファイル、サウンドデコーダーファイル等が必要に応じて、C++のソースファイルに追加される。
図6における変換プロセスは、例えば図8に示す手順で行われる。すなわち、プログラム変換サーバのプロセッサは、Javaコードの入手を契機に、ライブラリチェックツールを起動させる(ステップS101,S102)。ライブラリが変換可能でなければ、上述したように、変換可能になるまでライブラリの追加整備を行う(ステップS103:N、S104)。
ライブラリが変換可能になった場合、プログラム変換サーバのプロセッサは、自動変換用プログラムを実行し、ライブラリ変換、GC実装、例外処理実装、コンテナー、環境オブジェクトを行う(ステップS103:Y,S105)。これにより、BREWソースコードとデータを得る(ステップS106)。
なお、この実施形態では、変換する際に開発依頼元から指定されたBREWのバージョンに応じたBREWライブラリDBを用意しておき、それを使用して変換を行う方法を記述したが、変換するライブラリを一つにして、実行時にバージョンを判別して必要な処理を行うという方法も本発明によれば実施が可能である。
3.BREWソースファイルのBREWバイナリコードへのコンパイル
生成されたBREWソースファイルを、携帯電話で使用されているCPU用のコンパイラを用いて、BREWバイナリコードへのコンパイルを行う。生成されたアプリケーションのヘッダーファイル、ソースファイル、クラスライブラリのヘッダーファイル、ソースファイル、その他、GC、画像デコーダー、サウンドデコーダー用のヘッダーファイル、ソースファイルは、BREW環境で実行することができるソースコードとなっているため、BREWアプリケーションを生成することができるコンパイラ(ARM社コンパイラ、gccなど)を用いてコンパイルすることにより、BREW環境用バイナリが生成される。
変換されたBREWソースコードをBREWバイナリファイルにコンパイルする処理の概要を図7に示す。コンパイルされた後のデータは、自動変換サービスシステムから、ただちにアプリケーション開発会社に送付される。
上記1−3のステップの処理概要を示したのが図1である。
また、変換プログラムを使用して実際に変換されたプログラムを携帯電話で走らせた例を図2および図3に示している。図2が変換前、図3が変換後の例を示している。
また、Java2BREWトランスレータにより作成されたBREWアプリケーションの例を図7に示している。同じアプリケーションがJava端末とBREW端末で、同じように動作しているのが検証されている。なお、このアプリケーションはゲームのプログラムであり、それぞれゲームのある瞬間を捕らえたものなので、画像は異なっているが、Javaアプリケーションの出力と変換した結果のプログラムの出力画面である。
<プログラム変換サービス>
携帯電話端末用の自動変換プログラムをもちいて、変換サービスを提供する際に必ず問題になるのが、変換プログラムにより出来上がったアプリケーションを、検証、デバッグ、調整する作業をどのように行うかという問題である。
本発明では、この検証、デバッグ、調整の作業をJavaソースコードを用いて改良を行い、その結果を再度変換して、検証、デバッグ、調整を行う方法を提供している。アプリケーション開発会社は、Javaでアプリケーションを開発し、それを自動変換サービスを利用することにより、瞬時に変換結果を受け取ることができ、ただちにそれを検証、調整、デバッグすることができる。
また、検証、調整、デバッグした後にJavaソースコードを改良して、その結果のJavaアプリケーションファイルを変換サービスにだすことにより、何度でも変換サービスをうけられ、細かなアプリケーションの改良が行える。
この仕組みにより、以下のような課題を解決することができる。
・すでにJava言語を使用したアプリケーションが開発済みであって、同じアプリケーションをBREW用に開発する際に、再度別の開発工程が必要となり、開発時間、開発コストが発生する。
・すでにJava言語を使用したアプリケーションが開発済みであって、同じアプリケーションをBREW用に開発する際に、Java言語を開発できるプログラマー以外にBREWを開発できるプログラマーが必要となる。
・あるアプリケーションをJava用とBREW用と同時に開発する際に、開発資源(人的資源、開発時間)が完全に2倍必要となる。
図4を参照して、プログラム変換サービスを行うシステムの運用例を説明する。
図4は、自動変換サービスシステムの機能ブロック図である。
アプリケーション開発会社は、自動変換サービスを利用するに際して、自動変換サービス提供会社に対してWEBを通じて契約を締結する。
図では、自動変換サービスシステムのWEBサーバに申し込み用のページが用意されており、そこに記入することにより自動変換サービスの利用を申し込む。
利用を申し込んだアプリケーション開発会社は、変換サービスを受けようとするJavaアプリケーションファイルをネットを通して自動変換サービス提供会社に送付する。その際に、Javaのバージョン情報と変換先のBREWのバージョン情報を付加して、サービスを申し込む。また、アプリケーション開発会社はQualcomm社にそのアプリケーションのクラスIDを申請し、同時にその情報もあわせて自動変換サービス提供会社に通知する。自動変換サービス提供会社では、アプリケーション開発会社とJavaアプリケーションファイル情報、Javaのバージョン情報、変換先のBREWのバージョン情報とアプリケーションのクラスIDを認証サーバに登録する。
その後、変換サーバに、Javaアプリケーションファイル情報、Javaのバージョン情報、変換先のBREWのバージョン情報とアプリケーションのクラスIDが渡され、変換処理が実行される。その結果のBREWバイナリーファイルは、変換処理が終了した後にアプリケーション開発会社に送信される。
アプリケーション開発会社では、送られてきたBREWバイナリコードの検証、調整、デバッグを行う。この工程で、問題があり、改良が必要な場合には、Javaソースコードを用いて改良を行い、その結果のJavaアプリケーションファイルを自動変換サービスシステムに再度送って、変換サービスを受ける。この方法を用いることにより、プログラムの調整に必要な開発サイクルを極めて短期間に繰り返し実行することが可能になる。
その際に、アプリケーション開発会社が以前登録したのと同じアプリケーションファイル情報で、別のアプリケーションプログラムを変換しようとしても、返される結果のBREWバイナリーファイルにはユニークなクラスIDがつけて返されるので、別のプログラムとしてそれをサービスに用いることができず、変換サービスが悪用されるのを防ぐ効果がある。
ここでは、自動変換用プログラムその他のコンピュータプログラム(OS、BIOS等)を格納したプログラム格納手段、ユーザ登録手段、Javaライブラリ管理手段、Javaコード受付手段、変換手段、返信手段を備えて成るプログラム変換サーバを、アプリケーション開発者が自由にアクセスできるコンピュータネットワークに配備することにより実現されるサービスシステムについて説明する。
プログラム変換サーバは、サーバ機能を有するコンピュータであり、プロセッサ(CPU)とこのプロセッサに読み取られて実行されるコンピュータプログラムを格納したメモリとを備えている。自動変換用プログラムは、このコンピュータプログラムの一つとなるものである。
自動変換用プログラムは、例えば以下のような5種類の機能をプログラム変換サーバに与えるためのプログラムの集合を含んで構成される。
(a)ライブラリチェックツール
実際に自動変換を行う前に、Javaのアプリケーションで使用されているライブラリが、すべて変換ツールで変換可能なものであるかどうかをチェックするためのものである。ライブラリが足りない場合は自動変換はできないので、該当ライブラリ整備してから自動変換を実行する必要がある。
このライブラリチェックツールは、まず、変換対象のJavaアプリケーションのクラスファイル中のコンスタントプール、フィールド、メソッド(すべてJava言語仕様による)から実際に使用されているライブラリを抽出する。その後、実装済のクラスライブラリ・リストと比較し、Javaアプリケーションが用いているライブラリの集合が実装済のライブラリ・クラス・リストにすべて含まれているか、含まれていないならば何個含まれていないものがあるか、それが何であるかの情報を表示する。
(b)例外処理
Java言語の例外処理は、Java実行時にメソッド呼び出し(特定の処理、関数など)及びフィールドアクセス(データの参照)時に、Javaクラスファイル内に指定される特定の処理を行うためのものである。この例外処理の機能をBREWの変換先プログラムにおいて実現する。
BREWの変換先プログラムにおいて実現するために、この実施形態では、メソッド呼び出し及びフィールドアクセスなど例外が発生する可能性がある処理(クラスファイル内に記述されている)の後に例外が発生したか調べる処理を挿入し、例外が発生した場合には特定の処理(クラスファイル内に記述されている)を行わせることにより、BREWにおいてもJavaと同等の例外処理を実装している。
(c)コンテナー
コンテナーは、Java携帯アプリケーションにおける実行フレームワーク(枠組み)をBREW環境で再現するためのプログラムである。Javaでは、初期化、開始、サスペンド(停止)、レジューム(再開)などに対するイベントが発生し、各イベントに対してアプリケーションプログラム及びライブラリプログラムが予め定められたJava規格通りの動作をする。
そのため、BREW環境で、BREWアプリケーションに対して同様のイベントを発生させ、各イベントに対するアプリケーションプログラム及びライブラリプログラムの動作を制御するプログラムが「コンテナー」である。アプリケーションプログラムは、アプリケーションごとに異なるため、各アプリケーションごとに対応するコンテナーを生成する必要がある。
(d)環境オブジェクト
BREWアプリケーションで自動変換するためには、コンテナー、アプリケーションプログラム、ライブラリプログラムが用いるデータを含むオブジェクトが必要になる。このオブジェクトが「環境オブジェクト」である。
環境オブジェクトは、すべてのプログラムから共通に使えるデータを集めて記録することにより実現する。このようなデータには、例えば、上述したGCに関するデータ、Java言語での静的データなどがある。静的データの場合、アプリケーションクラス及びライブラリクラスそれぞれに対応する静的データを記録する必要がある。アプリケーションプログラムはアプリケーションごとに異なるため、各アプリケーションごとに対応する環境オブジェクトを生成する。
(e)ライブラリ変換
Java言語環境で使われるJava言語仕様による標準ライブラリと同じ働きをするBREWプログラムを提供するものである。この標準ライブラリと同じ働きをするBREWプログラムを各Javaライブラリクラスごとに作成し、ライブラリを整備することにより実現する。ライブラリ変換の例としては、「java.lang.Stringクラス」に対応するBREWで実装された「java_lang_Stringクラス」が挙げられる。BREWで実装されたライブラリクラスには、Javaのライブラリクラスと同じフィールド(データ)及び働きをするメソッド(処理)を持つ。フィールド及びメソッドは、Javaと同等のインターフェース(呼び出し規則)を持つ。
プログラム変換サーバのプロセッサは、自動変換用プログラムを読み取って実行することにより、以下の内部処理を行う。
1.Javaアプリケーションファイル(Javaバイトコートから構成されるエンドユーザに利用されるデータを、以後こう呼ぶ)の前処理
2.前処理後のデータのBREWソースコードへの変換
3.BREWソースコードのBREWバイナリコードへのコンパイル
以下それぞれについて、記述する。
1.Javaアプリケーションファイルの前処理
開発依頼元から受け取るのは、Javaアプリケーションファイルである。Javaアプリケーションファイルは一つのファイルにまとめられているので、ここからアプリケーションクラスファイル、画像・音声等のデータ等のファイルに分解する。入力されるJavaとしては、NTT DoCoMo用のDoJaやSunmicrosystems社の標準であるMIDP等があるが、開発依頼元から提出されるJavaバージョン情報は、分解されたデータに付加して、次の変換処理に渡され、プロファイルに応じた変換を行うための情報を与える。
前処理の概要を図5に示す。開発依頼元から、JavaアプリケーションファイルとJavaバージョン情報が、入力される。Javaアプリケーションファイルでは、データが圧縮されてJarファイルとしてひとつにまとめられているので、Jarコマンドを用いてこれの解凍処理を行い、アプリケーションファイル、画像データ、音声データ等のファイルに分解する。Jarファイルとは Javaアプリケーションの配布方式として一般的に広く普及している標準方式であり、Java 言語のツールとして一般的に広く普及しているJar コマンドを使うことによって解凍展開することができる。
2.前処理後のデータのBREWソースコードへの変換
前処理後のデータを、BREWソースコードに変換する。具体的には、JavaアプリケーションファイルをC++のヘッダーファイルとプログラムファイルに変換する。変換先のBREWにもBREW1.0、BREW2.0、BREW2.1、BREW3.0等のいくつかのバージョンが存在するが、変換プロセスでは、開発依頼元から指定されたバージョンにBREWライブラリDBを参照して、変換する方法をここでは実施例として記述している。
変換の詳細を記述する。Javaソースファイル、Javaクラスファイルにはクラスやフィールド、メソッドなどプログラム実行の方式を記述した情報が含まれている。これらのクラスやフィールド、メソッドをC++ 言語の文法に添うよう変換する。Javaのフィールドは、同じ働き、動きをするC++言語のフィールドへ、Javaのメソッドは同じ働き、動きをするC++言語のメソッドへそれぞれ変換する。これにより Javaの各クラスはC++のクラスへ変換され、変換されたC++のクラスは C++の実行環境(BREW環境を含む)の上で動作し、これは変換元となったJavaクラスのJava実行環境の上における動作と同じである。
Javaアプリケーションは、クラス(一つまたは複数)がJava実行環境上で動作するため、C++の実行環境上で変換されたC++のクラス(一つまたは複数)は同じ動作をする。以上からC++言語に変換されたアプリケーションは、BREW環境を含むC++の実行環境上で変換元となるJavaアプリケーションと同一の動作をする。
変換する際に、前処理により生成されたアプリケーションクラスファイルは、C++言語のアプリケーションヘッダーファイルとアプリケーションソースクラスファイルとして変換される。また、この変換以外に、このアプリケーションで使用されるJavaクラスライブラリも、BREWのライブラリを参照して変換後のデータに追加される。
さらに、Java言語にあって、C++言語には無い機能(例えばGC)等も、この変換後のデータに追加される。さらに、入力されるJavaで使用される圧縮画像データのフォーマットが、BREWでサポートされている画像データと異なる場合、例えば、入力JavaがDoCoMoのJavaで画像フォーマットがGIF形式で、BREWで使用される画像フォーマットがGIF形式でない場合は、GIFのデコーダ機能も変換後のデータに追加される。サウンドデータについても同様の処理が行われる。
前処理後のデータのBREWソースコードへの変換の概要を図6に示す。
前処理されたデータのJavaアプリケーションクラスファイルが、開発依頼元から指定されたBREWのバージョンに応じて、C++のアプリケーションヘッダーファイルとアプリケーションソースクラスファイルに変換される。また、Javaアプリケーションファイルで使用されているJavaクラスライブラリもソースファイルとして、C++のアプリケーションファイルに加えられる。
その他のファイルとして、GCソースファイルや画像デコーダーファイル、サウンドデコーダーファイル等が必要に応じて、C++のソースファイルに追加される。
図6における変換プロセスは、例えば図8に示す手順で行われる。すなわち、プログラム変換サーバのプロセッサは、Javaコードの入手を契機に、ライブラリチェックツールを起動させる(ステップS101,S102)。ライブラリが変換可能でなければ、上述したように、変換可能になるまでライブラリの追加整備を行う(ステップS103:N、S104)。
ライブラリが変換可能になった場合、プログラム変換サーバのプロセッサは、自動変換用プログラムを実行し、ライブラリ変換、GC実装、例外処理実装、コンテナー、環境オブジェクトを行う(ステップS103:Y,S105)。これにより、BREWソースコードとデータを得る(ステップS106)。
なお、この実施形態では、変換する際に開発依頼元から指定されたBREWのバージョンに応じたBREWライブラリDBを用意しておき、それを使用して変換を行う方法を記述したが、変換するライブラリを一つにして、実行時にバージョンを判別して必要な処理を行うという方法も本発明によれば実施が可能である。
3.BREWソースファイルのBREWバイナリコードへのコンパイル
生成されたBREWソースファイルを、携帯電話で使用されているCPU用のコンパイラを用いて、BREWバイナリコードへのコンパイルを行う。生成されたアプリケーションのヘッダーファイル、ソースファイル、クラスライブラリのヘッダーファイル、ソースファイル、その他、GC、画像デコーダー、サウンドデコーダー用のヘッダーファイル、ソースファイルは、BREW環境で実行することができるソースコードとなっているため、BREWアプリケーションを生成することができるコンパイラ(ARM社コンパイラ、gccなど)を用いてコンパイルすることにより、BREW環境用バイナリが生成される。
変換されたBREWソースコードをBREWバイナリファイルにコンパイルする処理の概要を図7に示す。コンパイルされた後のデータは、自動変換サービスシステムから、ただちにアプリケーション開発会社に送付される。
上記1−3のステップの処理概要を示したのが図1である。
また、変換プログラムを使用して実際に変換されたプログラムを携帯電話で走らせた例を図2および図3に示している。図2が変換前、図3が変換後の例を示している。
また、Java2BREWトランスレータにより作成されたBREWアプリケーションの例を図7に示している。同じアプリケーションがJava端末とBREW端末で、同じように動作しているのが検証されている。なお、このアプリケーションはゲームのプログラムであり、それぞれゲームのある瞬間を捕らえたものなので、画像は異なっているが、Javaアプリケーションの出力と変換した結果のプログラムの出力画面である。
<プログラム変換サービス>
携帯電話端末用の自動変換プログラムをもちいて、変換サービスを提供する際に必ず問題になるのが、変換プログラムにより出来上がったアプリケーションを、検証、デバッグ、調整する作業をどのように行うかという問題である。
本発明では、この検証、デバッグ、調整の作業をJavaソースコードを用いて改良を行い、その結果を再度変換して、検証、デバッグ、調整を行う方法を提供している。アプリケーション開発会社は、Javaでアプリケーションを開発し、それを自動変換サービスを利用することにより、瞬時に変換結果を受け取ることができ、ただちにそれを検証、調整、デバッグすることができる。
また、検証、調整、デバッグした後にJavaソースコードを改良して、その結果のJavaアプリケーションファイルを変換サービスにだすことにより、何度でも変換サービスをうけられ、細かなアプリケーションの改良が行える。
この仕組みにより、以下のような課題を解決することができる。
・すでにJava言語を使用したアプリケーションが開発済みであって、同じアプリケーションをBREW用に開発する際に、再度別の開発工程が必要となり、開発時間、開発コストが発生する。
・すでにJava言語を使用したアプリケーションが開発済みであって、同じアプリケーションをBREW用に開発する際に、Java言語を開発できるプログラマー以外にBREWを開発できるプログラマーが必要となる。
・あるアプリケーションをJava用とBREW用と同時に開発する際に、開発資源(人的資源、開発時間)が完全に2倍必要となる。
図4を参照して、プログラム変換サービスを行うシステムの運用例を説明する。
図4は、自動変換サービスシステムの機能ブロック図である。
アプリケーション開発会社は、自動変換サービスを利用するに際して、自動変換サービス提供会社に対してWEBを通じて契約を締結する。
図では、自動変換サービスシステムのWEBサーバに申し込み用のページが用意されており、そこに記入することにより自動変換サービスの利用を申し込む。
利用を申し込んだアプリケーション開発会社は、変換サービスを受けようとするJavaアプリケーションファイルをネットを通して自動変換サービス提供会社に送付する。その際に、Javaのバージョン情報と変換先のBREWのバージョン情報を付加して、サービスを申し込む。また、アプリケーション開発会社はQualcomm社にそのアプリケーションのクラスIDを申請し、同時にその情報もあわせて自動変換サービス提供会社に通知する。自動変換サービス提供会社では、アプリケーション開発会社とJavaアプリケーションファイル情報、Javaのバージョン情報、変換先のBREWのバージョン情報とアプリケーションのクラスIDを認証サーバに登録する。
その後、変換サーバに、Javaアプリケーションファイル情報、Javaのバージョン情報、変換先のBREWのバージョン情報とアプリケーションのクラスIDが渡され、変換処理が実行される。その結果のBREWバイナリーファイルは、変換処理が終了した後にアプリケーション開発会社に送信される。
アプリケーション開発会社では、送られてきたBREWバイナリコードの検証、調整、デバッグを行う。この工程で、問題があり、改良が必要な場合には、Javaソースコードを用いて改良を行い、その結果のJavaアプリケーションファイルを自動変換サービスシステムに再度送って、変換サービスを受ける。この方法を用いることにより、プログラムの調整に必要な開発サイクルを極めて短期間に繰り返し実行することが可能になる。
その際に、アプリケーション開発会社が以前登録したのと同じアプリケーションファイル情報で、別のアプリケーションプログラムを変換しようとしても、返される結果のBREWバイナリーファイルにはユニークなクラスIDがつけて返されるので、別のプログラムとしてそれをサービスに用いることができず、変換サービスが悪用されるのを防ぐ効果がある。
自動変換用プログラムおよびこれを実行するサーバによるプログラム自動変換サービスを実現することにより、すでにJavaアプリケーションが存在する場合には、極めて短時間のうちにBREWバイナリーファイルを開発、サービスに提供することが、可能となる。また、何度でも変換できるシステムを利用することにより、全体としてのプログラムの開発期間(本来開発、調整、デバッグ、検証のサイクルで回るもの)を極めて短期間に完成することが可能となり、プログラムの生産性の向上、プログラム資産の有効利用が図れる。
Claims (6)
- Javaコードで記述されたJavaアプリケーションをBREWのバイナリコードで記述された実行形式のBREWアプリケーションに人手を介することなく自動変換するためのプログラムであって、
Javaソースコードを前記バイナリコードに変換する第1の手段と、
Javaバイトコードを前記バイナリコードに直接変換する第2の手段とのいずれかを選択的にコンピュータに構築するための自動変換用プログラム。 - それぞれプロファイルが異なる複数種類のJavaアプリケーションの各々から前記BREWアプリケーションに変換するための手順を定めたライブラリを個々のJavaプログラムを形成するJavaコードの種類を識別するための識別コードと対応付けて所定のメモリに格納するライブラリ管理手段と、
変換対象となるJavaアプリケーションのJavaコードの種類が特定されたときに前記ライブラリ管理手段を通じて当該Javaコードに対応するライブラリを前記メモリから読み出し、読み出したライブラリに基づいて前記第1の手段又は前記第2の手段のいずれかに前記特定されたJavaコードで記述されたJavaアプリケーションからBREWアプリケーションへの自動変換を促す第3の手段と、をさらに前記コンピュータに構築するための請求の範囲第1項記載の自動変換用プログラム。 - 前記Javaアプリケーションで使用されるコンテンツデータを読み取って、そのコンテンツデータのデータ構造が何かを特定するデータ構造解析手段と、
このデータ解析手段により特定したデータ構造をBREWアプリケーションで使用するデータ構造に変換するデータ構造変換手段と、をさらに前記コンピュータに構築するための請求の範囲第1項記載の自動変換用プログラム。 - 前記コンテンツデータが、画像データ、音声データ、又はその組み合わせである、
請求の範囲第3項記載の自動変換用プログラム。 - Javaソースコード又はJavaバイトコードで記述されたJavaアプリケーションをBREWのバイナリコードで記述された実行形式のBREWアプリケーションに人手を介することなく変換する自動変換用プログラムを格納したプログラム格納手段と、
それぞれプロファイルが異なる複数種類のJavaアプリケーションの各々から前記BREWアプリケーションに変換するための手順を定めたライブラリを個々のJavaプログラムを形成するJavaコードの種類を識別するための識別コードと対応付けて所定のメモリに格納するライブラリ管理手段と、
変換対象となるJavaコードを所定のコンピュータネットワークを通じて電子データの形式で受け付けるJavaコード受付手段と、
このJavaコード受付手段で受け付けたJavaコードの種類が特定されたときに前記ライブラリ管理手段を通じて当該Javaコードに対応するライブラリを前記メモリから読み出し、さらに前記プログラム格納手段から前記自動変換用プログラムを読み出し、読み出したライブラリを用いて前記自動変換用プログラムを実行させることにより前記受け付けたJavaコードからバイナリコードへの変換を行う変換手段と、
変換されたバイナリコードを前記Javaコードの送出元へ返信する返信手段と、を備えて成る、プログラム変換サーバ。 - 前記Javaコードから前記バイナリコードへの変換を望むユーザを登録するユーザ登録手段を備えており、
ユーザ登録手段に登録されたユーザによる1回の課金単位による前記Javaコードの受付を繰り返し許容する、
請求の範囲第5項記載のプログラム変換サーバ。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004211900 | 2004-07-20 | ||
JP2004211900 | 2004-07-20 | ||
PCT/JP2005/013674 WO2006009287A1 (ja) | 2004-07-20 | 2005-07-20 | 自動変換用プログラムおよびプログラム変換サーバ |
Publications (1)
Publication Number | Publication Date |
---|---|
JPWO2006009287A1 true JPWO2006009287A1 (ja) | 2008-05-01 |
Family
ID=35785385
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006527809A Pending JPWO2006009287A1 (ja) | 2004-07-20 | 2005-07-20 | 自動変換用プログラムおよびプログラム変換サーバ |
Country Status (5)
Country | Link |
---|---|
US (1) | US20060136880A1 (ja) |
JP (1) | JPWO2006009287A1 (ja) |
CN (1) | CN100498711C (ja) |
TW (1) | TW200612336A (ja) |
WO (1) | WO2006009287A1 (ja) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8484556B2 (en) | 2006-08-22 | 2013-07-09 | Autodesk, Inc. | Drawing interoperability between different computer-aided design applications |
US8849746B2 (en) * | 2006-12-19 | 2014-09-30 | Teradata Us, Inc. | High-throughput extract-transform-load (ETL) of program events for subsequent analysis |
US8752006B1 (en) * | 2007-07-02 | 2014-06-10 | Cisco Technology, Inc. | System and method and apparatus for automatically generating computer code for remote procedure calls |
US9678775B1 (en) * | 2008-04-09 | 2017-06-13 | Nvidia Corporation | Allocating memory for local variables of a multi-threaded program for execution in a single-threaded environment |
JP2010044574A (ja) | 2008-08-12 | 2010-02-25 | Sony Ericsson Mobilecommunications Japan Inc | 携帯端末、携帯端末制御方法、及び携帯端末制御プログラム |
US8479176B2 (en) * | 2010-06-14 | 2013-07-02 | Intel Corporation | Register mapping techniques for efficient dynamic binary translation |
US9189211B1 (en) * | 2010-06-30 | 2015-11-17 | Sony Computer Entertainment America Llc | Method and system for transcoding data |
JP2012053657A (ja) * | 2010-09-01 | 2012-03-15 | Systems:Kk | 情報処理装置、情報処理方法、及びプログラム |
JP6024743B2 (ja) * | 2012-04-06 | 2016-11-16 | ソニー株式会社 | 情報処理装置、情報処理方法およびコンピュータプログラム |
US8966441B2 (en) * | 2012-07-12 | 2015-02-24 | Oracle International Corporation | Dynamic scripts to extend static applications |
US9280322B2 (en) * | 2012-09-27 | 2016-03-08 | Intel Corporation | Generating source code |
CN107179935B (zh) * | 2016-03-11 | 2021-01-29 | 华为技术有限公司 | 一种指令执行方法及虚拟机 |
US10565014B2 (en) * | 2017-12-05 | 2020-02-18 | Western Digital Technologies, Inc. | Data processing offload using in-storage code execution |
US20220374428A1 (en) * | 2021-05-24 | 2022-11-24 | Nvidia Corporation | Simulation query engine in autonomous machine applications |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000122871A (ja) * | 1998-10-14 | 2000-04-28 | Hitachi Ltd | アプリケーション配布方法 |
JP2001319069A (ja) * | 2000-05-12 | 2001-11-16 | Melco Inc | ファイル変換システム、ウェブサーバ、ファイル変換方法およびファイル変換プログラムを記録した媒体 |
JP2004078354A (ja) * | 2002-08-12 | 2004-03-11 | Fujitsu Ten Ltd | データ変換サービス方法およびデータ変換用サーバ装置 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6110226A (en) * | 1998-02-19 | 2000-08-29 | Cygnus Solutions | Java development environment using optimizing ahead-of-time compiler |
US6539433B1 (en) * | 1998-09-30 | 2003-03-25 | Matsushita Electric Industrial Co., Ltd. | System for distributing native program converted from Java bytecode to a specified home appliance |
JP2000172509A (ja) * | 1998-09-30 | 2000-06-23 | Matsushita Electric Ind Co Ltd | プログラム協調実行装置 |
US6567973B1 (en) * | 1999-07-28 | 2003-05-20 | International Business Machines Corporation | Introspective editor system, program, and method for software translation using a facade class |
US20010054011A1 (en) * | 2000-06-15 | 2001-12-20 | Nec Corporation | Contents conversion fee charging system, contents conversion fee charging method and storage medium storing program for controlling same |
CN1256666C (zh) * | 2001-03-19 | 2006-05-17 | 高通股份有限公司 | 无线设备上系统服务的动态下载和执行 |
JP2003141028A (ja) * | 2001-11-01 | 2003-05-16 | Sanyo Electric Co Ltd | 電子フォト閲覧システム、電子フォト情報閲覧方法および電子フォト情報閲覧用サーバ |
JP3823809B2 (ja) * | 2001-11-13 | 2006-09-20 | セイコーエプソン株式会社 | 画像編集受注納品管理装置および方法並びにこれに用いるプログラム |
JP2004038876A (ja) * | 2002-07-08 | 2004-02-05 | Hitachi Ltd | プログラム等のデータ形式変換方法及び装置、並びにそのデータ形式変換装置を用いたコントローラ管理システム |
US7346897B2 (en) * | 2002-11-20 | 2008-03-18 | Purenative Software Corporation | System for translating programming languages |
-
2005
- 2005-07-20 JP JP2006527809A patent/JPWO2006009287A1/ja active Pending
- 2005-07-20 WO PCT/JP2005/013674 patent/WO2006009287A1/ja active Application Filing
- 2005-07-20 CN CNB2005800314633A patent/CN100498711C/zh not_active Expired - Fee Related
- 2005-07-20 TW TW094124542A patent/TW200612336A/zh unknown
- 2005-11-23 US US11/285,865 patent/US20060136880A1/en not_active Abandoned
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000122871A (ja) * | 1998-10-14 | 2000-04-28 | Hitachi Ltd | アプリケーション配布方法 |
JP2001319069A (ja) * | 2000-05-12 | 2001-11-16 | Melco Inc | ファイル変換システム、ウェブサーバ、ファイル変換方法およびファイル変換プログラムを記録した媒体 |
JP2004078354A (ja) * | 2002-08-12 | 2004-03-11 | Fujitsu Ten Ltd | データ変換サービス方法およびデータ変換用サーバ装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2006009287A1 (ja) | 2006-01-26 |
TW200612336A (en) | 2006-04-16 |
CN100498711C (zh) | 2009-06-10 |
US20060136880A1 (en) | 2006-06-22 |
CN101036123A (zh) | 2007-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPWO2006009287A1 (ja) | 自動変換用プログラムおよびプログラム変換サーバ | |
US7155381B2 (en) | Module for developing wireless device applications using an integrated emulator | |
CN103530156B (zh) | 动态加载和调用程序的方法及装置 | |
US20030236657A1 (en) | Method of developing wireless device applications using an integrated emulator and an IDE | |
US9372680B2 (en) | Methods and systems for producing, evaluating and simulating executable applications | |
JP5396979B2 (ja) | ソフトウェア開発支援装置、システム、ソフトウェア開発支援装置の機能拡張方法、及びプログラム | |
US20090144711A1 (en) | System and method for common compiler services based on an open services gateway initiative architecture | |
KR100452343B1 (ko) | 기계어 코드 실행영역을 포함하는 이동통신 단말기용 파일을 기록하는 저장매체 및 그를 이용한 파일 실행방법 | |
CN110597564A (zh) | 一种安装包构建和业务组件加载方法、装置、终端设备 | |
Giguère | Java 2 micro edition: professional developer's guide | |
US20050034110A1 (en) | Configuration description language value management method and system | |
CN107239265B (zh) | Java函数与C函数的绑定方法及装置 | |
KR101070967B1 (ko) | Wipi 단말에서의 컨텐츠 다운로드 시스템 및 그 방법 | |
KR101442000B1 (ko) | 분리 실행 기반의 컨텐츠 등록 서버, 그 방법 및 그 방법을 수행하기 위한 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체 | |
Fu et al. | Research on audio/video codec based on Android | |
CN111427770B (zh) | 一种资源测试方法及相关设备 | |
CN114416202A (zh) | 一种移动端sdk调用方法及系统 | |
KR20110108143A (ko) | 스크립트 프로그래밍 언어 기반의 임베디드 시스템 및 그 구동 방법 | |
Markomanolis et al. | Time-Independent Trace Acquisition Framework--A Grid'5000 How-to | |
Gefflaut et al. | Porting the .NET Compact Framework to Symbian Phones–A Feasibility Assessment | |
US20240111507A1 (en) | Systems and methods for compile-time dependency injection and lazy service activation framework | |
CN111033468B (zh) | 实施不同类型的区块链合约的系统和方法 | |
WO2022205013A1 (zh) | 程序数据包生成方法、装置、设备及存储介质 | |
EP1988462A1 (en) | Communication terminal apparatus | |
CN115757159A (zh) | 一种调用图生成方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080709 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20111025 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20120306 |