WO2004075048A1 - ネイティブコンパイル方法、ネイティブコンパイル前処理方法、コンピュータプログラム、およびサーバ - Google Patents

ネイティブコンパイル方法、ネイティブコンパイル前処理方法、コンピュータプログラム、およびサーバ Download PDF

Info

Publication number
WO2004075048A1
WO2004075048A1 PCT/JP2004/001696 JP2004001696W WO2004075048A1 WO 2004075048 A1 WO2004075048 A1 WO 2004075048A1 JP 2004001696 W JP2004001696 W JP 2004001696W WO 2004075048 A1 WO2004075048 A1 WO 2004075048A1
Authority
WO
WIPO (PCT)
Prior art keywords
unit block
native
code
external reference
reference information
Prior art date
Application number
PCT/JP2004/001696
Other languages
English (en)
French (fr)
Inventor
Tomihisa Kamada
Hiroyuki Suzuki
Original Assignee
Access Co., Ltd.
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Access Co., Ltd. filed Critical Access Co., Ltd.
Priority to US10/545,623 priority Critical patent/US20060174235A1/en
Priority to JP2005502703A priority patent/JP3757235B2/ja
Priority to EP04711688A priority patent/EP1598739A4/en
Publication of WO2004075048A1 publication Critical patent/WO2004075048A1/ja

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation

