2012年4月23日星期一

十年之后 Java技术的新方向

十年之后 Java技术的新方向

http://tech.163.com 2006-03-21 15:32:40 来源: csdn(北京)  网友评论1 论坛
 
Java技术自问世时光已经过去了9个年头。作为一名一直关注其成长的记者,曾经一段时间有过这样的想法:“Java技术已经成熟,是不是发展速度该放慢一些了呢”。然而,这种想法错了。近来Java技术的进化相当显著。Java技术正在迎来“又一次革命”的风暴。这就是本文的结论。
“又一次”指的是什么?“革命”指的又是什么?光看结论的话肯定是一头雾水。其实,笔者要讲的并不是变化这样一个事实,而是“促进变化的原动力”。是什么让Java技术发生变化?让我们从这一角度出发,先看一下Java的变化历程。
Java正处于转变期
回顾Java技术的发展历程,人们一定会感慨:2004年到2005年发生的变化如此之大,可以说“现在”正是Java技术的转换期。Java技术由编程语言(Java语言)、运行环境(JVM:Java虚拟机)、框架(JavaAPI群)组成,目前在每一个层面上都发生着巨大的变化。
(1)编程语言的变化
Java语言标准出现明显变化。在2004年9月发布的正式版本J2SE5.0(J2SE:Java2Platform,StandardEdition,Java技术的核心运行环境)中,对Java语言标准中的Generics与元数据进行了大幅扩展。出现了被认为是“自Java问世以来的最大一次语言标准变化”(美国SunMicrosystems)。这次语言标准的变化给许多JavaAPI带来了影响。许多企业API的新版本都引入了基于元数据的注解(程序中记录的附加信息),以较短的编码记述更多的信息。
(2)Java运行环境的变化
在J2SE5.0中,大幅度强化了JVM的管理功能与实用性,换句话说就是具备了Java执行OS(操作系统)的特征。例如,原来在J2EE(Java2Platform,EnterpriseEdition,构筑企业系统的Java技术)领域,标准配备有作为管理功能的应用软件管理框架JMX。不仅如此,还配备有JVM自身监控功能((JSR174:MonitoringandManagementSpecificationfortheJavaVirtualMachine)。在标准功能架构中可以实时监视JVM运行时的状态,也就是内存使用量、线程状态等。
J2SE5.0中新追加的功能中包括并行处理实用程序(JSR166),其基础是纽约州立大学DougLea提供的程序库。也就是说,标准规格中采用了来自民间的程序库。
(3)框架的变化
服务器端的Java框架也发生了巨大变化。企业级Java技术--J2EE的“使用方法”说明文件“J2EEBlueprint”中,提出了将应用软件分为Web层、EJB层(EnterpriseJavaBeans,将包括事务处理在内的业务进程模块化的框架)来构筑的思路。这两种层次都迎来了架构更替时期。Web层的新框架为JSF(JavaServerFaces,将模块组合起来构筑Web应用程序的框架),EJB层为标准方案中刚刚公布的下一代EJB规格“EJB3.0”。
值得注意的是,促成框架发生变化的正是来自民间的源码开放软件。
对JSF产生影响的是作为源码开放的Web层框架得到普及的ApacheStruts。JSF是对Struts的思路进行改进的产物,JSF的SpecLead(规格制定领袖)之一CraigR.McClanahan就是Struts的作者。
对EJB3.0造成影响的也是民间源码开放软件。EJB3.0引入了DI(DependencyInjection,依赖注入)容器类(Container)与POJO(PlainOldJavaObject)持久类这些新功能,大大减轻了编程的复杂性。这些概念因PicoContainer、Spring等源码开放软件的导入而引人注目。
其背景在于用户对“目前的EJB过于复杂”的批评。原本由EJB反对派提出的设计思想与源码开放软件,却变成了EJB3.0的中心概念,显出了巨大的影响力。
(4)脚本语言
在Java技术标准中新增加了编程语言Groovy(JSR241)。这是一种可与Java语言无缝连接的脚本语言,有望以极短的程序完成相关处理。“在Java技术中添加Java以外的语言”,这听起来也许有些别扭,其实以前就有这样的呼声,希望将可以充分利用Java技术资源的脚本作为语言使用。Groovy本来是源码开放软件,最终得到认可,被采纳为标准规格。
由上述可以看出,Java技术的构成要素正在发生巨大变化。就在不久以前,一提起服务器Java,“Servlet、JSP、EJB是重要的API”这样的说明还占主流,但现在基于JSF和EJB3.0的应用程序已经变成了“面目全非”的程序。而在运行短程序或测试时,甚至还出现了不仅是Java语言,连脚本语言都开始调用Java框架的情况。
这些变化从大的方面来看的话,可以说是进一步发挥了Java面向对象的优势。当然,也包括提高开发效率、提高运行稳定性、简化运行管理等业务上的优势。
开发者团体是真正的“变革推动者”
那么,这些变化的原动力来自哪里呢?为什么说“目前”正面临着“又一次变革”呢?理由如下:
在Java技术的发展过程中,1999年到2000年是一个大的转折点。J2EE概念于1999年出现。J2EE也在随后2~3年内得到普及,但这一技术体系早在5年前就已经确立。在我们眼前,新一代Java技术的轮廓正逐渐显现出来。
JCP(JavaCommunityProcess)2.0于2000年问世。以会员制的组织形式推进Java技术的规格制订、总体发展方向则以委员会的方式决定。从而形成了不依赖特定企业的规格制订流程。这一组织形式历经近5年的时间,逐渐发展成“变革的推动者”。
J2EE此前一直饱受批评,认为“Web层与EJB层的差距太大”、“EJB过于复杂”,但这也是因为这是一项实际使用的技术。JCP同样也遇到很多批评,称其“没有完全公开”、“制定的技术标准却不可思议地让Sun拥有知识产权”,但JCP却作为一个团体不断发展壮大。
直接推动Java技术变化的当事者为5年前形成的基于团体的标准制订流程--JCP,但真正将讨论与技术纳入JCP的却是包括Java技术批评者在内的众多Java开发者团体。他们也是早期开展Java技术变革的先行者。由此诞生的下一代技术将会在2~3年后逐渐波及主流企业用户。
Java技术的“变革推动者”为开发者团体。不受制于特定企业,通过众多需要Java的开发者的建议,Java技术正在不断发展进步。

且看微软的.Net和Sun公司的J2EE如何对垒

http://tech.163.com 2006-03-21 20:21:05 来源: sun  网友评论0 论坛
 
导 读:面对微软推出的.Net FRAMEWORK,你可能会有以下疑问:
¨ 准确地讲.Net平台是什么?
¨ 如何将.Net的体系结构和J2EE对比?
¨ 从.Net的体系结构演绎出的一整套关于企业软件开发方案中我们能学到此什么?
在本文中作者将为你解开这些疑问。

廖永康 原文出处:http://java.sun.com/features/2000/11/dotnetvsms.html
即使你没有专门针对微软平台写过程序,你可能也会听到过微软的.Net。这是微软对最近一连串和非视窗事件竞争的回答。如果你读到过有关新闻、来自微软的撰稿、或者通过在MSDN端浏览得到的不完整的技术资料、或者你注意到了微软专家开发者会议(会上已经演示了.Net平台)的话,你可能至少还有两大疑问:
¨ 准确地讲.Net平台是什么?
¨ 如何将.Net的体系结构和J2EE对比?

如果你再深入一步的话,你可能还有第三个疑问活跃在你的脑海里:
¨ 从.Net的体系结构演绎出的一整套关于企业软件开发方案中我们能学到此什么?
.Net框架是其生命周期的十分早期阶段的产品,微软.Net部门还会不断地更深入和仔细地开发它,但是无论怎样,我们已经能够从已有的资料对这些问题作出公正的正确的回答。
它是什么?(.Net是什么?)
现在在众多的论坛中对.Net的反思,使人不禁联想起三个瞎子摸象的寓言;根据你的洞察力,可能得到非常不同的结论:有人认为.Net是微软下一代Visual Studio的开发环境;有人认为它只是一种新的编程语言(C#);还有人为它是基于XML和SOAP的一种新的数据交换和报文的工作框架。实际上,.Net包含了这几部份内容,而且还会更多。
首先,让我们看一些具体的细节,浏览一下组成.Net平台的一系列技术构件:
¨ C#:是一种新写的描述(书)构件的语言,它将C、C++和Java的元素集成起来,并增加一些特点如:元数据标记、相关元素的开发。
¨ “公共语言运行时”:它以中间语言(IL)格式,运行字节代码,用一种语言写的代码和对象只要编译器是针对这种语言开发的,显然能够编译成IL运行时。
¨ 一组基本的可从“公共语言运行时”访问的构件(元件),它可提供各种功能(如:连网功能、包容器功能等等)。
¨ ASP.NET:是新的ASP版本,支持将ASP编译成公共语言运行时功能(所以用任何语言写的ASP脚本,都能和IL捆绑在一起)。
¨ 视窗格式和Web格式:一种新的可从Visual Studio访问的UI构件框架。(用户接口=UI)。
¨ ADO:将XML和SLAP用于数据交换的新一代ADO数据访问构件(元件)。

.Net和J2EE如何比较?
正如我们所能看见的.Net平台,在其伞型结构下有一个技术矩阵(宝塔)。显然微软为了抓住视窗平台的开发商,正在将这些技术变成现有平台如J2EE和CORBA的代用品。但是怎样对它们进行逐项比较呢?一种方法就是将.Net和J2EE作成以下对比列表:
.Net J2EE 关键差异
C#编程语言 Java编程语言 C#和Java均来自C和C++,最显著的特 点(如垃圾收集层次结构的名字空间)在两个方面。C#借用了JavaBeans的某些构件概念(特性属性、事件等),并增加了 某些自己的概念(如元数据标志),但将这些特点合并成不同的语法。Java以Java虚拟机方式运行在任何平台上,而C#在可预见的将来,仅运行在视 窗环境内。C#隐含地结合到IL公共语 言运行时中,(见后),然后按合理的顺 序(JIT)运行。编译成的字节编码或者整个编译成的自然编码。Java代码按照Java 虚拟机字节代码方式运行,它由VM解 析或JIT编译,或者整个编译成自然代码。
.Net公共元件(填补“.Net 框架结构的SDK”) Java核心API 高层的.Net元件,包括支持用XML和SOAP 的分布式访问(见ADO.NET)。
ASP.NET页面(ASP.NET) Java服务器页面(JSP) ASP.NET使用Visual Basic、C# 可能还有一 别的语言作为代码段。通过公共语言运行 时全部编译成自然代码(与此相对应<相反> 是象APS那样,每次都解析执行)。JSP使 用Java代码(段或者JavaBeans参考),或者 编译成Java字节代码(按需或批编译要根据 JSP实现系统来决定)。 .Net公共语言运行时允许以多种语言的代码 (程序)在视窗环境下使用一组共享的元件。 优先于.Net框架的所有元件(公共元件、ASP.NET等)。
IL公共语言运行时 Java虚拟机和CORBA IDL和ORB Java的虚拟机规程,允许Java字节代码, 在任何平台上按JVM方式运行。 CORBA允许多种语言的代码使用一组共享 的对象,在任何带有ORB的平台上运行, 并不是紧密地集成到J2EE框架内。 同样的Web元件(如基于JSP的文件)在标准 的Java平台上是没有的,某些专有的元件 只能通过Java IDE等得到。
视窗格式和Web格式 Java的飘移通过MS Visual Studio的IDE而不是在本文 所说的IDE,支持视窗格式和Web格式的 RAD开发,在许多Java的IDE和工具中都 支持“飘移”(Swing)。
ADO.NET和基于SOAP的Web服务 JDBC、EJB、JMS和Java XML库(XML4J、JA-XP) ADO.NET建立在位于HTTP协议顶部的XML数据 交换的基础上(指在远程数据对象和多个应 用程序捆绑之间的数据交换)。一般说来, .Net的Web服务假定了SOAP发信模型。 而EJB、JDBC等将数据交换协议和开发者 处理权分离,不工作在HTTP、KMI/JRMP或 IIOP顶层。

该表的比较只抓住了表面现象,这里再总结一下.Net和J2EE的比较:
¨ 特点:.Net和J2EE都提供同样优秀的特点,尽管提供的方法不同。
¨ 可移植性(Portability):.Net的核心只工作Windows环境下,但从理论上讲可以支持以多种语言开发(只要这些语言的子集/超集已经定义 好,并为他们建立了IL编译器)。也就是说:SOAP的能力允许在其它平台上的元件(部件)和.Net元件进行数据报文交换。而.Net中的一些元素:象SOAP,其恢复和查找协议,作为公共部份提供构架的核心部件(IL运行时环境、ASP.NET内部的视窗格式和Web格式元件“合同”等)仍由微软掌握,微软只扮演整个.Net开发环境和运行时环境提供者的角色。其实早就有了来自开发者协会要求微软公开这些规程,但是这和微软的标准经验相违背。

另一方面,J2EE只要遵循Java VM(规则)和一组平台需要的服务就可以在任何平台上工作(EJB包容器、JMS服务等等)。所有这些定义了J2EE平台的规程,都已经公开发表,并提供公众阅读。因此,许多供应商也提供兼容产品和开发环境。但是J2EE是单语言平台,若用其它语言调用或访问对象,可能需要通过CORBA,但是CORBA支持并不是平台普遍存在的部分。

巨大的前景:
上述最后的几点勾画出.Net和J2EE的某些关键性的差异,以及微软在这些方面所扮演的角色。微软现在正在为.Net做两件值得注意的事:通过将XML和SOAP集成到他们的信息传输方案中,从而为以其它编程语言开发商和非.Net部件打开通向.Net的道路。
通过让语言元件交叉互动,.Net正在释放Perl、Eiffel、Cobol和其它编程器,允许它们扮演微软“沙盘”的角色。这些语言的爱好者应该特别遵守规则,因为他们中大部分人在微软/SUN/OpenSource竞争中感受到约束和定界。因此,只要在他的元件发信层使用XML和SOAP,微软就能支持他们将开放性部件加到他们的平台上,从而摆脱对专用性的依赖。

关于.NET与Java的比较
[ 1244 查看 / 5 回复 ]

ASP.NET 与 Java 的比较
Java 语言发展到现在,已经成了当前 Web 编程的主要语言,获得了广泛的业界支持。

Java 的最大的特性就是与平台的无关,良好的 OO 属性,是互连网编程的强大的粘合剂。

下面是 ASP.NET Java 的一些区别。

1)业界支持

如果单纯从业界的支持者来讲,Java 获得了更多的业界的支持。IBM “e-business

application framework“架构在 JavaXMLCORBAIBM VisuageAge For JavaWebSphere

作为 Web 开发的工具。IBM 认为选择 Application Framework 有几个原则:不依赖于特定

的平台,建立在工业标准之上,大部分计算放在 server 端,scalable 等,同时后面还有 Oracle

Sybase,当然还有 Java 的祖先 Sun 公司。

但是目前微软推出的.NET 除了平台无关性不能实现之外,功能上完全达到了这个要

求,如果真的.NET 以后成为业界的标准,则微软又一次引领 IT 潮流。

2)开发模型

