究竟是.Net好还是Java好,欢迎大家发言,畅所欲言?

现在流行的语言,java是最烂的。

对于从C#转过来的我来说尤其如此。在一个java项目告一段落之际,现在让我吐槽一下:

1. java的泛型让人费解。类型擦除让泛型的优势荡然无存。本来泛型的一大优势是避免装拆箱的性能开销。在java里,仅仅就剩下语法糖的功能。况且这颗糖非常的不好吃。

2. java里的lambda表达式实在是难看得要死。本来业界都用=>来代表箭头函数,java非要用->显得和别人不同。这也就算了,凡用到lambda的地方还非要steam()转一下,对于数组,还要Array.stream(), 要多别扭就有多别扭,要多难看就有多难看。更坑爹的是,还不支持延迟加载,用过一次再接着用就报错!

3. java的方法的异常处理声明让人恼火。我们知道,现在AOP编程,异常都是在框架上层集中处理的。底层只管抛就是了。一般情况下,不主张在底层用catch“吃掉”异常. 这就导致,如果我不想吃掉异常,就得抛出,如果要抛出,就得在方法声明后加throws xxxException。而如果一个方法调了其他的方法,也要跟着throws 这个Exception, 如果调了n多有异常的方法就得throws n多个Exception. 当然有人会说,你不会只throws 单一的基类Exception吗?这样倒是可以简单点。 那这个throws机制还有什么用呢?

4. java没有随用随丢的匿名对象,类似C#的new { a, b}, 或者像js那样更简单的{a, b}。这在传给api传参时,或者webapi返回的结果,是由几个值组成,但又不值得定义一个类时,显得特别啰嗦,导致我要么用一个hashmap来装,要么再专门定义一个只用一次的类。

5. java没有var的隐式类型声明。接受一个很长的类型名的返回结果时,特别不简洁。这个据说在java12以后支持。但是现在谁敢用java8以上的版本?

6. java没有扩展方法的机制。导致现在java的Util类满天飞。你如果想想像别的语言那样,一气点下去,简直是作梦。你不得不在写好一个对象以后,发现它没有你要的方法,然后不停把光标调到对象前面,加util,再加括号,再移到对象后面,再加反括号。太不顺畅了!

7. 现在流行的spring-boot实在是太慢了。我写一个单元测试,运行一次,初始化都要一分钟,搞得我现在烟抽得越来越多!

当我,我才写两个月的java代码,难免对java有所偏见。欢迎各位java大神拍砖!

——分割一下——

我看有很多的java大神在喷我,评论比点赞还多,我说一下 我没有很极端,有些问题确实不及别的语言优秀,我既然学它 肯定还是一门好的语言。

C++之父Bjarne Stroustrup说过:世界上只有两种编程语言,一种是整天被人骂的,还有一种是没人用的。


我选dotNet,因为有宇宙第一ide——vs2019 加持,不接受反驳。

究竟是.Net好还是Java好,欢迎大家发言,畅所欲言?


这个问题需要从平台和语言两个角度来来进行对比:

1. DOTNET 平台对比 JAVA 平台

DotNet 和 Java (或者说 JVM)平台从双方都各有千秋,但 DotNet 因为前期绑定在 Windows 系统上,错过了互联网的快车道,所以现在的情况是 Java 平台使用的人数和普及度、生态环境都远好于 DotNet 平台。

2. C# 语言对比 Java 语言

从语言的角度讲,肯定是 C# 好于 Java,因为 C# 发明的初期就是一个对 Java 进行改进完善,服务于相同目的的语言。C# 版本到目前 8.0 为止,一直大胆推出新功能新语法,有最强大 IDE —— Visual Studio 的加持,开发体验是远远好于 Java 的。

不过最近几年,Java 的 JVM 平台也出现了许多 Java 以外的优秀语言,如 Groovy、 Kotlin、Scala 等,所以 C# 的优势并不大。

综上所述,如果二者挑一个学习的话,我建议学习 Java。但是我个人比较喜欢功能更丰富的 DotNet。


作为一名IT行业的从业者,我来回答一下这个问题。

