C#和Java,究竟選哪個方向?我只說事實,你自己分析……

来源:https://www.cnblogs.com/freeflying/archive/2022/06/09/16359401.html
-Advertisement-
Play Games

好久沒到園子裡面逛了,回來看了看,.NET有點式微呀?Java/Spring/Linux……比以前多了很多,為什麼?博客園可是.NET的大本營了呀! 好吧,我承認,飛哥也動搖了,去年在ASP.NET的基礎上,開了一期Java Web班。給大家彙報一下心得體會吧: 錄課程前 其實我最開始學(2008年 ...


好久沒到園子裡面逛了,回來看了看,.NET有點式微呀?Java/Spring/Linux……比以前多了很多,為什麼?博客園可是.NET的大本營了呀!

好吧,我承認,飛哥也動搖了,去年在ASP.NET的基礎上,開了一期Java Web班。給大家彙報一下心得體會吧:

錄課程前

其實我最開始學(2008年),學的是Java,但進公司幹活(2009年),一直用的都是.NET。我入行的時候,Java還沒現在火,C#/WinForm/ASP.NET2.0,正是如日中天的時候。

2019年,開始辦培訓班,Java就已經大行其道了。做市場調研的時候,幾乎所有(規模大名氣響)的培訓機構,都開了Java班;只有極個別的培訓班,明面上宣傳又.NET班,但後期就會變著花兒的讓你轉Java。我有點懵:為什麼會這樣?.NET凋零如斯了嗎?

瞭解了一下,這些培訓機構的通用說法就是:Java的崗位多,工資高,.NET不行了……

本著科學和實事求是的精神,我做了一個小小的調研,非常簡單,大家都可以試試:找一個招聘網站,分別用Java和.NET/C#關鍵字進行搜索,對比他們的結果。根據我們長期的觀察,Java崗和.NET崗工資幾乎沒有差別,但崗位數量Java是.NET的3-5倍之多!所以……

我“逆向思維”了一下:找工作難不難,不只是看崗位多少的,還要看求職人數呀!學Java和學.NET的人數比例又是多少呢?我們做的是培訓班,就只考慮野生程式員吧,呵呵,這樣一算,不得了,還有學.NET的野生程式員麽?Javaer和.NETer的比例怕是10:1,是100:1吧!?

所以我下定決心,就講ASP.NET全棧開發,我最拿手的!

然後,2年過去了……

源棧出去的同學,就業那是沒得說,so easy,秒拿offer,印證了我之前的推測,和很多同行的感受:.NET真不好招人。(所以我們源棧的同學就好就業嘛,^_^)

而且我也理解了為什麼其他大型培訓班不講.NET:更新太快了,培訓講師怕是跟不上。呵呵,我上一期的講義,下一期照著講就翻車。

似乎一切都很美好,只有一點:來源棧咨詢的學員,很多直接問我們教不教Java?

當時我一是有點煩了,(.NET更好找工作)解釋得煩了,這麼一個簡單的道理,翻來覆去的說,不想解釋了;二是有點飄了,覺得我們可以擴大規模了,.NET的盤子畢竟只有這麼大,我們規模還小的時候沒關係,以後萬一源棧做大了呢,要未雨綢繆……

在ASP.NET的課程全部錄製完成之後,我想了想,C#和Java不是挺接近的嗎?我花點時間就把它也錄了吧!

錄課程中

我承認,我是罵著錄完Java的。

講C#的時候,每天都感覺在吃糖;講Java的時候,感覺每天都在吃屎。

那時候我真心覺得搞Java的工資高點是應該的,畢竟有句話叫做“錢難賺,屎難吃”嘛。

好煩呀!

從IDE(我腦子抽抽了用的eclipse),到語法特性(我用的Java 8),再到環境配置(Spring/Hibernate),沒一個省心的,滑鼠都被我摔壞了一個。最煩的就是這些問題,全™都是些技術無關邏輯不通的狗屁問題。

在此之前,我一直以為JavaScript是最噁心的;在此之後,我覺得Java也好不到哪裡去:

  • JavaScript噁心在它的語法,但這個至少是可控的,噁心的語法你可以不寫,出了bug你可以斷點調試,總是有反饋有進展的;
  • Java的噁心在它的配置(語法糖沒C#甜我都還可以忍),配置出問題,又沒個提示或者瞎JB亂搞的提示,那才是真的把人都搞瘋了!

我當時就在想喲:我是十年的老碼農,英語還馬馬虎虎過得去(所謂的開源“社區支持”在中文網裡我只能呵呵了),勉勉強強能搞定這些亂七八糟的問題,培訓班剛畢業的學生,咋整?

他們可不是我教什麼,公司就用什麼的:我講課用的eclipse,公司用IDEA呢;我講的Spring,公司用struts呢;我講的Hibernate,公司用的mybatis呢?或者其他更小眾的框架啥的……Java的框架組件這麼亂這麼碎,咋整?

關鍵是時間有限呀,我們源棧標準學制是6個月,其他很多培訓機構5個月,甚至4個月都搞定收工,還要講什麼docker/redis,呵呵,這樣出去的學生,搞個毛線!難怪用人單位恨死培訓班了。

錄課程後

說實話,第一期的Java學員,還是比較爭氣,都學完了學成了。

但找工作,……,那真的是一言難盡啊!

我感覺我都坑了他們一把,心裡還有點過意不去。比如一個重慶的同學,我覺得他學得真的好,mybatis、linux、redis這些都自己學會了,比很多學ASP.NET的同學強多了!所以我想,要個8-12K的薪水不算高吧?因為.NET的同學在重慶7K還是不難的,還沒他學得好。

毛線!

找了一個月,最後5K收場。他說,如果前面幾個6-7K的答應了,感覺有戲,但找了一個月,累了,也被打擊夠了,先有份工作學著吧。

面試卷得一逼。重慶一個普普通通公司初級崗,問JVM調優,問多線程和鎖,問大流量高併發的處理……初級崗啊!能把if...else寫利索,能把功能實現就謝天謝地了好吧?你讓他去JVM調優?你一個醫療行業網站定製的公司,能有多高的併發?!

說白了,就捲唄,反正市面上不缺人。“面試造火箭,工作擰螺絲”嘛。

我們.NET的同學求職,基本上當時/當天發offer;Java,一面二面三面……還放你鴿子。

最有意思的是,這個同學,入職一個月以後,公司鼓勵他們轉C#,轉過去就直接加工資:

剛纔專門問了一下,還是沒轉,繼續扛Java!小伙子,有點東西呀……

 

-------------------------------

 

本來是想理中客的,寫著寫著好像就專門黑Java一樣,(*/ω\*)

這樣不好,還是給Java說點好話:

  1. 如果你要進互聯網公司,.NET肯定不行的,很難,超級難,進去了也不是核心部門,可能是去做ERP
  2. 學Java確實鍛煉人,入門的難度和C#/.NET比,真不是一個級別的。C#如果(理解)能力夠,甚至都可以自學,visual studio一裝,後面就直接啪啪啪了嘛;Java能不能自學,可能要靠天意——配環境的時候人品爆不爆!?多少人就死在安裝Java配環境變數上?(順便吐槽一下Java教程,為啥都要從cmd配環境變數講起?IDE他不香麽?)
  3. Java知名度更高,哪怕是個小白,也能張口就“加瓦”;C#就完蛋了,“你們教的那個C井C叉啥的……”,“嗯嗯,點呢特還是多呢特……”太特麽羞恥了!

其他,其他真說不出來了,畢竟C#也開源跨平臺了,……

或者,學Java可以當捲王?憋笑,真的,中國最捲的程式員就是搞互聯網那一幫人!^_^,捲得昏天黑地。我做.NET做了十年,加班的時候屈指可數,好久好久都一直以為什麼996是段子——確實是養懶了,捲不動了,現在只有辦個培訓班才能維持的了生活這樣子。我當時要是去捲大廠,說不定都財務自由了。

 (嗯,是的,想得挺美!)

一不小心水了這麼多字,要有乾貨!

乾貨下一篇吧,下次一定,O(∩_∩)O哈哈~

真的,我這次錄課程,就專門把Java/JavaScript/C#這幾門語言共同的部分,剔了出來的,就是要看看,所謂的“主流編程語言大同小異”,究竟怎麼個大同怎麼個小異?數據說話:

 (數字代表視頻大小,單位:G)

面對過程(分支迴圈函數)和基本的面向對象語法層面(封裝繼承多態),Java和C#的區別不大,共有:C#:Java = 20.14:4.91:2.51 ≈ 8:2:1

但到了高階類庫(見下圖)部分,Java和C#找共同的部分就難了,共有:C#:Java = 7.47 :16.7 :14.5 ≈ 3:7:6

 

下一次,童靴們有興趣的話,我挨著把Java和C#不一樣的地方,給大家過一遍。以前覺得一個合格的C#程式員,3天就可以轉Java,還是想當然了一些,哈哈……

這裡還是安利一個寫代碼的小姐姐:源棧小九,先,O(∩_∩)O哈哈~

 趕緊的,說不定還能看到飛哥……

點擊鏈接加入群聊【一起幫·源棧·星光計劃】:QQ群:222132940
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • pom版本 <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.2.7</version> </dependency> 1.自定義合併單元格 在某些業務場景中可能會有合併單 ...
  • 主要內容 1·學習java日誌體系及日誌工具的演進 2·瞭解日誌採集、處理、分析等各階段的常用中間件 3·學會搭建完整的elk日誌平臺 4·學習日誌打點,切麵,日誌文件等輸出手段 5·項目實戰,完成一訪問日誌鏈路的跟蹤 1、Java日誌體系 1.1 體系概述 1.1.1 日誌介面 JCL:Apach ...
  • 前面我們詳細介紹了SSO、OAuth2的定義和實現原理,也舉例說明瞭如何在微服務框架中使用spring-security-oauth2實現單點登錄授權伺服器和單點登錄客戶端。目前很多平臺都提供了單點登錄授權伺服器功能,比如我們經常用到的QQ登錄、微信登錄、新浪微博登錄、支付寶登錄等等。 如果我們自己 ...
  • 一個工作了3年的粉絲,去一個互聯網公司面試,結果被面試官懟了。 面試官說:”這麼簡單的問題你都不知道? 沒法聊了,回去等通知吧“。 這個問題是: ”什麼是可重入鎖,以及它的作用是什麼?“ 對於這個問題,來看看普通人和高手的回答吧 普通人: 嗯。。。。。。。。。。。。。。。。。。 高手: 好的。 可重 ...
  • JDBC概述 JDBC(Java Data Base Connectivity,java資料庫連接)是一種用於執行SQL語句的Java API,可以為多種關係資料庫提供統一訪問,它由一組用Java語言編寫的類和介面組成。是Java訪問資料庫的標準規範。 JDBC提供了一種基準,據此可以構建更高級的工 ...
  • 手把手教你使用 Spring Boot 3 開發上線一個前後端分離的生產級系統(一) - 介紹 手把手教你使用 Spring Boot 3 開發上線一個前後端分離的生產級系統(二) - 資料庫設計 手把手教你使用 Spring Boot 3 開發上線一個前後端分離的生產級系統(三) - 項目初始化 ...
  • 來源:cnblogs.com/lwtyyds/p/15678152.html 常用類概述 內部類 Object類 包裝類 數學類 時間類 字元串 String Builder和StringBuffer DecimalFormat 內部類 「概念」 :在一個類內部再定義一個完整的類。 一般情況下類與類 ...
  • 0. 文章目的 面向有一定基礎的C#初學者,介紹C#中介面的意義、使用以及特點。 1. 閱讀基礎 瞭解C#基本語法(如定義一個類、繼承一個類) 理解OOP中的基本概念(如繼承,多態) 2. 什麼是介面 2.1 現實中的協定與介面 貓貓頭在整理電腦文件,需要一個小工具來分類文件,於是貓貓頭向群里求助: ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...