做了快一年的手机应用程序,抽空写点对应用程序架构的认识吧。本文以J2ME手机应用程序为实例。介绍一下在企业应用的开发中,都会涉及到哪些方面的程序架构特征。
J2ME技术从诞生到现在还处于不断的发展壮大中,虽然各种手机对JSR标准支持的差异,各厂商的虚拟机实现的差异,或多或少的阻碍了J2ME最大的优势————跨平台性的体现,但是也不可否认,J2ME技术仍然是当前作为移动开发领域最主要的技术之一。因为它开发简便,可移植性强,使从事JAVA的开发者可以很快的投入J2ME开发,相比symbian平台的C++开发可谓是容易许多。
作为企业客户的应用,现在以C/S模式为主,服务器端保存用户数据,以及响应在线用户的复杂业务逻辑。客户端作为数据的接收者,处理简单的业务逻辑,保存少量的数据,例如聊天纪录,本地账号和密码等。当然客户端也可能是PC。
(图1)
比如一款手机的即时通讯软件IM(Instant Message),服务器端需要支持多客户端同时在线,保存客户信息,处理每个客户端发过来的请求,将A客户的信息转发给B客户,将C客户的离线信息转发给C客户的所有好友,等等。也就是说一个客户端于另一个客户端所有的沟通都要通过服务器去中转。下面来介绍一下客户端的一个简单的架构模型。
我们可以用MVC的设计理念来设计这个框架。大致可分为以下几个层次。
Handler:处理网络请求,网络消息分发,这个层面是最关键的,它会涉及到整体结构的每一层。
Database:用来存储少量数据,在J2ME中,RMS(Record Management System)是这个层次主要承担者。每个手机可能对RMS的大小支持不同,使这宝贵的存储空间更加珍贵。Handler会控制对Database的存储和提取,用来View层显示。
Model: 这个层次主要是根据程序需要创建的一些逻辑控制类。把数据封装,创建公共接口等。比如一条消息,可能会创建一种Message类型来存储在数据库中。
View: 这层用来显示用户界面,并且响应和处理键盘的指令。将Handler层指派的一些信息显示出来,并且将需求信息送给Handler去处理。所以这层直接于Handler沟通,不会直接涉及到Database或网络信息。
(图2)
当然在实际的应用开发中会更复杂一些。比如会有一个session的东西来控制消息的轮询和网络连接。下面我通过一个伪代码来进一步说明这个模型。
/**View:Display messsage, Receive input*/
package view;
import.....
public class view extends Canvas
{
public String getUserName();
public String getUserPassword();
public void displayMessage(Graphics g)
{
g.drawString(Handler.getInstance().getMessageContent(),x,y,0);
}
public void commandAction(Command c,Displayable d)
{
Handler.getInstance().setUserInfo(getUserName(),getUserPassword());
}
}
/**************************************/
/*Handler:Control network message*/
package handler;
import......
public class Handler
{
public sendUserInfo(String name,String password);
public void getResponse()
{
if(ok)
{
notfiyDisplay();
}
}
public void notfiyDisplay()
{
Message mess = new Message( mess.toString() ) ;
Database.putMessage( mess )
View.getInstance().repaint();
}
public String getMessageContent()
{
Message m = Database.getInstance.getMessage();
return m.getContent();
}
}
/************************************/
/*Message: a model indicate message object*/
package model;
import......
public class Message
{
public Message(String str)
{
}
public String getContent()
{
}
}
/**********************************/
/*Database: store bytes*/
package database;
import......
public Database
{
public void putMessage(Message mess)
{
}
public Message getMessage()
{
}
}
/***********************************/
复杂的应用还要处理多媒体内容,各种类型的连接方式,而且对于线程管理,网络连接都要求更高。值得注意的是,一般应用的代码是可以复用的。这样只要改一些View层的显示,就可以适应不同的应用类型了。欢迎加我MSN讨论应用开发,k7sem_88@hotmail.com
分享到:
相关推荐
这种模式通过将应用程序划分为三个核心组件——模型(Model)、视图(View)和控制器(Controller),从而实现了数据、业务逻辑和用户界面之间的解耦。 #### 二、MVC在J2ME中的应用 J2ME(Java 2 Platform Micro ...
J2ME应用通常基于MIDlet套件,它是由一个或多个MIDlets(J2ME应用程序的主要执行单元)组成的。MIDlet具有生命周期方法,如startApp()、pauseApp()、resumeApp()和destroyApp(),这些方法对应于应用程序的不同状态。...
9. **模拟器**:为了测试和调试J2ME应用程序,开发者可以使用Sun Microsystems提供的MIDP模拟器或者第三方模拟器,如NetBeans IDE自带的模拟器。 10. **打包和部署**:J2ME应用通常被打包成JAR文件,其中包含MIDlet...
**J2ME贪吃蛇原程序详解** Java 2 Micro Edition (J2ME) 是一种针对小型设备,如移动电话和嵌入式系统的Java平台。它由两部分组成:KVM(K Virtual Machine)和MIDP(Mobile Information Device Profile)。在本...
“STDALONE.ZIP”可能包含的是独立运行的J2ME应用程序,这些应用不依赖于特定的设备功能或服务,而是完全独立执行。它们可能展示了J2ME的基础特性,如线程管理、内存优化和本地化支持等。 最后,“SQL.ZIP”可能...
- **安装J2ME Wireless Toolkit (WTK)**: WTK是Sun Microsystems提供的免费工具包,用于开发和测试J2ME应用程序。尽管JBuilder 2005自带WTK,但是为了获取最新的特性和API,建议下载最新的WTK版本。 - **配置WTK 2.2...
- **MIDlet**:J2ME应用的核心单元,类似于Java SE中的应用程序主类。 - **Displayable**:J2ME中的显示组件,可以是屏幕、对话框或其他可视化元素。 - **Canvas**:自定义图形绘制的基础类,允许开发者直接控制...
它提供了丰富的API和灵活的架构,使得开发者能够创建各种功能丰富的应用程序,包括游戏、实用工具等。本篇将围绕“J2ME应用实例源代码”这一主题,深入探讨J2ME的游戏开发实践,特别是通过“坦克大战”等经典游戏的...
【J2ME程序设计_11111083】是关于Java 2 Micro Edition (J2ME) 的编程教程,它涵盖了J2ME的基础概念、开发环境、应用程序架构以及实际开发中的关键技术。J2ME是Java平台的一个版本,主要用于嵌入式设备和移动设备,...
1. **MIDlet**:J2ME应用程序的核心,它是运行在J2ME平台上的一组Java类,类似于Java中的Applet。 2. **Life Cycle**:MIDlet有自己的生命周期,包括初始化、启动、暂停、恢复和停止等状态。 3. **User Interface**...
J2ME为开发者提供了在这些设备上开发应用程序的框架,包括游戏、实用工具和其他互动应用。 J2ME的架构由配置(Configurations)、配置集(Profiles)和可选包(Optional Packages)组成。配置定义了设备的基本硬件...
它允许开发者编写可以在各种小型设备上运行的应用程序,包括手机、智能手表、电视等。J2ME提供了丰富的功能和强大的开发工具,使得开发者可以轻松地构建具有交互性的移动应用。 J2ME由几个关键组件构成,包括...
开发J2ME应用程序通常使用集成开发环境(IDE),如Eclipse或NetBeans,它们提供了MIDP和CLDC的模拟器,便于开发者在没有物理设备的情况下进行测试。此外,还有专门的J2ME开发工具,如Sun Microsystems的Java ...
MIDlet是J2ME应用程序的基本单元,具有启动、暂停、恢复和停止等生命周期状态。理解这些状态转换对于编写健壮的J2ME应用至关重要。 8. **资源管理** 移动设备资源有限,因此J2ME开发者必须注意内存和CPU使用。...
2. **MIDlet套件**:J2ME应用程序通常被称为MIDlets,它们是一组遵循MIDP规范的Java类。MIDlet套件包括主MIDlet类、清单文件(JAD)和可能的资源文件。 3. **用户界面**:在J2ME中,用户界面构建主要依赖于Mobile ...
它还包括 MIDlet 类,这是J2ME应用程序的基本单元,以及Notification服务,用于向用户显示短暂的消息。 4. **CLDC与MIDP** CLDC是J2ME的一部分,提供了核心的Java库,如内存管理和类库。MIDP建立在CLDC之上,增加...
J2ME应用程序通常基于MIDlet类,MIDlet的生命周期包括四种状态:预备(Unsuspended)、启动(Start)、暂停(Suspended)和终止(Destroyed)。理解并管理这些状态对于编写高效且响应迅速的应用至关重要。 **用户...
JAD(Java Application Descriptor)和JAR(Java Archive)文件是J2ME应用的分发形式。JAD文件包含了应用的元数据,如版本信息、大小和依赖,而JAR文件则包含了编译后的类文件。 这本讲义将详细介绍以上概念,并...
J2ME应用程序的安全性是通过权限模型来保证的,每个应用在安装时需要用户授予相应的权限,如网络访问、位置获取等。这确保了用户对应用功能的控制,同时也保护了用户的隐私。 **调试与测试** J2ME应用的调试通常...