好久没写博客,最近经常看到关于.NET与java讨论的文章,有的文章被许多人认可,有的貌似引起了较大争议。
论Java,C# 二类开发的细节与思维
微软程序员最好的时代来了
.net 估计要死在你手里了
做为从事.NET、java等软件开发多年的开发人员,趁着新年元旦,在此也说说我个人的看法。
一、对.NET与java的一些个人肤浅体会
1. .NET与java比最大劣势,目前.NET大部分项目主要还是运行在windows系统上,windows收费,待公司走上正规、系统上规模之后就会自然弃用.NET转java。尽管.NET也开源了要跨平台了,但短期内绝对不指望会有大量公司从java转.NET。
2. 社区活跃度、开源项目数,java比.NET好太多,且可预测在较长时间内不会发生根本性的转变。
3. 国内环境,.NET比java差太多,且最近几年,常有王小二过年一年不如一年的赶脚。
二、接下来说一些个人肤浅的看法
4.java中的框架与工具.NET中大部分也有,java EE的SSH,.NET中可找出类似ASP.NET MVC + Spring.Net(或Castle Windsor) + NHibernate(或EF)。也就是说,会使用.NET平台的框架与工具,很快就能上手java平台的框架与工具,因为思想相通。
5. java与.NET的开发方法与思想是完全相通的:OOP,SOLID,DRY,Design Pattern,Dependency Injection,AOP,ORM,NoSQL,Unit testing,TDD,DDD,BDD,Continous Integration,Agile,XP,等等(太多,仅罗列部分),思想完全一样。其实这些方法、思想与平台、语言无关。
6.除了会使用工具、掌握方法外,关键是要领悟后面的思想。比如,建立一个IService接口然后再写实现类,为什么要搞得那么复杂?是为了依赖注入与单元测试方便。这个好处对于小项目可能是坏处,对业务复杂且可变因素较多的大项目那可能就是必不可少的。
7.方法与思想高于平台与语言。平台与语言仅是工具,开发方法与思想才是精髓。掌握了开发方法与思想,学习与使用一个新平台、一门新语言有啥难度,几天时间就上手,边做项目边熟悉。
8.开发人员的水平高低、薪水多少,主要是由掌握的方法、思想、经验决定,而不是由平台与语言决定。
9.不要抱怨做.NET薪水就一定低,不要说只会拖拖控件设设属性,开发方法与思想掌握了多少才是根本。
10.所以,不要绑定在一个平台上,在时间与精力允许的范围内,在熟悉1、2个平台与语言的基础上,多接触与掌握其他平台与语言:java,.net,php,python,node.js等等,多学习一些新的技术,多领悟领悟思想与方法。