.NET 技术还没有出来的时候,国内的很多软件厂商在向 Web 编程迁移的时候,大

多选择了 Java。核心软件和南北财务系统,用 Applet 开发客户端界面,使用起来还是跟传

统的软件一样。

由于目前采用 HTML 开发界面复杂的应用尚不是很合适,这是选择 java applet 的理

由。而 ASP.NET 出来之后,开发复杂的基于 server 的应用要方便的多。

目前采用 applet 的应用,把很多编程逻辑方在客户端,这种方式尚不是未来的编程集

中在 server 端的方式。也许,Java 也会推出新的 package 支持这种应用。

server 端,Java 采用 ServletJava BeanASP 采用 ScriptCOM 组件,目前的编

程模式相类似。

ASP.NET 中提到的 Web service 集成的方式,目前微软力推 SOAP UDDI 。但是,

这些是建议成为 w3c 标准,不依赖于特定的平台。

从以上关于业界支持、开发模型的观察,Java 是一个成熟的产品。而 ASP.NET 的到

来,将会是 Web 开发方式的一个更大的发展。

JAVA与.net的区别和各自优势?
悬赏分:0 - 解决时间:2006-10-26 11:46
 
提问者: chwcshuizei - 二级
最佳答案
1.Java 是 简 单 的 

