【IT168 评论】.NET 和 Java 是当今社会最受欢迎的两种编程语言, 长期的发展和强大的功能使他们足以在编程界立足。 十余年的争论也没得到结果的一个话题就是——他们哪个更好一些?
今天, 我们不再去讨论JAVA和.NET的利弊因为在项目实施过程中,需要分析项目的具体要求,进而选择合适的平台和技术。相反,我们将探讨Java的优势和特点进而去理解为什么世界的各大公司 ,尤其是搞银行和保险领域的更偏好JAVA而不是.NET的原因。
# 1. 开放源代码
2006年,Oracle把Java开源了——这意味着可以不用交给Oracle授权费就能开发任何软件。相反,.NET是一个需要从微软获得许可的产品,必须支付许可证费用才能使用这个框架去开发软件。
公司使用Java得到的优势是,他们可以通过使用一个开源的软件开发框架来削减开发成本。对于预算吃紧的企业,Java是自然的选择。
另外,作为一个开源的平台,它允许开发者去做任何事情,他们可以通过使用各种可用的支持Java的开发工具来构建他们想要的东西和创建他们喜欢的解决方案。这是目前你不能用.NET做到的一些事情,因为(它不开源,所以)使用.NET你只能使用微软提供的工具内容,并在Visual Basic(应该是VS)里玩。
# 2. 平台无关性
你想开发一个可以在不同的操作系统中无缝运行的软件吗?想象这样一个软件,它允许您编写可以跨越设备和平台进行工作的代码。使用Java,所有这一切都会变成可能。Java就是出于这个单一目的——“一次编写,到处运行”——而创建的,而且忠于愿景,Java代码只需一次书写就可在不同的平台上执行和运转。使其成为可能的是,对于几乎所有主要平台,都有可用的具体JVM实现(,通过它可执行编译后的JAVA字节码文件)。
这是.NET没有做得很好的地方,也是Java和.NET编程语言的不同。(出于商业竞争和保护).NET被聚焦在单一操作系统上,可以让微软和它的开发者更方便地构建和开发能无缝运行在windows上的工具。使用.NET你也可以通过Mono建立能工作于其它一些操作系统的应用程序,但它没提供象Java开发那样的方便性。所以如果你创建的软件或应用程序需要运行在不同的平台上,Java对你来说是一个理想的开发平台,它将使开发过程更简单。
# 3. 物联网的首选平台
物联网指的是一个未来的憧憬,所有日常用品,如设备、房屋、城市、汽车和其他物品——被注入情报器并不断地连接到互联网。Java将是物联网的一个理想平台,因为设备将运行在不同的软件和硬件上,Java可以使所有这些不同的设备相互通信。
当然,还有其他一些语言也可以被使用,但Java已经是一个成熟的编程语言,在这方面已经有大量的开发和研究已经完成,使它成为开发人员的理想选择。
目前,这是.NET还不能提供的能力,因为(先天不足,)它的功能主要是只对windows平台实现完全兼容,.NET不太擅长连接各种在不同的软件和硬件上构建和运行的设备。
#4. 活跃的社区
最好的部分Java社区使你可以免费得到你所需的解决方案,相比而言,当你走近他们寻求解决方案时微软都要收费。甚至.NET的每一次更新都要你花钱。而另一方面,Java开发人员社区的活力不断改善着Java平台的功能和有效性。这意味着你的软件和应用程序可以继续得到最新的技术的优势,而无需支付额外的钱。
#5. 安全性
Java比大多数其他编程语言更安全。很多功能,比如对引用的自动null检查,字节码执行之前的验证,运行时安全检查和数十个类似的特性,使得它成为创建安全的应用程序方面的老大。这就是为什么银行和保险公司都使用Java创建他们的应用程序或软件的原因。
总结以上
Windows操作系统仍然是在世界各地最受欢迎的操作系统之一,因此,对于想开发应用(尤其是在Windows平台上)的组织和企业家来说,.NET可以是一个不错的选择。但是Java提供了一个安全、成本有效、平台独立的方式来创建高质量的软件。并且结合从Java开发者社区产生的固定性的改进,使它对于大多数企业来说都是一个极佳选择。
<!--wordend-->
相关推荐
尽管Java的职位数量略多于.Net,但考虑到Java的学习人数远高于.Net,.Net职位的竞争程度实际上更低。 - **学习人员比例**: 同一时期,.Net与Java的学习人员数量比例为1:3,这意味着更多的人倾向于学习Java,这也导致...
4.给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。 5.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13……求出这个数列的前20项之和。 6.打印出杨辉三角形(要求打印出6行如下图) 1 1 1 ...
2.25 求不多于5的正整数 2.26 回文判断 2.27 星期判断 2.28 插数入数组 2.29 取整数的任意位 2.30 按顺序输出数列 2.31 位置替换 2.32 字符串排序 2.33 贷款器 2.34 通讯录排序 2.35 闰年判断 2.36 二元方程求解 ...
徐葳在《40小时掌握java语言之09网络编程+正则表达式》这本内部教材中深入浅出地讲解了Java语言在网络编程和正则表达式两方面的核心知识点。通过细致地分析和实例演示,让读者能够快速掌握Java网络编程的三要素、...
5. 接口在面向对象编程中是一个包含抽象方法和常量定义的集合,一个类可以实现多个接口,接口成员方法没有具体实现。 6. `CardLayout`布局管理器是Java Swing中的,它将界面视作一系列卡片,每次仅显示其中一张。 ...
3. 输入数据分隔符:在程序中从键盘输入多于一个数据时,通常使用空格或回车作为分隔符。 4. Windows系统设置显示器属性:用户可以通过控制面板的“显示”命令或右键点击桌面并选择“显示”菜单来调整显示器属性。 ...
2. Visual FoxPro 的查询与视图:查询是预定义的SQL SELECT语句,而视图是从一个或多个表中选择数据的虚拟表,是查询的结果。 3. M=[28+2]的执行:在某些编程语言中,表达式不会立即计算,因此`?M`会显示原始表达式...
此外,Oracle XE 11g的授权协议中存在一些限制,例如,它只能用于开发和测试环境,且数据库大小不能超过11GB,连接用户数量不能超过多于并发的10个用户。 #### 安装步骤 安装过程简单直观,遵循以下步骤: 1. **...
鸽巢原理则阐述了如果更多的对象被放入较少的容器中,那么至少有一个容器会包含多于一个的对象,这是解决许多实际问题的出发点。 在计算机科学特别是网络技术中,组合数学的应用广泛且深远。例如,在算法设计中,...
尽管每年有大量的高校毕业生,但服务外包人才仍供不应求,主要原因是人才流失至外企或选择出国深造。这使得国内服务外包企业面临人才短缺的困境,限制了产业的发展。教育体制亟待改革,以提高人才培养的实践能力和...
18. 网状数据模型:在网状数据模型中,一个节点可以有多于一个的双亲节点,表示数据的多对多关系。 19. 事件处理机制:事件处理机制涉及事件、事件源和事件监听器,选项A、B、D正确。事件接口一般不被视为事件处理...
列表框只允许用户从现有选项中选择,而组合框允许用户选择现有选项或输入新的值。 20. **索引创建** 在数据库中创建索引时,默认情况下是按照升序排序。 21. **图像控件属性** 图像框的 `Stretch` 属性可以...
5. ASP.NET 内置对象:ASP.NET 提供了6个内置对象,包括Response、Request、Server、Application、Session和Cookie,分别用于处理客户端响应、接收客户端请求、服务器操作、全局应用程序变量、会话状态管理和客户端...
11. 网状数据模型:网状数据模型允许一个节点有多于一个的父节点,没有限制。 12. 剪贴板:剪贴板是内存的一部分,用于临时存储信息,不是硬盘的一部分。 13. PowerPoint幻灯片删除:在普通视图下,可以通过右键...
1. Access 2000 中,若要保存长度多于 255 个字符的文本和数字的组合数据,应该选择“备注”数据类型。这是因为“备注”类型允许存储更长的文本,而“文本”类型最多只能存储 255 个字符。 2. SQL 的 HAVING 子句...
19. 一个用户在不同servlet中获取的session对象应该是相同的,因为session是基于cookie在用户会话间共享信息的。 20. IPv6地址使用128位(16字节)表示,不是8字节。 21. 表达式"A*B=0 AND (A=0 OR B=0)"能正确...
`richtextbox`组件是.NET Framework中用于展示富文本内容的控件,支持格式化文本、颜色、字体等特性。 首先,我们要展示如何读取文本文件并将其内容显示在`richtextbox`组件中。这涉及到`System.IO`命名空间中的`...
2. 网状数据模型允许一个节点有多于一个的父节点,这使得数据之间的关系更为灵活。 3. 死锁是多线程编程中的问题,当两个或更多线程互相等待对方释放资源时会出现死锁。Java虚拟机没有内置机制检测和处理死锁,死锁...
2. **匹配多于一个的空格、制表符或换行符** 在文本中,连续的空格、制表符(tab)或换行符可能会影响文本的整洁度。正则表达式可以用来匹配这些连续的空白字符。例如,`\s+`匹配一个或多个连续的空白字符,其中`\s...
10. .NET编程语言不包括Java,C#,VC.NET和VB.NET是.NET框架下的语言。 11. 执行 `while(x) {y+=(x+=2);}` 循环后,x=10,y=30,因为每次循环x增加2,y累加x的值。 12. 每个char类型变量占用2字节内存。 13. 在C#中...