首页> 中国专利> 一种智能操作系统上的JAVA虚拟机实现方法

一种智能操作系统上的JAVA虚拟机实现方法

摘要

本发明涉及一种智能操作系统上的JAVA虚拟机实现方法,将JAVA虚拟机软件分为以下两个部分:启动入口部分;CVM虚拟机部分;启动入口部分和CVM虚拟机部分之间,通过JNI和共享内存空间等方式通信。将JAVA虚拟机的运行环境结构分为两个层次:Linux用户层和Dalvik虚拟机层;其中:启动入口部分运行在Dalvik虚拟机层;CVM虚拟机部分运行在Linux用户层。本发明所述的实现方法,在Android系统中内置JAVA虚拟机软件,JAVA虚拟机软件可以独立、高效地运行,能独立的解释、运行J2ME软件包或其他J2ME程序,确保了对J2ME程序的完整兼容性和稳定性,J2ME程序通过JAVA虚拟机独立启动,直接运行,实时性高,用户体验更佳。

著录项

  • 公开/公告号CN103870316A

    专利类型发明专利

  • 公开/公告日2014-06-18

    原文格式PDF

  • 申请/专利权人 烽火通信科技股份有限公司;

    申请/专利号CN201410146039.4

  • 发明设计人 王子健;姜超;叶剑;杨娟;石艳;

    申请日2014-04-11

  • 分类号G06F9/455(20060101);G06F9/445(20060101);

  • 代理机构北京捷诚信通专利事务所(普通合伙);

  • 代理人魏殿绅;庞炳良

  • 地址 430074 湖北省武汉市东湖开发区关东科技园东信路5号

  • 入库时间 2024-02-20 00:20:11

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-09-07

    授权

    授权

  • 2014-07-16

    实质审查的生效 IPC(主分类):G06F9/455 申请日:20140411

    实质审查的生效

  • 2014-06-18

    公开

    公开

说明书

技术领域

本发明涉及JAVA虚拟机及J2ME(JAVA2Micro Edition)技术 领域,具体说是一种智能操作系统上的JAVA虚拟机实现方法。尤指 可以在智能操作系统平台之上运行J2ME软件包的JAVA虚拟机实现方 法。所述智能操作系统平台特指Android及其衍生操作系统平台。

背景技术

Android是一种以Linux为基础的开源智能操作系统,主要使用 于便携设备、智能电视、平板电脑、机顶盒等。Android操作系统最 初由Andy Rubin开发,最初主要支持手机。2005年由Google收购 注资,并组建开放手机联盟开发改良,逐渐扩展到平板电脑及其他领 域。Android系统由Linux操作系统内核、Dalvik虚拟机、支撑库、 应用程序框架及应用程序组成。由于它具有良好的开放性和强大的功 能,当前Android操作系统除了在手机等靠电池供电的嵌入式设备中 广泛应用外,也逐步应用到数字电视等使用交流电源的设备和产品。

IPTV,是一种利用宽带有线电视网,集互联网、多媒体、通讯等 多种技术于一体,向家庭用户提供包括数字电视在内的多种交互式服 务的崭新技术。IPTV业务大致分为基本业务和增值业务两大类,IPTV 的基本业务是指以视听内容为主的视频内容服务,包括直播、点播、 轮播、时移等;而IPTV的增值业务包括游戏、即时通信、电子支付 以及卡拉OK等,其中,游戏分为网页游戏和JAVA游戏两种,是IPTV 增值业务的重要组成部分。

目前接入IPTV平台的智能机顶盒大多采用Android系统,而基 于Android系统的智能机顶盒需要满足能接入并使用原有IPTV平台 业务,这里就包括能正常运行IPTV平台的JAVA游戏,IPTV平台的 JAVA游戏为J2ME程序,通常是一个J2ME软件包。原来接入IPTV平 台的机顶盒基本为基于嵌入式Linux的标清或高清机顶盒,运行JAVA 游戏(J2ME软件包)的JAVA虚拟机也是基于嵌入式Linux系统而开 发。现在基于Android系统的智能机顶盒也需要能支持并运行IPTV 平台的JAVA游戏(J2ME软件包),但基于嵌入式Linux系统而开发 的JAVA虚拟机不适用于Android系统。