Java 与 C++ 极 为 相 似, 但 却 简 单 得 多。 高 级 编 程 语 言 的 所 有 特 性 中,
不 是 绝 对 需 要 的 都 已 删 去 了。 例 如, Java 没 有 算 符 过 载、 标 题 文 件、 
预 处 理、 指 针 运 算、 结 构、 联 合、 多 维 数 组、 模 板 及 隐 式 类 型 变 换。 如 
果 你 知 道 一 点 C、 C++ 或 Pascal, 你 很 快 就 会 驾 驭 Java。 这 里 是 一 个 简 单 的 Java Hello World 程 序: 



public class HelloInternet {

public static void main(String argv[]) {

System.out.println(“Hello In-ternet!”)

}

}
2.Java 是 面 向 对 象 的 

Java 是 一 种 面 向 对 象 的 编 程 语 言。 除 了 简 单 的 类 型, 如 数 字 和 布 尔 算 
子 之 外, Java 中 的 大 部 分 都 是 对 象。 

正 如 任 何 面 向 对 象 的 语 言 一 样, Java 代 码 也 按 类 组 织。 每 个 类 定 义 一 
组 规 定 对 象 行 为 的 方 法。 一 个 类 可 以 继 承 另 一 个 类 的 行 为。 在 类 的 
根 层 次 上, 通 常 是 类 对 象。 

