JAVA与.net的优点,及缺点,他们的比较 C#和JAVA相比,缺点是什么,优点是什么

作者&投稿:端夏 (若有异议请与网页底部的电邮联系)
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,你可以在未来的开发项目中赢得更高的生产力。

说.net不如java强大的 都是受到老师和网络的影响。
.net怎么会没有java强大呢 要知道 整个framework类库几乎都是用c#构建的 .net相对java来说入门要简单很多 因为有强大的类库支持 但是不代表.net比java弱,java因为入门时间长,学到的基础知识肯定会比.net的好一些 这样对未来的发展非常有帮助,学.net学习刻苦点和java也没有什么区别。
他们最大的差别就是 初学者在很短的时间内就能拿出像样的作品,但是java不能。当java初学者能拿出像样作品的时候,他的思想,以及对程序的理解能力可能会高于.net 这就是急火爆炒与文火慢炖的区别

Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言。Java
技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
与传统程序不同,Sun 公司在推出 Java 之际就将其作为一种开放的技术。全球数以万计的Java 开发公司被要求所设计的
Java软件必须相互兼容。“Java
语言靠群体的力量而非公司的力量”是Sun公司的口号之一,并获得了广大软件开发商的认同。这与微软公司所倡导的注重精英和封闭式的模式完全不同。
Sun 公司对 Java 编程语言的解释是:Java
编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和静态的语言。
Java 平台是基于 Java 语言的平台。这样的平台非常流行。因此微软公司推出了与之竞争的.NET平台以及模仿Java的C#语言。
Java是功能完善的通用程序设计语言,可以用来开发可靠的、要求严格的应用程序。
java是纯面向对象开发,功能强大,分支众多,没有java不能做的软件。C/S也好B/S也好。从功能上讲,没有语言可以和java相比。
缺点就是java的学习门槛较高,难于掌握精通。要耗费大量的时间研究。

Java与.net的优势缺点?~

java和.net我都做过开发,说下个人感觉(仅为个人观点)。
从框架上说,.net里分.net Webform和.net MVC。我认为这是两个截然不同的东西。

.net MVC和java ssh我感觉差不多。好坏仁者见仁智者见智,我觉得.net MVC更方便一些,并且MVC的框架本身也开源了,也有很多不错的插件。
.net Webform就不一样了(当然现在.net中 Webform开发还是占据大多数),开发速度快,简单易学,好上手,跟开发客户端程序似的,中小型项目中用的挺多。
不过我个人不建议使用.net Webform再开发了,拖控件之类的开发模式对web发展,还是自身发展有害无益。MVC用熟了也不慢(当然上手比较难),实在追求开发速度用ROR更快。

从语言上说,C#和java我感觉也没什么区别。C#新版本有很多lambda,动态类型之类的新语言特性,还有大量的语法糖。
不过java可以跨平台,这点C#无能为力。

从社区上说,java毕竟一直开源,社区感觉还是要比.net更好一些。(ps:不要忽略社区的力量,不过Java自从被Oracle收购后。。。。。不爽啊。)

从就业上说,也差不多,分地区。Java貌似略好。

从面子上说,貌似java开发人员更有优越感~,国内有看不起.net的现象。

以前有种说法,Java适合开发大项目,.net适合中小型项目。这个我也基本赞同。

最终观点,无论是语言还是框架只是一种工具,能完成项目的前提下,哪个成本最低用哪个。程序的设计思想都是一样的。

如果热爱技术的话,Web开发中ror(国外都快没落了,中国都还没火起来)、node.js(这个我感觉比较有前途)等新兴技术最好也能了解了解,虽然就业上可能费劲一些,多数都是外企要这类人才。不过这也是web技术发展的趋势。

纯手打~望采纳!

缺点是更新迭代速度快,4.0没学完,C#8.0都出来了,优点是跨平台跨平台容易,通过.net core可以轻松实现跨平台,高并发,多线程能力强

大家看看我的这个配置能玩AVA战地之王吗?
答:CPU E2200能带起来AVA、因为我的是E2160比你的还低。但是你的显卡不行、G33/G31是主板集成显卡。玩AVA绝对不行的。就算你能进去,你也卡卡卡卡卡卡卡……卡的不行、换张显卡吧。

有哪些好的Netflix原创纪录片?
答:电影制片人阿瓦·杜韦尔奈(Ava DuVernay)探索了美国种族不平等的历史,着眼于该国的监狱中非裔美国人比例过高的事实。狂野国家(2018)当一个有争议的大师在俄勒冈沙漠中建造一个乌托邦式的城市时,它与当地的牧场主发生了大规模的冲突。这部纪录片记载了这场冲突,从而导致了美国的首次生物恐怖袭击和大...

我的配置能玩AVA战地之王吗
答:LZ你好,已经满足战地之王的配置要求,可以玩。HD4000性能超过GT610强于8600GT。

java该怎么自学?
答:java.net.*; javax.naming.*; 这些包里面真正用的比较多的类其实很少,只有几个,所以不需要花很多时间。 第六步,Java Web 编程 Web编程的核心是HTTP协议,HTTP协议和Java无关,如果不熟悉HTTP协议的话,虽然也可以学好Servlet/JSP编程,但是达不到举一反三,一通百通的境界。所以HTTP协议的学习是必备的。如果熟悉了...

请高人指点安装“AVA战地之王”游戏!!!谢谢
答:小雨我帮你查到了。 出现这样的原因是下面的分析,是我转载的!呵呵 一.病毒名称:未知(暂以NSIS病毒命名,因为感染最显著症状是双击EXE文件会弹出为NSIS Error对话框)二.病毒症状与表现:1.部分或全部安装程序无法安装,点击时弹出NSIS Error对话框;--- NSIS Error --- The installer you are trying ...

甘特图详细资料大全
答:基本介绍 中文名 :甘特图 外文名 :Gantt chart 别名 :横道图、条状图 发明者 :亨利·L·甘特 发明时间 :第一次世界大战时期(1917年) 套用范围 :项目管理 发明人,含义,特点,优缺点,优点,局限,图表,变形负荷,绘制步骤,套用范围,制作工具, 发明人 亨利·劳伦斯·甘特...

在百度,像这样直接输入网址:www.深圳网站建设.net,也直接找不到这个网站...
答:12、大量运用Flash、DHTML、cookies、&#106avascript、Java制作或密码进入的网页,搜索引擎很难从这种页面中提取内容。13、错误地阻挡了robots索引网站:有两种方法可能阻挡robots:主机服务器的根目录下有简单文本文件;网页中含某种META标签。14、网站的链接广泛度太低:链接广泛度太低,搜索引擎难以找到你,...

asp.net 如何让一个按钮点击后3秒钟内不可操作
答:是3秒还是3分?如果你的目的是防止重复提交:即占击一次按钮后,必须等到后面代码全部执行完成后才可以点击第二次,在执行过程中按钮是不可用的。方法很简单:在page_load里面加入以下代码即可 this.Button1.Attributes["onclick"] = this.GetPostBackEventReference(this.Button1) + ";this.disabled=...

我这拉基配置能玩AVA吗? 把特效开最低。。。
答:能玩 不过FPS值会非常非常低 跟看幻灯片差不多 不建议尝试

那个,怎么改ava文件刷生存,我改了没用
答:不要随便改动游戏里的文件。开始进入时会对游戏进行加载和配对重要的游戏文件,文件不一致是玩不了的。除非有什么LJ外G。做任务,用功勋兑换,不用多久就会有很多GP。勋章只能慢慢玩,实际也没什么用。我少校5了,没见过有什么人要刷这些东西的 ...