Java技术在移动应用中的前景

2009-06-16 08:11陈建丽
消费导刊 2009年10期
关键词:移动应用

陈建丽

[摘 要]Java是被广泛接受的编程语言和执行环境,在70%的企业中使用。随着这些应用扩展到移动性,系统架构师转向相关的J2SE和J2ME技术。J2SE将Java的优势带到PC,笔记本电脑,平板电脑和PDA,而J2ME是Java的小型版本,是世界上大多数手机和智能电话的基础软件技术。

[关键词]Java J2EE J2SE J2ME 移动应用

一、前言

在今天逐渐分散的商业环境中,众多公司正在寻找新的方式在企业间共享信息、分散决策制定过程、对客户反映更灵敏以及降低成本。为了达到以上目标,许多公司正在考虑采用企业移动系统。公司发现这些系统经常会带来很高的投资回报,并取得持续的竞争优势。通过把公司的应用扩展到这一领域,在公司就可以实现操作流水作业、增加生产力,并且进一步完善同客户和合作伙伴的关系。

系统集成商,独立软件开发商和企业IT部门正在转向这些商业产品以加速性能强大的移动应用的开发以及打开新的市场。

本篇文章主要讨论了移动性对今天商业环境以及一些企业范围的应用的影响;它也观察了java不断增长的影响以及使它成为移动开发领导者的能力;最后,探索了引入移动数据库来支持关键性的软件和性能。

二、当前企业移动应用的现状和面临的困境

根据研究机构In-Stat/MDR的数据,到2006年,3千9百万工人将日常使用企业移动方案。“企业移动”指现场专业人士使用扩展的方式(如VPN连接)与企业信息的后台数据库同步交换数据的商业流程。它不同于今天的“无线”系统,因为企业移动方案依赖于无线网络来取得可观的商业利益。“永远在线”的无线访问给企业带来了一些挑战,包括高的上网成本和传输时延。虽然无线覆盖范围很广,但是它传输率低,延时时间长,数据丢包现像严重,现场人员不可能依靠这样的传输方式来管理他们的数据。因此,目前大多数企业的应用采用“偶尔上网”架构设计,在这种情况下,信息储存在本地,并在需要或者方便联网时周期性地和后台数据库同步,进而造成数据延时不同步的弊端。

然而,移动应用增长最快的领域是一些关键性的应用,如ERP,B2B,B2C、FSA,CRM和一些现场自动化软件。随着强大的同步化和本地数据管理的出现,企业正在认识到从更好的信息共享和数据收集中获得的好处。这些好处导致了新的商业机会和长期投资回报的显著改善,因此企业对网络的连接质量要求越来越高。

三、Java语言的特点

Java是一种跨平台,适合于分布式计算环境的面向对象编程语言。具体来说,它具有如下特性:简单性、面向对象、分布式、解释型、可靠、安全、平台无关、可移植、高性能、多线程、动态性等。下面我们将重点介绍Java语言的面向对象、平台无关、分布式、多线程、可靠和安全等特性。

(一)面向对象

面向对象其实是现实世界模型的自然延伸。现实世界中任何实体都可以看作是对象。对象之间通过消息相互作用。另外,现实世界中任何实体都可归属于某类事物,任何对象都是某一类事物的实例。如果说传统的过程式编程语言是以过程为中心,以算法为驱动的话,面向对象的编程语言则是以对象为中心,以消息为驱动。用公式表示,过程式编程语言为:程序=算法+数据;面向对象编程语言为:程序=对象+消息。

所有面向对象编程语言都支持三个概念:封装、多态性和继承,Java也不例外。现实世界中的对象均有属性和行为,映射到计算机程序上,属性则表示对象的数据,行为表示对象的方法(其作用是处理数据或同外界交互)。所谓封装,就是用一个自主式框架把对象的数据和方法联在一起形成一个整体。可以说,对象是支持封装的手段,是封装的基本单位。Java语言的封装性较强,因为Java无全程变量,无主函数,在Java中绝大部分成员是对象,只有简单的数字类型、字符类型和布尔类型除外。而对于这些类型,Java也提供了相应的对象类型以便与其他对象交互操作。

多态性就是多种表现形式,具体来说,可以用“一个对外接口,多个内在实现方法”表示。举一个例子,计算机中的堆栈可以存储各种格式的数据,包括整型,浮点或字符。不管存储的是何种数据,堆栈的算法实现是一样的。针对不同的数据类型,编程人员不必手工选择,只需使用统一接口名,系统可自动选择。运算符重载(operator overload)一直被认为是一种优秀的多态机制体现,但由于考虑到它会使程序变得难以理解,所以Java最后还是把它取消了。