Java 支 持 单 继 承 类 层 次 结 构。 这 就 是 说, 每 个 类 一 次 只 能 继 承 一 个 别 
的 类。 有 些 语 言 允 许 多 继 承 性, 但 这 可 能 造 成 混 乱, 使 语 言 不 必 要 地 
复 杂 化。 例 如, 难 以 想 像, 一 个 对 象 会 继 承 两 个 完 全 不 同 的 类 的 行 
为。 

Java 还 支 持 摘 要 类 的 接 口。 这 允 许 编 程 人 员 先 定 义 接 口 的 方 法, 而 不 
必 急 于 马 上 确 定 方 法 的 实 现。 一 个 类 可 以 施 行 多 个 接 口, 从 而 具 有 
真 正 多 继 承 性 的 许 多 优 点。 一 个 对 象 也 可 实 施 任 意 数 量 的 接 口。 Java 
接 口 与 IDL 接 口 极 其 相 似。 很 容 易 建 立 IDLJ 编 译 器。 这 就 是 说, Java 可 
用 于 CORBA 对 象 系 统 来 建 立 分 布 式 对 象 系 统。 鉴 于 在 许 多 计 算 机 系 统 
中 都 采 用 IDL 接 口 和 CORBA 对 象 系 统, 这 种 兼 容 性 是 重 要 的。 

3.Java 是 静 态 类 型 的 

在 一 个 Java 程 序 中, 必 须 定 义 所 用 对 象 (数 字、 字 符、 数 组 等) 的 类 型。 
这 有 助 于 编 程 人 员 很 快 发 现 问 题, 因 为 当 程 序 编 译 时 可 以 检 测 类 型 
错 误。 


不 过, Java 系 统 中 的 对 象 也 有 动 态 类 型。 要 求 一 个 对 象 为 动 态 类 型 往 
往 是 可 能 的, 所 以 编 程 人 员 写 的 程 序 可 以 对 不 同 类 型 的 对 象 做 不 同 
的 事。 

4.Java 是 编 译 型 的 


当 运 行 Java 程 序 时, 它 首 先 被 编 译 成 字 节 代 码。 字 节 代 码 非 常 类 似 于 
机 器 指 令, 所 以 Java 程 序 非 常 高 效。 然 而, 字 节 代 码 并 不 专 对 一 种 特 
定 的 机 器, 所 以 Java 程 序 无 需 重 新 编 译 便 可 在 众 多 不 同 的 计 算 机 上 
执 行。 


Java 源 程 序 被 编 译 成 类 文 件, 它 相 当 于 程 序 的 字 节 代 码 表 现。 在 一 个 
Java 类 文 件 中, 所 有 对 方 法 及 实 例 变 量 的 参 照 均 按 名 进 行, 并 在 第 一 
次 执 行 代 码 时 加 以 分 辨。 这 使 得 代 码 更 通 用, 更 不 易 受 修 改 的 影 响, 
而 仍 具 高 效。 

5.Java 是 体 系 结 构 中 立 的 


