热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

.NET和Java之争

这几天连续有多篇文章诋毁.NET,这类文章我十几年前就看得多了,只不过十几年前是C和C之争,C和Java之争。我从来不理这类文章ÿ

这几天连续有多篇文章诋毁.NET,这类文章我十几年前就看得多了,只不过十几年前是C和C++之争,C++和Java之争。我从来不理这类文章,因为这类口水战并没有什么实际意义。

 

然而接连收到多位粉丝私聊说,主席,你应该写点什么反击了。我才醒悟过来,为了自己,我可以不用理会这些文章,但是为了社区,我必须写点东西。

 

首先,必须声明一点,我在《广州.NET微软技术俱乐部与其他技术群的区别》说得很清楚,“本群坚决禁止讨论“JAVA和.NET哪个好”、“NET有没有前途”等问题,请把讨论这些问题的时间用来研究如何提高自身.NET技术水平上。”

所以,这篇文章将会是唯一一次也是最后一次讨论.NET和Java之争。

 

然后,这篇文章的阅读对象是有上进心、好学但是又在迷茫中的.NET粉丝。

这些粉丝的心态我懂,我读书的时候,身边很多人跟我讲,读书没有用,读书并不能赚大钱,很多赚大钱的人都是小学毕业。

那时候我的心态就和这些粉丝心态是一样的。

幸亏后来家族里的长辈点醒我,他只说了四点:

  1. 福布斯500富豪榜里面,绝大部分都是大学毕业,所以读书无用论这种论点根本经不起推敲。纯粹是这些人为自己辩护找的借口。

  2. 即使是小学未毕业的爱迪生,和因为贫穷只读了三年书的林肯,大家尊敬他们并不是因为他们读书少,而是因为他们的成就和贡献,并且他们都很尊敬文化人,所以读书无用论是本末倒置。

  3. 建立了党和国家财政体系(包括长征和解放军后勤、建立商务部和广交会)的叶季壮将军,就是个文化人,新中国暂时还没有哪个小学文化的富豪创造的财富比他创造的财富多,所以读书无用论和读书不能致富就是扯淡。

  4. 读书无用论是使用小学课文《田忌赛马》里的手法,用小学毕业里的上等马去和大学毕业里的下等马去比,那当然是小学毕业里的上等马胜出啦,正确的比法应该是用小学毕业里的上等马去和大学毕业里的上等马去比。我当时已经是高中文化了,怎么还会中这种这么低级的招数呢?

因此我走出了迷茫,最终考上了大学。十年之后,当我在硅谷上空开飞机的时候,我才发现当年相信读书无用论的同学们不但没开过飞机,甚至连汽车都没有开过(当然现在又过了十年,中国经济发展起来了,绝大部分同学都开上汽车了)。

 

所以这些迷茫中的.NET粉丝的心态我很懂,不就是当年读书无用论的翻版嘛。

