自动翻译程序和程序翻译服务器的制作方法

文档序号:6656839阅读:219来源:国知局
专利名称:自动翻译程序和程序翻译服务器的制作方法
技术领域
本发明涉及一种将计算机语言和/或开发环境自动翻译成将用于例如开发用于蜂窝电话的应用的另一计算机语言和/或开发环境的方法。
背景技术
近年来,在蜂窝电话中,随着移动终端的性能改进,已开发了用户下载和使用应用的服务,该服务已投入实际使用。在这种情况下,作为用于开发应用的软件,不依赖于硬件的用于蜂窝电话的Java(由SunMicrosystems,Inc.开发的编程语言)得到了主要使用。
然而,Java需要实施用于蜂窝电话的大量软件,该软件称作JavaVM(Java虚拟机)。因此,需要高性能硬件。此外,在蜂窝电话中,还需要使用分离的CPU(处理器)用于通信和应用的这样的复杂配置。
同时,考虑到这样的情况,还提出了这样一种技术,该技术不是使用Java,而是使用迄今为止用作软件开发的主流的语言,诸如“C”和“C++”,并提供使用这些语言的用于蜂窝电话的库。与Java应用的软件的性能相比,该方法改进了软件性能。这样的技术包括应用于该方法的Qualcomm Incorporated的BREW(无线二进制运行时环境使蜂窝电话能够开发/使用程序的环境)。这样的应用称为BREW应用。
如上所述,已开发和销售了大量用于蜂窝电话的应用,它们使用用于蜂窝电话的Java。由于这样的BREW应用是所谓的后出现的应用,所以迄今为止开发的BREW应用的数量比Java应用的数量少很多。由于人工开发软件,因此难以迅速地完成软件。因此,需要便于利用具有许多优点的BREW应用进行软件开发的方法。
为了解决上述问题,已开始开发用于将Java应用重新开发为BREW应用的库。
然而,由于只开发了基本库,而且开发者将手动选择要使用的库,并且被选择的库将被手动执行。因此对于开发者而言,开发BREW应用仍然耗时。
此外,关于Java中提供而BREW中没有提供的功能(比如,垃圾收集,即释放未使用的存储器的方法;以下称为“GC”)等,必须开发另外的库,并且必须手动开发。
如上所述,在开发用于蜂窝电话的应用的情况下,应该手动执行程序的开发,缩短开发周期是极其困难的。
基于包括蜂窝电话的屏幕分辨率的定义更高、终端CPU的处理性能改进、通信费用的统一定价(包的统一定价等)等的背景,对蜂窝电话的应用的需求逐渐增加。然而,关于已用Java开发的应用,用BREW重新开发该应用需要进行手动开发。此外,就Java本身而言,存在各种语言变体,例如NTT DoCoMo,Inc.的Java和由美国的Sun Microsystems,Inc.定义的Java,用各自Java开发的应用彼此不具有任何的兼容性。
本发明旨在考虑上述背景解决以下问题1.在已用Java开发应用并且需要用BREW开发相同应用的情况下,需要另一开发过程,产生开发时间和开发成本。
2.在已用Java开发应用并且需要用BREW开发相同应用程序的情况下,需要能够开发Java应用的程序员,也需要能够开发BREW应用的程序员。
3.在同时对Java和BREW开发某个应用的情况下,需要整整两倍的开发资源(人力资源、开发时间)。