目前在基于Android系统的智能机顶盒上运行JAVA游戏(J2ME 软件包)已有一种转换式解决方案,该转换式解决方案利用J2ME软 件包与Android系统自身应用程序在结构上相似的特点,利用不开源 的商用软件对已有的J2ME软件包进行转换,将JAVA游戏的J2ME软 件包变换为Android系统软件包文件,然后再将该Android系统软件 包文件在终端设备的Android系统上安装使用。该方法应用在智能机 顶盒上有几个明显的弊端:

1.兼容性缺乏保证,无法保证针对所有JAVA游戏的J2ME软件包 都可以顺利转换。

2.实时性不足,通过该方法运行JAVA游戏的J2ME软件包,需要 经过转换、安装、运行3个阶段,耗费JAVA游戏启动时间,用户体 验不佳。

3.开放性不足,该方法核心部分为不开源的商业软件,不可能完 全针对平台需求进行及时修改。

现有技术中对这些问题暂无进一步的解决方案。

发明内容

针对现有技术中存在的缺陷,本发明的目的在于提供一种智能操 作系统上的JAVA虚拟机实现方法,所述智能操作系统特指Android 及其衍生操作系统,通过在Android系统中内置JAVA虚拟机软件, 且对JAVA虚拟机软件的构成以及JAVA虚拟机的运行环境结构进行细 化,以确保JAVA虚拟机软件可以独立、高效地运行。

为达到以上目的,本发明采取的技术方案是:

一种智能操作系统上的JAVA虚拟机实现方法,其特征在于:首 先将JAVA虚拟机软件分为以下两个部分:

启动入口部分,负责图形显示、音频播放、用户输入处理等工作, 作为正常的Android应用程序的启动入口;

CVM虚拟机部分,以动态库的形式工作在Linux用户空间,负责 J2ME软件包的解析和运行,执行J2ME软件包的绘图、音频逻辑,并 根据J2ME软件包逻辑处理用户输入事件;

启动入口部分和CVM虚拟机部分之间,通过JNI和共享内存空间 等方式通信,使JAVA虚拟机能在智能操作系统平台之上运行J2ME软 件包。

在上述技术方案的基础上,所述智能操作系统特指Android及其 衍生操作系统。

在上述技术方案的基础上,所述智能操作系统运行在接入IPTV 平台的智能机顶盒中。

在上述技术方案的基础上,所述智能机顶盒为标清或高清机顶 盒。

在上述技术方案的基础上,将JAVA虚拟机的运行环境结构分为 两个层次:Linux用户层和Dalvik虚拟机层;其中:

启动入口部分的Android应用程序模块及其JNI模块运行在 Dalvik虚拟机层,

CVM虚拟机部分的CVM虚拟机模块及其JNI模块运行在Linux用 户层;

启动入口部分和CVM虚拟机部分的JNI模块同为C/C++实现,并 且公用内存空间,他们之间的通信作为Linux用户层和Dalvik虚拟 机层这两个层次之间的桥梁使用。

在上述技术方案的基础上,JAVA虚拟机运行J2ME软件包的工作 过程包括:

启动和运行流程,

JAVA虚拟机图形显示处理流程,

JAVA虚拟机音频播放处理流程,

JAVA用户输入处理流程。

在上述技术方案的基础上,启动和运行流程包含以下步骤:

步骤A1,Android应用程序模块启动,启动参数中设置jar软件 包文件路径;

步骤A2,CVM虚拟机模块被编译为Linux动态库,通过Android  JNI装载CVM虚拟机的动态库,并获取其入口函数来启动CVM虚拟机 模块,此时将步骤A1中获取到的jar软件包文件路径传递给CVM虚 拟机的动态库;

步骤A3,CVM虚拟机模块根据步骤A2中获取到的jar软件包文 件路径来读取jar文件,解析出其中的类文件,并加载J2ME类入口 点,从而启动程序;

