JAVA和.NET的区别 急需答案 不求复制百度文库内容 谢谢

 我来答
百度网友d61fd630c
2012-03-10
知道答主
回答量:39
采纳率:0%
帮助的人:17.3万
展开全部
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,你可以在未来的开发项目中赢得更高的生产力。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式