如何在J2ME中创建MIDlet

总览

Java移动应用程序称为J2ME。 通常,当我们在移动技术领域工作时,我们必须考虑J2ME应用程序。 通过这种方式,我们可以开发我们的移动应用程序,也可以通过jad或jar文件将其安装在我们的设备中。 近年来,手机开发中最大的增强是JavahostedMIDlet的引入。 MIDlet在Java虚拟机上执行,该Java虚拟机抽象出底层硬件,并允许开发人员创建演示文稿,这些演示文稿可以在通常支持Java运行时系统的各种设备上运行。 不方便地,这种便利是以限制访问设备硬件为代价的。 现在,在移动开发中,第三方应用程序接收与电话制造商编写的本机应用程序不同的硬件访问和执行权利被认为是正常的。 Java MIDlet的引入和实现扩大了开发人员的受众。 但是缺乏底层硬件访问和执行的沙箱操作,意味着大多数移动应用程序对于设计用于在较小屏幕上呈现的桌面程序或网站都是常规的。

在本文中,将详细讨论MIDlet的创建。

介绍

J2ME缩写为Java 2,微型版。 它是被困在处理能力和存储能力有限以及交替或相当低带宽的网络连接系统的设备上的Java的功能版本。 这些系统还包括我们日常生活中通常使用的手机,寻呼机,无线设备。 MIDlet是移动电话系统小程序的一部分。 这里的小程序可以在受保护的沙箱中运行。 该系统在该过程中非常受限制。 当前在大多数支持Java的手机上都可以找到MIDP()1.0,并且相当不错。 例如,KVM不允许我们处理浮点数,并且为MIDP 1.0编写的MIDlet在没有电话制造商专有API(应用程序编程系统)的情况下无法访问沙箱之外的任何内容。 现在,我们可以梦想成真地开发带有钩子的最终MIDlet,并将其插入到backburner的电话操作系统的每个部分中。 基本上,当我们想确切地了解MIDP 1.0的局限性时,我们应该在这里阅读规范。 如果我们这样做,则它可能想签出MIDP 2.0版本,并且它的等级更高。 现在,我们将要编写第一个MIDlet –一个功能齐全的“ Hello MIDlet”应用程序。

MIDlet生命周期

每个系统都应该有生命周期,通过这个生命周期,我们可以逐步了解系统。 在这里,我们简短地讨论MIDlet生命周期移动设备,例如仿真器或Real设备,它们可以使用自己的称为应用程序管理软件(简称为AMS)的软件技术过程与MIDlet进行交互。 AMS负责初始化,启动,暂停,恢复和销毁MIDlet。 AMS可能负责安装和删除MIDlet。 为了促进此生命周期管理,MIDlet可以处于三种状态之一,该状态通过每个MIDlet扩展和覆盖的MIDlet类方法进行控制。 这些状态分为活动,暂停和破坏等不同部分。

虚拟机

通常,这些类型的编程模型虚拟机或虚拟设备在软件开发部分中也起着至关重要的作用。 现在,由于更改了内存并显示了功能,因此CLDC(J2ME连接的受限设备配置)和CDC(J2ME连接的设备配置)需要使用自己的虚拟机。 CLDC虚拟机小于CDC所需的虚拟机,并且支持较少的功能。 从这种意义上讲,CLDC的虚拟机称为Kilo虚拟机(KVM),而CDC的虚拟机称为CVM。

J2ME Con​​nected受限设备配置:

  • 它用于为手机,寻呼机和无线设备指定Java环境,也支持其他设备。
  • CLDC设备通常是无线的,这意味着通过CLDC支持移动系统
  • 内存需求在该特定设备中非常重要,因此Java可以使用160 – 512k的内存。
  • 节能系统的电源或电池供电能力有限。
  • 沟通过程在这里非常重要。 网络连接为无线,间歇性,低带宽(9600bps或更小)。

J2ME连接的设备配置:

  • 通常,它描述了数字电视机顶盒,移动,高端无线设备和汽车遥测系统的Java环境。
  • 该设备由32位处理器支持的系统供电。
  • Java平台可使用2MB或更多的内存。
  • 经常是无线,不连续,低带宽(9600bps或更小)的网络连接

在Net Beans中创建我们自己的MIDlet的过程

