J2ME CDC(Connected Device Configuration,连接式设备配置集)
使用CVM,面向那些具有更强计算能力的嵌入式设备,包含了Java类库的核心部分,是应用Java技术在嵌入式设备上进行开发所需类库的最小集合。
它具有如下优点:
高级网络特性:CDC位基于套接字的网络编程技术提供了最新Java API
满足Jini技术的需求:基于CDC远程方法调用(RMI)可选包可实现对基于完全Jini技术的设备支持。
方便的移植:CDC的Foundation Profile(基础描述集)核心类库包括了广为使用的java.lang、java.net、java.io、java.util、java.security和java.text包
清除了deprecated方法:程序更安全、易于理解
可以利用更高级的包进行扩展,比如说Personal Basis Profile(PBP个人基础描述集)和Personal Profile(PP个人描述集)等。
CDC向小型设备展现了大量的Java 2技术,与Jini技术的结合提高了设备的灵活性,以及能够不断进化发展的能力,实现即插即用,分布计算等等。
CDC对资源的要求:
内存:2MB ROM、512KB RAM
处理器:32位CPU
网络连接能力:至少支持UDP,附加的profile可添加对TCP/IP的完全支持
用户界面:没有支持图形用户的GUI,可添加描述集实现。
一、选用sun的phoneme
https://phoneme.dev.java.net/
二、下载
http://download.java.net/mobileembedded/phoneme/advanced/phoneme_advanced-mr2-dev-src-b97-20_nov_2008.zip
三、解压
unzip phoneme_advanced-mr2-dev-src-b97-20_nov_2008.zip
四、修改makefile
cd phoneme_advanced_mr2/cdc/build/linux-arm-generic
gedit GNUmakefile
修改 CVM_TARGET_TOOLS_PREFIX=/usr/local/arm/4.3.2/bin/arm-linux- 为自己的交叉编译器的地址
五、输出PATH
export PATH=/usr/local/arm/4.3.2/bin/:$PATH 为自己的交叉编译器的地址
六、编译
make
七、如果是使用ubuntu的朋友,可能要安装sun-java6-jdk和另外的一两个工具
Java SDK安装配置
http://wiki.ubuntu.org.cn/Java%E5%AE%89%E8%A3%85%E9%85%8D%E7%BD%AE
另外的一两个工具可以通过 apt-get install 来安装(出错时会提醒的了,具体我忘了,没有记录)
八、出错
../../src/linux-arm/javavm/runtime/segvhandler_arch.c:45:26: error: asm/ucontext.h: No such file or directory
../../src/linux-arm/javavm/runtime/segvhandler_arch.c:In function 'handleSegv':
../../src/linux-arm/javavm/runtime/segvhandler_arch.c:224: error: dereferencing pointer to incomplete type
../../src/linux-arm/javavm/runtime/segvhandler_arch.c:285: error: dereferencing pointer to incomplete type
../../src/linux-arm/javavm/runtime/segvhandler_arch.c:285: error: dereferencing pointer to incomplete type
../../src/linux-arm/javavm/runtime/segvhandler_arch.c:286: error: dereferencing pointer to incomplete type
../../src/linux-arm/javavm/runtime/segvhandler_arch.c:294: error: dereferencing pointer to incomplete type
修改 segvhandler_arch.c 文件
gedit ../../src/linux-arm/javavm/runtime/segvhandler_arch.c
修改
#define ucontext asm_ucontext
#include <asm/ucontext.h>
为
//#define ucontext asm_ucontext //注释掉这句
#include <ucontext.h> //去掉arm/
九、编译
make
编译成功!
ls
可以看到在当前目录有
bin lib testclasses.zip
十、测试
1)、拷贝上面三个文件与文件夹到开发板/home/j2me目录
2)、在开发板/etc/init.d/rcS文件里加入如下
JAVA_HOME=/home/j2me
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib
3)、经典的HelloWorld
cd /home/j2me/bin
./cvm -cp ../testclasses HelloWorld
可以看到输出了 HelloWorld.
4)、来个全面测试
./cvm -cp ../testclasses.zip Test
*Number of command line arguments: 0
Starting test1
...recurse
...recurse
...recurse
...link
...link
...link
Starting test1 again
...recurse
...recurse
...recurse
...link
...link
...link
test6: Caught inner java.lang.NullPointerException
test6: Caught outer java.lang.NullPointerException
Testing Array Copy
*TestE exception thrown because "I'm feeling Testy"
*<clinit> threw java.lang.ExceptionInInitializerError
*<clinit> threw java.lang.NoClassDefFoundError: StaticE
c1 = class [LTest;
c2 = class [[LTest;
c3 = class [LC;
c4 = class [[LC;
c1.modifiers = 1041
c2.modifiers = 1041
c3.modifiers = 1040
c4.modifiers = 1040
*FloatMIN =1.4E-45
*FloatMAX =3.4028235E38
FloatMIN (the int bits) =1
FloatMAX (the int bits) =2139095039
java.lang.IllegalArgumentException: too many dimensions
at java.lang.reflect.Array.multiNewArray(Native Method)
at java.lang.reflect.Array.newInstance(Unknown Source)
at Test.testDeepArrayConstruction(Unknown Source)
at Test.main(Unknown Source)
at sun.misc.CVM.runMain(Unknown Source)
Constructed an object of type
[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[LTest;
finally!
Requesting GC with a latency request of 2 seconds
(Turning GC tracing on)
Sleeping 5 seconds, and waiting for GC's
Woke up! Cancelling latency request
.............
*CONGRATULATIONS: test Test completed with 411 tests passed and 0 failures
*Output lines starting with a * should be checked for correctness
*They can be compared to src/share/javavm/test/TestExpectedResult
*CONGRATULATIONS: test Test completed with 411 tests passed and 0 failures
使用CVM,面向那些具有更强计算能力的嵌入式设备,包含了Java类库的核心部分,是应用Java技术在嵌入式设备上进行开发所需类库的最小集合。
它具有如下优点:
高级网络特性:CDC位基于套接字的网络编程技术提供了最新Java API
满足Jini技术的需求:基于CDC远程方法调用(RMI)可选包可实现对基于完全Jini技术的设备支持。
方便的移植:CDC的Foundation Profile(基础描述集)核心类库包括了广为使用的java.lang、java.net、java.io、java.util、java.security和java.text包
清除了deprecated方法:程序更安全、易于理解
可以利用更高级的包进行扩展,比如说Personal Basis Profile(PBP个人基础描述集)和Personal Profile(PP个人描述集)等。
CDC向小型设备展现了大量的Java 2技术,与Jini技术的结合提高了设备的灵活性,以及能够不断进化发展的能力,实现即插即用,分布计算等等。
CDC对资源的要求:
内存:2MB ROM、512KB RAM
处理器:32位CPU
网络连接能力:至少支持UDP,附加的profile可添加对TCP/IP的完全支持
用户界面:没有支持图形用户的GUI,可添加描述集实现。
一、选用sun的phoneme
https://phoneme.dev.java.net/
二、下载
http://download.java.net/mobileembedded/phoneme/advanced/phoneme_advanced-mr2-dev-src-b97-20_nov_2008.zip
三、解压
unzip phoneme_advanced-mr2-dev-src-b97-20_nov_2008.zip
四、修改makefile
cd phoneme_advanced_mr2/cdc/build/linux-arm-generic
gedit GNUmakefile
修改 CVM_TARGET_TOOLS_PREFIX=/usr/local/arm/4.3.2/bin/arm-linux- 为自己的交叉编译器的地址
五、输出PATH
export PATH=/usr/local/arm/4.3.2/bin/:$PATH 为自己的交叉编译器的地址
六、编译
make
七、如果是使用ubuntu的朋友,可能要安装sun-java6-jdk和另外的一两个工具
Java SDK安装配置
http://wiki.ubuntu.org.cn/Java%E5%AE%89%E8%A3%85%E9%85%8D%E7%BD%AE
另外的一两个工具可以通过 apt-get install 来安装(出错时会提醒的了,具体我忘了,没有记录)
八、出错
../../src/linux-arm/javavm/runtime/segvhandler_arch.c:45:26: error: asm/ucontext.h: No such file or directory
../../src/linux-arm/javavm/runtime/segvhandler_arch.c:In function 'handleSegv':
../../src/linux-arm/javavm/runtime/segvhandler_arch.c:224: error: dereferencing pointer to incomplete type
../../src/linux-arm/javavm/runtime/segvhandler_arch.c:285: error: dereferencing pointer to incomplete type
../../src/linux-arm/javavm/runtime/segvhandler_arch.c:285: error: dereferencing pointer to incomplete type
../../src/linux-arm/javavm/runtime/segvhandler_arch.c:286: error: dereferencing pointer to incomplete type
../../src/linux-arm/javavm/runtime/segvhandler_arch.c:294: error: dereferencing pointer to incomplete type
修改 segvhandler_arch.c 文件
gedit ../../src/linux-arm/javavm/runtime/segvhandler_arch.c
修改
#define ucontext asm_ucontext
#include <asm/ucontext.h>
为
//#define ucontext asm_ucontext //注释掉这句
#include <ucontext.h> //去掉arm/
九、编译
make
编译成功!
ls
可以看到在当前目录有
bin lib testclasses.zip
十、测试
1)、拷贝上面三个文件与文件夹到开发板/home/j2me目录
2)、在开发板/etc/init.d/rcS文件里加入如下
JAVA_HOME=/home/j2me
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib
3)、经典的HelloWorld
cd /home/j2me/bin
./cvm -cp ../testclasses HelloWorld
可以看到输出了 HelloWorld.
4)、来个全面测试
./cvm -cp ../testclasses.zip Test
*Number of command line arguments: 0
Starting test1
...recurse
...recurse
...recurse
...link
...link
...link
Starting test1 again
...recurse
...recurse
...recurse
...link
...link
...link
test6: Caught inner java.lang.NullPointerException
test6: Caught outer java.lang.NullPointerException
Testing Array Copy
*TestE exception thrown because "I'm feeling Testy"
*<clinit> threw java.lang.ExceptionInInitializerError
*<clinit> threw java.lang.NoClassDefFoundError: StaticE
c1 = class [LTest;
c2 = class [[LTest;
c3 = class [LC;
c4 = class [[LC;
c1.modifiers = 1041
c2.modifiers = 1041
c3.modifiers = 1040
c4.modifiers = 1040
*FloatMIN =1.4E-45
*FloatMAX =3.4028235E38
FloatMIN (the int bits) =1
FloatMAX (the int bits) =2139095039
java.lang.IllegalArgumentException: too many dimensions
at java.lang.reflect.Array.multiNewArray(Native Method)
at java.lang.reflect.Array.newInstance(Unknown Source)
at Test.testDeepArrayConstruction(Unknown Source)
at Test.main(Unknown Source)
at sun.misc.CVM.runMain(Unknown Source)
Constructed an object of type
[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[LTest;
finally!
Requesting GC with a latency request of 2 seconds
(Turning GC tracing on)
Sleeping 5 seconds, and waiting for GC's
Woke up! Cancelling latency request
.............
*CONGRATULATIONS: test Test completed with 411 tests passed and 0 failures
*Output lines starting with a * should be checked for correctness
*They can be compared to src/share/javavm/test/TestExpectedResult
*CONGRATULATIONS: test Test completed with 411 tests passed and 0 failures
发表评论
-
MyEclipse6.5配置Tomcat7.0
2014-11-26 10:26 817window>>Preferences>&g ... -
JSP 转换 mht java 代码
2013-11-22 10:31 1036import java.io.BufferedInputS ... -
JAVA实现FTP上传下载
2013-09-06 10:31 876import java.io.DataIn ... -
java的KVM在arm上的应用
2013-03-21 09:26 932http://wenku.baidu.com/view/162 ... -
JAVA桌面截图
2013-03-20 15:07 780Robot robot = new Robo ... -
引用他人代码去掉前面行数
2013-03-19 11:01 869import java.io.*; public clas ... -
JAVA调用DLL文件
2012-11-25 16:02 9761 创建 TestDll.java public cla ... -
用java的反射清空对象属性的值
2012-10-25 16:09 7993@SuppressWarnings("unche ... -
用反射清空对象属性的的值
2012-10-25 16:06 0@SuppressWarnings("unche ... -
JMS实例,包括点对点和主题订阅
2012-07-11 10:58 2997三个Java文件: JMSTest.java ... -
Jmail收发邮件
2012-07-11 09:32 1097Jmail 接收邮件: import javax.mai ... -
MyEclipse6.0反编译插件jadclipse安装
2012-05-16 11:54 1033插件下载 反编译工具jad,地址:http://www.var ... -
MyEclipse6.0反编译插件jadclipse安装
2012-05-16 11:51 0插件下载 反编译工具ja ... -
把第一个对象中不为空的数据复制到第二个对象中
2012-04-09 10:31 1047/*** *实现两个实例对象之间的对拷, * ... -
velocity导出word模板
2012-02-29 13:11 1504public class VelocityExample { ... -
Jacob操作word
2012-02-29 13:02 1351package test; import com.jacob ... -
EJB3学习资料
2011-03-31 17:28 856http://wenku.baidu.com/view/6e2 ... -
Java和C#相互调用
2011-03-31 17:23 885http://developer.51cto.com/art/ ... -
java操作注册表方法
2011-02-23 16:57 849http://www.iteye.com/topic/8229 ... -
java源程序加密解决方案(基于Classloader解密)
2011-02-22 21:55 1176最近接触到加密系统的要求 1.绑定用户的MAC地址 2 ...
相关推荐
在本文中,我们将深入探讨如何在ARM架构的开发板上配置Java运行环境,以便能够成功地执行Java测试代码。...一旦完成,你就可以在ARM平台上编写、编译和运行Java应用程序,这对于物联网设备的开发和测试非常有帮助。
在这个“javacv1.1-android-armARM”压缩包中,主要是针对Android ARM架构的版本,使得开发者能够在运行Android系统的设备上进行图像和视频处理。 1. **JavaCV**:JavaCV是一个Java接口,它封装了多个计算机视觉库...
在本场景中,我们讨论的是"java8安装包_linux-arm版本.rar",这是一个针对Linux ARM平台的Java 8安装压缩包。 首先,要安装这个Java 8版本,你需要遵循以下步骤: 1. **下载**: 从可靠的源获取"java8安装包_linux-...
Java 7 OpenJDK Arm64 AArch64 压缩包文件“java-7-openjdk-arm64-aarch64.tar.gz”是专为基于ARM架构的64位系统设计的Java开发运行环境。这个压缩包包含了OpenJDK 7的实现,OpenJDK是一个开源版本的Java开发工具包...
该研究的结果可以应用于嵌入式系统的开发,实现Java程序在嵌入式设备上的运行环境。 Java虚拟机的移植对于嵌入式系统的发展具有重要意义,可以实现Java程序在嵌入式设备上的运行环境,提高嵌入式系统的智能化和...
- `jdk-8u271-linux-aarch64.rpm`:这是针对64位ARM架构(如树莓派等设备)的RPM安装包,适合在ARM处理器上部署Java应用。 2. **tar.gz格式**: - `jdk-8u271-linux-i586.tar.gz`:32位x86版的源代码压缩包,用户...
"JavaWeb应用在ARMLinux平台上的实现" 本文主要讨论了在ARMLinux平台上实现JavaWeb应用的详细过程。首先,作者们完成了Java虚拟机JAMVM、Java Web容器Winstone和嵌入式数据库Sqhte的移植配置,并成功地在ARMLinux...
【标题】"JAVA Linux ARM 中文手册"是一个综合性的资源包,主要涵盖了Java在Linux操作系统下的应用以及在ARM架构上的开发知识。这个压缩包显然旨在为开发者提供在这些技术领域内的详细指南,帮助他们理解和实践Java...
针对arm64架构,这是ARM公司设计的一种64位指令集,常用于移动设备和嵌入式系统,近年来也开始被广泛应用在服务器领域。arm64位系统具有更高的计算能力和能效比,对于处理图像和视频数据等密集型任务尤为适合。此...
下面将详细介绍如何在Java中调用摄像头并进行推流,以及与ARM架构和Android设备相关的技术要点。 1. **Java Media Framework (JMF) 和 OpenCV**: Java Media Framework是Java平台上的多媒体处理框架,可以用来...
标题中的"Arm.rar_arm java_arm 聊天室_java群聊开发_java聊天室_私聊"暗示了这是一个关于使用Java编程语言开发的聊天室应用程序,特别提到了支持群聊和私聊功能,并且可能涉及了ARM架构的适配。描述中的"实现java...
移植完成后,必须对移植后的JVM进行详尽的测试,确保其在ARM平台上能够正确运行各种Java应用,同时满足性能需求。这包括基本的字节码解释、垃圾回收、多线程支持以及与硬件资源的交互等。 5. **优化**: 为了提高...
### Java虚拟机在ARM_Linux平台的移植全过程 #### 一、引言 随着软件行业的开源风气日益增强,开源的Java虚拟机(JVM)的开发变得越来越活跃。市场上已经出现了一系列成熟且易于移植的开源Java虚拟机,例如Kaffe、...
- **应用程序开发**:展示如何在ARM设备上开发用户界面、数据处理和网络通信等功能,可能涵盖Android应用程序的Java或Kotlin开发,或者在RTOS上用C/C++编写控制逻辑。 - **硬件交互**:讲解如何通过编程控制ARM芯片...
随着Apple转向自家的基于ARM架构的M1芯片,这个版本的JDK确保了在新款Mac电脑上能顺利运行Java应用程序,提供原生支持,从而获得更好的性能和兼容性。 DMG文件是苹果操作系统特有的安装镜像格式,扩展名为".dmg"。...
在本文中,我们将深入探讨将Java虚拟机移植到ARM架构的过程,这是一种广泛应用于嵌入式系统、移动设备和服务器的处理器架构。 首先,我们需要理解ARM平台的特性。ARM(Advanced RISC Machines)是一种精简指令集...
Android是基于Java的开源操作系统,因此Java在这里用于开发Android应用程序,可能是一个配套的控制应用,用于与智能家居系统通信。HTML是超文本标记语言,用于创建网页界面。ARM代表了硬件层面的处理器架构,表明...
`swt-arm64.jar`针对64位ARM架构进行了优化,确保在这些平台上运行的Java应用能够充分利用硬件资源,提供流畅、高效的用户体验。 在国产化服务器环境中,如飞腾和麒麟服务器,由于它们采用了非Intel的CPU架构,因此...
Jazelle技术则允许在ARM处理器上同时运行Java应用程序和其他传统应用,进一步提升性能和降低系统成本。 ARM处理器的应用范围广泛,不仅局限于某一种具体产品,而是渗透到几乎所有电子产品的核心当中。无论是在智能...
在Linux ARM平台上,JDK确保了Java应用程序能在该平台上顺利运行。 **2. Linux与ARM兼容性** 由于ARM架构的多样性,Linux内核需要针对不同的硬件配置进行优化。Linux ARM版本的JDK通常是针对特定的ARM处理器版本...