客观的看待java
相对于其他编程语音,java有一个无庸置疑的优点:用户以及编译器第一次不必了解生成可执行代码的特定cpu细节。java引入了一个编译代码中间层,叫做字节代码,并使用一个虚拟抽象的机器,而不是一个真实的机器。当java编译器结束了一个源文件的编译后,你所得到的不是可以立即在一个给定平台上运行的代码,而是可以在任何真实的平台上运行的字节代码,唯一的条件就是这个平台要理解和支持java.这些发展包含着一个文化的变革。作为一个开发人员,你只需要确定java虚拟机(jvm)提供的抽象层,不同的os销售商负责执行代码层,从而将中立于平台的字节代码映射到主机平台的机构中。在这种情况下,java似乎是统一分布式计算机世界的领袖候选人了。“编写一次,永远运行”(并且无论在哪里)就成为java诱人但却真实的口号。
但我们平心而论,java的跨平台并不是一个非常诱人的特性?跨平台理论的发展很好地证明了这一点。我们看到,将java代码从一个平台移植到另一个平台?java这个语言最重要和最受吹捧的特点?并不象宣传的那样容易。任何java平台都有其自己的虚拟机,它可以理解通用的字节代码,并且及时地将其编译为本地代码。矛盾由此产生,不同虚拟机的执行也很不相同,这一点足以使代码的移植比预期耗费多得多的时间,而且基本上不是自动的。在企业用户的角度上来说,也很少会有企业会频繁的更换平台,因此这个特性是否能够带来高价值是很难评价的。
那么,java模型的好处在哪里呢?首先,java是一种先进的、面向对象的语言,包含了预防常见错误的内置功能,并在仅仅一两个对象中携带了许多经常需要用到的功能。与c++相比,java更易于读写,不容易出错,而且更加美观,但是它速度较慢也不太灵活。想实现在任何软件和硬件平台上都可虚拟移植,java尽可能少地使用了公分母模型,也就是说放弃了将每个平台开发到极限的能力。第二,虚拟机的概念本身就是可移植和可共用的,因此对于分布式环境来说是理想的。java对于为非windows平台开发代码是最好的语言。
那么对于windows平台来说,java又怎么样呢?让java适应windows是不可能的,这是由于sun的许可约束问题。但是java实在是太吸引人了,microsoft比谁都能更清楚这一点。microsoft在以前推出的visual j++证明了这一点,但是可惜的是,microsoft又犯了霸权的老毛病,visual j++并不好用。因此,microsoft又一次采取了“拿来主义”的手法,很好地利用了java 的众多特性,隆重推出了windows平台的新锐力量,它就是相当简单但十分强大的面向对象的c#编程语言。c#超过了c++,它天生就包含了。net框架类库中的所有类,并使语法简单化。说到这里已经有一些离题了,不过java也不是说在windows平台上就不能够使用,jdk和大部分的ide都支持windows平台。
java技术的架构――j2me、j2se和j2ee
通常我们以 jdk(sun 所开发的一套 java 开发工具)的版本来定义 java 的版本。jdk 1.0 版于 1996 年初公开,jdk 1.1 版于 1997 年初公开,jdk 1.2 版于 1998 年底公开。基于市场行销的考量,sun 在 jdk 1.2 版公开后旋即将 java 改名为「java 2」,将 jdk 改名为「java 2 software development kit(以下简称 j2sdk)」。j2sdk(原称 jdk)1.3 于 2000 年 4 月公开,此版本仍称做「java 2」。目前 j2sdk 1.4 也已经公开了,大家可以到sun的官方java站点上查阅到大量的jdk1.4的信息。
java 技术根据硬件平台与适用环境的差异,分成几个分支。jdk 1.1 的时代,适用于一般消费性电子产品等,嵌入式系统的 java 平台是 personaljava 与 embeddedjava,此二者并无明确的界线,大致上来说,运算资源、内存、以及显示装置比较丰富者,使用 personaljava,例如 set-top box、视讯电话 …… 等;反之,资源较有限者使用 embeddedjava,例如呼叫器、行动电话 …… 等。除了 pc 使用的 java 平台、ia 使用的 personaljava 与 embeddedjava 平台之外,javacard 也是一个 java 平台,使用于 smart card(ic card)上。
java 2 出现后,推翻了先前的 personaljava 与 emeddedjava 的分法,改分成 java 2 platform enterprise edition(简称 j2ee)、java 2 platform standard edition(简称 j2se)、java 2 platform micro edition(简称 j2me)。j2ee 适用于服务器,目前已经成为企业运算、电子商务等领域中相当热门的技术;j2se 适用于一般的计算机;j2me 适用于消费性电子产品。除了这三者之外,javacard 依然是独立的一套标准。
目前,java技术的架构包括三个方面:
j2ee(java 2 platform enterprise edition )?企业版 (j2ee) 是为面向以企业为环境而开发应用程序的解决方案。
j2se(java 2 platform stand edition)?标准版 (j2se) 为桌面开发和低端商务应用提供了可行的解决方案。
j2me(java 2 platform micro edition )?小型版(j2me)是致力于消费产品和嵌入式设备的最佳解决方案
j2ee
j2ee已经成为开发商创建电子商务应用的事实标准。正是认识到j2ee平台作为一种可扩展的、全功能的平台,可以将关键的企业应用扩展到任何web浏览器上并可适合多种不同的internet数据流、可连接到几乎任何一种传统数据库和解决方案、使企业经理根据多家企业所提供的产品和技术开发和部署最佳的解决方案进而降低开发网络化应用的费用和复杂性这一巨大优势,很多厂家都表示将对j2ee给予支持,并将j2ee技术作为大型btob市场和海量交易处理的安全稳定的端到端平台。j2ee技术的基础就是j2se标准版,它巩固了标准版中的许多优点。其最终目的就是成为一个能够使企业开发者大幅缩短投放市场时间的体系结构。它为灵活配置各种多层企业应用软件,特别是b2b、b2c等电子商务应用,提供了强大的服务功能。最近又新加了connector api服务,使企业应用的开发和部署有了一系列成熟的技术。
j2se
j2se是java 2平台的标准版, 它适用于桌面系统,提供corba标准的orb技术,结合java的rmi支持分布式互操作环境。它运行在java虚拟机上。在引入了java idl后, j2se支持iiop通信。它是高可移植性、异构性的实现环境和健壮平台,也是实现可伸缩性、可移植性、分布式异构互操作应用软件开发的标准平台。
j2me
j2me提供了http高级internet协议,使移动电话能以client/server方式直接访问internet的全部信息,不同的client访问不同的文件,此外还能访问本地存储区,提供最高效率的无线交流。j2me是java 2平台的微型版,它分成cdc(connected device configuration)和cldc(connected limited device configuration)两部分。cdc运行在连接虚拟机上,为手提式计算机一类较复杂的移动设备提供应用平台;cldc运行在核心虚拟机(kvm)上,它实现midp(mobile information device profile)移动信息设备应用平台,即针对手机之类的设备建立移动计算平台。
在小型的j2me(java 2 micro edition)方面,主要是应用在内存容量小、体积也较小的电子装置上。小至智能卡、行动电话,个人数字助理都是运用j2me的最佳平台。java在palm的应用上,palmos 4.0内含kjava,sun也推出针对palmos使用的j2me版本。所以,以既有的java程序设计知识,就可以在palm pda上开发出palm的各式各样应用系统。java和palm这两个标准平台的结合,将是下一波pda应用的趋势。java在手机的应用上,nokia、motorola、ericsson 都将推出利用j2me技术的新手机,所以java程序设计师有更多的平台可供施展。此种结合j2me及无线通讯技术的无线开放应用平台,将提供行动商务极佳的解决方案。
在中型的j2se(java 2 standard edition)方面,sun推出一个新的解决方案,称为java web start.原先的java applet是在webbrowser 中间开出一块方形区域来执行java程序,但是这样在执行效能和兼容性上都受限于原有的 web browser.现在新推出的java web start则是在操作系统上直接执行的java application,但是可以在网页上激活。如此一来既可和网页结合,在执行上也更快、更有效率。并且,sun和ibm都将推出支持64位运算的java版本,这对一般计算机上执行的客户端java应用系统的开发将会是一大利器。
另外在大型的j2ee(java 2 enterprise edition)应用上,可以说"j2ee"已经成为服务器运算环境的标准。java servlets、jsp(java serverpages)、ejb(enterprise javabeans)、javamail、jdbc、jms等,都是各家厂商产品开发的重点方向。j2ee兼容的是一般intel个人计算机(linux、windows……)、麦金塔以及各家高效能高稳定度的unix伺服主机,未来必定成为服务器运算市场上的主要选择之一。
除了以上这三大java组合之外,java和xml的整合也是未来的重点。sun公司已经推出java处理xml的标准延伸api - java api for xml parsing (jaxp),可以让各家所制作的xml解析器有接口上的标准。所以在java程序中,只要了解一套api(jaxp)就可以完全处理xml文件,让xml的应用更加方便。java这个跨平台的开发环境,加上xml这个跨平台的资料格式,此种跨平台优势组合势将成为未来讯息传递及资料交换的主要应用技术,如虎添翼地结合成一个最佳的跨平台解决方案。
藉由j2se (java 2 standard edition)可以开发在pc上的应用软件,藉由j2me (java 2 micro edition) 可以跨足更广大的家电、智能卡、电子装置等市场,再藉由j2ee (java 2 enterprise edition ) 可以整合伺服主机运算环境。java技术的应用范围几乎已经无所不在,java技术更可以在网际网络及电子商务各领域中,提供全方位的解决方案。
随着应用领域的不同,java 有许多 api(application programming interface),这些 api 分成三大类:
java core api:由 sun 制定的基本 api,任何 java 平台都必须提供。
java standard extension api (javax):由 sun 制定的扩充 api,java 平台可以选择性地提供或加装。
厂商或组织所提供的 api:由各家公司或组织所提供。
其中 core api 和 standard extension api 已经逐渐涵盖了大部份的信息应用领域,例如多媒体、数据库、web、企业运算、语音、实时系统、网络、电话、影像处理、加解密、gui、分布式运算 ……。如果你有某项需求尚未有标准的 java api 可遵循,你可以向 sun 提出制定新 api 的请求。经过审核之后,你的要求可能会通过、驳回 …… 等。如果通过,就会开始进入制定 api 的程序。java api 的制定过程因为公开,且经过许多业界技术领先公司的共同参与,所以相当完善而优异。
闽公网安备 35060202000074号