通常,当我们在Net Beans字段中工作时,由于这个原因,我们必须安装Java SE Development Kit(JDK),因此必须首先下载并安装最新的32位版本的Java SE Development Kit(JDK)。 需要JDK来编译Java类以执行代码。 《 Net Beans安装指南》要求在安装过程中用来浏览到本地驱动器上的JDK位置。

ð请记住这一点,当我们安装Net Beans时,我们选择自定义安装并清除“功能随需应变”选项。 然后下载并安装支持Java ME(微型版)的软件开发套件(SDK)。 SDK提供了IDE涉及的Java ME类库,用于为特定设备平台构建MIDlet。

实际上,当我们为Series 40设备生成MIDlet时,我们使用的是Java的诺基亚SDK(软件开发工具包)。 现在,如果我们要为40系列,第6版或更早的40系列设备创建MIDlet,请使用相应的40系列SDK。

ð请记住,SDK已与IDE正确集成,并且还将SDK与IDE部分安装在同一逻辑驱动器上。

配置Net Bean的过程

安装所需的软件后,将Net Beans与安装的SDK集成在一起。
在这里,我们将逐步讨论创建项目的过程:

  1. Open Net Beans(版本7.2.1)可能会根据软件更新过程进行更改
  2. 选择工具-> Java平台
  3. 单击添加平台
  4. 选择Java ME CLDC Platform Emulator ,然后单击下一步 。 Net Beans在我们的计算机上搜索支持Java ME的SDK。
  5. 选择“ 文件”>“新建项目”
  6. 选择Java ME-> Mobile Application ,然后单击下一步
图1:选择Java平台类型

图1:选择Java平台类型

  1. 如果我们在Net Beans IDE中找不到SDK(软件开发工具包),请单击“查找更多Java ME平台文件夹”,然后选择安装SDK的文件夹。 Net Beans在选定的文件夹中搜索支持Java ME(微型版)的SDK(软件开发工具包)。
  2. 选择SDK,然后单击Next-> Net Beans检测SDK功能。
图2:添加40系列软件开发套件

图2:添加40系列软件开发套件

  1. 完成后,单击配置->单击完成,然后关闭。
  2. 现在,您的开发环境已设置好,您可以在Net Beans中创建MIDlet。

要创建HelloBCEI MIDlet:

  1. 下载并安装Netbeans(选择支持Java Micro Edition的安装包)。

在此项目名称字段中,输入“ HelloBCEI”。

图3:在Net Beans中创建第一个MIDlet

图3:在Net Beans中创建第一个MIDlet

  1. 清除“创建默认包和主要可执行 ”复选框。
  2. 点击下一步。 MIDlet设置将继续进行设备平台选择。
  3. 在“仿真器平台”下拉菜单选项中,选择要为其创建MIDlet的设备平台:

对于那些40系列设备,我们在这里选择诺基亚Java软件开发套件。

图4:为MIDlet选择设备平台

图4:为MIDlet选择设备平台

  1. 选择CLDC-1.1和MIDP-2.0。 我们也可以选择MIDP-2.1并单击Finish 。 NetBeans为我们设置了MIDlet项目。

现在,我通过以下方式创建程序。

  1. 要为MIDlet创建主类,请选择File-> New File。
  2. 选择CLDC-> MIDlet,然后单击下一步。
  3. 在“ MIDlet名称”字段中,输入“ HelloBCEI”。
  4. 在MIDP类名称字段中,输入“ HelloBCEIMIDlet”。
  5. 点击完成

HelloBCEI MIDlet类是在默认程序包中创建的。 在这里,我们写下在程序中生成代码的代码。

清单1:显示MIDlet类

import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.midlet.MIDlet;public class HelloMIDlet extends MIDlet
{
public HelloWorldMIDlet()
{}
// Sets the MIDlet’s current Display to a HelloScreen object.
public void startApp()
{
Displayable current = Display.getDisplay(this).getCurrent();
if (current == null)
{
HelloScreen helloScreen = new HelloScreen(this, “Hello, BCEI!”);
Display.getDisplay(this).setCurrent(helloScreen);
}
}
public void pauseApp()
{}
public void destroyApp(boolean unconditional)
{}
}