首先,在当前的IT行业内,Java和MNet都是非常常见的解决方案,这两大平台各自也都有比较完善的解决方案,各自的优点也都比较突出。从行业应用情况来看,Java似乎要更普遍一些,原因虽然有很多,但是Java语言的开放性无疑起到了非常关键的作用,虽然后来C#也采取了更加开放的策略,但是Java的生态已经比较完善了,技术迁移的必要性也并没有那么强,所以很多团队依然会采用Java解决方案。
究竟是.Net好还是Java好,欢迎大家发言,畅所欲言?

MNet平台的优点集中在三个方面,其一是具有强大的开发环境,这是很多程序员对于MNet平台忠诚度比较高的一个重要原因;其二是较强的可用性,可用性也是MNet平台的一大特征;其三是成熟方案多,尤其是针对于中小型企业的开发方案。

Java平台的优点也主要集中在三个方面,其一是具有较强的稳定性;其二是具有较强的扩展性;其三是较强的资源整合能力,这一点使得很多大型互联网平台更愿意采用Java方案。实际上,由于Java语言的开放性和扩展性,大量的开源项目都会采用Java语言来实现,这是推动Java在行业内得到广泛应用的一个重要原因,比如Spring就是一个非常典型的案例。

从当前云计算平台的发展趋势来看,MNet平台和Java平台都有新的发展机会,MNet平台可以借助于云计算来提升自身的扩展性,而Java可以借助于云平台来进一步提升资源整合能力,同时提升开发环境,所以未来很长一段时间内,MNet平台和Java平台依然会得到广泛的应用。从目前云计算平台自身的发展趋势来看,微软在云计算领域目前的发展态势显然要好于Oracle,这对于MNet和Java的发展也会产生一定的影响。

我从事互联网行业多年,目前也在带计算机专业的研究生,主要的研究方向集中在大数据和人工智能领域,我会陆续写一些关于互联网技术方面的文章,感兴趣的朋友可以关注我,相信一定会有所收获。

如果有互联网、大数据、人工智能等方面的问题,或者是考研方面的问题,都可以在评论区留言,或者私信我!


首先,什么叫好?好找工作?方便开发?好学易懂?

作为一名资深程序员,单纯从技术角度来说,. net当然比java好。实际上. net和java根本不是同一类东西。. net是专门针对互联网应用而设计开发的中间平台,而JAVA只是可以用来进行互联网应用开发的一种通用中间平台,JAVA最开始只是个单机平台,其架构理念根本和现代互联网应用无关,在JAVA刚刚开始进入互联网领域的时候,其实是一种前端技术,只是后来被JavaScript和flash打败后,才被用来做服务端的应用服务平台的。这种不断打补丁的进化过程,使得JAVA的运行效率很低,结构凌乱,标准混乱,尽管近几年缝缝补补,但是,你懂的,输在起跑线上了。反观. net,那就不一样了,从底层开始就是为互联网应用而生的,周边辅助生态也很完善,从标准的多语言文档库,到强大的IDE,更有最专业的版本维护团队,无论运行效率还是开发效率都好过和JAVA不只一个档次。

以上是我干了15年JAVA开发,转过来干了6年. net开发的体会。

一家之言,仅供参考。


全栈喜欢.net。强后台互联网项目喜欢java。年岁大了,干个体了,就喜欢.net了,太好用了,http跨平台,开发速度就是快,用人少,维护方便!养家糊口利器。


想工资高就.net,现在.net的开发人员少了,供不应求,从我身边了解到的相同岗位的.net要比java高一些


播放 暂停 进入全屏 退出全屏 00:00 00:00

                                     重播                                    刷新试试

我就对比一点——泛型。Java的泛型存在类型擦除的问题,所有泛型在运行时的时候实际都是object,根本无法获取类型,这就是个巨坑。而且泛型也不能new T,也是因为泛型擦除问题。这是Java泛型的机制决定的,用过Java泛型的都知道。而net的泛型就要合理很多,原理跟java也完全不同,它是编译的时候直接就生成了实际的类,有多少个泛型类型酒对应生成多少个实体类,所以在运行时就很轻易得到泛型类型,Java里的泛型问题通通不存在。硬要说缺点,只是多几个类,多一点栈空间占用而已。

这2个各有千秋吧!.net目前也开源了,对云原生也有很好的支持!netcore的sdk一直在发展的风暴中且免费!不过java是目前国内的主流,阿里腾讯百度都是以java为主流的。java的生态比较强悍,薪资普遍比较高,不过java的jdk1.8后就开始收费了!要是面向薪资的话肯定java胜一筹!