步骤A4,开始J2ME软件包的生命周期,进入J2ME软件包规定 的程序逻辑,包含绘图、音频、用户输入处理等逻辑;

步骤A5,将J2ME软件包逻辑中处理好的绘图、音频等信息,通 过CVM JNI模块的接口传递到Android JNI模块;

步骤A6,Android JNI模块再将绘图、音频等信息传递到Android 应用程序模块,在Android应用程序模块中予以显示、播放;

步骤A7,Android应用程序模块接收用户输入,通过虚拟Linux 键盘设备文件的方式传递到CVM虚拟机模块;

步骤A8,用户选择退出,CVM虚拟机模块通过CVM JNI模块发出 退出命令;

步骤A9,退出命令通过Android JNI模块传递到Android应用 程序模块,Android应用程序模块收到退出命令,退出程序流程结束。

在上述技术方案的基础上,JAVA虚拟机图形显示处理流程包含 以下步骤:

步骤B1,程序启动后,Android应用程序模块初始化应用程序视 图,视图中使用一块Android.graphics.Bitmap绘图;

步骤B2,通过Android JNI模块初始化步骤B1中所述的 Android.graphics.Bitmap结构;

步骤B3,CVM虚拟机模块通过共享内存的方式取得绘图缓冲的实 际指针,即步骤B2中所初始化的Android.graphics.Bitmap结构中 的实际绘图内存;

步骤B4,CVM虚拟机模块根据所运行的J2ME程序逻辑,完成图 象解码、图形绘制、文本绘制等操作;

步骤B5,将步骤B4中绘制完成的图像处理结果输出到步骤B3 所取得的绘图缓冲中;

步骤B6,绘图完成,通过CVM JNI模块发出要求刷新屏幕的指 令;

步骤B7,Android JNI模块收到刷新屏幕的指令,通知Android 应用程序模块绘图缓冲已更新;

步骤B8,拉伸绘图缓冲的内容以适应显示设备,并刷新视图, 完成图像的显示。

在上述技术方案的基础上,JAVA虚拟机音频播放处理流程包含 以下步骤:

步骤C1,程序启动后,Android应用程序模块初始化Android播 放器Android.media.MediaPlayer;

步骤C2,CVM虚拟机模块根据所运行的J2ME程序逻辑,发出播 放,停止等命令;

步骤C3,在CVM JNI模块中,将播放、停止等命令封装为命令 字符串;

步骤C4,CVM JNI模块将命令字符串发送到Android JNI模块处 理;

步骤C5,Android JNI模块将命令字符串发送到Android应用程 序模块;

步骤C6,Android应用程序模块收到并解析命令字符串,根据命 令的内容顺序执行播放、停止等操作,实现音频媒体的播放。

在上述技术方案的基础上,JAVA用户输入处理流程包含以下步 骤:

步骤D1,Android应用程序模块接收用户按键输入,并保存键值;

步骤D2,在文件系统中创建虚拟键盘设备文件的文件,该文件 会被当做一个键盘设备使用;

步骤D3,按照Linux输入设备文件结构定义,把用户按键输入 转换,写入步骤D2里创建的虚拟设备文件中;

步骤D4,CVM虚拟机模块创建监听线程,监听步骤D2里创建的 虚拟设备文件,一旦有输入信息便读取并处理;

步骤D5,读取到用户输入键值后,将输入键值转换为J2ME规定 的按键键值并交由CVM虚拟机处理,CVM虚拟机模块会将其转换为按 键事件并最终发送到J2ME程序逻辑中。

与现有技术相比,本发明采用与基于嵌入式Linux系统的标清或 高清机顶盒的作法一致,通过在Android系统中内置JAVA虚拟机软 件,且对JAVA虚拟机软件的构成以及JAVA虚拟机的运行环境结构进 行细化,使JAVA虚拟机软件能独立的解释、运行J2ME软件包或其他 J2ME程序,确保了对J2ME程序的完整兼容性和稳定性。例如:当应 用在基于Android系统的智能机顶盒上时,JAVA虚拟机能在智能操 作系统平台之上运行J2ME软件包,可以确保对IPTV平台的JAVA游 戏的完整兼容性和稳定性。