要创建HelloBCEIScreen类:

  1. 选择文件->新文件
  2. 选择Java-> Java类 ,然后单击下一步。
  3. 在“类名”字段中,输入“ HelloBCEI”。
  4. 点击完成 。 HelloBCEI类在默认包中创建。

清单2:在默认包中创建的所示类

import javax.microedition.lcdui.*;class HelloBCEIScreen extends Form implements CommandListener
{
private final HelloBCEIMIDlet midlet;
private final Command exitCommand; //Exit command for closing the MIDlet in the device UI.public HelloBCEIScreen(HelloWorldMIDlet midlet, String string)
{
super(“”);
StringItem helloText = new StringItem(“”, string);
super.append(helloText);
this.midlet = midlet;
exitCommand = new Command(“Exit”, Command.EXIT, 1);
addCommand(exitCommand);
setCommandListener(this);
}public void commandAction(Command command, Displayable displayable)
{
if (command == exitCommand)
{
midlet.notifyDestroyed();
}
}
}

选择File-> Save All保存项目。

在“项目”窗格中,右键单击HelloBCEI项目,然后选择“ 部署选项” 。 选择部署选项后,程序即可安装在设备中。

NetBeans构建MIDlet,并创建用于将MIDlet部署到设备的JAR和JAD文件。 您也可以在dist文件夹下的“文件”窗格中找到生成的文件。

图5:在“项目”窗格中查看的HelloBCEI项目

图5:在“项目”窗格中查看的HelloBCEI项目

调试MIDlet

在调试MIDlet之前,我们必须具有MIDP可执行文件的版本以及在其类文件中具有调试密码的MIDlet。 要查看我们是否具有可接受的midp可执行文件版本,并在-help选项的中间运行midp命令。 如果生成的可执行文件具有Java调试功能,那么我们将看到下面列出的-debugger选项。 例如:

C:\midp2.0fcs> bin\midp -helpUsage: midp [<options>]Run the Graphical MIDlet Suite Manager….or midp [<options>] -debugger …

我们正在使用的midp可执行文件版本不支持Java编程语言调试。 为了生成包含调试符号的MIDlet版本,我们对javac(Java的编译器)命令使用–g选项。

要调试MIDlet,应遵循以下步骤:

1.首先打开命令提示符或终端窗口。

2.将当前目录更改为midpInstallDir。

为了说明起见,如果目录中安装了MIDP Reference成就

c:\midp2.0fcs we can run the command:c:\> cd midp2.0fcs

3.在调试模式下启动MIDP Reference完成并可执行文件。

在-debugger和-port开关中间使用midp命令。 端口号应为2800。此处,KVM调试代理期望调试器在其上运行的端口号。

参考实施可执行文件。 例如:

c:\midp2.0fcs\> bin\midp -debugger -port 2800 -classpath classes

4.现在启动KVM调试代理。

查看KVM文档以获取有关正确语法,参数和选项的信息。 对于标本,以下命令使KVM调试代理连接到我们在上一步中启动的midp可执行文件,然后在端口5000处侦听与Java™平台调试器体系结构过程兼容的软件:

c:\midp2.0fcs\> java -jarc:/kvm/bin/kdp.jar kdp.KVMDebugProxy –l 5000 -p -r localhost 2800 -cp

包含MIDletClassFiles的路径

5.从任何与Java平台调试器体系结构兼容的调试器连接到KVM调试代理。 兼容的调试器包括jdb,Sun™ONE Studio(以前称为Java的Forte™),JBuilder,Code Warrior,VisualCafé等。

部署项目

现在,我们将讨论部署过程。 我们已经可以直接在移动设备上部署MIDlet并运行它。 基本上有两种方法可以做到这一点。 首先,自然是通过我们的计算机和手机之间的网络连接。 此过程可以通过USB(通用串行总线)电缆或蓝牙无线连接进行,具体取决于我们的设备。 大多数支持Java的设备将允许我们通过此连接安装J2ME应用程序。

其次,这一章更具启发性,因为它通过互联网系统将我们的MIDlet开放给外界。 通常,这意味着我们的设备应该能够使用其内部浏览器连接到Internet。

<HTML>
Click <a href=”DateTimeAppliction.jad”>here</a> to download DateTimeApplication MIDlet!
</HTML>