Definitions

  • the present invention relates to a native compilation method, a native compilation preprocessing method, a computer program, and a server.
  • the present invention relates to a communication system including a server and a mobile communication terminal, and more particularly, to a native compilation preprocessing method, a native compilation method, a computer program, and a server.
  • a mobile communication terminal such as a mobile phone has acquired a new application program from a server via a network such as the Internet, and executed the ablation program in the mobile communication terminal. It is becoming possible to add functions.
  • a program (source code) written in the Java (registered trademark) language is compiled and converted into intermediate code called bytecode.
  • the bytecode is not executed directly by the CPU of each computer, but is executed by a virtual machine, which is a calculation engine made of software.
  • the bytecode does not depend on a specific hardware or OS (Operating System). Because of its relatively small size, it is suitable for distributing programs over a network. However, the execution format of a virtual computer is one that is sequentially analyzed and executed by an interpreter (software), and the execution speed is slow.
  • the code that can be directly executed by the CPU is called native code (machine language), and its execution speed is much faster than that of an interpreter.
  • native code machine language
  • a method of executing native compilation on a server and transmitting the resulting native code to a mobile communication terminal may be considered.
  • the code may be different for each mobile communication terminal model (mainly the type of CPU and OS). Since the types of models will increase in the future, execute native compilation for each model on the server side. Managing native code is a burden. Therefore, it is desirable that the native compiling is handled by the mobile communication terminal.
  • JIT Just In Time
  • the JIT compiler converts the code into native code when the application is executed, and causes the CPU to execute it directly.
  • the first time the program is executed the bytecode is compiled into native code and executed. From the second time, the execution efficiency is improved by directly executing the native code stored in the memory. This makes it possible to execute a Java application at high speed.
  • the JIT compiler is executed at the time of the first program execution, it is not possible to avoid waiting time until program execution starts! / ,.
  • the data communication speed currently available to mobile communication terminals is relatively slow.
  • Wireless communications such as mobile phone packet networks have significantly lower data rates than broadband networks such as optical networks and ADSL networks.
  • the speed of CPUs mounted on mobile phones has been increasing, but the data transfer speed of wireless communication networks has remained low. Therefore, it takes a certain amount of time to receive all the bytecodes of a certain application program, and it takes a considerable amount of time to natively compile these bytecodes even though the CPU has been faster. Therefore, there is a problem that a long time is required from the start of communication to the start of execution of the application program.
  • Japanese Patent Application Laid-Open Publication No. 2000-40007 discloses that an application is started simultaneously with reception of a JAR file (a plurality of class files compressed into one file), and reception processing and application processing are performed. Application start-up by executing A technique for reducing the waiting time of a user at the time is disclosed.
  • this technique executes the intermediate code using an interpreter, and does not execute the application using native code.
  • the compilation process cannot begin unless all bytecode has been received. This is because, usually, when a class compiles, when the class references another class, it is necessary to check the existence of the class and the existence of a specific method field in the class. . For this reason, even if the native compilation is executed in parallel with the process of downloading the intermediate code, if the referenced class has not been received, the compilation process of the class must be suspended until the class is received . The execution of the application starts after the compile process is completed. As a result, there is a problem that a considerable waiting time is required for executing the application immediately after reception.
  • the present invention has been made in such a background. It is an object of the present invention to provide a communication system capable of reducing an execution waiting time by performing a native compile process in parallel with an intermediate code download process. Processing method, native compilation method, computer program, and server. Disclosure of the invention
  • the native compilation method is a native compilation method for converting an intermediate code independent of an OS into a native code in a mobile communication terminal device.
  • the received external reference information I te Performing an even compilation process.
  • the mobile communication terminal starts the native compilation process for the intermediate code of the received unit block before the completion of receiving all the intermediate codes.
  • the external reference information including the attribute information of another unit block referred to by the unit block is received together with the unit block, there is no problem in starting the native compilation immediately.
  • "via a wireless communication network” does not mean that the communication is performed only through the wireless communication network, but may be performed not only through the wireless communication network but also through the wired communication network.
  • the time required for native compilation can be absorbed in all or part of the download time of the intermediate code.
  • conversion to native code can be performed using the idle time of the CPU.
  • the waiting time for application execution can be significantly reduced compared to compiling at startup.
  • Another native compilation method is a native compilation method for converting an intermediate code into a native code while receiving an external code from an external device in a mobile communication terminal device.
  • the intermediate code of a plurality of unit blocks is preceded by a set of external reference information that summarizes the attribute information of another unit block referred to by the unit block, Receiving the intermediate code of the unit block before the completion of the reception of all the intermediate codes, and starting the native compilation process of converting the intermediate code of the received unit block into the native code.
  • converting to a code refer to the received external reference information related to the unit block. Characterized by comprising the steps of performing native compilation process the unit Proc.
  • a set of external reference information is received prior to a plurality of unit blocks.
  • the conversion to the native code can be performed using the idle time of the CPU in parallel with the download of the application case.
  • the native compilation preprocessing method depends on the server and OS.
  • a native compile preprocessing method for transmitting intermediate code to a mobile communication terminal device via a network comprising: converting a source program into an intermediate code for each unit block; Collecting attribute information of another unit block referred to by the unit block as the external reference information when converting to the native code; adding the collected external reference information to each unit block; and Sequentially transmitting each unit block to which information has been added to the mobile communication terminal device via a wireless communication network.
  • the server adds the collected external reference information to each unit block and sequentially transmits the information to the mobile communication terminal device via the wireless communication network.
  • the external reference information to be added to a certain unit block is the same as the external reference information added to the unit block transmitted first, the same external reference information for the unit block transmitted later is used. Can be omitted. As a result, the amount of transmission data is reduced.
  • Another native compilation preprocessing method according to the present invention is a native compilation preprocessing method when a server transmits an intermediate code independent of an OS to a mobile communication terminal device via a network.
  • Converting the intermediate code of each unit block into an intermediate code collecting attribute information of another unit block referred to by the unit block as external reference information when converting the intermediate code of each unit block into native code, collecting A step of sequentially transmitting a plurality of unit blocks to the mobile communication terminal device via a wireless communication network following the set of external reference information.
  • the collected external reference information is not added to each unit block, but the collected external reference information is collectively transmitted as a set of external reference information before the plurality of unit blocks.
  • the present invention can also be grasped as a computer program that executes each step of each native compilation method.
  • the server according to the present invention is a server which performs pre-compile processing natively when transmitting intermediate code independent of an OS to a mobile communication terminal via a network, Means for converting the source program into intermediate code for each unit block, and for converting the intermediate code of each unit block to native code, collecting attribute information of other unit blocks referenced by the unit block as external reference information Means for adding the collected external reference information to each unit block; and means for sequentially transmitting each unit block to which the external reference information has been added to the mobile communication terminal device via a wireless communication network. And a step.
  • the function of this server is as described in the first native compilation preprocessing method described above.
  • Another server is a server that performs native compilation preprocessing when transmitting intermediate code independent of an OS to a mobile communication terminal device via a network, and converts a source program into intermediate code for each unit block.
  • the function of this server is as described in the second native compilation preprocessing method described above.
  • the present invention further includes a server that executes the native compilation preprocessing method, and a mobile communication terminal device that receives an intermediate code independent of the OS from the server via a communication network and executes a native compilation process. It can also be grasped as a communication system.
  • FIG. 1 is a diagram showing a schematic configuration of a communication system to which the present invention is applied.
  • FIG. 2 is a block diagram showing a schematic hardware configuration example of the mobile communication terminal shown in FIG.
  • FIG. 3 is a block diagram showing a schematic hardware configuration example of the server shown in FIG.
  • Figure 4 shows two examples of Java application class source code.
  • FIG. 5 is a diagram showing an example of external reference information for classes A and B in FIG.
  • FIG. 6 is a diagram for explaining a first data conversion method from obtaining a Java code to a corresponding native code in the embodiment of the present invention.
  • FIG. 7 is a flowchart of a process corresponding to the data conversion method of FIG.
  • FIG. 8 is a diagram for explaining a second data conversion method from obtaining a Java code to obtaining a corresponding native code in the embodiment of the present invention.
  • FIG. 9 is a flowchart of a process corresponding to the data conversion method of FIG. BEST MODE FOR CARRYING OUT THE INVENTION
  • FIG. 1 shows a schematic configuration of a communication system to which the present invention is applied.
  • a mobile phone 1OA and a portable information terminal (PDA) 10B are shown as examples of mobile communication terminal devices.
  • the mobile communication terminal device to which the present invention is applied is not limited to these, but can be applied to any similar terminal device that downloads an intermediate code from a communication network and performs native compilation.
  • these terminal devices are collectively referred to as a mobile communication terminal device 10 (hereinafter, also simply referred to as a mobile communication terminal).
  • the mobile communication terminal 10 is connected to a mobile phone network 17 via a base station 15, and further connected to a communication network such as the Internet 19 via a gateway (GZW) 18.
  • Servers 20 of various sites are connected to the Internet 19, and the mobile communication terminal 10 accesses the server 20 and transmits a desired application program such as a Java application from the intermediate code. Can be downloaded in the form of.
  • FIG. 2 shows an example of a schematic hardware configuration of the mobile communication terminal 10.
  • the mobile communication terminal 100 has a CPU 100 that controls the entire terminal.
  • CPU 100 is ROM 101, RAM 102, flash memory 103, wireless communication controller 104, liquid crystal display 111, touch panel 112, input interface 113, And the voice control unit 117.
  • the ROM 101 is a nonvolatile read-only memory storing various programs executed by the CPU 100 and fixed data.
  • the RAMI 02 is a writable memory that provides a work area for the CPU 100 and a temporary storage area for data.
  • the flash memory 103 is a rewritable memory that stores additional application programs and various data in a nonvolatile manner.
  • the wireless communication control unit 104 is a unit that performs wireless communication (transmission and reception) of voice and data with the base station 15 via the antenna 105.
  • the liquid crystal display 111 constitutes a display unit having a display screen.
  • the touch panel 1 1 2 is an input device that is normally arranged on the display screen and detects a contact position of a stick or a finger on the screen. However, this touch panel is not an essential element in the present invention.
  • the input interface unit 113 is a unit that receives a user's input operation of the dial button 114 or the cursor key 115 of the operation unit of the mobile communication terminal.
  • the audio control unit 117 is a part to which the microphone 118 and the speaker 119 are connected, and controls the input and output of audio.
  • FIG. 3 shows a schematic hardware configuration example of the server 20.
  • the server 20 has a CPU 200 that controls the entire server.
  • CPU 200 is connected to memory 201, network interface unit 202, display unit 204, input unit 205, and external storage device 206.
  • the memory 201 may include the above-described ROM, RAM, flash memory, and the like.
  • the network interface unit 202 is a unit that connects to a communication network such as the Internet 19.
  • the display unit 204 is an arbitrary display device, and the input unit 205 is an input device such as a keyboard.
  • the external storage device 206 is a large-capacity storage device such as a hard disk device.
  • the program to be downloaded is the bytecode (intermediate code) of the Java application program.
  • the application program targeted by the present invention is not limited to JaVa, but can be applied to any program having a similar intermediate code, for example, C #.
  • a JaVa application program usually consists of multiple classes.
  • a class is the smallest unit of execution of a J a V a, and usually has multiple methods and fields. (Variables). Methods define behavior, and fields define data.
  • Figure 4 shows two examples of the source code of the class of the Java application.
  • Class A describes the process of calling the print method of class B (ClassB) and passing the character string "He1 1 o”
  • class B describes the process of displaying the character string. ing. Therefore, when the intermediate code of class A is natively compiled, it is necessary to verify whether other classes and methods referenced by class A exist, and so on. This is to prevent a situation in which the program becomes unexecutable when the native code is compiled and executed.
  • Figure 5 shows an example of external reference information for classes A and B in Figure 4.
  • Figure 5 (a) shows the information that Class A shows to the outside
  • Figure 5 (b) shows the information that Class B shows to the outside.
  • the information that a certain class shows to the outside is the external reference information used by another class, including its class name, super class name, method information, etc.
  • the method information includes the method number, method name, access restriction, argument information and return value information of each method included in the class.
  • FIG. 6 illustrates a first data conversion method from the JaVa source code to the corresponding native code in the present embodiment.
  • the process of obtaining the Java code 41, which is the intermediate code, by JaVa compilation (byte code, decompile) from the Java code is the same as before.
  • the server uses the Java bytecode 41
  • the download data 42a including the section reference information is generated.
  • this native compilation pre-processing is referred to as native compilation.
  • external reference information necessary for native compilation of the class is added as a header for each class. That is, to the byte code block 431 corresponding to a certain class, a header 421, which is a set of external reference information on the class referred to by the class, is added.
  • the information that a class is showing to the outside need not be included in the header of that class.
  • the header 4 2 2 to be added to the byte code block 4 3 2 includes the header 4 2 1 of the previously transmitted pipe code block 4 3 1 Can be omitted.
  • the header 4 2 3 to be added to the byte code block 4 3 3 is included in the headers 4 2 1 and 4 2 2 of the byte code blocks 4 3 1 and 4 3 2 transmitted earlier. External reference information can be omitted. In this way, the total information amount of the header can be reduced. For classes that do not reference other classes at all, there is no need to add a header to the bytecode block.
  • the download data 42 a having such a configuration is received on the mobile communication terminal side, and native compilation is performed in the order of reception for each block of the JaVa bytecode in class units.
  • each of the pipe code blocks 431, 432, and 433 uses the external reference information in the respective headers 421, 4222, and 423 and the previously received one.
  • the external reference information added for each class is added as a header to the head of each byte code block. This is preferable because it is necessary to prepare external reference information at an early stage, but it is not necessarily limited to this. For example, a suitable effect can be obtained by adding it to the end of each byte code block (as a footer) or dispersing it inside the unit block.
  • FIG. 7 shows a flowchart of a process corresponding to the data conversion method of FIG.
  • the first half of this processing corresponds to the processing of the server 20 and the second half corresponds to the processing of the mobile communication terminal 10.
  • the intermediate code of the specified application program is sent from the server. It is assumed that the message is transmitted to a mobile communication terminal.
  • the server 20 converts the source program 40 to be transmitted into an intermediate code (JaVa pipe code) 41 using a bytecode compiler (S1). That is, the source code is tokenized (S 11), its horns are separated (S 12), and the intermediate code is generated (S 13).
  • the server 20 further performs a primitive compilation on the intermediate code 41 (s2). Specifically, external reference information relating to the reference of another block is collected for each block (here, class) (S14), and this external reference information is added to each block as a header (S15).
  • the download data 42a is prepared, and the download data 42a is sequentially transmitted to the mobile communication terminal in units of blocks via the communication network.
  • the mobile communication terminal sequentially receives the download data 42a in units of blocks (S3), and temporarily stores it in the reception cache memory 51.
  • the reception cache memory 51 is provided, for example, in the RAM 102 (FIG. 2).
  • the mobile communication terminal extracts the intermediate code in the reception cache memory 51 for each unit block 43 and performs native compilation processing (S4). . That is, the intermediate code is converted into a CPU-dependent native code while referring to necessary external reference information. More specifically, this native compilation checks the validity of reference to other classes (S16), generates native code (S17), and optimizes (S17). 18). Checking the validity of a class reference is based on the external reference information as shown in Fig.
  • a native code block 44 is obtained by native compilation for each block. These native code blocks 44 are stored in a code cache memory 52 (in RAM 102). The mobile communication terminal then links these native code blocks 44 and stores them in a native code storage unit 53 as native code 45 to be executed. As the native code storage unit 53, a RAM 102 or a flash memory 103 can be used. When the native code is stored in a nonvolatile manner, the latter is used. The native code obtained in this way is stored in the execution memory 54 (in RAM 102) and executed by the CPU.
  • FIG. 8 is a diagram for explaining the second data conversion; Parts corresponding to those in FIG. 6 are denoted by the same reference numerals.
  • the difference from the first data conversion method in Fig. 6 is that in the first data conversion method, the class code and the external reference information required for the class are grouped into blocks for each class.
  • a set of external reference information required for all classes is collected (concentrated) in one external reference information file 46.
  • This external reference information file 46 is a set of information (FIGS. 5 (a) and 5 (b)) that each class shows to the outside without duplication.
  • the external reference information file 46 is first transmitted at the time of download, prior to the pite code block when transmitted from the server to the mobile communication terminal.
  • the external reference information file 46 when performing native compilation on mobile communication terminals. By doing so, the information necessary for native compilation can be obtained for the class at the discrepancy. Note that the external reference information file 46 does not necessarily need to include the information that each class shows to the outside for all classes. That is, there is no need to include that information for classes that are not referenced by other classes. Also, it is not always necessary to use the file format, and it is sufficient that substantially equivalent data included in the file is attached to the bytecode.
  • FIG. 9 shows a flowchart of a process corresponding to the data conversion method of FIG. This process is similar to the first process in FIG. 7, and the differences will be mainly described.
  • the difference is the contents of the primitive compilation process S2 in the server and the native compilation process S4 in the mobile communication terminal.
  • precompile process S2 external reference information about other block references is collected for each block (here, class) (S24), and this external reference information is collectively externally referenced.
  • An information file 46 is generated (S25).
  • the native compile process S4 in the mobile communication terminal is the same as the native compile process S4 in FIG. 7, except that the native compile process is performed with reference to the external reference information file 46.
  • the external reference information required for that class is stored in the external reference information file 4 received first. 6 so that native compilation can be performed immediately.
  • Native compilation starts after the first pitecode block has been received, but may start before the first pitecode block has been received.
  • the external reference information file may be compressed at the time of transmission and decompressed at the receiving end for use.
  • the present invention has the most remarkable effect in the above-described wireless communication network, but can be widely applied to downloading of intermediate codes on a communication network including a wired communication network.
  • the present invention is not limited to downloading intermediate codes from a server to a client terminal, but can also be applied to intermediate code transfer between terminals.
  • the external reference information is generated by the server in a prenative compile process and transmitted together with the intermediate code, so that the mobile communication terminal device can obtain the external reference information before the intermediate code is completely received.
  • the present invention is suitable for application to a communication system having a relatively low communication speed.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Stored Programmes (AREA)

