产品战略专家梁宁确认出席AICon北京站,分享AI时代下的商业逻辑与产品需求 了解详情
写点什么

《论 C#与 Java 之异同》一文已更新

  • 2007-05-04
  • 本文字数:997 字

    阅读完需:约 3 分钟

2001 年的时候, Dare Obasanjo 写过一篇文章,名为《论C#与Java 之异同(Comparison of Microsoft’s C# Programming Language to Sun Microsystems’ Java Programming Language)》,该文以其详尽与精确成为了同类文章中的佼佼者。现在,他又根据两种语言的最新版本—— Microsoft C# 2.0 Java Standard Edition 6 ——对原文进行了修改。

Dare Obasanjo 在文中对二者的特性与概念进行了客观的分析。他的文章与其它文章的区别就在于,他从统揽全局的角度上对两种语言及各自在对应平台上的实现进行了完整的论述。因此,该文几乎可以用来当作 C#和 Java 的参考手册。在文中,他还对关键实现做了说明,并分析了两种语言的优缺点。

文章结构如下所示:

  1. C#和 Java 的共同点是什么?
  2. 哪些特性是在两种语言中并存,但是有着细微差别的?
  3. 哪些概念是在两种语言中并存,但是相差甚远的?
  4. 哪些特性或者概念是只在 C#中存在,而在 Java 中不存在的?
  5. 哪些特性或者概念是只在 Java 中存在,而在 C#中中不存在的?
  6. 结论

其中关于泛型(Generics)元数据 Annotations(Metadata Annotations)的比较最为引人注意,因为这些特性虽然在实际应用中看起来很相似,但是在 Java 和 C#的各自实现中,却有着很明显的细小差异。该文中另外一处亮点则是 Dare Obasonjo 引用了他在 2001 年时所得出的结论,来阐述 Java 和 C#在发展方向上的变化:

[…] 自 2001 年以来,C#和 Java 中都引入了一些共同的特性,诸如泛型、foreach 循环、列举、自动装箱、可变长度参数列表和元数据 Annotations。但是在几年之后,我们却发现 C#和 Java 却走上了两条不同的路。C# 3.0 的当前计划的重点是语言集成查询(LINQ)项目,它是要把一些面向数据的特性,包括查询、数据集操作、数据转换和类型推断,直接引入到 C#中来。再加上 C#中已有的一些特性,例如匿名方法和 nullable types,C#在未来的几年内,与 Java 的区别将会越来越大。

Dare Obasanjo 的文章给那些想从 Java 换成 C#的开发人员提供了大量信息,反之亦然。对于那些想获得当前语言的更多特性与概念的开发人员来说,这篇文章也是很好的参考。

查看英文原文: A Comparison of C# to Java, Updated


译者简介:李剑中国Eclipse 社区插件开发版版主,在JavaEye 拥有 RCP 专栏, 北航软件工程硕士。现就职于 Ethos ,热衷于设计模式,敏捷软件开发的研究与实践。为 InfoQ 中文站贡献内容,请邮件至 china-editorial@infoq.com

2007-05-04 08:001436
用户头像

发布了 197 篇内容, 共 54.5 次阅读, 收获喜欢 20 次。

关注

评论

发布
暂无评论
发现更多内容

网易数帆云原生日志平台架构实践

网易数帆

云原生 网易

Apache ShenYu源码阅读系列-Agent模块源码分析

子夜2104

Linux之scp命令

入门小站

Linux

在线上传图片二维码识别解析

入门小站

工具

数字化时代,银行如何建设管理小程序平台促进线上金融业务发展?

FinClip

小程序 银行

免费机器资源、硬核导师、丰厚奖励|OpenI启智社区联合主办的飞桨黑客马拉松第二期开始啦~

OpenI启智社区

Hoo虎符研究院|区块链简报20220314期

区块链前沿News

Hoo 虎符交易所

Flutter 列表下拉刷新和上拉加载实现

岛上码农

flutter ios 安卓 移动端开发 3月月更

2022年软考时间是怎么安排的,有哪些工种可以选择?如何备考?

Ethereal

Tech Talk 活动预告 | 送走 CentOS Linux 8,开发者们该如何保持 Linux 的采用途径?

亚马逊云科技 (Amazon Web Services)

开发者

5G和Wi-Fi市场与技术的一些思考系列之一

李伟-晨泳

ICT的圣杯(一):人形电脑天使心

脑极体

如何在 Ubuntu 20.04 上安装和配置 NFS 服务器?

Ethereal

如何选择最优路径完成云原生上云?听这场阿里云特别分享【云原生技术与最佳实践】

阿里巴巴云原生

小程序插件提升APP使用体验

Speedoooo

敏捷开发 APP开发 app性能 容器平台 小程序插件

程序员有了这些工具,还用加班吗

刘祥

业务驱动的全景监控体系在阿里的应用 | 阿里巴巴DevOps实践指南

阿里云云效

云计算 阿里云 DevOps 云原生 云端开发

什么是FAQ?如何编写FAQ文档?

小炮

明道云2022年春季校园招聘启动啦!

明道云

数据分析小结:使用流计算 Oceanus(Flink) SQL 作业进行数据类型转换

腾讯云大数据

流计算 flink window

网络协议之:socket协议详解之Datagram Socket

程序那些事

socket 网络协议 udp 程序那些事 3月月更

技术解读:英特尔 x86 平台上,AI 能力是如何进行演进的?(附PPT)

OpenAnolis小助手

人工智能 X86 intel 自然语言模型

什么是数据中心虚拟化?

Ethereal

TDesign 更新周报(2022年3月第2周)

TDesign

Mac应用打开小程序的技术解决方案

Speedoooo

微信小程序 智能设备 Windows 应用打开小程序 Mac应用打开小程序 电脑运行微信小程序

基于微信小程序的运动场馆预约小程序开发笔记

CC同学

如何写好一篇技术文章

Hockor

写文章

【网络安全】brainpan-windows缓冲区溢出详解

网络安全学海

黑客 网络安全 信息安全 渗透测试 安全漏洞

如何使用帆软BI直接分析明道云数据

明道云

无缝融入 Kubernetes 生态 | 云原生网关支持 Ingress 资源

阿里巴巴云原生

从旁观者到贡献者:经历 OpenYurt 的“开源之夏”,我们想让更多人体验社区的魅力

阿里巴巴云原生

《论C#与Java之异同》一文已更新_Java_Hartmut Wilms_InfoQ精选文章