处理以在我们自己的设备中获取代码:

当我们创建了漂亮的小MIDlet并确保所有功能在仿真器中都能正常运行后,下一步就是使它在实际设备上运行。

空中(OTA)设置:

OTA设置允许用户使用手机(移动电话)中内置的WAP浏览器无线下载我们的应用程序。 首先,我们需要看一下使用J2ME Wireless Toolkit打包MIDlet时生成的Java Application Descriptor(JAD)文件。 当我们通过Wireless Toolkit编辑JAD文件时,我们必须打开我们的项目,然后单击Settings选项。 这将打开一个包含多个选项卡的新窗口-API选择,必需,可选,用户定义,MIDlet,推送注册表和权限。

所有这些类型的应用程序在我们的工作领域中都至关重要。 下表给出了简要的想法。

结论:

在上面的讨论中,我们了解了Java Micro Edition。 我们知道该版本适用于移动软件开发平台。 因为当我们研究基于移动软件的技术时,J2ME非常可靠并且对我们有帮助。 如果我们作为移动软件开发人员从事该特定领域的工作,那么Java平台是高度安全的。

希望您对MIDlet的创建及其实际实现有所了解。 继续在TechAlpine看!

翻译自: https://www.javacodegeeks.com/2014/06/how-to-create-midlet-in-j2me.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/363629.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

感悟测试驱动开发

软件开发方法学的泰斗Kent Beck先生最为推崇"模式、极限编程和测试驱动开发"。在他所创造的极限编程&#xff08;XP&#xff09;方法论中&#xff0c;就向大家推荐"测试先行"这一最佳实践&#xff0c;并且还专门撰写了《测试驱动开发》一书&#xff0c;详细…

如何用python写html的插件,使用python开发vim插件及心得分享

如何使vim下开发python调试更方便如何用 Python 给 Vim 写插件如何使 Vim 下开发 Python 调试更方便怎么用python调用matlab&#xff1f;打算用vim写Python 各位指点下:w 之后 文件被保存到哪了? 桌面上有个文件夹 怎么才能保存进去? 如何让:w保存在当前目录下 :q退出vim :wq…

创建一个学生信息表,与页面分离

一、需求分析 做一个jsp页面&#xff0c;动态显示信息表的内容。 1、 做一个实体类&#xff1a;StudentInfo &#xff08;包含4个字段&#xff09; 2、 如图模拟生成3条数据&#xff0c;本质上就是new StudentInfo 3个实例&#xff0c;每个实例代表一行记录&#xff08;后面…

【Unity】材质基础

【Unity】材质基础 a.基本概念 b.Albedo Maps反射率贴图 c.Alpha Maps着色器shader下四大渲染模式 d.Metallic and Smoothness Maps e.Normal Maps法线贴图 f.Height Maps g.Occlusion Maps h.Emission Maps i.Detail Mask & Secondary Maps j.Standard 金属/Standard&…

DictVectorizer中的fit_transform

导入特征提取化中的字典向量化 from sklearn.feature_extraction import DictVectorizer dv DictVectorizer () x_train dv.fit_transform(x_train) x_test dv.fit_transform(x_test) 此处的fit是找到当前字典中的键 举个例子&#xff1a; 如果x_test不fit,那x_test只能转化…

Java中的三态布尔值

我不时地想念Java中SQL的三值BOOLEAN语义。 在SQL中&#xff0c;我们有&#xff1a; TRUE FALSE UNKNOWN &#xff08;也称为NULL &#xff09; 时不时地&#xff0c;我希望自己也能用Java表达这种UNKNOWN或UNINITIALISED语义&#xff0c;而普通的true和false还不够。 实现…

阻塞分析