继承是指一个对象直接使用另一对象的属性和方法。事实上,我们遇到的很多实体都有继承的含义。例如,若把汽车看成一个实体,它可以分成多个子实体,如:卡车、公共汽车等。这些子实体都具有汽车的特性,因此,汽车是它们的“父亲”,而这些子实体则是汽车的“孩子”。Java提供给用户一系列类(class),Java的类有层次结构,子类可以继承父类的属性和方法。与另外一些面向对象编程语言不同,Java只支持单一继承。

(二)平台无关性

Java是平台无关的语言是指用Java写的应用程序不用修改就可在不同的软硬件平台上运行。平台无关有两种:源代码级和目标代码级。C和C++具有一定程度的源代码级平台无关,表明用C或C++写的应用程序不用修改只需重新编译就可以在不同平台上运行。

Java主要靠Java虚拟机(JVM)在目标码级实现平台无关性。JVM是一种抽象机器,它附着在具体操作系统之上,本身具有一套虚机器指令,并有自己的栈、寄存器组等。但JVM通常是在软件上而不是在硬件上实现。(目前,SUN系统公司已经设计实现了Java芯片,主要使用在网络计算机NC上。另外,Java芯片的出现也会使Java更容易嵌入到家用电器中。)JVM是Java平台无关的基础,在JVM上,有一个Java解释器用来解释Java编译器编译后的程序。Java编程人员在编写完软件后,通过Java编译器将Java源程序编译为JVM的字节代码。任何一台机器只要配备了Java解释器,就可以运行这个程序,而不管这种字节码是在何种平台上生成的(过程如图1所示)。另外,Java采用的是基于IEEE标准的数据类型。通过JVM保证数据类型的一致性,也确保了Java的平台无关性。

Java的平台无关性具有深远意义。首先,它使得编程人员梦寐以求的事情(开发一次软件在任意平台上运行)变成事实,这将大大加快和促进软件产品的开发。其次Java的平台无关性正好迎合了“网络计算机”思想。如果大量常用的应用软件(如字处理软件等)都用Java重新编写,并且放在某个Internet服务器上,那么具有NC的用户将不需要占用大量空间安装软件,他们只需要一个Java解释器,每当需要使用某种应用软件时,下载该软件的字节代码即可,运行结果也可以发回服务器。目前,已有数家公司开始使用这种新型的计算模式构筑自己的企业信息系统。

(三)分布式

分布式包括数据分布和操作分布。数据分布是指数据可以分散在网络的不同主机上,操作分布是指把一个计算分散在不同主机上处理。

Java支持WWW客户机/服务器计算模式,因此,它支持这两种分布性。对于前者,Java提供了一个叫作URL的对象,利用这个对象,你可以打开并访问具有相同URL地址上的对象,访问方式与访问本地文件系统相同。对于后者,Java的applet小程序可以从服务器下载到客户端,即部分计算在客户端进行,提高了系统执行效率。

Java提供了一整套网络类库,开发人员可以利用类库进行网络程序设计,方便实现Java的分布式特性。

(四)可靠性和安全性

Java最初设计目的是应用于电子类消费产品,因此要求较高的可靠性。Java虽然源于C++,但它消除了许多C++不可靠因素,可以防止许多编程错误。首先,Java是强类型的语言,要求显式的方法声明,这保证了编译器可以发现方法调用错误,保证程序更加可靠;其次,Java不支持指针,这杜绝了内存的非法访问;第三,Java的自动单元收集防止了内存丢失等动态内存分配导致的问题;第四,Java解释器运行时实施检查,可以发现数组和字符串访问的越界,最后,Java提供了异常处理机制,程序员可以把一组错误代码放在一个地方,这样可以简化错误处理任务,便于恢复。

由于Java主要用于网络应用程序开发,因此对安全性有较高的要求。如果没有安全保证,用户从网络下载程序执行就非常危险。Java通过自己的安全机制防止了病毒程序的产生和下载程序对本地系统的威胁破坏。当Java字节码进入解释器时,首先必须经过字节码校验器的检查,然后,Java解释器将决定程序中类的内存布局,随后,类装载器负责把来自网络的类装载到单独的内存区域,避免应用程序之间相互干扰破坏。最后,客户端用户还可以限制从网络上装载的类只能访问某些文件系统。上述几种机制结合起来,使得Java成为安全的编程语言。

(五)多线程

线程是操作系统的一种新概念,它又被称作轻量进程,是比传统进程更小的可并发执行的单位。C和C++采用单线程体系结构,而Java却提供了多线程支持。

Java在两方面支持多线程。一方面,Java环境本身就是多线程的。若干个系统线程运行负责必要的无用单元回收,系统维护等系统级操作;另一方面,Java语言内置多线程控制,可以大大简化多线程应用程序开发。Java提供了一个类Thread,由它负责启动运行,终止线程,并可检查线程状态。Java的线程还包括一组同步原语,这些原语负责对线程实行并发控制。利用Java的多线程编程接口,开发人员可以方便得写出支持多线程的应用程序,提高程序执行效率。必须注意地是,Java的多线程支持在一定程度上受运行时支持平台的限制。例如,如果操作系统本身不支持多线程,Java的多线程特性可能就表现不出来。