与现有技术相比,本发明运行J2ME软件包时不需要将原生态的 J2ME软件包进行转化、安装、启动运行等过程,J2ME软件包通过JAVA 虚拟机独立启动,直接运行,实时性高,用户体验更佳。

综上所述,本发明所述的实现方法,在Android系统中内置JAVA 虚拟机软件,JAVA虚拟机软件可以独立、高效地运行,能独立的解 释、运行J2ME软件包或其他J2ME程序,确保了对J2ME程序的完整 兼容性和稳定性,J2ME程序通过JAVA虚拟机独立启动,直接运行, 实时性高,用户体验更佳。

附图说明

本发明有如下附图:

图1是表示本发明的JAVA虚拟机运行环境结构示意图。

图2是表示J2ME程序启动和运行流程图。

图3是表示JAVA虚拟机图形显示处理流程图。

图4是表示JAVA虚拟机音频播放处理流程。

图5是表示JAVA用户输入处理流程。

具体实施方式

以下结合附图对本发明作进一步详细说明。

本发明所述的智能操作系统上的JAVA虚拟机实现方法,首先将 JAVA虚拟机软件分为以下两个部分:

启动入口部分,负责图形显示、音频播放、用户输入处理等工作, 作为正常的Android应用程序的启动入口;

CVM虚拟机部分,CVM即C virtual machine,是JAVA虚拟机嵌 入式版本,以动态库的形式工作在Linux用户空间,负责J2ME软件 包的解析和运行,执行J2ME软件包的绘图、音频逻辑,并根据J2ME 软件包逻辑处理用户输入事件;

启动入口部分和CVM虚拟机部分之间,通过JNI(JAVA NATIVE  INTERFACE,JAVA本地调用技术)和共享内存空间等方式通信。

在上述技术方案的基础上,将JAVA虚拟机的运行环境结构分为 两个层次:Linux用户层和Dalvik虚拟机层(Google专为Android 系统开发的JAVA虚拟机使用.dex格式的JAVA程序);其中:

启动入口部分的Android应用程序模块及其JNI模块(Android  JNI模块)运行在Dalvik虚拟机层,

CVM虚拟机部分的CVM虚拟机模块及其JNI模块(CVM JNI模块) 运行在Linux用户层;

启动入口部分和CVM虚拟机部分的JNI模块同为C/C++实现,并 且公用内存空间,他们之间的通信作为Linux用户层和Dalvik虚拟 机层这两个层次之间的桥梁使用,参见图1。

本发明所述的智能操作系统上的JAVA虚拟机实现方法,JAVA虚 拟机运行J2ME软件包(J2ME程序)的工作过程包括:

启动和运行流程(J2ME程序启动和运行流程),

JAVA虚拟机图形显示处理流程,

JAVA虚拟机音频播放处理流程,

JAVA用户输入处理流程。

以下逐一说明。

本发明的启动和运行流程包含以下步骤(参见图2):

步骤A1,Android应用程序模块启动,启动参数中设置jar(JAVA  Archive,是指将JAVA类文件和各种资源文件以及meta-data打包发 布的文件格式)软件包文件路径;

步骤A2,CVM虚拟机模块被编译为Linux动态库,通过Android JNI装载CVM虚拟机的动态库,并获取其入口函数来启动CVM虚拟机 模块,此时将步骤A1中获取到的jar软件包文件路径传递给CVM虚 拟机的动态库;

步骤A3,CVM虚拟机模块根据步骤A2中获取到的jar软件包文 件路径来读取jar文件,解析出其中的类文件,并加载J2ME(JAVA  Platform,Micro Edition专为手机、机顶盒等嵌入式设备提供的 JAVA标准)类入口点,从而启动程序(J2ME程序);

步骤A4,开始J2ME软件包的生命周期,进入J2ME软件包规定 的程序逻辑,包含绘图、音频、用户输入处理等逻辑;

步骤A5,将J2ME软件包逻辑中处理好的绘图、音频等信息,通 过CVM JNI模块的接口传递到Android JNI模块;