Abstract

 中間コードのダウンロード処理と並行してネイティブコンパイル処理を行うことにより実行待ち時間を短縮する方法およびシステムを提供する。サーバ(20)は、移動体通信端末(10)がネイティブコンパイルを行う際に必要となる各中間コードの単位ブロックが参照する他の単位ブロックの属性情報からなる外部参照情報をヘッダとして付加したダウンロードデータ42aを生成する。移動体通信端末(10)は、サーバからの全中間コードの受信完了前に、受信済みの単位ブロックについてネイティブコンパイル処理を開始する。ある単位ブロックのネイティブコンパイル時に当該単位ブロックに関連した受信済みの外部参照情報を参照して当該単位ブロックのネイティブコンパイルを行う。サーバ(20)は、各クラスのネイティブコンパイルに必要な外部参照情報はまとめて一組の外部参照情報として、中間コードの全ブロックに先だって送信してもよい。

Description

明 細 書
ネィティプコンパイル方法、 ネィティプコンパィル前処理方法、 コンピュータプログラム、 およびサーバ 技術分野
本発明は、サーバおよび移動体通信端末装置からなる通信システムに関し、特に、 ネイティブコンパイル前処理方法、 ネイティブコンパイル方法、 コンピュータプロ グラム、 およびサーバに関する。 背景技術
近年、 携帯電話機等の移動体通信端末装置において、 インターネットなどのネッ トワークを介してサーバからアプリケーションプログラムを取得し、 移動体通信端 末装置においてアブリーションプログラムを実行することにより、 装置に新たな機 能を追加できるようになつてき'ている。
このようなアプリケーションプログラムとして、 J a v a (登録商標) 言語で書 かれたプログラム (ソースコード) はコンパイルされてバイトコードと呼ばれる中 間コードに変換される。 バイトコードは、 個々の計算機の C P Uが直接実行するの ではなく、ソフトウエアで作られた計算エンジンである仮想計算機により実行され、 また、 特定のハードウェアや O S (Operating System)に依存せず、 比較的サイズが 小さいため、 ネットワーク上でプログラムを配布するのに適している。 し力 し、 仮 想計算機での実行形式はインタープリタ (ソフトウェア) により逐次解析実行され るものであり、 その実行速度が遅いという問題がある。
これに対して、 C P Uが直接実行できるコードはネイティブコード (機械語) と 呼ばれ、 その実行速度はインタープリタによる実行速度に比べて格段に速い。 移動 体通信端末装置の C P Uの実行速度を有効に利用するには、 パイトコードをネィテ イブコードに変換するいわゆるネイティブコンパイルを行う必要がある。
ネイティブコンパイルをサーバにおいて実行し、 その結果として得られたネィテ イブコードを移動体通信端末装置に送信する方法も考えられるが、 ネイティブコー ドは移動体通信端末装置の機種 (主として C P Uや O Sの種類) 毎に異なる可能性 があり、 機種の種類は将来的に増加していくため、 サーバ側での機種毎のネィティ ブコンパイルの実行おょぴネイティブコードの管理は負担が大きい。 そこで、 ネィ ティブコンパィルは移動体通信端末装置側で担当することが望ましい。
し力 し、 移動体通信端末装置におけるネイティブコードコンパイルには時間がか かるため、 その処理が完了するまでプログラムを実行することができない。 従来、 ネイティブコンパイルに要する時間を短縮する手法として J I T (Just In Time) コンパイラというものが知られている (例えば特開 2 0 0 2 - 2 1 5 4 1 1号公報 参照)。 J I Tコンパイラは、アプリケーションの実行時にパイトコードをネィティ プコードに変換し、 C P Uに直接実行させるものである。 プログラム実行の 1回目 は、 バイトコードをネイティブコードにコンパイルして実行するが、 2回目以降は メモリ内に保存されたネイティブコードを直接実行することにより、 実行効率が向 上する。 これにより、 J a V aアプリケーションを高速で実行させることが可能と なる。 但し、 J I Tコンパイラの実行は、 1回目のプログラム実行時に行うため、 プログラム実行開始まで待ち時間が必要になることは回避できな!/、。
一方、 現状で移動体通信端末装置が利用できるデータ通信速度は比較的遅い。 携 帯電話パケット網のような無線通信は、 光通信網、 AD S L網などのブロードバン ド通信網に比べてデータ転送速度が著しく低い。 近年、 携帯電話機に搭載される C P Uの高速化が進んでいるが、 それに比べて無線通信網のデータ転送速度は低速な ままである。 したがって、 あるアプリケーションプログラムの全バイトコードを受 信するのに相応の時間を要し、 さらに、 C P Uが高速ィ匕したとはいえ、 このバイト コードをネイティブコンパイルするのにも相応の時間を要する。 そのため、 通信を 開始してから当該アプリケーションプログラムを実行開始するまでの時間が長いと いう問題があった。
特開 2 0 0 0— 4 0 0 0 7号公報には、 J ARファイル (複数のクラスファイル を 1つのファイルに圧縮したもの) の受信と同時にアプリケーションを起 »し、 受 信処理とアプリケーション処理を並行して行うことにより、 アプリケーション起動 時のユーザの待ち時間を短縮する技術が開示されている。
しかしながら、 この技術は中間コ一ドをィンタープリタにより実行するものであ り、 ネイティブコードによるアプリケーションの実行ではない。 また、 ネイティブ コンパイルの場合、 すべてのバイトコードが受信されなければ、 コンパイル処理を 開始することができない。 なぜなら、 通常、 あるクラスのコンパイル時にそのクラ スが他のクラスを参照している場合には、 そのクラスの存在およびそのクラス内の 特定のメソッドゃフィールドの存在を確認する必要があるからである。 このため、 ネィティブコンパイルを中間コードのダウンロード処理と並行して実行するにして も、 参照先のクラスが未受信の場合にはそのクラスが受信されるまで当該クラスの コンパイル処理を保留しなければならない。 アプリケーションの実行開始はさらに このコンパイル処理の終了後となる。 その結果、 受信直後のアプリケーションの実 行に相当の待ち時間を要するという問題があった。
本発明はこのような背景においてなされたものであり、 その目的は、 中間コード のダウンロード処理と並行してネイティブコンパイル処理を行うことにより実行待 ち時間を短縮することができる通信システム、 ネイティブコンパイル前処理方法、 ネイティブコンパイル方法、 コンピュータプログラム、 およびサーバを提供するこ とにある。 発明の開示
本発明によるネイティブコンパイル方法は、 移動体通信端末装置において、 O S に依存しない中間コードをネイティブコードへ変換するネイティブコンパィル方法 であって、 各単位プロックの中間コードをネイティブコードへ変換する際に当該単 位プロックが参照する他の単位プロックの属性情報からなる外部参照情報が付加さ れた単位プロックの中間コードを、 無線通信網を介してプロック単位に順次受信す るステップと、 全ての中間コードの受信完了前に、 受信済みの単位ブロックの中間 コードをネイティブコードへ変換するネイティブコンパイル処理を開始するステツ プと、 ある単位ブロックの中間コードをネイティブコードへ変換する際に当該単位 ブロックに関連した受信済みの外部参照情報を参照して当該単位プロックのネィテ イブコンパイル処理を行うステップとを備えたことを特徴とする。
移動体通信端末装置は、 全ての中間コードの受信完了前に、 受信済みめ単位プロ ックの中間コードについてネイティブコンパイル処理を開始する。 これに際して、 当該単位プロックが参照する他の単位プロックの属性情報からなる外部参照情報は 当該単位ブロックとともに受信されているので、 直ちにネイティブコンパイルを開 始することに支障はない。 なお、 本明細書において 「無線通信網を介して」 とは、 無線通信網のみを経由することを意味するものではなく、 無線通信網のみならず有 線通信網をも経由してもよい。
よって、 ネイティブコンパイルに要する時間を、 中間コードのダウンロード時間 の全部または一部に吸収させることができる。 すなわち、 アプリケーションのダウ ンロードと並行して、 C P Uの空き時間を利用し、 ネイティブコードへの変換を行 うことができる。 その結果として、 起動時にコンパイルを行う場合に比べてアプリ ケーションの実行待ち時間を大幅に短縮することができる。
本発明による他のネイティブコンパイル方法は、 移動体通信端末装置において、 O Sに依存しなレ、中間コードを外部から受信しながらネイティブコードへ変換する ネイティブコンパィル方法であって、 各単位ブロックの中間コードをネイティブコ 一ドへ変換する際に当該単位プロックが参照する他の単位プロックの属性情報をま とめた一組の外部参照情報に続いて複数の単位プロックの中間コードを、 無線通信 網を介して受信するステップと、 全ての中間コードの受信完了前に、 受信済みの単 位ブロックの中間コードをネイティブコードへ変換するネイティブコンパイル処理 を開始するステップと、 ある単位ブロックの中間コードをネイティブコードへ変換 する際に当該単位プロックに関連した受信済みの外部参照情報を参照して当該単位 プロックのネイティブコンパイル処理を行うステップとを備えたことを特徴とする。 この方法では、 各単位ブロックとともに外部参照情報を受信するのではなく、 複数 の単位ブロックに先だって一組の外部参照情報を受信する。 この場合にも、 アプリ ケーシヨンのダウンロードと並行して、 C P Uの空き時間を利用し、 ネイティブコ 一ドへの変換を行うことができる。
本発明によるネイティブコンパイル前処理方法は、 サーバにぉ 、て O Sに依存し ない中間コードをネットワーク経由で移動体通信端末装置へ送信する際のネィティ ブコンパイル前処理方法であって、 ソースプログラムを単位ブロック毎の中間コー ドに変換するステップと、 各単位プロックの中間コードをネイティブコードへ変換 する際に当該単位プロックが参照する他の単位プロックの属性情報を外部参照情報 として収集するステップと、 収集された外部参照情報を当該各単位ブロックに付加 するステップと、 前記外部参照情報が付加された各単位プロックを前記移動体通信 端末装置へ、 無線通信網を介して順次送信するステップとを備えたことを特徴とす る。
この方法では、サーバは、収集された外部参照情報を各単位ブロックに付加して、 移動体通信端末装置へ、 無線通信網を介して順次送信する。 この場合、 ある単位ブ 口ックに付加すべき外部参照情報が先に送信される単位プロックに付加される外部 参照情報と同じであるとき、 後に送信される単位プロックに対する当該同じ外部参 照情報の付加を省略することができる。 これにより、 送信データ量が軽減される。 本発明による他のネィティプコンパィル前処理方法は、 サーバにおいて O Sに依 存しない中間コードをネットワーク経由で移動体通信端末装置へ送信する際のネィ ティブコンパィル前処理方法であって、 ソースプログラムを単位ブロック毎の中間 コードに変換するステップと、 各単位プロックの中間コードをネイティブコードへ 変換する際に当該単位プロックが参照する他の単位プロックの属性情報を外部参照 情報として収集するステップと、 収集された一組の外部参照情報に続けて複数の単 位プロックを前記移動体通信端末装置へ、 無線通信網を介して順次送信するステツ プとを備えたことを特徴とする。
この方法では、収集された外部参照情報を各単位プロックに付加するのではなく、 収集された外部参照情報をまとめて一組の外部参照情報として前記複数の単位プロ ックより先に送信する。
本発明は、 各ネイティブコンパイル方法の各ステップを実行するするコンビユー タプログラムとして把握することもできる。
本発明によるサーバは > O Sに依存しない中間コードをネットワーク経由で移動 体通信端末装置へ送信する際のネイティブコンパイル前処理を行うサーバであって、 ソースプログラムを単位ブロック毎の中間コードに変換する手段と、 各単位プロッ クの中間コードをネイティブコードへ変換する際に当該単位ブロックが参照する他 の単位プロックの属性情報を外部参照情報として収集する手段と、 収集された外部 参照情報を当該各単位プロックに付加する手段と、 前記外部参照情報が付加された 各単位プロックを前記移動体通信端末装置へ、 無線通信網を介して順次送信する手 段とを備えたことを特徴とする。 このサーバの機能は、 前述した第 1のネイティブ コンパイル前処理方法について説明したとおりである。
本発明による他のサーバは、 O Sに依存しない中間コードをネットワーク経由で 移動体通信端末装置へ送信する際のネィティブコンパイル前処理を行うサーバであ つて、 ソースプログラムを単位ブロック毎の中間コードに変換する手段と、 各単位 プロックの中間コードをネイティブコードへ変換する際に当該単位プロックが参照 する他の単位ブロックの属性情報を外部参照情報として収集する手段と、 収集され た一組の外部参照情報に続けて複数の単位プロックを前記移動体通信端末装置へ、 無線通信網を介して順次送信する手段とを備えたことを特徴とする。 このサーバの 機能は、 前述した第 2のネィティブコンパイル前処理方法について説明したとおり である。
本発明は、 さらに、 上記ネイティブコンパイル前処理方法を実行するサーバとこ のサーバから O Sに依存しない中間コードを通信ネットワーク経由で受信してネィ ティブコンパイル処理を実行する移動体通信端末装置とを備えた通信システムとし て把握することも可能である。 図面の簡単な説明
図 1は、 本発明が適用される通信システムの概略構成を示す図である。
図 2は、 図 1内に示した移動体通信端末の概略のハードウエア構成例を示すプロ ック図である。
図 3は、 図 1内に示したサーバの概略のハードウエア構成例を示すプロック図で ある。
図 4は、 J a v aアプリケーションのクラスのソースコードの例を二つ示す図で ある α
図 5は、 図 4のクラス A, Bについての外部参照情報の例を示す図である。
図 6は、 本発明の実施の形態において J a V aソースコードから、 これに対応す るネイティブコードを得るまでの第 1のデータ変換方法を説明するための図である。 図 7は、 図 6のデータ変換方法に対応した処理のフローチャートである。
図 8は、 本発明の実施の形態において J a V aソースコードから、 これに対応す るネイティブコードを得るまでの第 2のデータ変換方法を説明するための図である。 図 9は、 図 8のデ一夕変換方法に対応した処理のフローチヤ一トである。 発明を実施するための最良の形態
以下、 本発明の実施の形態について、 図面を参照して詳細に説明する。
図 1に、 本発明が適用される通信システムの概略構成を示す。 図では移動体通信 端末装置の例として、 携帯電話機 1 O Aおよび携帯情報端末 ( P D A) 1 0 Bを示 している。 本発明が適用される移動体通信端末装置はこれらに限るものではなく、 通信ネットワークからの中間コードのダウンロードおよびネイティブコンパイルを 行う任意の同様の端末装置に適用可能である。 本明細書では、 これらの端末装置を 総称して移動体通信端末装置 1 0という (以下、単に移動体通信端末ともいう)。移 動体通信端末 1 0は基地局 1 5を介して携帯電話網 1 7に接続され、 さらに、 ゲー トウヱイ (GZW) 1 8を介して、 インターネット 1 9のような通信ネットワーク に接続される。インターネット 1 9には各種サイトのサーバ 2 0が接続されており、 移動体通信端末 1 0はサーバ 2 0にアクセスして、 ここから J a V aアプリケーシ ヨンのような所望のアプリケーションプログラムを中間コードの形式でダウンロー ドすることができる。
図 2は移動体通信端末 1 0の概略のハードゥエァ構成例を示す。 移動体通信端末 1 0は、 端末全体を制御する C P U 1 0 0を有する。 C P U 1 0 0は、 R OM 1 0 1、 R AM I 0 2、 フラッシュメモリ 1 0 3、 無線通信制御部 1 0 4、 液晶ディス プレイ 1 1 1、 タツチパネル 1 1 2、 入力インタフェース 1 1 3、 および音声制御 部 1 1 7に接続される。 ROM1 0 1は、 CPU1 00の実行する各種プログラムおよび固定的なデータ を格納した不揮発性の読み出し専用メモリである。 RAMI 02は、 CPU 1 00 の作業領域およぴデータの一時記憶領域を提供する書き込み可能なメモリである。 フラッシュメモリ 1 03は、 追加的なアプリケーションプログラムや各種データを 不揮発的に記憶する再書き込み可能なメモリである。 無線通信制御部 1 04は、 ァ ンテナ 1 05を介して基地局 1 5との間で音声およびデータの無線通信 (送受信) を行う部位である。液晶ディスプレイ 1 1 1は表示画面を有する表示部を構成する。 タツチパネル 1 1 2は通常表示画面に重ねて配置され、 画面に対するスティックや 指などの接触位置を検知するための入力デバイスである。 但し、 このタツチパネル は本発明において必須の要素ではない。 入力インタフェース部 1 1 3は、 ユーザに よる移動体通信端末の操作部のダイヤルポタン 1 1 4やカーソルキー 1 1 5の入力 操作を受け付ける部位である。 音声制御部 1 1 7は、 マイク 1 1 8およびスピーカ 1 1 9が接続され、 音声の入出力を制御する部位である。
図 3にサーバ 20の概略のハードウェア構成例を示す。 サーバ 20は、 このサー パ全体を制御する CPU200を有する。 CPU200は、 メモリ 20 1、 ネット ワークインタフェース部 202、 表示部 204、 入力部 20 5および外部記憶装置 206に接続される。 メモリ 20 1は前述した ROM, RAM, フラッシュメモリ 等を含みうる。 ネットワークインタフェース部 202は、 インターネット 1 9のよ うな通信ネットワークとの接続を行う部位である。 表示部 204は任意のディスプ レイ装置であり、 入力部 205はキーポード等の入力装置である。 外部記憶装置 2 06は、 ハードディスク装置等の大容量の記憶装置である。
以下、 本システムの動作を説明する。 本実施の形態においてダウンロード対象と なるプログラムは、 J a V aアプリケーションプログラムのバイトコード (中間コ ード) である。 但し、 本発明の対象となるアプリケーションプログラムは J a V a に限るものではなく、同様の中間コードを有する任意のプログラム、例えば C#等、 にも適用可能である。
J a V aアプリケーションプログラムは、 通常、 複数のクラスで構成される。 ク ラスは J a V aの実行の最小単位であり、 通常、 複数のメソッドおよびフィールド (変数) を含む。 メソッドは動作を定義し、 フィールドはデータを定めるものであ る。 図 4に J a V aアプリケーションのクラスのソースコードの例を二つ示す。 ク ラス A (ClassA) は、 クラス B (ClassB)の p r i n tメソッドを呼び出して" H e 1 1 o " という文字列を渡す処理を記述し、 クラス Bは、 その文字列を表示する処理 を記述している。 したがって、 クラス Aの中間コードをネイティブコンパィノレする 際には、 クラス Aが参照している他のクラスやメソッドが実在するかどう力、 等を 検証する必要がある。 これは、 コンパイル後のネイティブコードの実行時に当該プ ログラムが実行不能となるような事態を予め回避するためである。
したがって、 あるクラスの中間コードのネイティブコンパイル時にはそのクラス が参照しているクラスの情報が必要となる。 この場合、 当該参照先のクラスが既に ダウンロードされていれば足りるが、 通信が完了する前にコンパイルを開始してい るのでそのクラスがダウンロードされているとは限らない。ここで留意すべき点は、 ネイティブコンパイルに必要なのはその参照先のクラス全体ではなくそのクラスの 属性的な情報のみで足りるということである。 このような属性情報を本明細書では 外部参照情報という。 本発明では、 各クラスのパイトコードのネイティブコンパィ ルの際には、 後述するように、 少なくともそのクラスが参照しているクラスの外部 参照情報が既に得られている状態とする。
図 5に、 図 4のクラス A, Bについての外部参照情報の例を示す。 図 5 ( a ) は クラス Aが外部に見せている情報を示し、 図 5 ( b ) はクラス Bが外部に見せてい る情報を示している。 あるクラスが外部に見せている情報は他のクラスが利用する 外部参照情報であり、 そのクラス名、 スーパークラス名、 メソッド情報、等を含む。 メソッド情報は、 当該クラスに含まれる各メソッドのメソッド番号、 メソッド名、 アクセス制限、 引数の情報および戻り値の情報、 等を含む。
図 6に、 本実施の形態において J a V aソースコードから、 これに対応するネィ ティブコードを得るまでの第 1のデータ変換方法を説明する。
J a V aソースコードから J a V aコンパイル (バイ トコ一,ドコンパイル) によ り、 その中間コードである J a v aパイトコード 4 1を得る処理は従来どおりであ る。 本実施の形態では、 サーバにおいて、 この J a v aバイトコード 4 1から、 外 部参照情報を含んだダウンロードデータ 4 2 aを生成する。 本明細書ではこのネィ ティブコンパイル前処理をプレネィティプコンパイルと呼ぶ。 この例でのダゥンロ ードデータ 4 2 aは、 クラス単位に、 そのクラスのネイティブコンパイルに必要な 外部参照情報がヘッダとして付加される。 すなわち、 あるクラスに対応したバイト コードプロック 4 3 1には、 そのクラスが参照しているクラスについての外部参照 情報の集合であるヘッダ 4 2 1が付加される。 あるクラスが外部に見せている情報 自体はそのクラスのヘッダに含める必要はなレ、。 パイトコードブロック 4 3 2, 4
3 3についても同様である。
但し、 クラスの送信順序は予め分かっているので、 先にダウンロードされるクラ スについてのヘッダに含まれていると同じ外部参照情報を後のクラスについて必要 とする場合には後の方の外部参照情報の付加を省略することができる。 例えば、 移 動体通信端末によるダウンロード時に、 サーバからバイトコードブロック 4 3 1,
4 3 2 , 4 3 3の順に送信が行われるとすると、 バイトコードブロック 4 3 2に付 加すべきヘッダ 4 2 2においては、 先に送信されるパイトコードブロック 4 3 1の ヘッダ 4 2 1に含まれている外部参照情報は省略することができる。 同様に、 バイ トコードブロック 4 3 3に付加すべきヘッダ 4 2 3においては、 先に送信されるパ イトコードプロック 4 3 1, 4 3 2のヘッダ 4 2 1, 4 2 2に含まれている外部参 照情報は省略することができる。 このようにして、 ヘッダの総情報量を低減するこ とができる。 他のクラスを全く参照しないクラスについてはそのバイトコードブロ ックにヘッダを付力 Πする必要はない。
このような構成のダウンロードデータ 4 2 aは、 移動体通信端末側で受信され、 J a V aバイトコードのクラス単位のブロックごとにその受信順にネイティブコン パイルが行われる。 あるクラスのパイトコードブロックの受信完了時にはそのクラ スのネィティブコンパイルに必要な情報はすべて揃つているので、 直ちにネィティ ブコンパイルを実行することができる。すなわち、各パイトコードブロック 4 3 1, 4 3 2 , 4 3 3はそれぞれのヘッダ 4 2 1 , 4 2 2 , 4 2 3内の外部参照情報およ び先に受信済みのものを利用してネイティブコンパイルを行い、 ネイティブコード 4 4 1 , 4 4 2 , 4 4 3を生成する。 また、 本実施の形態では、 クラス単位に付加する外部参照情報をヘッダとして各 バイトコ一ドプロックの先頭に付加するようにした。 これは早期に、 必要が外部参 照情報を用意するという点で好ましいが、必ずしもこれに限定されるものではない。 例えば、 各バイトコ一ドプロックの最後に (フッタとして) 付加したり、 単位ブロ ック内部に分散して付カ卩しても、 相応の効果は得られる。
図 7は、 図 6のデータ変換方法に対応した処理のフローチャートを示している。 この処理の前半はサーバ 2 0の処理に対応し、 後半は移動体通信端末 1 0の処理に 対応している。 ここでは、 典型的な例として、 サーバにあるデータベースに登録さ れたアプリケ一ンョンプログラムに対する移動体通信端末 1 0からのダウンロード 要求に基づいて、 指示されたアプリケーションプログラムの中間コードがサーバか ら移動体通信端末に送信される場合を想定している。
まず、 サーバ 2 0は、 送信対象のソースプログラム 4 0をバイトコードコンパィ ラにより中間コード (J a V aパイトコード) 4 1に変換する (S 1 )。 すなわち、 ソースコードのトークン化 (S l l )、 その角翠析 (S 1 2 )、 および中間コードの生 成 (S 1 3 ) を行う。 サーバ 2 0は、 この中間コード 4 1に対してさらにプレネィ ティブコンパイルを行う (s 2 )。 具体的には、 ブロック (ここではクラス) 毎に他 のブロックの参照に関する外部参照情報を収集し(S 1 4 )、 この外部参照情報を各 ブロックにヘッダとして付加する (S 1 5 )。 このようにして上記ダウンロードデー タ 4 2 aが用意され、 このダウンロードデータ 4 2 aは通信ネットワークを介して プロック単位に順次移動体通信端末に送信される。
移動体通信端末は、 ダウンロードデータ 4 2 aをプロック単位に順次受信し (S 3 )、一旦、受信キャッシュメモリ 5 1に格納する。 この受信キャッシュメモリ 5 1 は例えば R AM I 0 2 (図 2 ) 内に設けられる。 移動体通信端末は、 最初の中間コ ード単位プロックの受信完了後、 直ちに、 受信キャッシュメモリ 5 1内の中間コー ドを単位プロック 4 3毎に取り出して、ネイティブコンパイル処理を行う (S 4 )。 すなわち、 必要な外部参照情報を参照しながら中間コードを C P U依存のネィティ プコードに変換する。 より具体的には、 このネイティブコンパイルは、 他クラス参 照の正当性のチェック (S 1 6 )、 ネイティブコードの生成 (S 1 7 ) と最適化 (S 1 8 ) とからなる。 クラス参照の正当性のチェックは、 図 5に示したような外部参 照情報を基に、 あるクラスから他のクラスを参照する場合に参照先の適正な情報が 確かに存在すること、 およびアクセス制限が適正であること、 等を事前に確認する 処理である。 最適化は必ずしも行う必要はない。 ブロック毎のネイティブコンパィ ルによりネイティブコードブロック 4 4が得られる。 これらのネイティブコードプ ロック 4 4は、一且コ一ドキャッシュメモリ 5 2 (R AM I 0 2内) に保存される。 移動体通信端末は、ついで、これらのネイティブコードブロック 4 4をリンクして、 実行対象のネィティプコード 4 5としてネィティプコード格納部 5 3·に格納する。 ネイティブコード格納部 5 3としては、 R AM I 0 2またはフラッシュメモリ 1 0 3を用いうる。 ネイティブコードを不揮発的に保存する場合には後者を用いる。 こ のようにして得られたネイティブコードは実行メモリ 5 4 (R AM I 0 2内) に口 ードされ、 C P Uにより実行される。
図 6, 図 7で説明した第 1のデータ変換方法では、 各クラスのバイトコードプロ ックのネイティブコンパイル時には、 そのクラスで必要とされる外部参照情報はそ のブロックのヘッダとして既に受信されているので、 直ちにネイティブコンパイル の実行が可能である。
次に、 本実施の形態において J a V aソースコードから、 これに対応するネィテ イブコードを得るまでの第 2のデータ変換方法について説明する。
図 8は、 この第 2のデータ変換;^法を説明するための図である。 図 6と対応する 部分には、同じ参照符号を付してある。図 6の第 1のデータ変換方法と異なる点は、 第 1のデータ変換方法では各クラス単位に、 クラスのパイトコードとそのクラスに 必要な外部参照情報とを組にしてブロック化した (分散して配置した) が、 第 2の データ変換方法では全クラスに必要な一組の外部参照情報を一つの外部参照情報フ アイル 4 6にまとめた (集中させた) 点にある。 この外部参照情報ファイル 4 6は、 各クラスが外部に見せている情報 (図 5 ( a ) ( b ) ) が重複無く一組にまとめられ たものである。 外部参照情報ファイル 4 6は、 ダウンロード時に、 サーバから移動 体通信端末への送信の際にパイトコードブロックに先立って最初に送信される。 移 動体通信端末でのネィティプコンパイル時にはこの外部参照情報フアイル 4 6を参 照することにより、 レヽずれのクラスについてもそのネイティブコンパイルに必要な 情報が得られる。 なお、 外部参照情報ファイル 4 6は、 必ずしも全クラスについて 各クラスが外部に見せている情報を含む必要はない。 すなわち、 他のクラスから参 照されないクラスについてはその情報を含める必要はない。 また、 必ずしもフアイ ルの形式とする必要はなく、 ファイルに含まれる実質的に等価なデータがバイトコ 一ドに添付されれば足りる。
図 9は、 図 8のデータ変換方法に対応した処理のフローチャートを示している。 この処理は図 7の第 1の処理と類似しており、 その相違点について主に説明する。 相違点は、 サーバにおけるプレネィティブコンパイル処理 S 2、 および移動体通信 端末におけるネイティブコンパイル処理 S 4の内容である。 すなわち、 サーバのプ レネイティブコンパイル処理 S 2では、 ブロック (ここではクラス) 毎に他のブロ ックめ参照に関する外部参照情報を収集し(S 2 4 )、 この外部参照情報をまとめて 外部参照情報フアイル 4 6を生成する ( S 2 5 )。
移動体通信端末でのネィティブコンパイル処理 S 4では、 外部参照情報ファイル 4 6を参照しながらネイティブコンパイル処理を行う以外、 図 7でのネイティブコ ンパイル処理 S 4と同じである。
図 8, 図 9で説明した第 2のデータ変換方法では、 各クラスのバイトコードプロ ックのネイティブコンパイル時には、 そのクラスで必要とされる外部参照情報は最 初に受信した外部参照情報ファイル 4 6により与えられるので、 直ちにネイティブ コンパイルの実行が可能である。
以上、 本発明の好適な実施の形態について説明したが、 請求の範囲を逸脱するこ となく、 上記で言及した以外にも種々の変形、 変更を行うことが可能である。 例えば、 単位ブロックをクラスに対応させたが、 他の単位ブロックとすることも 可能である。
ネイティブコンパイルは最初のパイトコードブロックの受信完了後に開始するよ うにしたが、 最初のパイトコードプロックの受信が完了する前に開始してもよい。 外部参照情報ファイルは送信時にデータ圧縮し、 受信側で解凍して用いるように してもよい。 また、 本発明は上記説明した無線通信網において最も顕著な効果を奏するが、 有 線通信網を含む通信網上での中間コードのダウンロードに広く適用することができ る。
さらに、 本発明はサーバからクライアント端末への中間コードのダウンロードに 限定されるものではなく、 端末間での中間コード転送に適用することもできる。 本発明によれば、 サーバにおいてプレネィティブコンパイル処理により外部参照 情報を生成してこれを中間コードとともに送信することにより、 移動体通信端末装 置側では中間コードの受信が完了する前に外部参照情報を用いてネイティブコンパ ィルを開始し、 ネイティブコンパイルに要する時間を、 中間コードのダウンロード 時間の全部または一部に吸収させることができる。 すなわち、 アプリケーションの ダウンロードと並行して、 C P Uの空き時間を利用してネイティブコードへの変換 を行うことにより、 アプリケーション起動時にコンパイルを開始する場合に比べて 実行待ち時間を短縮することができる。 産業上の利用可能性
本発明は、 比較的通信速度の遅い通信システムへ適用して好適である。

