与其争论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

相关文章

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

SpringBoot线程池配置使用示例详解

《SpringBoot线程池配置使用示例详解》SpringBoot集成@Async注解,支持线程池参数配置(核心数、队列容量、拒绝策略等)及生命周期管理,结合监控与任务装饰器,提升异步处理效率与系统... 目录一、核心特性二、添加依赖三、参数详解四、配置线程池五、应用实践代码说明拒绝策略(Rejected

一文详解SpringBoot中控制器的动态注册与卸载

《一文详解SpringBoot中控制器的动态注册与卸载》在项目开发中,通过动态注册和卸载控制器功能,可以根据业务场景和项目需要实现功能的动态增加、删除,提高系统的灵活性和可扩展性,下面我们就来看看Sp... 目录项目结构1. 创建 Spring Boot 启动类2. 创建一个测试控制器3. 创建动态控制器注

Java操作Word文档的全面指南

《Java操作Word文档的全面指南》在Java开发中,操作Word文档是常见的业务需求,广泛应用于合同生成、报表输出、通知发布、法律文书生成、病历模板填写等场景,本文将全面介绍Java操作Word文... 目录简介段落页头与页脚页码表格图片批注文本框目录图表简介Word编程最重要的类是org.apach

C#读写文本文件的多种方式详解

《C#读写文本文件的多种方式详解》这篇文章主要为大家详细介绍了C#中各种常用的文件读写方式,包括文本文件,二进制文件、CSV文件、JSON文件等,有需要的小伙伴可以参考一下... 目录一、文本文件读写1. 使用 File 类的静态方法2. 使用 StreamReader 和 StreamWriter二、二进

Spring Boot中WebSocket常用使用方法详解

《SpringBoot中WebSocket常用使用方法详解》本文从WebSocket的基础概念出发,详细介绍了SpringBoot集成WebSocket的步骤,并重点讲解了常用的使用方法,包括简单消... 目录一、WebSocket基础概念1.1 什么是WebSocket1.2 WebSocket与HTTP

SpringBoot+Docker+Graylog 如何让错误自动报警

《SpringBoot+Docker+Graylog如何让错误自动报警》SpringBoot默认使用SLF4J与Logback,支持多日志级别和配置方式,可输出到控制台、文件及远程服务器,集成ELK... 目录01 Spring Boot 默认日志框架解析02 Spring Boot 日志级别详解03 Sp

java中反射Reflection的4个作用详解

《java中反射Reflection的4个作用详解》反射Reflection是Java等编程语言中的一个重要特性,它允许程序在运行时进行自我检查和对内部成员(如字段、方法、类等)的操作,本文将详细介绍... 目录作用1、在运行时判断任意一个对象所属的类作用2、在运行时构造任意一个类的对象作用3、在运行时判断

java如何解压zip压缩包

《java如何解压zip压缩包》:本文主要介绍java如何解压zip压缩包问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java解压zip压缩包实例代码结果如下总结java解压zip压缩包坐在旁边的小伙伴问我怎么用 java 将服务器上的压缩文件解压出来,

SpringBoot中SM2公钥加密、私钥解密的实现示例详解

《SpringBoot中SM2公钥加密、私钥解密的实现示例详解》本文介绍了如何在SpringBoot项目中实现SM2公钥加密和私钥解密的功能,通过使用Hutool库和BouncyCastle依赖,简化... 目录一、前言1、加密信息(示例)2、加密结果(示例)二、实现代码1、yml文件配置2、创建SM2工具