Java 语 言 对 每 种 计 算 机 都 一 样。 比 如, 简 单 的 类 型 都 是 不 变 的: 整 数 
总 是 32 位, 长 整 数 总 是 64 位。 令 人 奇 怪 的 是, 诸 如 C 及 C++ 等 时 髦 的 
编 程 语 言 却 不 是 这 样。 由 于 这 些 语 言 定 义 如 此 自 由, 每 种 编 译 器 及 
开 发 环 境 便 各 有 不 同 了, 这 使 程 序 的 移 植 成 为 讨 厌 的 问 题。 Java 程 序 
的 移 植 却 很 容 易, 而 且 不 需 要 进 行 重 新 编 译。 


6.Java 是 健 全 的 



Java 程 序 不 可 能 造 成 计 算 机 崩 溃。 Java 系 统 仔 细 检 测 对 内 存 的 每 次 
访 问, 确 认 它 是 合 法 的, 而 且 不 致 引 起 任 何 问 题。 
不 过, 即 使 Java 程 序 也 可 能 有 错 误。 如 果 出 现 某 种 出 乎 意 料 之 事, 程 
序 不 会 崩 溃, 而 把 该 例 外 抛 弃。 程 序 会 发 现 这 类 例 外, 并 加 以 处 理。 
传 统 的 程 序 可 以 访 问 计 算 机 的 全 部 内 存。 程 序 可 能 (无 意 识 地) 修 改 
内 存 中 的 任 何 值, 这 就 会 造 成 问 题。 Java 程 序 只 能 访 问 内 存 中 允 许 它 
们 访 问 的 那 些 部 分, 所 以 Java 程 序 不 可 能 修 改 不 拟 修 改 的 值。 

7.Java 是 小 巧 的 

由 于 Java 的 设 计 是 要 在 小 的 计 算 机 上 运 行, 作 为 一 种 编 程 语 言 来 说 
其 系 统 是 相 对 较 小 的。 它 能 有 效 地 在 4MB 以 上 RAM 的 PC 机 上 运 行。 Java 
翻 译 器 只 占 用 几 百 KB。 这 种 翻 译 器 对 Java 的 平 台 无 关 性 和 可 移 植 性 
是 可 靠 的。 

由 于 Java 很 小, 它 对 内 存 很 小 的 计 算 机, 如 基 于 Java 的 PC 机, 以 及 电 
视 机、 烤 箱、 电 话 机 及 家 用 计 算 机 等, 是 很 理 想 的。 

8.Java 是 多 线 程 的 

Java 程 序 可 以 执 行 一 个 以 上 的 线 程。 比 如, 它 可 以 在 一 个 线 程 中 完 成 
某 一 耗 时 的 计 算, 而 其 它 线 程 与 用 户 进 行 交 互 对 话。 所 以 用 户 不 必 
停 止 工 作, 等 待 Java 程 序 完 成 耗 时 的 计 算。 

在 多 线 程 环 境 中 的 编 程 通 常 是 困 难 的, 因 为 许 多 东 西 可 能 同 时 出 
现。 但 是, Java 提 供 了 易 于 使 用 的 同 步 特 性, 使 编 程 更 为 方 便。 


Java 线 程 通 常 被 映 射 为 实 际 的 操 作 系 统 线 程, 只 要 底 层 操 作 系 统 支 
持 这 种 映 射。 因 此, 用 Java 写 的 应 用 程 序 可 说 是 “MP 热”。 这 就 是 说, 
如 果 它 们 在 多 处 理 器 机 器 上 运 行, 它 们 更 将 表 现 不 凡。 


9.Java 是 可 收 集 无 用 的 存 储 单 元 的 


用 C 及 C++ 写 软 件 的 编 程 人 员 必 须 仔 细 跟 踪 所 用 的 内 存 块。 当 一 个 块 
不 再 使 用 时, 他 们 务 必 让 程 序 释 放 它, 从 而 方 可 再 用。 在 大 的 项 目 
中, 这 可 能 很 困 难, 并 往 往 成 为 出 错 和 内 存 不 足 的 根 源。 

在 Java 的 情 况 下, 编 程 人 员 不 必 为 内 存 管 理 操 心。 Java 系 统 有 一 个 叫 
做 “无 用 单 元 收 集 器” 的 内 置 程 序, 它 扫 描 内 存, 并 自 动 释 放 那 些 不 
再 使 用 的 内 存 块。 

10.Java 是 快 速 的 

Java 比 典 型 的 脚 本 语 言 大 为 有 效, 但 它 比 C 慢 20 倍。 这 对 大 多 数 应 用 
是 可 接 受 的。 

不 久 的 将 来, 代 码 生 成 器 就 可 供 利 用 了, 这 将 使 Java 程 序 几 近 于 用 C 
或 C++ 编 写 的 程 序 那 么 快。 

11.Java 是 安 全 的 

Java 程 序 没 有 指 针, 而 且 象 这 样 的 字 节 代 码 程 序 强 在 类 型 上, 所 以 在 
执 行 之 前 它 可 能 验 证 Java 程 序。 被 验 证 的 Java 程 序 得 以 保 证 不 突 破 
Java 语 言 的 任 何 限 制, 而 且 可 以 安 全 地 执 行。 Java 字 节 代 码 验 证 被 
Web 浏 览 器 用 来 确 保 小 程 序 不 含 病 毒。 