步骤A6,Android JNI模块再将绘图、音频等信息传递到Android 应用程序模块,在Android应用程序模块中予以显示、播放;

步骤A7,Android应用程序模块接收用户输入(如方向键、确定), 通过虚拟Linux键盘设备文件的方式传递到CVM虚拟机模块;

步骤A8,用户选择退出,CVM虚拟机模块通过CVM JNI模块发出 退出命令;

步骤A9,退出命令通过Android JNI模块传递到Android应用 程序模块,Android应用程序模块收到退出命令,退出程序流程结束。

JAVA虚拟机图形显示处理流程包含以下步骤(参见图3):

步骤B1,程序(J2ME程序)启动后,Android应用程序模块初 始化应用程序视图(派生自Android.view.SurfaceView),视图中使 用一块Android.graphics.Bitmap绘图;

所述Android.graphics.Bitmap结构即绘图缓冲;

步骤B2,通过Android JNI模块初始化步骤B1中所述的 Android.graphics.Bitmap结构,即初始化绘图缓冲;

步骤B3,CVM虚拟机模块通过共享内存的方式取得绘图缓冲的实 际指针,即步骤B2中所初始化的Android.graphics.Bitmap结构中 的实际绘图内存;

步骤B4,CVM虚拟机模块根据所运行的J2ME程序逻辑,完成图 象解码、图形绘制、文本绘制等操作;

步骤B5,将步骤B4中绘制完成的图像处理结果输出到步骤B3 所取得的绘图缓冲中;

步骤B6,绘图完成,通过CVM JNI模块发出要求刷新屏幕的指 令;

步骤B7,Android JNI模块收到刷新屏幕的指令,通知Android 应用程序模块绘图缓冲已更新;

步骤B8,拉伸绘图缓冲的内容以适应显示设备,并刷新视图(即 步骤B1中初始化的Android.view.SurfaceView衍生类),完成图像 的显示。

JAVA虚拟机音频播放处理流程包含以下步骤(参见图4):

步骤C1,程序启动后,Android应用程序模块初始化Android播 放器(Android.media.MediaPlayer);

步骤C2,CVM虚拟机模块根据所运行的J2ME程序逻辑,发出播 放,停止等命令;

步骤C3,在CVM JNI模块中,将播放、停止等命令封装为命令 字符串;

步骤C4,CVM JNI模块将命令字符串发送到Android JNI模块处 理;

步骤C5,Android JNI模块将命令字符串发送到Android应用程 序模块;

步骤C6,Android应用程序模块收到并解析命令字符串,根据命 令的内容顺序执行播放、停止等操作,实现音频媒体的播放。

JAVA用户输入处理流程包含以下步骤(参见图5):

步骤D1,程序启动后,Android应用程序模块接收用户按键输入, 并保存键值;

步骤D2,在文件系统中创建虚拟键盘设备文件的文件,该文件 (虚拟设备文件)会被当做一个键盘设备使用;

步骤D3,按照Linux输入设备文件结构定义,把用户按键输入 转换,写入步骤D2里创建的虚拟设备文件中;

步骤D4,CVM虚拟机模块创建监听线程,监听步骤D2里创建的 虚拟设备文件,一旦有输入信息便读取并处理;

步骤D5,读取到用户输入键值后,将输入键值转换为J2ME规定 的按键键值并交由CVM虚拟机处理,CVM虚拟机模块会将其转换为按 键事件并最终发送到J2ME程序逻辑中。

本发明所述的JAVA虚拟机实现方法,不但适用于智能机顶盒等 嵌入式终端设备实现运行JAVA游戏,还适用于基于Android系统的 其它智能设备上实现运行J2ME程序的JAVA虚拟机实现。

当然,本发明还可有其他多种实施例,在不背离本发明精神及其 实质的情况下,熟悉本领域的技术人员可根据本发明做出各种相应的 改变和变形,但这些相应的改变和变形都应属于本明所附的权利要求 的保护范围。

本说明书中未作详细描述的内容属于本领域专业技术人员公知 的现有技术。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号