Claims

請 求 の 範 囲
1 . 移動体通信端末装置において、 O Sに依存しない中間コードをネイティブコ 一ドへ変換するネイティブコンパイル方法であって、
各単位プロックの中間コードをネイティブコードへ変換する際に当該単位プロッ クが参照する他の単位プロックの属性情報からなる外部参照情報が付加された単位 プロックの中間コードを、 無線通信網を介してプロック単位に順次受信するステツ プと、
全ての中間コードの受信完了前に、 受信済みの単位ブロックの中間コードをネィ ティブコードへ変換するネイティブコンパイル処理を開始するステップと、 ある単位ブロックの中間コードをネイティブコードへ変換する際に当該単位プロ ックに関連した受信済みの外部参照情報を参照して当該単位プロックのネィティブ コンパイル処理を行うステップと、
を備えたことを特徴とするネイティブコンパィル方法。
2 . 移動体通信端末装置において、 O Sに依存しない中間コードを外部から受信 しながらネイティブコードへ変換するネイティブコンパイル方法であって、 各単位ブロックの中間コードをネイティブコードへ変換する際に当該単位ブロッ クが参照する他の単位プロックの属性情報をまとめた一組の外部参照情報に続いて 複数の単位プロックの中間コードを、 無線通信網を介して受信するステップと、 全ての中間コードの受信完了前に、 受信済みの単位ブロックの中間コードをネィ ティブコードへ変換するネイティブコンパイル処理を開始するステップと、 ある単位プロックの中間コードをネイティブコードへ変換する際に当該単位プロ ックに関連した受信済みの外部参照情報を参照して当該単位プロックのネィティブ コンパイル処理を行うステップと、
を備えたことを特徴とするネイティブコンパイル方法。
3 . サーバにおいて O Sに依存しない中間コードをネットワーク経由で移動体通 信端末装置へ送信する際のネィティプコンパイル前処理方法であって、 ソースプログラムを単位プロック毎の中間コードに変換するステップと、 各単位プロックの中間コードをネイティブコードへ変換する際に当該単位プロッ クが参照する他の単位プロックの属性情報を外部参照情報として収集するステップ と、
収集された外部参照情報を当該各単位プロックに付加するステップと、 前記外部参照情報が付加された各単位ブロックを前記移動体通信端末装置へ、 無 線通信網を介して順次送信するステップと、
を備えたことを特徴とするネィティブコンパイル前処理方法。
4 . ある単位プロックに付加すべき外部参照情報が先に送信される単位プロック に付加される外部参照情報と同じであるとき、 後に送信される単位ブロックに対す る当該同じ外部参照情報の付加を省略することを特徴とする請求の範囲 3に記載の
'コンパイル前処理方法。
5 . サーバにおいて O Sに依存しない中間コードをネットワーク経由で移動体通 信端末装置へ送信する際のネィティブコンパイル前処理方法であって、
ソースプログラムを単位プロック毎の中間コードに変換するステツプと、 各単位ブロックの中間コードをネイティブコードへ変換する際に当該単位ブ口ッ クが参照する他の単位プロックの属性情報を外部参照情報として収集するステップ と、
収集された一組の外部参照情報に続けて複数の単位プロックを前記移動体通信端 末装置へ、 無線通信網を介して順次送信するステップと、
を備えたことを特^ [とするネイティブコンパイル前処理方法。
6 . O Sに依存しない中間コードをネイティブコードへ変換するコンピュータプ ログラムであって、
各単位プロックの中間コードをネィティプコードへ変換する際に当該単位プロッ クが参照する他の単位ブロックの属性情報からなる外部参照情報が付加された単位 プロックの中間コードを、 無線通信網を介してブロック単位に順次受信するステツ プと、
全ての中間コードの受信完了前に、 受信済みの単位ブロックの中間コードをネィ ティブコードへ変換するネィティプコンパィル処理を開始するステップと、 ある単位ブロックの中間コードをネイティブコードへ変換する際に当該単位ブ口 ックに関連した受信済みの外部参照情報を参照して当該単位プロックのネィティブ コンパイル処理を行うステップと、
を備えたことを特徴とするコンピュータプログラム。
7 . 移動体通信端末装置において、 O Sに依存しない中間コードを外部から受信 しながらネイティブコードへ変換するコンピュータプログラムであって、
各単位ブロックの中間コードをネイティブコードへ変換する際に当該単位ブロッ クが参照する他の単位プロックの属性情報をまとめた一組の外部参照情報に続いて 複数の単位ブロックの中間コードを、 無線通信網を介して受信するステップと、 全ての中間コードの受信完了前に、 受信済みの単位ブロックの中間コードをネィ ティブコードへ変換するネィティブコンパィル処理を開始するステップと、 ある単位プロックの中間コードをネイティブコードへ変換する際に当該単位プロ ックに関連した受信済みの外部参照情報を参照して当該単位プ口ックのネイティブ コンパイル処理を行うステップと、
を備えたことを特徴とするコンピュータプログラム。
8 . O Sに依存しない中間コードをネットワーク経由で移動体通信端末装置へ送 信する際のネィティブコンパイル前処理を行うサーバであって、
ソースプログラムを単位ブロック毎の中間コードに変換する手段と、
各単位ブロックの中間コードをネイティブコードへ変換する際に当該単位プロッ クが参照する他の単位プロックの属性情報を外部参照情報として収集する手段と、 収集された外部参照情報を当該各単位プロックに付加する手段と、
前記外部参照情報が付加された各単位プロックを前記移動体通信端末装置へ、 無 線通信網を介して順次送信する手段と、
を備えたことを特徴とするサーバ。
9 . ある単位プロックに付加すべき外部参照情報が先に送信される単位プロック に付加される外部参照情報と同じであるとき、 後に送信される単位プロックに対す る当該同じ外部参照情報の付加を省略することを特徴とする請求の範囲 8に記載の サ一ノ^
1 0 . O Sに依存しない中間コードをネットワーク経由で移動体通信端末装置へ 送信する際のネィティブコンパイル前処理を行うサーバであって、
ソースプログラムを単位ブロック毎の中間コードに変換する手段と、
各単位プロックの中間コードをネイティブコードへ変換する際に当該単位ブロッ クが参照する他の単位プロックの属' !·生情報を外部参照情報として収集する手段と、 収集された外部参照情報に続けて複数の単位ブロックを前記移動体通信端末装置 へ、 無線通信網を介して順次送信する手段と、
を備えたことを特徴とするサーバ。
1 1 . サーバとこのサーバから O Sに依存しない中間コードを通信ネットワーク 経由で受信する移動体通信端末装置とを備えた通信システムであって、
前記サーバは、 ソースプログラムを単位プロック毎の中間コードに変換し、 各単位ブロックの中間コードをネイティブコードへ変換する際に当該単位プロッ クが参照する他の単位プロックの属十生情報を外部参照情報として収集し、
収集された外部参照情報を当該各単位プロックに付加し、
前記外部参照情報が付加された各単位プロックを前記移動体通信端末装置へ、 無 線通信網を介して順次送信し、
前記移動体通信端末装置は、 前記外部参照情報が付加された単位ブロックの中間 コードを、 無線通信網を介してプロック単位に順次受信し、
全ての中間コードの受信完了前に、 受信済みの単位プロックの中間コードをネィ ティブコードへ変換するネィティブコンパイル処理を開始し、
ある単位プロックの中間コードをネイティブコードへ変換する際に当該単位プ口 ックに関連した受信済みの外部参照情報を参照して当該単位プロックのネィティブ コンパイル処理を行い、
このネイティブコンパイル処理により得られたネイティブコードを実行する ことを特徴とする通信システム。
1 2 . サーバとこのサーバから O Sに依存しない中間コードを通信ネットワーク 経由で受信する移動体通信端末装置とを備えた通信システムであって、
前記サーバは、
ソースプログラムを単位プロック毎の中間コードに変換し、
各単位プロックの中間コードをネイティブコードへ変換する際に当該単位プロッ クが参照する他の単位プロックの属性情報を外部参照情報として収集し、
収集された一組の外部参照情報に続けて複数の単位プロックを前記移動体通信端 末装置へ、 無線通信網を介して順次送信し、
前記移動体通信端末装置は、
前記一組の外部参照情報に続いて前記複数の単位プロックの中間コードを受信し、 全ての中間コードの受信完了前に、 受信済みの単位プロックの中間コードをネィ ティブコードへ変換するネィティブコンパイル処理を開始し、
ある単位プロックの中間コードをネイティブコードへ変換する際に当該単位プロ ックに関連した受信済みの外部参照情報を参照して当該単位ブロックのネィティブ コンパイル処理を行い、
このネイティブコンパイル処理により得られたネイティブコードを実行する ことを特徴とする通信システム。
PCT/JP2004/001696 2003-02-18 2004-02-17 ネイティブコンパイル方法、ネイティブコンパイル前処理方法、コンピュータプログラム、およびサーバ WO2004075048A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US10/545,623 US20060174235A1 (en) 2003-02-18 2004-02-17 Native compile method, native compile preprocessing method, computer program, and server
JP2005502703A JP3757235B2 (ja) 2003-02-18 2004-02-17 ネイティブコンパイル方法、ネイティブコンパイル前処理方法、コンピュータプログラム、サーバ、通信システム、および移動体通信端末装置
EP04711688A EP1598739A4 (en) 2003-02-18 2004-02-17 NATIVE COMPILATION METHOD, NATIVE COMPILATION PRETREATMENT METHOD, COMPUTER PROGRAM, AND SERVER

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2003039406 2003-02-18
JP2003-039406 2003-02-18

Publications (1)

Publication Number Publication Date
WO2004075048A1 true WO2004075048A1 (ja) 2004-09-02

Family

ID=32905170

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2004/001696 WO2004075048A1 (ja) 2003-02-18 2004-02-17 ネイティブコンパイル方法、ネイティブコンパイル前処理方法、コンピュータプログラム、およびサーバ

Country Status (5)

Country Link
US (1) US20060174235A1 (ja)
EP (1) EP1598739A4 (ja)
JP (1) JP3757235B2 (ja)
CN (1) CN100346297C (ja)
WO (1) WO2004075048A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009544195A (ja) * 2006-07-12 2009-12-10 クゥアルコム・インコーポレイテッド Sigcompudvmパフォーマンスの最適化のための方法および装置

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8615743B2 (en) 2006-02-27 2013-12-24 Microsoft Corporation Adaptive compiled code
US8214810B2 (en) * 2006-08-29 2012-07-03 International Business Machines Corporation Method of compiling source code, compiler, computer system, and computer program product
CN100454256C (zh) * 2006-12-25 2009-01-21 北京飞天诚信科技有限公司 一种提高自定义程序运行速度的方法和装置
KR101407628B1 (ko) * 2007-06-04 2014-06-13 더 보드 오브 리젠츠 오브 더 유니버시티 오브 텍사스 시스템 작업 수행 속도를 향상시키는 장치 및 방법
US10387140B2 (en) 2009-07-23 2019-08-20 S3G Technology Llc Modification of terminal and service provider machines using an update server machine
EP2531916A1 (en) 2010-02-03 2012-12-12 Rtx A/S Programming of a dect/cat-iq communication device
US8589480B2 (en) * 2011-05-24 2013-11-19 Sony Computer Entertainment America Llc Automatic performance and capacity measurement for networked servers
CN104536797B (zh) * 2015-01-14 2017-10-27 大唐微电子技术有限公司 一种Java程序预编译方法和预编译器
KR102492871B1 (ko) * 2015-12-15 2023-01-30 삼성전자주식회사 사용자 단말장치, 서버, 및 그 어플리케이션 실행 방법
CN106681784A (zh) * 2016-12-23 2017-05-17 维沃移动通信有限公司 一种系统软件管理方法及移动终端
US10929160B1 (en) * 2018-12-12 2021-02-23 The Mathworks, Inc. Composite-trace just-in-time compilation

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001134444A (ja) * 1999-11-04 2001-05-18 Victor Co Of Japan Ltd コンピュータシステムにおけるデータ処理装置
JP2001273151A (ja) * 2000-01-21 2001-10-05 Fujitsu Ltd プログラム実行装置、プログラム実行方法、記録媒体、及び制御プログラム
JP2002183017A (ja) * 2000-12-14 2002-06-28 Connect Corp アプリケーション配信システム、及びアプリケーション配信装置

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5469574A (en) * 1993-06-18 1995-11-21 International Business Machines Corporation Method and system for interfacing interpreted applications with compiled procedures using signature files
US5586328A (en) * 1994-10-21 1996-12-17 Microsoft Corporation Module dependency based incremental compiler and method
US6223214B1 (en) * 1996-09-06 2001-04-24 Sensiview Corporation Computer implemented virtual sensor object and tangible medium utilizing same
US6059839A (en) * 1997-01-09 2000-05-09 Silicon Graphics, Inc. Apparatus and method for compiler identification of address data
KR20000064774A (ko) * 1997-01-24 2000-11-06 이데이 노부유끼 도형 데이터 생성 장치, 도형 데이터 생성 방법 및 그 매체
US6085198A (en) * 1998-06-05 2000-07-04 Sun Microsystems, Inc. Integrated three-tier application framework with automated class and table generation
US6237135B1 (en) * 1998-06-18 2001-05-22 Borland Software Corporation Development system with visual design tools for creating and maintaining Java Beans components
US6760907B2 (en) * 1998-06-30 2004-07-06 Sun Microsystems, Inc. Code generation for a bytecode compiler
US7197570B2 (en) * 1998-07-22 2007-03-27 Appstream Inc. System and method to send predicted application streamlets to a client device
US6311221B1 (en) * 1998-07-22 2001-10-30 Appstream Inc. Streaming modules
US6742175B1 (en) * 1998-10-13 2004-05-25 Codagen Technologies Corp. Component-based source code generator
US6212640B1 (en) * 1999-03-25 2001-04-03 Sun Microsystems, Inc. Resources sharing on the internet via the HTTP
US6651099B1 (en) * 1999-06-30 2003-11-18 Hi/Fn, Inc. Method and apparatus for monitoring traffic in a network
US6549916B1 (en) * 1999-08-05 2003-04-15 Oracle Corporation Event notification system tied to a file system
US6640244B1 (en) * 1999-08-31 2003-10-28 Accenture Llp Request batcher in a transaction services patterns environment
US7289964B1 (en) * 1999-08-31 2007-10-30 Accenture Llp System and method for transaction services patterns in a netcentric environment
GB9921721D0 (en) * 1999-09-14 1999-11-17 Tao Group Ltd Loading object-oriented computer programs
US6697814B1 (en) * 1999-12-04 2004-02-24 Worldcom, Inc. System for processing records in a communications network
US20010042241A1 (en) * 2000-01-21 2001-11-15 Fujitsu Limited Apparatus and method for executing program using just-in time-compiler system
JP2001344105A (ja) * 2000-03-31 2001-12-14 Hitachi Software Eng Co Ltd Webアプリケーション開発方法、開発支援システム、および該方法に係るプログラムを記憶した記憶媒体
US20010049726A1 (en) * 2000-06-02 2001-12-06 Guillaume Comeau Data path engine
US7716163B2 (en) * 2000-06-06 2010-05-11 Microsoft Corporation Method and system for defining semantic categories and actions
EP1207454A1 (en) * 2000-11-15 2002-05-22 International Business Machines Corporation Java run-time system with modified linking identifiers
US7024187B2 (en) * 2000-12-08 2006-04-04 Samsung Electronics Co., Ltd. System and method for performing diagnostics on a mobile station using over-the-air transfer of interpreted byte-code program
US20020133811A1 (en) * 2000-12-14 2002-09-19 Duftler Matthew J. Bean scripting components
JP2002215411A (ja) * 2001-01-19 2002-08-02 Hitachi Ltd Javaアプリケーション実行装置
US7350200B2 (en) * 2001-03-29 2008-03-25 Intel Corporation Method and system of controlling dynamically compiled native code size
EP1300991A1 (en) * 2001-10-02 2003-04-09 Lucent Technologies Inc. A method for filtering redundant data packets
US7213240B2 (en) * 2001-10-05 2007-05-01 Sun Microsystems, Inc. Platform-independent selective ahead-of-time compilation
WO2003036469A2 (en) * 2001-10-26 2003-05-01 Codagen Technologies Inc. A template-based method and system for reverse engineering
US7131121B2 (en) * 2001-11-14 2006-10-31 Axalto, Inc. Method and apparatus for linking converted applet files without relocation annotations
EP1313012A1 (en) * 2001-11-15 2003-05-21 Texas Instruments France Java DSP acceleration by byte-code optimization
US7340730B2 (en) * 2002-03-18 2008-03-04 Sun Microsystems, Inc. On demand, network accessible, run time compile server
US6804682B1 (en) * 2002-04-29 2004-10-12 Borland Software Corporation System and methodology providing compiler-assisted refactoring
US6804686B1 (en) * 2002-04-29 2004-10-12 Borland Software Corporation System and methodology for providing fixed UML layout for an object oriented class browser
AU2003242768A1 (en) * 2002-08-02 2004-02-25 Telefonaktiebolaget Lm Ericsson (Publ) Optimised code generation
US7150012B2 (en) * 2002-10-15 2006-12-12 Nokia Corporation Method and apparatus for accelerating program execution in platform-independent virtual machines
US7441233B1 (en) * 2002-12-20 2008-10-21 Borland Software Corporation System and method providing status indication for long-running modal tasks
EP1435743A1 (en) * 2002-12-30 2004-07-07 Nokia Corporation Download of application scripts to a mobile terminal by SMS
US7293260B1 (en) * 2003-09-26 2007-11-06 Sun Microsystems, Inc. Configuring methods that are likely to be executed for instrument-based profiling at application run-time
US7587712B2 (en) * 2003-12-19 2009-09-08 Marvell International Ltd. End-to-end architecture for mobile client JIT processing on network infrastructure trusted servers

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001134444A (ja) * 1999-11-04 2001-05-18 Victor Co Of Japan Ltd コンピュータシステムにおけるデータ処理装置
JP2001273151A (ja) * 2000-01-21 2001-10-05 Fujitsu Ltd プログラム実行装置、プログラム実行方法、記録媒体、及び制御プログラム
JP2002183017A (ja) * 2000-12-14 2002-06-28 Connect Corp アプリケーション配信システム、及びアプリケーション配信装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP1598739A4 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009544195A (ja) * 2006-07-12 2009-12-10 クゥアルコム・インコーポレイテッド Sigcompudvmパフォーマンスの最適化のための方法および装置
JP2016139413A (ja) * 2006-07-12 2016-08-04 クゥアルコム・インコーポレイテッドQualcomm Incorporated Sigcomp udvmパフォーマンスの最適化のための方法および装置

Also Published As

Publication number Publication date
CN1751291A (zh) 2006-03-22
CN100346297C (zh) 2007-10-31
US20060174235A1 (en) 2006-08-03
JPWO2004075048A1 (ja) 2006-06-01
EP1598739A1 (en) 2005-11-23
EP1598739A4 (en) 2008-05-14
JP3757235B2 (ja) 2006-03-22

Similar Documents

Publication Publication Date Title
US10831987B2 (en) Computer program product provisioned to non-transitory computer storage of a wireless mobile device
JP5650240B2 (ja) オフデバイス・サービスを用いた実行コードのランタイム・プロビジョニングのための技術
CN110716715B (zh) 一种应用程序开发方法、装置、设备及介质
US8156505B2 (en) Protocol processing including converting messages between SOAP and application specific formats
JP2000347873A (ja) マルチプラットフォーム環境における命令選択
WO2004075048A1 (ja) ネイティブコンパイル方法、ネイティブコンパイル前処理方法、コンピュータプログラム、およびサーバ
US20080313267A1 (en) Optimize web service interactions via a downloadable custom parser
JP2007528064A (ja) 無線装置オペレーティング環境における未検証プログラムの実行
JP3824580B2 (ja) 移動通信携帯端末及びダウンロードプログラムファイル管理用プログラム
WO2012126301A1 (zh) 一种消息发送、接收处理的方法及其装置
CN107577609A (zh) 一种基于主机端动态链接的嵌入式系统动态模块调试方法
JP2000122871A (ja) アプリケーション配布方法
CN113946602A (zh) 数据查找方法、装置、设备和介质
WO2003094474A1 (en) A communication system, mobile device therefor and methods of storing pages on a mobile device
KR101117165B1 (ko) 이기종 운영체제 계층 모듈에서 동작하는 웹기반어플리케이션의 연동이 가능한 모바일 단말기용 웹 플랫폼 유닛
US7562353B2 (en) Methods and systems for transforming Java applications of behalf of another device
JP2003216434A (ja) 小型情報機器において、ユーザプロファイルデータの活用により、ダウンロードプログラムの最適化を図る方法およびシステム。
CN112965721B (zh) 基于Android的项目编译方法、装置、计算机设备及存储介质
KR100873470B1 (ko) 멀티모달 인터페이스 시스템
JP2000347875A (ja) ファイル移植技術
JP2004192038A (ja) 情報処理装置、情報処理システム、情報処理プログラム、および該プログラムを記録した記録媒体
JP2006127399A (ja) アプリケーションプラットフォーム提供システム及び方法並びにそのプログラム
KR20030012270A (ko) 게임 프로그램의 유무선 통신기기 통합 사용을 위한제어장치
KR20010082441A (ko) 이동통신단말기용 게임구동 장치 및 게임 구현 방법
KR20060074335A (ko) 이동통신 시스템에서의 어플리케이션 프로그램 제공 방법

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BW BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE EG ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NA NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL SY TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): BW GH GM KE LS MW MZ SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IT LU MC NL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 2005502703

Country of ref document: JP

ENP Entry into the national phase

Ref document number: 2006174235

Country of ref document: US

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 10545623

Country of ref document: US

WWE Wipo information: entry into national phase

Ref document number: 20048045539

Country of ref document: CN

WWE Wipo information: entry into national phase

Ref document number: 2004711688

Country of ref document: EP

WWP Wipo information: published in national office

Ref document number: 2004711688

Country of ref document: EP

WWP Wipo information: published in national office

Ref document number: 10545623

Country of ref document: US