12.Java 是 可 扩 展 的 

Java 程 序 可 与 用 其 它 语 言 编 写 的 现 存 程 序 库 连 接。 由 于 Java 数 据 结 
构 与 C 的 数 据 结 构 的 类 型 极 为 相 似, 这 是 相 当 方 便 的。 最 大 的 问 题 在 
于, 现 有 多 线 程 程 序 库 为 数 不 多。 

Java 程 序 可 以 声 明 某 些 方 法 是 内 部 的, 然 后, 把 这 些 内 部 方 法 映 射 成 
软 件 库 所 定 义 的 功 能, 从 而 动 态 地 链 接 到 虚 拟 机

--------------------------------------------------------------------
1.标准集成:XML、SOAP及其它 
过去,微软的体系结构建立在COM/DCOM基础上,COM/DCOM是进程间通信的二进制标准。虽然这个标准本身没有什么失误,但是它与微软以外的领域格格不入。也就是说,这个标准成了实现与其它软件平台互操作的瓶颈。 

除此之外,数据也是一个问题。虽然ADO简化了数据访问,但是把数据从一个地方传送到另外一个地方就成了问题。ADO Recordset(记录集)对象是一个存储了数据的二进制结构,而这种二进制格式对于非微软的平台没有任何意义。 

.Net弥补了这些缺陷,因为它完全基于标准。比如,数据用XML的格式通过进程边界,而这个数据有一个到XSD的连接,所以任何客户端都可以正确地转化数据。 

SOAP基于XML,用于与Web服务的通信。集成SOAP以后,不管客户端运行的是不是微软的操作系统,都可以实现简单的可编程访问。 

2.简化应用 
COM所面临的一个头痛的问题就是应用。COM利用Windows注册表来定位机器上的组件。这个想法是不错的:每个注册的组件只有一个实例,所有的应用程序都使用相同的版本。COM具有向后兼容性,也就是说新版本兼容老版本,但是开发人员可能会破坏这种兼容性。 

.Net则采用了不同的方法:它根本就没有使用注册表。相反,微软的建议是每个应用程序使用自己局部的组件(在.Net称为“assembly”)。利用这种方法,用于应用程序Foo的Assembly X如果发生变化,Assembly X的Application Bar不会受到任何影响。这种方法听起来好象以前一台机器上同一个DLL的多个拷贝,的确是这样。不过你不会遇到应用程序查找Windows\System32目录的问题。 

由于.Net不使用注册表,很多应用都可以用简单的拷贝命令来完成,通常没有必要开发安装程序。此外,应用程序不会琐定assembly,所以升级DLL的时候不必关闭应用程序。 

3.Web服务支持 
在流行的Web服务方面,微软发挥着重要的作用,而.Net为开发Web服务带来了前所未有的便利。用Notepad就可以建立简单的Web服务,甚至不必利用编译器,只要对它们进行简单的调用即可,因为.Net会对它们进行编译,甚至提供一个测试页供用户检验其功能。.Net 拥有所有必需的渠道,可以生成用户所需的所有文件,比如WSDL文件。 

.Net也是一个聪明的Web服务使用者:只要设置了指向某个Web服务的索引,你就可以把它当作本地的assembly。你可以获得完整的Intel许可和功能实现帮助。 

Web服务对于发送数据是非常重要的,感谢ADO.Net,Web服务可以利用简单或者复杂的数据,并以XML格式把它们发送到任何客户端,最后设置一个链接,指回到一个描述数据模式的XSD。 

4.用于所有.Net语言的标准工具集 
最终,你会拥有一个适用于所有语言的集成工具集。你会拥有一个统一的IDE、调试工具以及其它类似的工具。因此,其它公司可以把他们的语言嵌入IDE环境,并获得.Net工具所有的支持。比如富士通开发了netCOBOL .Net,它已经直接集成到IDE中,因此可以用 COBOL编写Web服务和Windows应用并获得微软提供的调试和profiling(监管)工具。 

.Net是个开放的架构,所以其它厂商也可以提供自己的工具。比如Borland,该公司已经宣布其下一版Delphi将具有建立.Net应用的功能,同时它也保证,Delphi会拥有自己的IDE,不会嵌入Visual Studio .Net。 

5.对移动设备的支持 
Visual Studio .Net发布不久,微软就推出了移动Internet工具包(Microsoft Mobile Internet Toolkit ,MMIT),以便用.Net构建移动应用。该工具包提供了可视化功能,你可以直观地拖动和下拉面向移动设备的窗体和控件。该工具包有利于正确书写标记语言(比如WML、WAP等等)。 

.Net简化架构(.Net Compact Framework)不久就会面市,它是.Net架构的缩略版,设计用于Pocket PC设备。有了这个架构,开发人员就可以开发出丰富的Pocket PC计算机应用。你可以编写一个运行于小型设备上的应用,比如用于Pocket PC设备或者具有Web功能的手机。事实上,MMIT包含了很多仿真程序,它们使用了真正为这类设备编写的ROM代码,所以在你的应用程序投入使用之前,可以首先测试其用于此类设备时的性能。 

6.代码管理 
.Net管理用户的代码,从很多方面看,这一点都是很重要的,比如减少bug以及构建更多可扩展的应用。.Net可以处理以下操作:内存分配和回收,进程及线程的创建和终止,以及运行代码的访问许可。 

