与其争论java和.net的差异,还不如多想点用编程技术挣钱的方式

    年前和最近,我发如今博客园和其它地方,有很多争论java和.net哪一个好的文章,其实这是种好现象。虽然到了架构层面,技术是通用的,但兼听则明,并且技多不压身,多种挣钱的方式总不会错。html

    本人最近主攻Java,最近在这方面也出了两本书,Java Web轻量级开发面试教程Java核心技术及面试指南,但以前也讲过.net课,并且以前和别人创业时,用的也是.net,体会下来,语言只是挣钱的手段,关键是要看怎么用它们挣钱,也就是学习进阶和挣钱的方式。java

    本文将结合自身和听到看到的经历,不只将从语言使用的角度来讲明这两种语言的异同点,更将从提高能力接活挣外快的方面说明这两种语言的做用,相信你们在看完后会感叹:其实争论不必,关键要选择适合本身的方式。python

1 入门时,语法有差异,因此不能拘泥细节

     对于初学者而言,.net和java语法就像天书同样,一方面很难懂,另外一方面调试起来也很困难,若是要本身写段能经过编译的代码,很是困难。若是同时学Java和.NET,估计更会一头雾水。nginx

     其实磨刀不误砍柴工,对于初学者而言,不论学哪一种语言,都应该深刻考虑这个问题:高级开发或架构在用这个语言时,通常会用到哪些特性?换句话说,这种语言能怎么帮到我?我是学Java的,就从Java角度来回答这个问题,我相信.NET的回答应该会是一样精彩。面试

    1 Java主要用在架构方面,经过Spring MVC等架构能优化开发时间。   数据库

    2 经过引入各类组件,好比nginx等,能实现高并发分布式的功能。编程

    3 目前Java主要用在互联网高并发等场景,并且在处理大数据方面有必定的优点。性能优化

    对于初学者来讲,了解到上述知识点并不费劲,但一旦了解后,就能够在入门阶段不走弯路,好比别过多拘泥于加减乘除循环之类的语法,跟不会去学Swing之类的用不到的技术。网络

    虽然在入门阶段,Java和.net语法差异点很多,但若是不拘泥于细节,会发现开发的模式就像搭积木:用不一样的API去组装实现各类功能,咱们须要关注的是各类函数以及参数有什么做用,该如何使用。 数据结构

    但若是硬要列出二者谁好谁话,这自己就有问题,由于这样一来,会让本身过分深刻语法,就比如学英语时过多关注单词,语法自己实际上是相通的。

    在我以前和如今的公司里,我见过很多从.net转到java的,问他们当时转型用了多久?通常最多不会超过3个月,前提是.net技能都已经精通。

2 作项目时,其实已经模块化,差异的只是API

    当初学者开始作第一个商业项目的时候,会发现所接触到的知识点很是有限,好比数据库相关,MVC架构相关(如何在三者之间传数据),外带些数据结构(好比Java集合) 。

    并且,项目经理和架构师已经把项目的外型框架搭建好了,连数据库以及先后台交互的方式也无需管了,开发者作的更多的是模仿,仿照别人作的模块中的流程,开发本身的模块。

    在这个层面上,Java和.NET虽然开发用的IDE不一样,打包部署上线的方式也不一样,但在开发过程当中,因为框架已是现成的,因此相差的仍是API。

    相信大多数的项目经理会说,管理Java和.net项目的方式其实差很少,而二者的差异,大多已经经过框架和模块掩盖掉了。

    以前我在外企,项目经理都是一个项目作好就换另一个项目,我也见了很多项目经理同时管理java和.net的多个项目,也没发现他们所以而混淆。并且,作项目时,编码占的比例也不大,其它还有分析需求,设计架构和流程,和测试等人员联调,估计编码的工做量也就占个3成,要讨论只占这么点比例的开发语言哪一个好?没意义且占时间。