所以诋毁.NET的文章我不关心,我只关心我们这些会被这些文章坑害的粉丝们。我也说几点吧:

  1. 我2003年就开始用Java里的J2ME做出一个西门子M55手机程序。目前我同时使用Java、.NET(C#)、Python、Typescript四种语言和技术。所以我并没有说Java不好,我只是认为.NET也不差。

  2. 这些诋毁.NET文章的作者,并没有做过什么实际上的贡献(比如参与开源项目或者写技术文章),和鼓吹读书无用论的是同一类人,纯粹是这些人为自己辩护找的借口。

  3. 这些诋毁.NET文章的手法,是使用小学课文《田忌赛马》里的手法,用Java里的上等马去和.NET里的下等马去比,那当然是Java胜出啦,嗯,这些人好像并不知道.NET Core这匹.NET体系里的上等马吧。绝大部分粉丝的文化程度都比小学文化高多了,怎么还会中这种这么低级的招数呢?

  4. 目前流行的网游,比如王者荣耀,是使用.NET平台,这说明了.NET并不差。

  5. 最近我在整理叶季壮将军的史料过程中,发现在OCR这一块,Java就比不上.NET。在github搜OCR,按照Most Stars排序,你会发现第一页有两个C#的OCR库,而没有Java的OCR库。

  6. 当然在某些领域,Java是比.NET强,比如工作流这一块,我自己目前就是用Java的Activiti, 但是Java是可以和.NET共存的啊,特别是在微服务的年代,早就已经是语言无关了。多种语言和框架都可以共存。

  7. 这些诋毁.NET文章没有举出任何一个.NET不好的实例,而我在前面就举了三个实例,真的是造谣张张嘴,辟谣跑断腿啊。

 

最后单独说一下大家最关心的问题,就是Java程序员工资比.NET程序员高。

这种手法比小学课文《田忌赛马》里的手法高明点,然而很容易识破啊。

这种手法的另一个例子是:我和中国前五个富人的财富一平均,我也是亿万富翁。

See! 这种手法很清晰了吧,“Java程序员工资比.NET程序员高”没有任何意义,重点是“你做Java程序员工资会不会比做.NET程序员工资高”,这才有讨论的意义。

我的经验告诉我:

  1. .NET转Java是需要付出成本的,如果你不会.NET里的IOC、设计模式、DDD、TDD、BDD,那么你转Java,你一样还是需要付出海量的时间去学会这些东西。

  2. 只学会一种语言而不学它的框架和库是什么都干不了的。光学Java是没有生产力的,你至少要学习SSM三大框架,做点有规模的项目还要学Spring Security, Activiti, Drools等等。这都是要花不少时间的,同样的时间用来学好.NET Core提高生产力岂非更好?

  3. 你付出成本转成Java之后,收益不一定比原来.NET的高。因为除了公司内部转Java保证了你的工资待遇外,换一个公司求职你就变成了一个0年工作经验的Java新手,这在一些非算法取胜的公司里是很吃亏的,最终工资未必比你原来.NET的薪水高,毕竟你在.NET是按有经验的工资去付的。目前能够成功从.NET转JAVA的成功案例大部分都是公司内部转,保证了你的工资待遇。

  4. .NET Core正在崛起,微软重回市值第一,你花了时间转Java之后会不会错过这个时机呢?

  5. 不管你是用Java还是用.NET,只要能把事情做好了,就能拿高工资,如果老板不肯给你高工资,那你就换一家公司。

  6. 要通过把事情做好来拿到高工资,你很可能需要同时使用.NET和Java, 比如现在的我,工作流用Java,前端用TypeScript,数据采集和分析用Python,其他用C#/.NET Core.

  7. 如果抱着.NET垃圾的想法,那么当项目需要使用OCR、网游或者其他.NET擅长领域的时候,你因为不喜欢.NET而不去用.NET,从而没有把事情做好,那你可能会被降工资。

 这个世界上,大概率是做实事的人会等到尊重,比如王安电脑的王安,当年排名全球第5富(目前还没有其他亚洲人能做到这点),美国人并没有因为他是华人而鄙视和打压他,反而很尊重他,被选为全美最杰出的12位移民之一,接受了里根总统颁发的“总统自由奖章”。王安卖电脑就没有打什么民族牌、爱国牌。所以还是少点空谈,多干点实事吧。

 

写这篇文章总计花费58分钟,这个时间比我做".NET俱乐部联盟官网"里一个PBI和写“ABP大型项目实战(1) - 目录”这篇技术文章耗时还多。所以这篇文章将会是唯一一次也是最后一次讨论.NET和Java之争,有多余的空闲时间还是用来做点实事吧。

 

我依旧坚持群规:“本群坚决禁止讨论“JAVA和.NET哪个好”、“NET有没有前途”等问题,请把讨论这些问题的时间用来研究如何提高自身.NET技术水平上。谁先挑起这个话题被警告三次后就请出群,目前已经有多位人士被请出群了,请合作,谢谢。”

原文地址:https://www.cnblogs.com/adalovelacer/p/dotnet-vs-java.html

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com
640?wx_fmt=jpeg




推荐阅读
  • Ceph API微服务实现RBD块设备的高效创建与安全删除
    本文旨在实现Ceph块存储中RBD块设备的高效创建与安全删除功能。开发环境为CentOS 7,使用 IntelliJ IDEA 进行开发。首先介绍了 librbd 的基本概念及其在 Ceph 中的作用,随后详细描述了项目 Gradle 配置的优化过程,确保了开发环境的稳定性和兼容性。通过这一系列步骤,我们成功实现了 RBD 块设备的快速创建与安全删除,提升了系统的整体性能和可靠性。 ... [详细]
  • 双指针法在链表问题中应用广泛,能够高效解决多种经典问题,如合并两个有序链表、合并多个有序链表、查找倒数第k个节点等。本文将详细介绍这些应用场景及其解决方案。 ... [详细]
  • 本文介绍了几种常用的图像相似度对比方法,包括直方图方法、图像模板匹配、PSNR峰值信噪比、SSIM结构相似性和感知哈希算法。每种方法都有其优缺点,适用于不同的应用场景。 ... [详细]
  • 结城浩(1963年7月出生),日本资深程序员和技术作家,居住在东京武藏野市。他开发了著名的YukiWiki软件,并在杂志上发表了大量程序入门文章和技术翻译作品。结城浩著有30多本关于编程和数学的书籍,其中许多被翻译成英文和韩文。 ... [详细]
  • 本文最初发表在Thorben Janssen的Java EE博客上,每周都会分享最新的Java新闻和动态。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 在多线程并发环境中,普通变量的操作往往是线程不安全的。本文通过一个简单的例子,展示了如何使用 AtomicInteger 类及其核心的 CAS 无锁算法来保证线程安全。 ... [详细]
  • 原文网址:https:www.cnblogs.comysoceanp7476379.html目录1、AOP什么?2、需求3、解决办法1:使用静态代理4 ... [详细]
  • 技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统
    技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统 ... [详细]
  • 阿里巴巴终面技术挑战:如何利用 UDP 实现 TCP 功能?
    在阿里巴巴的技术面试中,技术总监曾提出一道关于如何利用 UDP 实现 TCP 功能的问题。当时回答得不够理想,因此事后进行了详细总结。通过与总监的进一步交流,了解到这是一道常见的阿里面试题。面试官的主要目的是考察应聘者对 UDP 和 TCP 在原理上的差异的理解,以及如何通过 UDP 实现类似 TCP 的可靠传输机制。 ... [详细]
  • 在List和Set集合中存储Object类型的数据元素 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 网络爬虫的规范与限制
    本文探讨了网络爬虫引发的问题及其解决方案,重点介绍了Robots协议的作用和使用方法,旨在为网络爬虫的合理使用提供指导。 ... [详细]
  • 字符串学习时间:1.5W(“W”周,下同)知识点checkliststrlen()函数的返回值是什么类型的?字 ... [详细]
  • 帝国CMS中的信息归档功能详解及其重要性
    本文详细解析了帝国CMS中的信息归档功能,并探讨了其在内容管理中的重要性。通过归档功能,用户可以有效地管理和组织大量内容,提高网站的运行效率和用户体验。此外,文章还介绍了如何利用该功能进行数据备份和恢复,确保网站数据的安全性和完整性。 ... [详细]
author-avatar
Mango-家族
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有