--阻塞 /*********************************************************************************************************************** 阻塞&#xff1a;其中一个事务阻塞&#xff0c;其它事务等待对方释放它们的锁,同时会导致死锁问题。 整理人&#xff1a;中国风(R…

科学计算机二进制算法,计算机是怎么理解二进制的?

计算机是怎么理解二进制的?计算机的发明最初纯粹是为了计算数字, 让一个机器能够通过输入不同的数字, 进行加减乘除等. 首先要约定好机器能处理的数是什么样的, 即输入是什么样的, 才能去制造计算机. 二进制只是一种尝试, 十进制也有科学家尝试过, 但由于复杂程度较二进制要高…

OpenCV人脸特效制作

https://blog.csdn.net/zxc024000/article/details/50456917 https://blog.csdn.net/huanghuangjin/article/details/81666134 DLibOpenCV 脸部跟踪张贴小物件(遮盖眼部或者眼睛变大) 所以首先需要人脸识别&#xff0c;然后再类似GAN之类的进行处理或生成 https://wysaid.org/9…

abp.event.on与abp.event.off使用

apb的全局事件 var eventName "app.createOrEditFieldModalSaved";var reloadPage function () { dt.ajax.reload();};abp.event.on(eventName, reloadPage); //弹窗关闭事件_modalManager.onClose(function () {//注销事件&#xff0c;要不然多次打开列表后&…

为JavaOne 2014做好准备!

保持那个想法&#xff01; 是的……我希望我能在Java One 2014上做演讲-但我现在只值得在梦里做到这一点&#xff01; 但是&#xff0c;没有什么阻止我遵循Java One并跟踪有关我最喜欢的主题的会话/对话。 我希望甲骨文能够像我们2013年版那样&#xff0c;像我们这样的凡人在网…

WPF 实现ScrollViewer的垂直偏移滚动跳转

问题&#xff1a;考虑屏幕大小&#xff0c;一般都是会在表单问卷的页面使用ScrollViewer。问卷中问题漏填漏选时&#xff0c;在提交时校验不过&#xff0c;需要滚动跳转至漏填漏选项。 页面如下&#xff1a; 每个选项使用StackPanel&#xff0c;并对复选框和单选的勾选事件进行…

13 个应该记住的最不寻常的搜索引擎

13 个应该记住的最不寻常的搜索引擎 如果你通过Digg或其他社会化媒体网站&#xff0c;向世界传播&#xff0c;我会非常感激&#xff0c;您对此文的随手评论会让此文展示在更多人面前。谢谢 你已经天天使用一些常见的搜索引擎&#xff0c;象 Google&#xff0c;Msn&#xff0c;Y…

限制 计算机中 某用户上网 win7,Win7旗舰版怎么限制孩子的上网时间?电脑限制孩子上网时间的方法...

Win7旗舰版怎么限制孩子的上网时间&#xff1f;我们在家里有孩子的时候非常害怕孩子沉迷与网络&#xff0c;不把心思放在学习上。所以会想方设法的限制孩子上网。那么我们怎么使用电脑的自带的功能限制孩子上网呢&#xff1f;下面小编就带着大家一起看一下吧&#xff01;设置管…

第八章(三)基于Listcheck适配器的访问控

denier适配器访问控制比较死板。Listchecker的适配器更加灵活。 定义handler: apiVersion: config.istio.io/v1alpha2 kind: listchecker metadata:name: chaos spec:overrides: ["v1","v3"] # 列表blacklist: true # 黑名单类型 定义t…

checkbox 最多选两项

<!DOCTYPE html><html lang"en"><head> <meta charset"UTF-8"> <title>久信臻氏</title></head><body><form action"index.php" method"post"> <div> &…

论图计算

自从机械计算开始以来&#xff0c;图形概念就已经存在&#xff0c;并且在纯数学领域已经存在了数十年。 由于数据库的黄金时代&#xff0c;图形在软件工程中变得越来越流行。 图形数据库提供了一种持久化和处理图形数据的方法。 但是&#xff0c;图形数据库并不是存储和分析图形…

注册了

第一天来 转载于:https://www.cnblogs.com/mayanshuang/archive/2008/07/26/1251934.html

html 拼接onmouseout,HTML onmouseout事件用法及代码示例

将鼠标指针移出元素或其子元素时&#xff0c;将发生HTML DOM onmouseout事件。用法:在HTML中&#xff1a;在JavaScript中&#xff1a;object.onmouseout function(){myScript};在JavaScript中&#xff0c;使用addEventListener()方法&#xff1a;object.addEventListener(&quo…

Windows PowerShell Cookbook

Windows PowerShell Cookbook转载于:https://www.cnblogs.com/gavinhughhu/archive/2009/12/29/1634652.html