如何在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;详细…

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

一、需求分析 做一个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&…

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

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

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

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

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

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

论图计算

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

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

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

7 selenium 模块

selenium 模块 一.简介 1.Python的一个第三方库&#xff0c;对外提供的接口可以操作浏览器&#xff0c;然后让浏览器完成自动化的操作。 2.自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题 selenium本质是通过驱动浏览器&#xff0c;完全…

针对新手的Java EE7和Maven项目-第3部分-定义ejb服务和jpa实体模块

从前面的部分恢复 第1部分 第2部分 我们在第三部分继续介绍&#xff0c;我们已经有一个父pom&#xff0c;并且已经为我们的war模块定义了pom。 在我们的原始设置中&#xff0c;我们定义了我们的应用程序将包含一个ejb jar形式的服务jar。 这是我们的Enterprise Java Bean&…

计算机本地网络如何共享,本地网络共享怎么实现

本地网络共享可以满足多台电脑同时联网&#xff0c;台式电脑实现网络共享可以使用路由器&#xff0c;笔记本电脑事项网络共享需要使用无线路由器或者无线网卡。那么本地网络共享又是如何实现的呢&#xff0c;下面为大家详细介绍一下。通过路由器实现本地网络共享&#xff1a;第…

Git初始化配置以及配置github

1&#xff0c;配置用户名和邮箱&#xff08;这里是我github中配置的用户名和邮箱&#xff09;&#xff0c;执行下面命令后&#xff0c;在C:\Users\yaosq盘下会出现一个全局文件.gitconfig. git config --global user.name "这里换上你的用户名" git config --global…

数据知识栈

并发不适合胆小者 我们都知道并发编程很难正确实现。 这就是为什么在执行线程任务之后要进行大量的设计和代码审查会议。 您永远不会将并发问题分配给经验不足的开发人员。 仔细分析问题空间&#xff0c;提出设计&#xff0c;并记录和审查解决方案。 这就是通常处理线程相关任…

Spring Boot:快速启动MVC

我打算一年多以前写一篇关于Spring Boot的文章。 最后&#xff0c;我有时间和灵感。 因此&#xff0c;准备10到15分钟的高质量Spring教程。 我将用Gradle和嵌入式Tomcat演示Spring Boot的基础知识。 我使用Intellij IDEA而不是Eclipse&#xff0c;但是对于那些习惯Eclipse的人来…

布里斯托大学计算机科学专业排名,2021年布里斯托大学世界及专业排名 多个领域位居全英前十!...

它既是红砖大学的成员&#xff0c;也是罗素大学集团成员&#xff0c;在这所学校里共培养出了13位诺贝尔奖得主&#xff0c;这所学校就是布里斯托大学&#xff0c;该校的83%的研究成果都达到了世界领先水平&#xff0c;因此&#xff0c;越来越多的学生去布里斯托大学留学&#x…

Spring启动时的Spring社交示例,或者我如何不再担心和喜欢自动配置

对于Spring Boot 1.1.0.RC1&#xff0c;添加了自动配置和Spring Social的启动程序pom&#xff0c;这意味着我不必为pom添加一百个依赖关系&#xff0c;并且将为我处理许多毫无意义的Spring配置。 让我们来看一个例子。 我将实现一个两页的Web应用程序。 一个将显示给定用户的T…

Djang之cookie和session

一 会话跟踪 我们需要先了解一下什么是会话&#xff01;可以把会话理解为客户端与服务器之间的一次会晤&#xff0c;在一次会晤中可能会包含多次请求和响应。例如你给10086打个电话&#xff0c;你就是客户端&#xff0c;而10086服务人员就是服务器了。从双方接通电话那一刻起&a…

ASP.NET技巧(收集)

1、有没有办法让JavaScript的注释在客户端不可见呢&#xff1f; 答案很简单&#xff0c;就是&#xff1a;JavaScript注释 服务器端注释&#xff01; 行注释写法&#xff1a; //<%-- 这里写行注释 --%> 块注释写法&#xff1a; /*<%-- 这里写注释语句块&a…

Windows堆栈区别[转]

堆和栈的区别 (转贴) 非本人作也!因非常经典,所以收归旗下,与众人阅之!原作者不祥! 堆和栈的区别一、预备知识—程序的内存分配一个由c/C编译的程序占用的内存分为以下几个部分1、栈区&#xff08;stack&#xff09;— 由编译器自动分配释放 &#xff0c;存放函数的参数值&…

Tomcat启用HTTPS协议配置过程

Article1较为简洁&#xff0c;Article2较为详细&#xff0c;测试可行。 Article1 概念简介 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器&#xff0c;属于轻量级应用服务器&#xff0c;在中小型系统和并发访问用户不是很多的场合下被普遍使用&#xff0c;是开发和调试…