3 二者的差异其实体如今项目背景上

    以前主要说的是,从技术上来看,两种语言差异不大,并且从架构角度上来看,一些基于分布式高并发的技术,经过两种语言都能实现。  

    凡是存在的,必是合理的,那么目前沸沸扬扬的Java与.NET之争缘由何在呢?

    我的观点,体如今项目背景上,面向不一样需求和开发成本的项目,或许java/.net确实有些优点。

    好比,某项目是套基于桌面的管理系统(成本管理机器管理均不论),是应用在一个公司里,那么.NET是个比较好的选项。

    又如,某项目是个并发量比较小的网站,好比社区门户外带简单的动态数据,那么JSP便可。

    再如,若是是个高并发的项目,并且本公司的其它项目都是基于Java,那么可能会用到Java里的一些框架。   

    或者,某人以前作了很多.net项目,有现有的技术积累,再作个私活,用java和.net均可,那么可能就选.net了。

    也就是说,两种语言没有优劣之分,只有更适用,再具体来说,用哪一个语言成本更低,开发周期更短。

4 到了架构级别,更多得考虑底层实现,不多顾及语法点

    本人勉强到了架构师级别(但自认为若是用高级开发的标准,本人应该属于优秀),在我眼里,两种语言真没差异,我相信大多数的架构师或高级开发应该有相同的观点。

    由于在这个级别,须要考虑的不只仅是如何用语法实现功能点,并且如何性能调优和解决高并发问题。我列些最近咱们组架构师解决的问题。

    1 直接访问数据库太慢了,须要用MyCAT进行分库。

    2 网络通信,用http协议,有三次握手,且http报文头有些长,须要用tcp协议。

    3 业务上,两套表须要相互同步数据,这就得用到mq集群。

    以上为例,在这个程度,基本已经不多考虑两种语言的差异,或者能够这样说,我之说以在框架层面选用java,是由于该项目主要是基于Java的,而不是某些功能只有java实现,反之亦然。 

5 最近我见到值钱的技能,语法只占了不多比例,因此二者都能挣钱

    最近比较流行收费课程,我最近在学玩 转Spring全家桶(https://time.geekbang.org/course/intro/156) 这门课程,也了解了很多基于.NET的课程,最近也打算本身搞个收费课程。

    在这个过程当中,我发现若是在课程中,只讲差别性的语法,估计不会有市场,由于这些课程都是基于项目管理或者是框架的。我浏览了一些基于Java和.net的框架教程,发现分布式框架的要点都基本类似。

    从这个角度来看,在选型java和.net的时候,千万不能事先有成见,好比认为哪一种语言很差,或者哪一种语言绝对不适合某种场景,由于这样就至关于给本身画地为牢,约束了本身的发展前景。

6 不拘一格去挣钱

    学编程语言是为了挣钱,这里给出些通常的挣钱方式。

    1 首先固然仍是作好本职工做,具体来讲,就是认真地把编程语言结合业务背景,而后再深挖性能优化和架构级别的技能,让本身尽快达到高级开发或架构师的水准。

    2 若是感受还有余力,就去找些外快,好比作项目写书作讲课老师或者开视频教程,不知道渠道怎么办?网站搜外带群发邮件,若是身边有人已经作得很好了,就赶忙请教。

       我在博客园里就见到很多讲挣钱的文章,并且博客园里的图书编辑和负责出视频教材的人也很多,因此博客园内部的资源就很多。

    就拿外包项目来讲吧,基于java和.net的都有,并且各层次各成本的都有,因此说,与其争论,还不如多找找挣钱渠道,或者干脆多看点资料让本身快进步。

7 总结和求推荐

    原本这篇文章应该是年后第一周(也就是上周)发表的,但事情太多,推迟了一周,但自感受没所以下降写文章的标准。

    在上文里,更多地是从技术和架构来表述两种语言的差异,而最近我看了很多身边的人本身创业,他们挣钱的方式,也是和语言无关的。

    好比到各类兼职外包网站接活,好比出视频教程,又如出去培训讲课,或者接项目本身来作,这些挣钱的方式里,更多考虑的是成本和周期,各类项目的甲方,也不会由于开发语言是java而多给钱。

    因此,争论语言的差异,乃至争论语言的好坏,真的不必,有时间争论,还不如出去挣点外快,若是不知道渠道,就到网上找,若是感受缺乏挣外快的能力,就赶忙学。

    最后,祝各位用java的.net的python的(还有各类其它语言的)伙伴们技术日益进步,多多发财。

    若是你们感受本文不差,请点击下方的按钮推荐本文,你们的推荐是对本人最大的激励。

相关文章
相关标签/搜索