发明内容
为了解决上述问题,本发明提供一种自动翻译程序和一种程序翻译服务器。
由本发明提供的自动翻译(转换)程序是一种自动而非手动地将以Java代码描述的Java应用转换为具有以BREW的二进制代码描述的执行格式的BREW应用的自动翻译程序,该程序在计算机中选择性地构造用于将Java源代码转换为二进制代码的第一装置;和用于将Java字节代码直接转换为二进制代码第二装置。
由Java字节代码构成的、由终端用户使用的应用被称为Java应用文件。
从简化翻译处理的角度来看,该程序还包括库管理装置,用于将库与用于识别形成单个Java程序的Java代码的类型的识别代码相关联地存储在预定的存储器中,所述库定义用于将简档(profile)各不相同的多种类型的Java应用中的每个转换为BREW应用的过程;和第三装置,用于当Java代码的类型被指定时,通过库管理装置从存储器读出与待转换的Java应用的Java代码相对应的库,并促使第一装置或第二装置基于读出的库自动地将以指定的Java代码描述的Java应用转换为BREW应用。
优选地,所述计算机还包括数据结构分析装置,用于读取将在Java应用中使用的内容数据,例如,图像数据、声音数据或通过组合这些数据形成的数据,并指定该内容数据的数据结构是什么;和数据结构翻译装置,用于将由数据分析装置指定的数据结构转换为将在BREW应用中使用的数据结构。
本发明的程序翻译服务器为包括以下装置的程序翻译服务器程序存储装置,用于存储自动翻译程序,该程序非手动地将以Java源代码或Java字节代码描述的Java应用转换为具有以BREW的二进制代码描述的执行格式的BREW应用;库管理装置,用于将库与用于识别形成单个Java程序的Java代码的类型的识别代码相关联地存储在预定的存储器中,所述库定义用于将简档各不相同的多种类型的Java应用中的每个转换为BREW应用的过程;Java代码接收装置,用于通过预定的计算机网络接收电子数据格式的待转换的Java代码;翻译装置,用于当Java代码的类型被指定时,通过库管理装置从存储器读出与由Java代码接收装置接收的JAVA代码相对应的库,翻译装置还从程序存储装置读出自动翻译程序,并通过使用读出的库执行自动翻译程序,从而将接收的Java代码转换为二进制代码;并且将转换的二进制代码返回给Java代码的发送源。
在一个实施例中,所述程序翻译服务器被构造为还包括用户注册装置,用于注册期望将Java代码转换成二进制代码的用户,其中,重复允许每次付费从在用户注册装置中注册的用户接收Java代码。
根据本发明的程序翻译服务器,例如,应用开发者可仅通过发送Java字节代码而接收自动转换的BREW二进制代码(执行代码),并且使自动翻译服务的提供方法自动化,从而使得开发者可在极短周期内完成开发。
一旦开发者登记,即,一旦开发者注册为自动翻译服务的用户,开发者就可接收翻译服务任意次数。以这样的方式,使得开发者可自己负责执行细微改进以改进程序。在开发应用程序的情况下,由于移动终端的功能限制(对应用大小、将使用的存储器的大小等的限制)以及为了执行细微改进的目的,需要多次细微改变程序的工作。通过允许开发者任意次地接收翻译服务,使得开发者能够通过使用该功能在极短时间内细微地调整程序。此外,同时还可将转换后的BREW二进制代码实际下载到移动终端并对其进行测试。当提供上述服务时,在开发者可任意次地接收翻译服务的情况下,一个程序的每次翻译的单位费用被假设为该服务的收费单位。然而,在这样的服务中,如果每一次登录无限制地允许程序翻译,则存在每次登录无限制地转换程序的可能性。为了解决该问题,在本发明中,将唯一的服务代码嵌入在BREW代码和使用该唯一代码的翻译服务中,以解决该问题。
在计算机中执行自动翻译程序,从而可通过消除手动工作而在极短周期内低成本地将大量已存在的Java应用转换为BREW应用。在自动翻译的情况下,可从Java的源代码以及直接从被称为Java字节代码的机器语言执行翻译,因此,可极容易地执行程序翻译。
JAVA字节代码是当用户使用Java应用时所使用的格式。在从Java字节代码执行直接翻译的情况下,存在如下优点。
(1)当开发公司开发应用时,存在这样的可能性,即,在提交Java源代码的情况下需要保密合同,而且在另一公司拥有源代码的版权的情况下(在开发者和内容提供者不同的情况下)不公开源代码。通过从Java字节代码执行翻译来解决该问题。
(2)为了提供无论描述Java应用的简档如何都将应用转换为BREW应用的程序,关于用于翻译的库,事先提供用于特定简档的库,例如,在NTT DoCoMo,Inc.的Java(DoJa)的情况下,预先准备用于DoJa的库,在Sun Microsystems,Inc.的Java(MIDP)的情况下,预先准备用于MIDP的库。一经翻译,就选择并使用与所要翻译的最初应用相对应的库,从而可吸收不同简档的差异并执行翻译。
(3)虽然根据各自的通信载体将不同数据用作将用于应用的图像和声音数据,但是提供了一种程序,该程序不管数据属于哪个通信载体都自动检测数据并对数据进行解码。NTT DoCoMo,Inc.的图像数据采用称为“gif”的压缩格式,KDDI公司的图像数据采用称为“png”的压缩格式。自动翻译程序配备有分析要使用的数据的格式和结构的功能。以这样的方式,提供能够根据压缩格式使用图像数据和声音数据的功能。