VB开发人员先前面临的问题——比如内存管理、线程和进程创建——现在都可以由.Net来处理。而C++程序员可以转向C#,.Net代替他们处理这些操作后,内存泄露和其它bug出现的可能性将大大减少。拥有了被管理的代码,你可以访问.Net所有跨语言的能力。 

7.平台独立 
虽然.Net是为微软的操作系统创建的,但是微软的确为ECMA标准委员会发布了一部分框架和C#。比如,Mono project实现了Linux的.Net,包括架构和C#编译器。这意味着很多应用(特别是基于Web的应用)一次编写完成后就可以运行于多种平台上。 

8.充足的学习资源 
.Net的学习曲线非常重要,可能.Net的方面的书要比其它所有编程技术的书都多。此外,微软和第三方团体开设了很多课程,可以让开发人员很快就上手。最后,很多网站为开发人员员学习.Net提供了技术和指导。 

9.现代化语言 
VB.Net和C#都是现代化的语言。它们完全是面向对象的,设计的时候消除了很多VB 和C++的矛盾。这两种语言使用了多层式架构 (n-tier),这是一种基于组件的方法。 

比如,C#取消了指针和其它一些结构,它们曾经给C++程序员(特别是新手)带来很多严重的问题。代码由.Net架构管理后,VB.Net 和C#都从中受益。这个架构还包括一些基础的对象,它们是开发多线程、支持XML等应用所必须的。 

10.跨语言标准基本类型 
VB开发人员曾经面临一个致命的问题:VB中的字符串与C++中的字符串不同,所以调用Windows API函数的时候会出现一些问题。.Net确定了所有类型的标准定义,所以VB中的字符串和C#中的字符串相同,也和netCOBOL .Net中的字符串相同。这意味着你再也不必担心语言A中的整型数据是32位而语言B中只有16位。你可以确信不同语言的数据类型都相同,可以更好地进行跨语言集成。 

优点多于缺点 
.Net具有很多明显的优点,可以提高开发人员的效率,减少bug,加快应用开发并简化使用。IT人员对.Net保持了应有的警惕,因为它毕竟还是个新事物,需要有一个比较艰难的学习曲线。但是对于大多数组织而言,其优点远远多于缺点。有了.Net,你可以在未来的开发项目中赢得更高的生产力。 


Java vs .NET:就业市场和薪资比较时间:2008-12-19 00:00 来源:CSDN 字体:[大 中 小] 国际OdinJobs.com最近做了一项调查,就San Francisco地区J2EE和.NET的就业市场以及薪资做了比较,让我们一起来看一下:
平均薪资:
如下图所示,从这两个技术的平均薪资来看,在Architect/Lead角色中.NET的平均薪资略高于Java/J2EE,而在Developer角色方面,Java/J2EE的平均薪资更高一些。

就业趋势:
就业趋势图表中显示在Architect/Lead角色方面,J2EE比.NET的需求率更高。同样也可以看到在Architect/Lead角色对.NET的需求率有了很大的上升,与2007年相比,二者的需求量都大了不少。



文章转载自网管之家:http://www.bitscn.com/news/java/200904/160959.html


在线office办公----google docs介绍

Google Docs是一个基于Web的工具,它有跟Word相近的编辑界面,有一套简单易用的文档权限管理,而且它还记录下所有用户对文档所做的修改。
  Google Docs的这些功能令它非常适用于网上共享与协作编辑文档。
  Google Docs甚至可以用于监控责任清晰,目标明确的项目进度。对于简单的项目,它使用起来直接了当,不像dotProject那般复杂。
  从Writely开始,我就一直在使用这个网上文档编辑工具。Writely被Google买去之后,整个工具跟Google的其它系统如 Gmail,Google Spreadsheets等结合在一起,并且更名为Google Docs & Spreadsheets。这个教程讲的只是其中的Docs那部分,因此我这里只叫它Google Docs了。
  另外,跟其它很多Google的产品一样,Google Docs在Firefox上有最好的显示效果,因此,这个教程引用的所有例子都是在Firefox上实现的。
  登陆Google Docs
  我一直很纳闷为什么国内的朋友很少知道Google Docs,因为Google Docs的链接如下图,就在Gmail主页的左上角上,一点就进去了。后来我才知道,如果Gmail的显示语言是设成中文的话,这个链接现在是没有的,相 信Google Docs的中文版出来来后应该会加上去吧。
  

  图1:从英文版的Gmail进到Google Docs
  不过那也问题不大,可以直接从这个网址进去:
  docs.google.com
  如果有Gmail帐号的话,可以用Gmail帐号登陆。如果你用习惯了原来的电邮地址,还不想体验Gmail的超级功能的话,你也可以点击登陆页面上的“Create a new Google Account”链接,用你的电邮地址来建立一个Google帐号。
  2、创建文档
  在Google创建一个文档非常简单。
  

  图2:在Google Docs上创建文档
  如上图,你可以
  A. 点击“New Doccument”直接创建文档,或是
  B. 点击“Upload”上传文档。
  A. 点击“New Doccument”直接创建文档的文件名为“Untitled”,改文件名如下图,
  

  图3:更改文件名
