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

2024-03-03 00:48

本文主要是介绍与其争论java和.net的差别,还不如多想点用编程技术挣钱的方式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

    本人最近主攻Java,最近在这方面也出了两本书,但之前也讲过.net课,而且之前和别人创业时,用的也是.net,体会下来,语言只是挣钱的手段,关键是要看怎么用它们挣钱,也就是学习进阶和挣钱的方式。

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

1 入门时,语法有差别,所以不能拘泥细节

     对于初学者而言,.net和java语法就像天书一样,一方面很难懂,另一方面调试起来也很困难,如果要自己写段能通过编译的代码,非常困难。如果同时学Java和.NET,估计更会一头雾水。

     其实磨刀不误砍柴工,对于初学者而言,不论学哪种语言,都应该深入考虑这个问题:高级开发或架构在用这个语言时,一般会用到哪些特性?换句话说,这种语言能怎么帮到我?我是学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的(还有各种其它语言的)伙伴们技术日益进步,多多发财。

    如果大家感觉本文不差,请点击下方的按钮推荐本文,大家的推荐是对本人最大的激励。

这篇关于与其争论java和.net的差别,还不如多想点用编程技术挣钱的方式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/767930

相关文章

基于SpringBoot+Mybatis实现Mysql分表

《基于SpringBoot+Mybatis实现Mysql分表》这篇文章主要为大家详细介绍了基于SpringBoot+Mybatis实现Mysql分表的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录基本思路定义注解创建ThreadLocal创建拦截器业务处理基本思路1.根据创建时间字段按年进

Win11安装PostgreSQL数据库的两种方式详细步骤

《Win11安装PostgreSQL数据库的两种方式详细步骤》PostgreSQL是备受业界青睐的关系型数据库,尤其是在地理空间和移动领域,:本文主要介绍Win11安装PostgreSQL数据库的... 目录一、exe文件安装 (推荐)下载安装包1. 选择操作系统2. 跳转到EDB(PostgreSQL 的

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

SpringBoot实现数据库读写分离的3种方法小结

《SpringBoot实现数据库读写分离的3种方法小结》为了提高系统的读写性能和可用性,读写分离是一种经典的数据库架构模式,在SpringBoot应用中,有多种方式可以实现数据库读写分离,本文将介绍三... 目录一、数据库读写分离概述二、方案一:基于AbstractRoutingDataSource实现动态

Springboot @Autowired和@Resource的区别解析

《Springboot@Autowired和@Resource的区别解析》@Resource是JDK提供的注解,只是Spring在实现上提供了这个注解的功能支持,本文给大家介绍Springboot@... 目录【一】定义【1】@Autowired【2】@Resource【二】区别【1】包含的属性不同【2】@

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

Java枚举类实现Key-Value映射的多种实现方式

《Java枚举类实现Key-Value映射的多种实现方式》在Java开发中,枚举(Enum)是一种特殊的类,本文将详细介绍Java枚举类实现key-value映射的多种方式,有需要的小伙伴可以根据需要... 目录前言一、基础实现方式1.1 为枚举添加属性和构造方法二、http://www.cppcns.co

Elasticsearch 在 Java 中的使用教程

《Elasticsearch在Java中的使用教程》Elasticsearch是一个分布式搜索和分析引擎,基于ApacheLucene构建,能够实现实时数据的存储、搜索、和分析,它广泛应用于全文... 目录1. Elasticsearch 简介2. 环境准备2.1 安装 Elasticsearch2.2 J

Java中的String.valueOf()和toString()方法区别小结

《Java中的String.valueOf()和toString()方法区别小结》字符串操作是开发者日常编程任务中不可或缺的一部分,转换为字符串是一种常见需求,其中最常见的就是String.value... 目录String.valueOf()方法方法定义方法实现使用示例使用场景toString()方法方法

Java中List的contains()方法的使用小结

《Java中List的contains()方法的使用小结》List的contains()方法用于检查列表中是否包含指定的元素,借助equals()方法进行判断,下面就来介绍Java中List的c... 目录详细展开1. 方法签名2. 工作原理3. 使用示例4. 注意事项总结结论:List 的 contain