图1是翻译程序的处理的示意图。
图2是显示Java应用的例子的解释图。
图3是显示由Java 2/BREW翻译器创建的BREW应用的例子的示意图。
图4是自动翻译处理的示意性解释图。
图5是预处理的示意性解释图;图6是示出当预处理之后的数据被转换为BREW源代码时的概况的示意图。
图7是用于将转换后的BREW源代码编译成BREW二进制文件的处理的示意性解释图。
图8是翻译过程的详细过程解释图。
具体实施例方式
以下描述本发明的实施方式的例子。
这里,描述通过在应用开发者可免费访问的计算机网络中提供程序翻译服务器而实现的服务系统。翻译服务器包括程序存储装置、用户注册装置、Java库管理装置、Java代码接收装置、翻译装置和返回装置,程序存储装置用于存储自动翻译程序和其它程序(OS、BIOS等)。
程序翻译服务器是具有服务器功能的计算机,它包括处理器(CPU)和存储由该处理器读取和执行的计算机程序的存储器。自动翻译程序为这些计算机程序之一。
通过包括用于将例如如下五种类型的程序交给程序翻译服务器的一组程序(或程序集合)来构成自动翻译程序。
(a)库检查工具库检查工具为用于在实际执行自动翻译之前检查翻译工具是否可转换将在Java应用中使用的所有库的工具。当这些库不够时,不能执行自动翻译。因此,必须在使必需的库完整之后执行自动翻译。
库检查工具首先从将被转换的Java应用的类文件中的常量池、字段(field)和方法(它们全是根据Java语言的规范)中提取正被实际使用的库。其后,库检查工具将提取的库与已实施的类库的列表进行比较,并显示关于Java应用所使用的一组库(或库集合)是否全部包括在已实施的库的类列表中的信息,或者如果没有包括所有的库,则显示关于没有被包括的库的数量的信息以及关于没有被包括的库是什么的信息。
(b)异常处理在Java语言的异常处理中,当执行Java时,执行在方法调用(特定处理、算术函数等)和字段访问(引用数据)时在Java类文件中指定的特定处理。在BREW目标程序中实现该异常处理功能。
为了实现翻译的BREW程序中所涉及的功能,在该实施方式中,将用于调查异常是否发生的处理插入到具有异常发生的可能性的处理(在类文件中描述)诸如方法调用和字段访问之后。在异常发生的情况下,执行特定处理(在类文件中描述),从而,与Java中类似的异常处理也在BREW中实现了。
(c)容器容器是用于在BREW环境中再现Java移动应用中的执行框架的程序。在JAVA中,生成用于初始化、开始、暂停(停止)、继续等的事件,对于各事件,应用程序和库程序执行符合预定的Java标准的操作。
因此,“容器”是这样一种程序,该程序用于生成用于BREW环境中的BREW应用的类似事件并控制各事件的应用程序和库程序的操作。每个应用的应用程序都不同,因此,必须创建与每个应用相对应的容器。
(d)环境对象为了自动将程序转换为BREW应用,需要包括将由容器、应用程序和库程序使用的数据的对象。该对象被称为“环境对象”。
通过从所有程序收集和记录可公共使用的数据来实现环境对象。这样的数据包括,例如,关于上述GC的数据、Java语言的静态数据等。在静态数据的情况下,必须记录分别与应用类和库类相对应的静态数据。对于每个应用而言应用程序都不同,因此,创建与每个应用相对应的环境对象。
(e)库翻译库翻译提供具有与在Java语言环境中使用的根据Java语言规范的标准库相对应的功能的BREW程序。通过创建该BREW程序和维护所述库来实现库交换,该BREW程序执行与每个Java库类的标准库相同的动作。与“Java.lang.String class”相对应的用BREW实现的“java_lang_String class”为库翻译的例子。在用BREW实现的库类中,提供具有与Java的库类相同的字段(数据)和执行与Java的库类相同的动作的方法(处理)。所述字段和方法具有与Java的字段和方法等效的接口(调用规则)。
程序翻译服务器的处理器通过读取和执行自动翻译程序来执行以下内部处理。
1.Java应用文件(后面将由Java字节代码构成的、将由终端用户使用的数据也称为此)的预处理2.将预处理后的数据翻译成BREW源代码3.将BREW源代码编译成BREW二进制代码以下描述每个内部处理。
1.Java应用文件的预处理从开发请求者接收Java应用文件。Java应用文件被编译成一个文件,因此,被分解成应用类文件,图像、声音等数据的文件。当将输入的Java包括NTT DoCoMo,Inc.的DoJa、作为Sun Microsystems,Inc.的标准的MIDP等时,将开发请求者提交的Java版本信息添加到分解的数据中,并将其传递给下一翻译处理,Java版本信息给出用于执行对应于简档的翻译的信息。
图5中显示了预处理的概况。从开发请求者输入Java应用文件和Java版本信息。在Java应用文件中,对数据进行压缩以将其编译成Jar文件。因此,通过使用Jar命令对该Jar文件执行提取处理,将该Jar文件分解成应用文件、图像数据、声音数据等文件。Jar文件是一般作为Jar文件的分配方法而普遍使用的标准方法。可通过使用一般作为Java语言的工具而普遍使用的Jar命令来提取和扩展Jar文件。
2.将预处理后的数据翻译成BREW源代码预处理后的数据被转换为BREW源代码。具体地讲,将Java应用文件转换为C++的头文件和程序文件。虽然在BREW中也存在一些版本作为翻译目标,例如BREW 1.0、BREW 2.0、BREW 2.1和BREW 3.0,但是这里作为本实施方式描述这样一种方法,该方法在翻译过程中参考BREW库DB将Java应用文件转换为开发请求者指定的版本。
描述翻译的细节。在Java源文件和Java类文件中,包含描述执行程序,诸如类、字段和方法的方法的信息。转换这些类、字段和方法以使其符合C++语言的语法。将Java字段和Java方法转换为分别执行相同功能和操作的C++语言的字段和C++语言的方法。以这样的方式,将Java的每个类转换为C++的类,转换后的C++的类在C++的执行环境上(包括BREW环境)运行。这与用作翻译源的Java类的Java执行环境上的操作相同。
Java应用的(一个或多个)类在Java执行环境上运行,已被转换到C++的执行环境上的C++的(一个或多个)类执行相同的操作。从以上看出,被转换为C++语言的应用在C++的执行环境上执行与用作翻译源的Java应用相同的操作,所述C++的执行环境包括BREW环境。
在翻译的情况下,将通过预处理创建的应用类文件转换为C++语言的应用头文件和应用源文件。此外,除了该翻译之外,将在该应用中使用的Java类库也参考BREW库被添加到翻译后的数据中。
此外,将Java语言具有而C++语言不具有的功能(例如,GC)等添加到该翻译后的数据中。此外,当在将输入的Java中使用的压缩图像数据的格式不同于BREW所支持的图像数据的格式时,例如,当将输入的Java,即DoCoMo的Java中的图像格式为GIF格式而将在BREW中使用的图像格式不是GIF格式时,还将用于GIF的解码器功能添加到翻译后的数据中。此外对于声音数据,执行类似的处理。
图6中显示了将预处理后的数据翻译成BREW源代码的概况。
根据开发请求者指定的BREW的版本,将预处理的数据的Java应用类文件转换为C++的应用头文件和应用源类文件。此外,正在Java应用文件中使用的Java类库也作为源文件被添加到C++的应用文件中。
根据需要将作为其它文件的GC源文件、图像解码器文件、声音解码器文件等添加到C++的源文件中。
例如在图8所示的过程中执行图6中的翻译过程。具体地讲,一旦获得Java代码,程序翻译服务器的处理器就激活库检查工具(步骤S101、S102)。如果对于翻译而言库不足够,则处理器如上所述进行维护以将文件添加到库中,直到对于翻译而言库变得足够(步骤S103否,步骤S104)。
当库变得可转换时,程序翻译服务器的处理器执行自动翻译程序,并执行库翻译、GC实施、异常处理实施、容器和环境对象(步骤S103是,步骤S105)。以这样的方式,处理器获得BREW源代码和数据(步骤S106)。
注意到,在该实施方式中,已对这样一种方法进行了描述,该方法根据开发请求者指定的BREW版本预先准备BREW库DB,在翻译的情况下通过使用BREW库DB执行翻译;然而,根据本发明的另一实施方式,还可执行以下方法,该方法将所要转换的库编译成一个库、在执行翻译时确定版本并执行必要的处理。
3.将BREW源文件编译成BREW二进制代码通过将编译器用于在蜂窝电话中使用的CPU,将创建的BREW源文件编译成BREW二进制代码。将创建的应用的头文件和源文件、创建的类库的头文件和源文件、加之GC、图像解码器和声音解码器的头文件和源文件转换为可在BREW环境中执行的源代码。因此,通过使用能够创建BREW应用的编译器(ARM Ltd.的编译器、gcc等)编译上述文件,创建用于BREW环境的二进制码。
图7中显示了用于将转换的BREW源代码编译成BREW二进制文件的处理的概况。将编译之后的数据从自动翻译服务系统立即发送到应用开发公司。
图1显示了上述1至3步骤的处理的概况。
此外,图2和图3中显示了使通过使用翻译程序实际转换的程序在蜂窝电话上运行的例子。图2显示了翻译之前的例子,图3显示了翻译之后的例子。
此外,图7显示了由Java 2 BREW翻译器创建的BREw应用的例子。验证了同一应用在Java终端和BREW终端中以相同的方式运行。图2和图3所示的应用为游戏程序,图2显示了Java应用的屏幕输出,图3显示了翻译成Java应用的程序的屏幕输出。虽然图2和图3中所示的图像彼此稍微不同,但是这是由于分别捕捉图像的事实造成的。
<程序翻译服务>
在提供翻译服务的情况下,如何执行验证、调试和调整通过翻译程序完成的应用的工作不可避免地变得很重要。
对于该验证、调试和调整工作,本发明提供一种通过使用Java源代码改进应用、重新转换作为结果而产生的应用并验证、调试和调整该应用的方法。在应用开发公司中,用Java开发应用,自动翻译服务就是为它们提供的,从而使得应用开发公司可立即获得翻译结果并验证、调整和调试翻译结果。
此外,在验证、调整和调试之后改进Java源代码,对作为结果产生的Java应用文件进行翻译服务。以这样的方式,Java应用文件可经受任意次数的翻译服务,并且可执行应用的细微改进。
利用该系统,可解决如下问题●在已开发使用Java语言的应用并且对BREW开发相同的应用的情况下,需要另一开发过程,产生开发时间和开发成本。
●在已开发使用Java语言的应用并且对BREW开发相同的应用的情况下,除了能够开发Java语言的程序员之外还需要能够开发BREW的程序员。
●在同时对Java和BREW开发某个应用的情况下,需要整整两倍的开发资源(人力资源、开发时间)。
参考图4描述执行程序翻译服务的系统的操作例。
图4是自动翻译服务系统的功能框图。
在使用自动翻译服务的情况下,应用开发公司通过WEB与自动翻译服务提供公司签订合同。
在示图中,在自动翻译服务系统的WEB服务器中准备关于应用的页面,并且通过填写该页面,接收关于使用自动翻译服务的提议。
已提出使用提议的应用开发公司通过网络诸如互联网将需要翻译服务的Java应用文件发送到自动翻译服务提供公司。在这种情况下,一旦作出提议,Java的版本信息和被翻译成的BREW应用的版本信息就被添加到Java应用文件中。此外,应用开发公司请求与QualcommIncorporated相关的应用的类ID,还与Java应用文件一起同时发送对类ID的请求的信息。自动翻译服务提供公司在认证服务器中注册应用开发公司、Java应用文件信息、Java的版本信息、被翻译成的BREW的版本信息和应用的类ID。
其后,将Java应用文件信息、Java的版本信息、作为翻译目标的BREW的版本信息和应用的类ID转递到翻译服务器,并执行翻译处理。在完成翻译处理之后,将作为处理结果的BREW二进制文件发送到应用开发公司。
在应用开发公司中,执行发送的BREW二进制代码的验证、调整和调试。在该过程中存在问题并且必须改进的情况下,使用Java源代码进行改进,作为结果产生的Java应用文件被再一次发送到自动翻译服务系统,并接受翻译服务。通过使用该方法,可在极短周期内重复执行调整程序所需的开发周期。
在这种情况下,即使应用开发公司试图基于与先前注册时相同的应用文件信息来转换另一应用程序,作为返回结果的BREW二进制文件也与添加到其中的唯一类ID一同返回。可见,BREW二进制文件不能用作另一服务程序,产生防止滥用翻译服务的效果。
产业上的实用性实现了自动翻译程序和通过执行所涉及的程序的服务器提供的程序自动翻译服务。以这样的方式,在Java应用已存在的情况下,可在极短时间内开发BREW二进制文件并提供用于服务的BREW二进制文件。此外,使用能够任意次数执行翻译的系统,从而可完成程序,同时将整个程序的开发周期(足够分配最初的开发、调整、调试和验证周期)缩短为极短的周期。以这样的方式,实现程序的生产率的改进和程序资源的有效利用。
权利要求
1.一种自动翻译程序,用于自动而非手动地将以Java代码描述的Java应用转换为具有以BREW的二进制代码描述的执行格式的BREW应用,该程序在计算机中选择性地构造第一装置,用于将Java源代码转换为二进制代码;和第二装置,用于将Java字节代码直接转换为二进制代码。
2.如权利要求1所述的自动翻译程序,所述程序在计算机中还构造库管理装置,与用于识别形成单个Java程序的Java代码的类型的识别代码相关联地将库存储在预定的存储器中,所述库定义用于将简档各不相同的多种类型的Java应用中的每一个转换为BREW应用的过程;和第三装置,当Java代码的类型被指定时,通过所述库管理装置从存储器读取与将要转换的Java应用的Java代码相对应的库,并促使第一装置或第二装置基于从存储器读取的库将以指定的Java代码描述的Java应用自动转换为BREW应用。
3.如权利要求1所述的自动翻译程序,所述程序在计算机中还构造数据结构分析装置,用于读取在Java应用中使用的内容数据,并指定该内容数据的数据结构是什么;和数据结构翻译装置,用于将所述数据结构分析装置所指定的数据结构转换为在BREW应用中使用的数据结构。
4.如权利要求3所述的自动翻译程序,其中,所述内容数据为图像数据、声音数据或图像数据和声音数据的组合。
5.一种程序翻译服务器,包括程序存储装置,用于存储自动翻译程序,该程序非手动地将以Java源代码或Java字节代码描述的Java应用转换为具有以BREW的二进制代码描述的执行格式的BREW应用;库管理装置,用于将库存储在预定的存储器中,所述库定义用于将简档各不相同的多种类型的Java应用中的每一个转换为BREW应用的过程,并且所述库与用于识别形成单个Java程序的Java代码的类型的识别代码相关联地被存储在存储器中;Java代码接收装置,用于通过预定的计算机网络接收电子数据格式的需要转换的Java代码;翻译装置,用于当Java代码的类型被指定时,通过所述库管理装置从存储器读取与由所述Java代码接收装置接收的Java代码相对应的库,该翻译装置还从程序存储装置读取自动翻译程序,并使用从存储器读取的库执行自动翻译程序,从而将接收的Java代码转换为二进制代码;和将转换后的二进制代码返回给Java代码的发送源。
6.如权利要求5所述的程序翻译服务器,还包括用户注册装置,用于注册要将Java代码翻译成二进制代码的用户,其中,一旦用户付费,就重复地允许从在所述用户注册装置中注册的用户接收Java代码。
全文摘要
Java应用被转换为用于BREW。在开发者的操作终端可任意访问的计算机网络中设置的程序翻译服务器中预先安装这样一种自动翻译程序,该自动翻译程序在计算机中选择性地构造用于将Java源代码转换为二进制代码的第一装置或用于将Java字节代码直接转换为二进制代码的第二装置。当开发者的操作终端将由Java(源/二进制)代码构成的应用输入到程序翻译服务器时,该应用被自动转换为BREW应用,并被返回到操作终端。
文档编号G06F9/44GK101036123SQ20058003146
公开日2007年9月12日 申请日期2005年7月20日 优先权日2004年7月20日
发明者曾根广尚, 平泽将一 申请人:明星游戏株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1