B. 点击“Upload”上传文档

  a. 用户可以从本地电脑把文档直接上传到Google Docs。目前Google Docs支持以下几种文档的上传
  Microsoft Word (.doc), Rich Text (.rtf), OpenDocument Text (.odt) 及StarOffice (.sxw)
  一次最大可以上传500k大的文件。具体操作跟一般网站上传文件没有大的区别,如下图,
  

  图4:从本地电脑上传文件
  b. 每个Google Docs上的文档都有一个特定的电邮地址,用户也可以向指定的地址电邮创建文档。如下图,
  

  图5:电邮上传文件
  可以用两种方式电邮创建文档
  没有附件的电邮。这时电邮的标题就变成文档的标题,电邮的内容变成文档内容。
  有附件的电邮。这时每个附件文件名转为文档标题,附件内容转成文档内容。
  3、编辑文档
  Google Docs的编辑界面跟Word相似,当然少了很多功能。用户在Google Docs上可以编辑简单的文字格式,表格,图片等。这些功能对一般用户来说已经够用了。
  我这里主要讲一下添加与修改文字链接,用户可以直接从其它网页或是文档上复制带链接的文字到Google Docs上,但有的时候,用户还是要自己添加和修改文字链接的。
  如下图,首先用户选择了要加链接的文字后,点击工具栏上的“Link”图标,
  

  图6:创建文字链接
  然后在弹出的窗口中填入相应的信息,再点“OK”就行了。见下图,
  

  图7:添加与修改文字链接
4、协同编辑

  Google Docs有很容易使用的文档权限管理,因此,Google Docs非常适合用于网上协同编辑文档。
  在Google Docs上有很多种方法进入到文档权限管理的页面。比如,
  A. 用户可以在Google Doc的第一页文件列表上点击相应的“Share Now”链接。如下图,
  

  图8:点击“Share Now”链接进入到文档权限管理的页面
  B. 或者,用户可以在编辑文档的时候点击右上方的“Collaborate”标签进入到文档权限管理的页面。见下图,
  

  图9:点击“Collaborate”标签进入到文档权限管理的页面
  Google Docs的文档只有两种权限:
  协作者。协作者拥有对此文档的可读写权限。协作者也可以修改此文档的权限。但协作者不能删除此文档。
  读者。读者拥有此文档的只读权限。
  用户进入到文档权限管理的页面,填上相应受邀用户的电邮地址。见下图:
  

  图10:邀请协作者或读者
  点击“Invite these people”的按钮后,Google Docs会提示相应的信息如填入邀请信内容等。用户全部点击“OK”就可以了。
  当同时有多于一个用户在网上编辑文档时,用户可以看到Google Docs提示同时在线编辑协作者的名单。见下图,
  

  图11:在线编辑的协作者
 5、修改历史记录

  Google Docs记录下各个用户所有的修改记录。用户在编辑文档的时候,可以点击左上方的“Revisions”标签进入修改历史记录的页面。见下图,
  

  图12:“Revisions”标签
  在修改历史记录的页面上,用户可以看到各个协作者所做的修改。Google Docs对修改的地方用不同颜色高亮显示。见下图,
  

  图13:高亮显示的修改记录
  并且,Google Docs也列出了对文档做过修改的各个协作者。如下图,
  

  图14:对文档做过修改的各个协作者名单
  在这个页面下,用户还可以选择把文档回复到某个指定的历史状态,比较各条修改历史记录及列出所有修改历史记录。
  6、保存文档
  用户在编辑文档时,点击页面右上方的“Save”或“Save & Close”按钮就可以保存文档了。如果用户想放弃所做的修改,可以点击“Discard changes”按钮。见下图,
  

  图15:保存文档或放弃修改按钮
  7、发布文档
  用户可以把写好文档发布到网上。发布与协作都能让其它人看到文档。协作可以设定权限,也就是限定什么人可以做什么事。而发布文档就没有这些设定了。文档一旦发布,任何知道已发布网址的人都可以看到文档,当然,是只能看,不能修改。
  在Google Docs上发布文档也很简单。用户在编辑文档的页面右上方点击”Publish“标签,就可以进入发布页面。见下图,
  

  图16:”Publish“标签
 在发布页面里,点击”Publish document“的按钮就可以直接发布文档;点击”Post to blog“按钮就可以把文档发布到自己的博客上。见下图。

  

  图17:直接发布或发布到自己的博客上
  Google Docs的发布到博客功能支持市面上很多博客系统,如WordPress,Typo,PLog等等。
  用户把文档发布后Google Docs会给出文档链接。见下图,
  

  图18:直接发布后的链接
  发布后,其它人就可以通过这个链接看到文档。
  如果发布后用户对文档做了修改,用户必须把文档重新发布,其它人才能看到文档的改动。
  另外,用户也可以随时取消发布。
  我在新加坡使用Google Docs的体验还不错。速度,及系统稳定性都可以。但据国内朋友反映,Google Docs在国内使用的速度有时很慢,特别是在几个人同时在线编辑的时候。
  因为Google Docs的编辑功能跟Word相比还不是很强,在网络的速度和稳定性都不理想的情况下,我觉得最好还是在本地机器用Word编辑文档,改好后再复制或是上传到Google Docs上,然后利用其方便的权限设定与其它人协同工作。

没有评论:

发表评论