四、Java技术在企业移动应用中的优势及前景

Java现在已经成为了一项成熟的技术,适合于企业级的移动项目,它的优势包括完全的跨平台通用性,可以使得同样的代码在多个平台上使用。基于Java的网络改进提供了移动企业需要的可靠性和可获得性。

Java是被广泛接受的编程语言和执行环境,在70%的企业中使用。J2EE技术是大规模电子商务方案的事实上的标准。随着这些应用扩展到移动性,系统架构师转向相关的J2SE和J2ME技术。J2SE将Java的优势带到PC,笔记本电脑,平板电脑和PDA,而J2ME是Java的小型版本,是世界上大多数手机和智能电话的基础软件技术。

当其他技术倾向于把开发人员固定在一个专有的硬件和软件平台时,Java促进了跨平台的通用性。它还降低了集成成本,因为它可以同时支持将不同平台的多个设备相连。这在大多数商业环境中是特别的优势,因为移动性通常是加在现存的系统之上的。

可延展的企业移动方案应该实现本地数据库和企业数据库同步化信息。移动数据库有一套独特的要求以保证兼容性、效率和可延展性。

另外,移动数据库应该容易和同步化技术整合,以获得信息的双向交流和更新。开发人员需要提供不依赖平台的双向的同步化数据库方案来促进信息的流动,以及提供可延展的连接性以容纳不断增加的用户。用户也可以从冲突检测和分辨率工具中获益,这些工具在同步连接的用户间自动协调数据冲突。

企业移动深入到了非常广泛的商业活动。好处包括直接的金融回报和整体运营效率。例如,运输和后勤组织使用移动应用连接前台办公室,装卸码头和司机。这不仅完善了组织内的通讯,而且减少了被盗和丢失,从而降低成本,并改进了客户服务;在健康护理行业,配有移动应用的医生可以减少花在行政管理上的时间,从而得到更快的诊断和更好的病人护理。

移动应用也对公共安全产生很大影响。它们的信息共享能力可以更有效地部署医疗人员和法律实施,帮助加强社区安全。公用设备工人使用移动应用来自动分配工作人手,电子访问技术信息,跟踪设备和供应。

随着我国移动行业应用的服务范围在日益扩大,应用层次在不断提高,随着信息化的全面推进,行业集团用户对高带宽、高速率、低时延的3G移动通信网络和业务应用的日渐普及,网络带宽的大幅度扩展,使得基于Java应用的业务更加丰富。除了快速的JSP页面处理,移动支付、移动流媒体等业务,也都将在Java应用领域大显身手。

由此可以看出,移动行业应用将成为3G时代的重要应用方向。3G网络商用后,3G的高网络带宽和强大的多媒体业务支撑能力,将与各行业对移动行业应用的实际需求实现“对接”,全面提升移动行业应用的层次、质量和水平。例如,对于交通行业而言,在3G时代,交通运输部门和物流公司不仅可以对车辆运行状况进行更及时、更准确的定位,而且可以通过图像监控系统随时观察乘客和驾驶员的状态;对于政府部门而言,借助3G高速互联网接入,政府工作人员可以随时随地登录政务网络,及时处理公文,收发邮件和各种信息;对于银行、证券和商业部门来说,依托3G网络,他们可以让客户享受到移动支付、手机炒股等各种更加快捷、安全的电子商务服务。

3G的到来,将极大地增强移动通信网络服务行业信息化的能力,全面提升移动行业应用的质量,有效改善行业、大众用户对移动行业应用的感受和体验,从而加速移动行业应用的普及和渗透步伐。

五、结束语

正是基于Java语言的诸多特点和3G网络的应用,企业正在通过移动应用扩展关键的企业数据,以实现众多的好处,包括工作人员生产力,更好的客户服务,改进的操作以及成本的降低。Java的企业移动方案引入了一整套移动应用,它们可以轻松、有效地开发,以改进商业操作。随着企业移动性的采用,公司可以在商业间共享信息,以改进服务水平,制定更多战略决策,并改进生产力。

参考文献

[1]Beginning Java Objects: From Concepts to Code (Java面向对象编程指南) .J. Barker编著,韩柯等译,电子工业出版社,2001

[2]Java程序设计实验指导,清华大学出版社,陈轶、姚晓昆编著,2006

[3]实用Java程序设计教程,机械工业出版社,宛延闿等编著,2006

[4]第3代移动通信系统设计原理与规划,电子工业出版社,王卫东/高鹏/张英海编著,2007

[5]移动业务应用中手机地位的演进,人民邮电出版社,叶云/王庆编著,2008

猜你喜欢
移动应用
T学校公共设施便捷报修平台的移动应用研究
云计算环境下的微课移动云平台设计
大数据时代下免费手机软件盈利模式探讨
移动互联网在防汛工作中的应用