`
mmdev
  • 浏览: 13433216 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

Java与C#个人之比较

 
阅读更多

网上这方面的比较文章已经有不少了,不过大都是要么从很高的角度说的,要么就是从底层说的,本人就以自己这几年的编程经历中的感受,来谈谈自己的体会。

相似性:

JavaC#都是一门面向对象的语言,Java更多地借鉴了C++的优点,而摒弃了它的一些不太容易被人掌握的知识点(有些不能说是缺点),并且增加了一些自己的特点,而C#则是更多地借鉴了Java的优点,而增加了一些自己的特点。

个人猜测,在Java语言出现之前,C++被广泛使用,而且被认为容易使用,Java如此类似于C++,致使人们更容易接受;而现在Java是最广泛使用的,C#如此接近Java,则更容易吸引Java开发人员(仅仅是猜测)。也就是说Java站在C++的肩膀上,而C#站在了Java的肩膀上。

跨平台特性

跨平台特性的最大优点就是只要有相应的运行环境,同一个编译好的程序就能在上面运行,而不需要重新编译程序,它的缺点就是不能针对特定平台,所以不能充分利用平台特性,因而在性能上会有所降低,幸运的是现在的硬件比以前大大提高,这部分的降低在绝大部分情况下可以不用考虑。而且JavaC#都有自动垃圾回收机制,运行时环境可以自动清理不再使用的内存,减少了手动释放内存的风险。

Java的跨平台特性建立在可以跨越多个不同种类的操作系统平台,比如WindowsLinuxUnix等,但是需要注意的是不是说Java能在所有的系统上都能跨平台,必须实现在该操作系统上的Java运行时环境JRE才行,也就是说假如今天有人开发了一个前所未有的系统,这时候Java程序是不能在上面运行的——因为还没有针对这个操作系统的Java虚拟机(JVM),好在在当今绝大部分操作系统上都有针对该系统的JVM,所以它能“一次编译,到处运行”。

C#的跨平台则是建立跨Windows平台的基础上的(有一个针对非Windows.net运行环境,不过好像还不是太好),不像以前Windows95下的程序到WindowsXP下就不能运行,或者WindowsXP下的程序到Windows95下也不能运行(这种情况居多),现在呢,只要安装一个.net framework(也就是.net程序的运行时环境),在Windows2003下编写的.net程序不用重新编译就能在Windows98下运行,只要这台安装Windows98的机子安装了.net程序的运行时环境。

这一个回合Java胜出。

语法特性

Java抛弃了指针,使用了包(package)的概念,导入包使用import语句,在Java中有几种非面向对象的数据类型,那就是bytecharshortintlongfloatdouble这几种数据类型,在方法中传递时仅仅是传递它们的值,为了方便一些集合类的操作(它们存储的是对象类型),又增加了它们的包装类ByteCharShortIntegerLongFloatDouble

Java中存在属性的概念,这些都是通过setXXX()getXXX()来设置。

C#没有完全抛弃指针(在unsafe状态下还可以操作指针),对于类的管理采用了名称空间(namespace)的概念,并且还使用了outref等关键字,便于从一个方法返回多个结果,在C#中不仅存在属性,还有索引器等比较方便的特性。

生成文档doc文档

在利用程序中的特殊注释生成api文档方面,两种语言都有不错的表现,不过C#更胜一筹,它能利用注释在输入类成员时提示,便于程序员不用去看程序源码而知道程序的大概用途,而Java这方面没有。

IDE(集成开发环境)方面

JavaIDE是非常多,从庞大的Jbuilder到小巧的Jcreator,还有可以扩充的Eclipse,可以说JavaIDE的数量是非常多的。

C#IDE不多,除了微软自己的VS.NET之外,好像还有BorlandC#Builder,除此之外,广为认知好像不多。

性能方面

Java采用了字节码(bytecode),而C#则采用了MSIL,它们的性能都是介于解释型语言和生成本地机器代码之间的,在本人的测试中,C#的性能略高于Java,可能Java的字节码要适用多个系统多个平台的缘故吧。

企业开发方面

由于Java出现的时间长的缘故,并且还能跨平台,采用EJB等解决方案,所以目前绝大部分网站都是基于J2EE开发的(大部分都是J2EE+MySQL+Apache+Linux,都是免费的)。

C#做的大型网站,它也有针对EJBNet Remoting技术,由于它限制了必须(IIS+Windows),所以大型的网站不是太多,不过随着时间的推移,可能会有更多的网站采用asp.net技术。毕竟微软的东西一向傻瓜化,门槛低,能够吸引一些初级编程人员到这个行列中来。而且微软的asp.net采用了代码和页面分离技术,的确能方便编程人员。

总结:

记得有一句话,大意是这样的,Linux就像专业相机,拍摄出来的照片取决于你的摄影技术;而Windows就像傻瓜相机,只要会按快门就能拍照。我觉得Java就像Linux,添加一个按钮,一个标签都需要你指定样式,放置到哪里也需要你指定;而C#则继续秉承了Windows的特点,傻瓜化,便于操作,便于上手。

补充一点:好像搞Java的同等情况下比C#的高,可能是物以稀为贵吧:)。
分享到:
评论

相关推荐

    java调用C#封装的dll方法

    为了实现Java与C#之间的交互,一种常用的方式是通过调用C#封装的DLL文件来完成特定功能。这种方法涉及到.NET Framework与Java平台之间的互操作性问题。其中一种方案是使用Java Native Access (JNA) 来调用通过C++...

    Java to C# Converter 破解版

    Java转C#工具 破解版, 个人觉得转换效果还可以, 但是一些特殊的语法没有尝试哈。觉得某些人搞的资源那么贵、看不下去而已。

    Java与c#语法及对比

    综上所述,Java与C#在语法上有许多相似之处,但也存在一些差异。开发者应根据具体项目的需求和个人偏好来选择使用哪种语言。通过本文的对比,希望能帮助读者更好地理解和掌握这两种语言的特点。

    java C# 面向对象方面的比较.doc

    在编程世界里,Java和C#都是广泛使用的面向对象的语言,它们在很多方面有着相似之处,但也存在一些显著的差异。以下是对这两种语言在面向对象特性上的对比: 1. 访问控制: - C#提供了public、internal、protected...

    C#与java的区别

    【C#与Java的区别】 ...总的来说,C#和Java各有其特色,选择哪一种取决于项目需求、团队技能集以及个人偏好。理解这些差异有助于开发者做出明智的决策,无论是在C#还是Java领域都能更高效地工作。

    java and c# java and c#

    C#与Java虽然在语法和概念上有许多相似之处,但C#通过一系列创新特性和对Windows平台的深度整合,展现出了自己独特的价值。无论是属性的直接访问、对COM的无缝支持,还是更丰富的数据类型和改进的语法特性,C#都在...

    Java与C#比较研究.pdf

    Java 和 C#是两种在现代软件...Java的平台无关性和强大的开源生态系统使其在某些领域占优,而C#的高效能和与Windows生态的深度集成则在其他场景下更具吸引力。开发者可以根据项目需求和个人喜好,灵活选择合适的语言。

    java和c#网络编程

    对于Web服务,Java有成熟的JAX-RS规范用于构建RESTful API,而C#则有ASP.NET Core,它不仅支持Web API,还能与Blazor框架结合,实现前后端同构。 在安全方面,两者的网络编程都支持SSL/TLS加密,确保数据传输的安全...

    我们该使用何种编程语言?是C、C++、VB、Java还是C#?许多初学者对C、C++、VB、Java,c#,还不够了

    是C、C++、VB、Java还是C#?许多初学者对C、C++、VB、Java,c#,还不够了 解,也见到网上许多关于这些语言的争执,也有人问我它们之间有什么区别,那个最好,那个最……等等 ,我今天在网上查了一些,粘到了word中...

    C#和 Java比较

    总的来说,C#和Java都是强大的编程工具,它们在很多方面有相似之处,但在具体实现和设计选择上有各自的特色。C#可能更适合那些熟悉Windows开发和.NET框架的开发者,而Java则因为其跨平台的特性而在各种系统中广泛...

    海康威视sdk_java/c#/mfc_demo实例

    海康威视SDK是针对其安防产品(如摄像头、NVR等)进行二次开发的工具包,它提供了Java、C#、MFC等多种编程语言的API接口,方便开发者集成到自己的应用程序中,实现对海康威视设备的远程控制、视频流处理、录像回放等...

    C#和Java的区别(适合初学者)

    在编程领域,C#和Java都是广泛使用的高级编程语言,它们各自有着独特的特性和用途。对于初学者来说,理解这两种语言之间的区别是...无论是C#还是Java,都有其独特的优势,选择哪种语言取决于具体项目需求和个人偏好。

    我们该使用何种编程语言?是C、C++、VB、Java还是C#?

    同时,C#与Unity3D游戏引擎的结合使其在游戏开发中占据了重要地位。 在决定学习哪种语言时,你需要考虑个人兴趣、职业目标以及项目需求。如果你追求底层控制和高性能,C或C++可能是不错的选择;如果你需要快速开发...

    Java,C#,C++在继承,覆盖和多态,抽象类等几个方面的比较归纳

    Java、C#和C++是三种广泛使用的编程语言,它们在面向对象编程中都有相似但又各有特色的特性。本文将深入探讨它们在继承、覆盖、多态和抽象类这几个关键概念上的异同。 首先,让我们从继承说起。继承是面向对象编程...

    java与C#区别详细介绍1.docx

    C#与Java是两种广泛使用的编程语言,它们在许多方面都有所不同,包括语法、类型系统、内存管理、面向对象特性以及平台支持。以下是对这两种语言主要区别的详细说明: 1. 类型系统: - Java只有带符号的整数类型,...

    C#与JAVA比较.pdf

    在对比C#与Java这两种编程语言时,我们可以发现它们有许多相似之处,但也存在明显的差异。首先,两者都源自C++,并且在语法上有很多共同点。例如,它们都是编译成中间代码,可以在受管理的环境中运行,如.NET ...

    C#程序转Java程序代码转换器.zip

    C#与Java之间的主要差异包括: 1. 语法结构:C#中的`using`在Java中对应的是`import`,C#的命名空间(namespace)在Java中则是包(package)。 2. 类型系统:C#支持值类型和引用类型,而Java只有引用类型,但有原始...

    c#&java比较.txt

    ### C#与Java的对比分析 #### 一、概述 C#与Java是两种非常流行的编程语言,在软件开发领域有着广泛的应用。这两种语言都源于C语言家族,它们的设计初衷都是为了提供一种更现代化、更安全且面向对象的编程语言。...

    java与C#的区别 (2).docx

    Java 和 C# 都是流行的面向对象编程语言,它们在设计和实现上有着诸多相似之处,但也有明显的差异。以下是一些主要的区别点: 1. **对象索引**: 在 C# 中,你可以通过索引来访问类的实例,就像访问数组一样。这在...

Global site tag (gtag.js) - Google Analytics