英文原文
Java 2 Micro Edition and the World of Java
1 Introduction
The computer revolution of the 1970s increased the demand for sophisticated computersoftware to take advantage of the ever-increasing capacity of computers to process data.The C programming language became the linchpin that enabled programmers to buildsoftware that was just as robust as the computer it ran on.
As the 1980s approached, programmers were witnessing another spurt in the evolutionof programming language. Computer technology advanced beyond the capabilities of the C programming language. The problem wasn’t new. It occurred previously and caused the demise of generations of programming languages. The problem was thatprograms were becoming too complicated to design, write, and manage to keep up with the capabilities of computers. It was around this time that a design concept based on Simula 67 and Smalltalk (from the late 1960s) moved programming to the next evolutionary step. This was the period when object-oriented programming (OOP), and with it a new programming language called C++, took programmers by storm.
In 1979, Bjarne Stroustrup of Bell Laboratories in New Jersey enhanced the C programming language to include object-oriented features. He called the language C++. (The ++ is the incremental operator in the C programming language.) C++ is truly an enhancement of the C programming language, and it began as a preprocessor language that was translated into C syntax before the program was processed by the compiler.
Stroustrup built on the concept of a class (taken from Simula 67 and Smalltalk), from which instances of objects are created. A class contains data members and member functions that define an object’s data and functionality. He also introduced the concept of  inheritance, which enabled a class to inherit some or all data members and member functions from one or more other classes—all of which complements the concepts of object-oriented programming.
By 1988, ANSI officials standardized Stroustrup’s C++ specification.
2 Enter Java
Just as C++ was becoming the language of choice for building industrial-strength applications, another growth spurt in the evolution of programming language was budding, fertilized by the latest disruptive technology—the World Wide Web. The Internet had been a well-kept secret for decades before the National Science Foundation (who oversaw the Internet) removed barriers that prevented commercialization. Until 1991 when it was opened to commerce, the Internet was the almost exclusive domain of government agencies and the academic community. Once the barrier to commercialization was lifted, the World Wide Web—one of several services offered on the Internet— became a virtual community center where visitors could get free information about practically anything and browse through thousands of virtual stores.
Browsers power the World Wide Web.A browser translates ASCII text files written in HTML into an interactive display that can be interpreted on any machine. As long as the browser is compatible with the correct version of HTML and HTTP implementation, any computer running the browser can use the same HTML document without having to modify it for a particular type of computer, which was something unheard of at the time. Programs written in C or C++ are machine dependent and cannot run on a different
machine unless the program is recompiled.
The success of the Internet gave renewed focus to developing a machine-independent programming language. And the same year the Internet was commercialized, five technologists at Sun Microsystems set out to do just that. James Gosling, Patrick Naughton, ChrisWarth, Ed Frank, and Mike Sheridan spent 18 months developing the programming language they called Oak, which was renamed Java when this new language made its debut in 1995. Java went through numerous iterations between 1991 and 1995, during which time many other technologists at Sun made substantial contributions to the language. These included Bill Joy, Arthur van Hoff, Jonathan Payne, Frank Yelin, and Tim Lindholm.
Although Java is closely associated with the Internet, it was developed as a language for programming software that could be embedded into electronic devices regardless of the type of CPU used by the device. This is known as the EmbeddedJava platform and is in continuous use today for closed systems.
The Java team from Sun succeeded in creating a portable programming language, something that had eluded programmers since computers were first programmed. Their success, however, was far beyond their wildest dreams. The same concept used to make Java programs portable to electronic devices also could be used to make Java programs run on computers running Microsoft Windows, UNIX, and Macintosh. Timing was perfect. The Internet/intranet had whetted corporate America’s appetite for cost-effective, portable programs that could replace mission-critical applications within the corporation. And Java had proven itself as a programming language used to successfully develop machine-independent applications.
3 Java Virtual Machine
Writing Java programs is similar to writing C++ programs in that the programmer writes source code that contains instructions into an editor, or in an integrated development
environment, and then the source code is compiled. However, that’s where Java and C++
part ways. The compiling and linking process of a C++ program results in an executable
that can be run on an appropriate machine. In contrast, the Java compiler converts Java
source code into bytecode that is executed by the Java Virtual Machine (JVM).
Machine-specific instructions are not included in bytecode. Instead, they already reside in the JVM, which is machine specific. This means that the bytecode might contain fewer instructions that need to be translated than a comparable C++ program.
A lthough the Java compiler generates bytecode that must be interpreted by the JVM
at run time, the number of instructions that need translation are usually minimal and
have already been optimized by the Java compiler.
4 Back to the Future: J2ME
Remember that Java began as a programming language to create programs for embedded systems—microcomputers found in consumer and industrial products such as those used to control automobiles and appliances. The development team at Sun worked on Java in the early 1990s to address the programming needs of the fledgling embedded computer market, but that effort was sidetracked by more compelling opportunities presented by the Internet.
As those opportunities were addressed, a new breed of portable communications devices opened other opportunities at the turn of the century. Cell phones expanded J 2 M E : T h e C o m p l e t e R e f e r e n c e from voice communications devices to voice and text communications devices. Pocket electronic telephone directories evolved into personal digital assistants. Chipmakers were releasing new products at this time that were designed to transfer computing power from a desktop computer into mobile small computers that controlled gas pumps, cable television boxes, and an assortment of other appliances.
The time was right for the next evolution of Java. However, instead of beefing up Java with additional APIs, the team at Sun, along with the Java Community Process Program, dismantled both the Java programming language and the Java Virtual Machine. They
stripped down Java APIs and the JVM to the minimum coding required to provide
intelligence to embedded systems and microcomputer devices. This was necessary
because of resource constraints imposed upon the hardware design of these devices. The
result of their efforts is J2ME. J2ME is a reduced version of the Java API and Java Virtual Machine that is designed to operate within the sparse resources available in the new breed of embedded computers and microcomputers.
5 How J2ME Is Organized
Traditional computing devices use fairly standard hardware configurations such as a display, keyboard,mouse, and large amounts of memory and permanent storage. However, the new breed of computing devices lacks hardware configuration continuity among devices. Some devices don’t have a display, permanent storage, keyboard, or mouse. And memory availability is inconsistent among small computing devices. The lack of uniform hardware configuration among the small computing devices poses a formidable challenge for the Java Community Process Program, which is charged with developing standards for the JVM and the J2ME for small computing devices.
J2ME must service many different kinds of small computing devices, including screenphones, digital set-top boxes used for cable television, cell phones, and personal digital assistants. The challenge for the Java Community Process Program is to develop a Java standard that can be implemented on small computing devices that have nonstandard
hardware configurations. The Java Community Process Program has used a twofold approach to addressing the needs of small computing devices. First, they defined the Java run-time environment and core classes that operate on each device. This is referred to as the configuration. A configuration defines the Java Virtual Machine for a particular small computing device. There are two configurations, one for handheld devices and the other for plug-in devices. Next, the Java Community Process Program defined a profile for categories of small computing devices. A profile consists of classes that enable developers to implement features found on a related group of small computing devices.
6 J2ME configurations
There are two configurations for J2ME as of this writing. These are Connected Limited Device Configuration (CLDC) and the Connected Device Configuration (CDC). The CLDC is designed for 16-bit or 32-bit small computing devices with limited amounts of memory.
CLDC devices usually have between 160KB and 512KB of available memory and are battery powered. They also use an inconsistent, small-bandwidth network wireless
connection and may not have a user interface. CLDC devices use the KJava Virtual
Machine (KVM) implementation, which is a stripped-down version of the JVM. CLDC
devices include pagers, personal digital assistants, cell phones, dedicated terminals, and
handheld consumer devices with between 128KB and 512KB of memory.
CDC devices use a 32-bit architecture, have at least two megabytes of memory
available, and implement a complete functional JVM. CDC devices include digital set-top boxes, home appliances, navigation systems, point-of-sale terminals, and smart phones.
7 J2ME Profiles
A profile consists of Java classes that enable implementation of features for either a particular small computing device or for a class of small computing devices. Small computing technology continues to evolve, and with that, there is an ongoing process of defining J2ME profiles. Seven profiles have been defined as of this writing. These are the Foundation Profile, Game Profile, Mobile Information Device Profile, PDA Profile, Personal Profile, Personal Basis Profile, and RMI Profile.
The Foundation Profile is used with the CDC configuration and is the core for nearly all other profiles used with the CDC configuration because the Foundation Profile contains core Java classes.
The Game Profile is also used with the CDC configuration and contains the necessary classes for developing game applications for any small computing device that uses the CDC configuration.
The Mobile Information Device Profile (MIDP) is used with the CLDC configuration and contains classes that provide local storage, a user interface, and networking capabilities to an application that runs on a mobile computing device such as Palm OS devices. MIDP is used with wireless Java applications.
The PDAProfile (PDAP) is used with the CLDC configuration and contains classes that utilize sophisticated resources found on personal digital assistants. These features include better displays and larger memory than similar resources found on MIDP mobile devices (such as cell phones).
The Personal Profile is used with the CDC configuration and the Foundation Profile and contains classes to implement a complex user interface. The Foundation Profile provides core classes, and the Personal Profiles provide classes to implement a sophisticated user interface, which is a user interface that is capable of displaying multiple windows at a time.
The Personal Basis Profile is similar to the Personal Profile in that it is used with the CDC configuration and the Foundation Profile. However, the Personal Basis Profile provides classes to implement a simple user interface, which is a user interface that is capable of displaying one window at a time.
The RMI Profile is used with the CDC configuration and the Foundation Profile to provide Remote Method Invocation classes to the core classes contained in the Foundation Profile.
There will likely be many profiles as the proliferation of small computing devices ontinues. Industry groups within the Java Community Process Program (java.sun.com/ boutjava/communityprocess) define profiles. Each group establishes the standard rofile used by small computing devices manufactured by that industry.
ACDC profile is defined by expanding upon core Java classes found in the Foundation rofile with classes specifically targeted to a class of small computing device. These device-specific classes are contained in a new profile that enables developers to create ndustrial-strength applications for those devices.    However, if the Foundation Profile s specific to CDC, not all profiles are expanded upon the core classes found in the oundation Profile. eep in mind that applications can access a small computing device’s software and rdware features only if the necessary classes to do so are contained in the JVM and in the profile used by the developer.
8 J2ME and Wireless Devices
With the dramatic increase and sophistication of mobile communications devices such as cell phones came demand for applications that can run on those devices. Consumers and
corporations want to expand mobile communications devices from voice communications
to applications traditionally found on laptops and PCs. They want to send and receive
email, store and retrieve personal information, perform sophisticated calculations, and
play games.
Developers, mobile communications device manufacturers, and mobile network
p roviders are anxious to fill this need, but there is a serious hurdle: mobile communications devices utilize a number of different application platforms and operating systems.Without tweaking the code, an application written for one device cannot run on another device.
Mobile communications devices lack a standard application platform and operating
system, which has made developing applications for mobile communications devices
a risky economic venture for developers.
The lack of standards is nothing new to computing or to any developing technology.
Traditionally, manufacturers of hardware devices try to corner the market and enforce their own proprietary standard as the de facto standard for the industry. Usually one upstart succeeds, as in the case of Microsoft. Other times, industry leaders form a consortium, such as the Java Community Process Program, to collectively develop a standard.
The Wireless Application Protocol (WAP) forum became the initial industry group
that set out to create standards for wireless technology. Ericsson, Motorola, Nokia, and
Unwired Planet formed theWAP forum in 1997, and it has since grown to include nearly
all mobile device manufacturers, mobile network providers, and developers. The WAP
forum created mobile communications device standards referred to as theWAP standard.
The WAP standard is an enhancement of HTML, XML, and TCP/IP. One element of this standard is the Wireless Markup Language specification, which consists of a blend of HTML and XML and is used by developers to create documents that can be displayed by a microbrowser. A microbrowser is a diminutive web browser that operates on a mobile communications device.The WAP standard also includes specifications for aWireless Telephony ApplicationInterface (WTAI) specification and the WMLScript specification. WTAI is used to create an interface for applications that run on a mobile communications device. WMLScript is a stripped-down version of JavaScript.
9 J2ME applications
J2ME applications referred to as a MIDlet can run on practically any mobile
communications device that implements a JVM and MIDP. This encourages developers
to invest time and money in building applications for mobile communications devices
without the risk that the application is device dependent. However, J2ME isn’t seen as
a replacement for the WAP specification because both are complementary technologies.
Developers whose applications are light-client based continue to use WML and
WMLScript. Developers turn to J2ME for heavier clients that require sophisticated
processing on the mobile communications device.
J2MEJava领域
1. 介绍
20世纪70年代以来随着计算机革命的开始,对计算机先进软件的需求大大增加,从而可以充分利用功能日益增强的精密的计算机的处理数据的能力。C编程语言逐渐成为支柱,使程序员开发软件像计算机运行一样流畅。
80年代以来,程序员又目睹了编程语言领域的又一次变革的高潮。C语言的编程能力已经不能满足计算机的技术发展的需要。这问题并不是新问题。它造成了一代又一代的编程语言的新老更替。问题是,它使得程序设计过于复杂,从而使计算机软件的设计,编写和开发落后于硬件的发展。就是这个时候,两种基于设计概念的编程语言Simula 67Smalltalk (从上世纪60年代末)带来了接近编程语言未来前景的循序渐进的步骤。这期间,当面向对象编程( OOP ), 与它一种新的编程语言,所谓的C + +在程序员中掀起了一场风暴。
1979年, Bjarne Stroustrup的在新泽西州的贝尔实验室增强了C 语言,使其具有面向对象的特点即所谓的C + + 语言 ( + +C编程语言增强的承载符号 )。 C + +是一个真正的提高的C编程语言,它开始是一种前置语言,该计划最初是一种编译工具。 Stroustrup建立类的概念(借用了Simula 67Smalltalk 中的概念) ,由类则可以创建实例对象。一个类包含数据成员和定义对象数据和功能的成员函数。他还介绍了继承的概念,使一类继承其他一个或多个类的部分或全部数据成员或成员函数,职能由一个或多个其他类别-所有这些概念就是面向对象的编程。
1988年由ANSI官员将C + +标准化。
⒉走进JAVA
正当C + +作为企业开发所选择的语言时,由于最新的突破性技术-万维网的出现,别一种编程语言正在萌芽,并逐渐成熟。几十年来互联网对普通人来说还是个秘密,直到前美国国家科学基金会(监督互联网的机构)拆除了防止互联网商业化的壁垒。1991年当它向商贸开放时,互联网几乎是政府机构和学术团体的专利。一旦商业化的障碍被取消,万维网提供的几个服务,在互联网上成为虚拟社区中心,游客可以得到几乎任何的免费的资讯并浏览数以千计的虚拟商店。
浏览器加强了万维网。浏览器转换将用HTML编写的ASCII文本文件转化成为一个互动的显示功能,并可以任何计算机上编译运行。只要浏览器是和HTMLHTTP兼容的正确版本, 在任何电脑上运行的浏览器可以使用相同的HTML文件,而不是指定为某一特定类型的计算机,而在以前是闻所未闻的。而CC + +是依赖于机器的,并且不能运行于不同机器上,除非是重新编译。
互联网的成功使人们将重点放在发展独立于机器的编程语言上。和同年在互联网上被商品化,科技工作者SunMicrosystems詹姆斯戈斯林,帕特里克诺顿, chriswarth ,和麦克谢里登花了18个月发展规划,并在1995年向公众发布,他们所谓的Oak,后来改名为JavaJava 1991年和1995年期间经历了无数次的变革。那个时候,在Sun公司的许多其他科技人员对该语言的发展做出了重大贡献。Joy,阿瑟范霍夫,乔纳森佩恩, Yelin , 添佩尔都分享了成功的喜悦。
虽然Java是和互联网密切相关,但开始是为了开发一种可以嵌入到电子器件中去的软件的编程语言,而无论所用装置的CPU类型。这也是众所周知的所谓embedded java平台。
Java团队从Sun成功地建立了一种可移植性的编程语言,电脑程序员进行了首次编程,一些已经实现。他们的成功远远超出了他们的梦想。同样可以使Java程序进行在各种可移植的电子装置上,也可以使Java程序在安装了Microsoft Windows UNIXMacintosh的计算机上运行。 这个时机很完美。因特网/内部网已使美国企业为符合公司成本效益,而开发应用于公司的可移植程序的兴趣。Java已被证明可以作为一种成功开发与机器无关的应用程序的编程语言。
Java虚拟机
Java程序和写C + +程序是相似的,这程序员可以编写: 包含指示的源代码,成为一个编辑器,或在一个综合发展环境中对源代码进行编译。不过,这也就是JavaC + + 一部分的方式。该编译和链接的过程中一个C + +程序的结果可以运行在一个适当的可执行的机器上。与此相反,Java编译器则将Java 源代码转换成字节,即由Java虚拟机( JVM )执行 。
机器的具体指示,则不会包括在字节中。相反,他们已经包括在JVM的,这是属于具体机器的。这意味着该字节可能包含的C + +
程序要翻译的指令要少。
⒋未来的世界:J2ME
请记住, Java是在消费和工业产品中作为一种编程语言创建程序嵌入式系统微机发现的开始,如那些用来控制汽车和家用电器的微机。在20世纪90年代初,开发团队在Sun的工作利用Java以解决幼稚的嵌入式电脑市场的编程的需要,但这种努力是更侧重于来自互联网的吸引力的机会。
在世纪交替之年由于这些机会已得到解决,一种新的便携式通信带来了其他设备的机会。从语音通信设备的语音到文本通信设备。而便携式电子电话簿演变成个人数码助理。在这时候,芯片制造商所推出的新产品,其目的是为了从桌上型电脑转移计算能力到移动的小型电脑控制的燃气水泵,电缆电视盒,和其他组合的其他电器。
为下一步的演变的Java的时机是合理的 。不过,不是Java 与额外的空气污染指数加强,在Sun公司的该小组,即Java Community Process计划, 拆除均采用Java编程语言和Java虚拟机。他们从嵌入式系统和微机设备剥离下来的JavaAPIJVM到最低限度编码须提供情报。由于这些设备资源方面的限制强加的硬件设计,这是必要的。他们的努力结果是J2ME的。 J2ME是减少了Java APIJava虚拟机是设计用来运作稀疏可用的资源在新的品种的嵌入式计算机和微机的版本。
⒌组织J2ME
传统计算设备需要使用标准相当的硬件配置,如显示器,键盘,鼠标和大量的记忆和永久储存。不过,其中新一代的计算设备缺乏的硬件配置的连续性。有些设备不具有显示屏,永久储存,键盘, 或鼠标。其中小的计算设备的记忆提供情况是不一致的。缺乏统一标准的硬件配置之间的小型计算设备的构成是一项艰巨的挑战Java Community Process的计划则是为JVMJ2ME的小型计算设备制定标准。
许多不同种的小的J2ME的计算设备,包括screen phones ,数字机顶盒用于有线电视,手机和个人数字助理,所面临的挑战是Java Community Process的计划是建立一个可以对小的无标准的计算设备实施的Java标准。
J2ME Profile
一个配置文件构成的Java类,其执行的功能是为一特别小的计算装置或一类的小型计算设备的。小型计算机技术不断发展, J2ME的配置文件的发展也是一个持续的过程。 配置文件已被界定为编写文本。这些即是Foundation profileGame ProfileMIDP PDA personal profilepersonal profilepersonal basis profile ,和RMI personal profile
基础配置文件是用来做CDC和配置的,而这种配置文件或CDC几乎是所有其他的配置文件与CDC的核心,因为配置的基础个人资料包含核心的Java类。
■Game Profile
也可以用来与CDC配置,并包括为开发游戏申请任何一个小的计算设备的使用,和CDC的配置所必要的类。
移动信息设备配置文件( MIDP)是用来与cldc 配置和包含的类别提供本地的存储空间,用户界面,和联网能力,从而使应用程序运行在一个移动计算装置,例如Palm OS的设备。 MIDP即是使用无线Java应用程序。
■pdap rofile
pdap )是用来实现cldc配置,并包含个人数字助理类所需要的先进的资源。相对于MIDP的移动设备(如手机),这些先进的功能包括更好的显示和较大的内存,比类似的资源。
■Personal profile
是用来供CDC的配置和foundation profile(基础配置文件),并含有实现一项复杂的用户界面类。Personal profile提供的核心类,及personal提供一种类,用以实施一个先进的用户界面,也就是说一个用户界面,是能够显示多个窗口的。
■personal basis profile
是和personal profile类似的,因为它是用来为CDC配置的。然而,personal basis profile提供类所实施的一个简单的用户界面,这是在一段时间内用户接口所在地能够显示的一个窗口,。
■RMI profile
是用来与CDC的配置和basis profile提供以类为核心的包括foundation personal profile远程方法调用类。
随着小型计算设备的继续发展,有可能会出现更多的文件。业集团是Java Community Process计划( java.sun.com / aboutjava / communityprocess )定义的配置文件。该集团各组确立了标准配置文件所使用的小型计算设备制造行业的标准。 acdcpersonal profile是指通过扩大后的核心Java类中发现的专门针对一类的小型计算设备basis profile与类。这些装置的具体类,装载于一个新的配置文件中,使开发人员能够利用这些设备开发一些应用程序。
但是,如果foundation profile 是特定CDC的,而不是所有的配置文件的,是在foundation personal profile是扩大后的核心类。请记住,应用程序可以访问的一小型电脑设备的软件和硬体功能,只有当必要的类,这样做是载于JVM和在配置文件所用的开发的需要。
J2ME和无线设备
随着手机等无线设备的大量出现和功能的逐渐完善,对运行在这样的设备上的软件的要求量也越来越大。消费者和企业都要扩大移动通信设备的功能,使其从传统的语音通信过渡到类似于笔记本电脑和个人电脑的功能,使他们可以传送和接收电子邮件,存储和检索的个人资料,执行精密的计算,和玩游戏。
开发商,移动通信设备制造商,和移动网络供应商现正急欲填补这方面的需求,但有是一个严重的障碍:移动通信设备利用许多不同的应用平台和经营调整代码,为一设备开发的代码将无法运行在另一个设备上。移动通信设备缺乏一个标准的应用平台及作业系统,这使得应用开发移动通信设备,促进经济发展有些冒险。
缺乏标准,就是没有新的计算或任何技术开发。 在传统意义上,硬件设备制造商的尝试产品遍及市场,并执行他们的自己的专有标准作为事实上的业界的标准。许多暴发户成功的情况和微软一样。其他时候,业界领袖则组成一个财团,例如Java Community Process计划,集体制定一种标准。
无线应用协议( WAP )行动网际网路论坛成为初步创建无线技术标准的产业集团。WAP 论坛创造了移动通信设备标准,被称为thewap标准。 thewap标准是一个提高的HTML XML的,和TCP / IP 的一个组成部分,这个标准是无线标记语言规范而组成的,融合了HTMLXML wmlscript 是一种剥夺式版本的JavaScript
J2ME applications
J2ME的应用程序称为MIDlet几乎可以运行在任何实现了JVMMIDP移动通信设备上。这鼓励开发商投资时间和金钱在建设移动通信设备上,而不需要担心该应用是设备依赖的风险。不过,J2ME是不会被视为更换为WAP的规格,因为两者都是互补的技术。开发商的申请是根据客户要求的基础继续使用wmlwmlscript 。开发商转向J2ME的较重的客户,需要对移动通信设备进行复杂的处理。