0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Java 知識“已經(jīng)過時(shí) ”實(shí)際開發(fā)能否用到

jf_ro2CN3Fa ? 來源:芋道源碼 ? 2023-05-22 15:09 ? 次閱讀

JSP

Struts

Hibernate

Servlet(要精通)

其他

最后

最近這段時(shí)間收到了一些讀者的私信,問我某個(gè)技術(shù)要不要學(xué),還有一些在國外的同學(xué)竟然對 Java 圖形化很感興趣,還想找這方面的工作。

比較忙,一直沒抽出時(shí)間去回答這類問題,剛好看到我關(guān)注的一位大佬回答過,這里分享一下,希望對你能有幫助。

下面是正文。

我接觸 Java 已近 20 年了,見證了許多 Java 技術(shù)變遷,包括:

JavaEE 框架,從百家混戰(zhàn)到現(xiàn)在 Spring 基本一統(tǒng)天下。

Web 開發(fā),從標(biāo)配的 SSH 到現(xiàn)在 SpirngMVC + MyBatis 組合。

IDE,從當(dāng)年如火如荼的 JBuilder 到 Eclipse,再到更好用的 IDEA。

而本文,我主要談一下那些 Java 知識“已經(jīng)過時(shí) ”,沒必要繼續(xù)學(xué)習(xí)了。您也可以把本文看做上篇文章的補(bǔ)充。

我判斷的依據(jù)主要有以下幾點(diǎn):

實(shí)際開發(fā)能否用到?

是否有助于加深對技術(shù)的理解?

對面試是否有用?

JSP

JSP 在實(shí)際開發(fā)中,主要是作為 MVC 模型中的 V(View)層出現(xiàn)的。當(dāng)然,View 層的渲染技術(shù)除了 JSP,還有 FreeMaker、Velocity 等。

JSP 作為頁面模板,在后端通過 MVC 框架渲染成 HMTL,然后再發(fā)送到客戶端(例如瀏覽器)來呈現(xiàn)。這也就是我們常說的“前后端不分離”,“混合式”開發(fā)。

而當(dāng)前,包括我所在的公司,以及大部分互聯(lián)網(wǎng)公司。要么已經(jīng)拋棄這種模式,要么正在拋棄的路上,而轉(zhuǎn)向徹底的“前后端分離”。

在“前后端分離”模式下,后端只負(fù)責(zé)提供服務(wù)接口(例如 REST),而前端(例如 HTML5)通過接口發(fā)送/獲取,呈現(xiàn)數(shù)據(jù)(例如 JSON 格式)。

這樣,在后端,原來的 MVC 框架,某種意義上已經(jīng)演變?yōu)?MC 框架。因此,與 V(View)相關(guān)的一切模板技術(shù)都失去了學(xué)習(xí)的必要,其中當(dāng)然也包括 JSP。所以,后來的 Java 學(xué)習(xí)者,我的建議是:

“_完全可以放棄對 JSP 的學(xué)習(xí)_?!?/p>

基于 Spring Boot + MyBatis Plus + Vue & Element 實(shí)現(xiàn)的后臺管理系統(tǒng) + 用戶小程序,支持 RBAC 動態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能

項(xiàng)目地址:https://github.com/YunaiV/ruoyi-vue-pro

視頻教程:https://doc.iocoder.cn/video/

Struts

在 Java 后端開發(fā)中,MVC 模型還是主流。而 Struts 作為一個(gè) MVC 框架,單從技術(shù)上來說,還是很優(yōu)秀的。

但是,現(xiàn)在 Spring 實(shí)在是太強(qiáng)勢了,越來越成為 Java 開發(fā)中的“一站式”工具包,其中的一個(gè)利器就是 Spring MVC。

望名知意,Spring MVC 也是一個(gè) MVC 框架。而且因?yàn)樗?Spring 的親兒子,自然和 Spring 契合的非常完美。

同時(shí),在設(shè)計(jì)之初,Spring MVC 就參照了其他 MVC 框架的優(yōu)缺點(diǎn)(包括 Struts),所以用起來非常爽。因此,在 MVC 框架領(lǐng)域,Spring MVC 大有一統(tǒng)天下的趨勢。

因此現(xiàn)在,很多公司,老的 Struts 項(xiàng)目還在維護(hù)。但新的項(xiàng)目開發(fā),更多轉(zhuǎn)向了 Spring MVC。因此,如果你是 Java 新手,正在學(xué)習(xí)中,我的建議是:

“**_不要再學(xué)習(xí) Struts 了,從 Spring MVC 開始吧!** _”

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實(shí)現(xiàn)的后臺管理系統(tǒng) + 用戶小程序,支持 RBAC 動態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能

項(xiàng)目地址:https://github.com/YunaiV/yudao-cloud

視頻教程:https://doc.iocoder.cn/video/

Hibernate

Hibernate 作為老牌的 OR 映射框架,功能非常強(qiáng)大,涵蓋面非常廣。但這既是它的優(yōu)點(diǎn),同時(shí)也成為它的“負(fù)擔(dān)”,是開發(fā)人員“不能承受之重”。

Hibernate 的設(shè)計(jì)初衷,是為了最大程度的解放程序員,完全隔離數(shù)據(jù)庫,實(shí)現(xiàn)徹底的 OR 映射。程序員甚至可以不寫一行 SQL 語句,單通過配置就能實(shí)現(xiàn)對數(shù)據(jù)庫的操作。

當(dāng)然,為了實(shí)現(xiàn)這個(gè)目標(biāo),Hibernate 也設(shè)計(jì)的非常復(fù)雜、非常精巧。就不可避免的帶來以下副作用:

學(xué)習(xí)成本高

配置復(fù)雜

調(diào)優(yōu)困難

前兩點(diǎn)不難理解,單說“調(diào)優(yōu)困難”。

因?yàn)?Hibernate 的設(shè)計(jì)目標(biāo)是徹底的 OR 映射,徹底的隔離 SQL 語句。但必然會帶來一定的性能損失。大部分情況下,應(yīng)用如果對性能不敏感,Hibernate 也沒問題。但應(yīng)用一旦對性能敏感,有 SQL 級別調(diào)優(yōu)的需求,Hibernate 的優(yōu)點(diǎn)反而成為缺點(diǎn)。

雖然 Hibernate 也支持 SQL 級別的調(diào)優(yōu),但因?yàn)榭蚣茉O(shè)計(jì)的過于復(fù)雜和精巧,這就需要開發(fā)人員對 Hibernate 理解的非常透徹,這就帶來了更高的學(xué)習(xí)成本。

而現(xiàn)在最流行的 MyBatis,作為一個(gè)“混合式”,輕量級 OR 映射框架,既繼承了 Hibernate 的優(yōu)點(diǎn),同時(shí)也吸取了他的教訓(xùn)。在支持配置的同時(shí),又能接觸 SQL,從而帶來了更多靈活性(包括調(diào)試、優(yōu)化)。

當(dāng)前,在實(shí)際開發(fā)中,Hibernate 使用的越來越少了。大家更偏愛 MyBatis 這種輕量級框架。所以,對后來學(xué)習(xí)者,我的建議是:

“_不需要再學(xué)習(xí) Hibernate 了,學(xué) MyBatis 就夠了_?!?/p>

Servlet(要精通)

當(dāng)然,現(xiàn)在不會有任何公司,再用純粹的 Servlet 來時(shí)實(shí)現(xiàn)整個(gè) Web 應(yīng)用,而是轉(zhuǎn)向一些更高級的技術(shù)(例如各種 MVC 框架)。因此,會給人一種錯(cuò)覺:Servlet 已經(jīng)過時(shí),后來者就不需要再學(xué)習(xí)了。

在這里,我可以非常負(fù)責(zé)任的說:這種觀點(diǎn)是極端錯(cuò)誤,極端不負(fù)責(zé)任的。

Servlet 不僅要學(xué),而且要學(xué)深,學(xué)透。

當(dāng)前,Servlet 雖然不再是一個(gè)主流 web 開發(fā)技術(shù),但依然是 Java Web 開發(fā)技術(shù)的基礎(chǔ),是 Java Web 容器的基石,是行業(yè)標(biāo)準(zhǔn)。而現(xiàn)在流行的各種 MVC 框架(包括 SpringMVC),在最底層,還是以 Servlet 為基礎(chǔ)的。

為此,我畫了一個(gè)簡單的圖(不準(zhǔn)確,會意即可):

4ceb6b98-f723-11ed-90ce-dac502259ad0.jpg

所以,如果你想要徹底掌握某個(gè) MVC 框架,則必須徹底理解 Servlet。

而且,Servlet 作為一個(gè)基礎(chǔ)設(shè)施。精通它,不僅有助于理解各種 MVC 框架。即使 Servlet 本身,也有很多實(shí)用價(jià)值。

如果你深刻理解了 Servlet 的生命周期,就可以在底層做很多事情。譬如在 Request 進(jìn)來的時(shí)候,進(jìn)行攔截,進(jìn)行權(quán)限的判定。也可以在 Response 發(fā)出的時(shí)候,進(jìn)行攔截,統(tǒng)一檢查、統(tǒng)一附加。

所以,如果你正在學(xué)習(xí) Java,對 Servlet,我的建議是:

“**Servlet 不僅要學(xué),而且要學(xué)深,學(xué)透** ?!?/p>

其他

目前在國內(nèi),Java 更多是作為 web 后端技術(shù)出現(xiàn)的。因此在實(shí)際學(xué)習(xí)中,很多技術(shù)就不符合“國情”,學(xué)習(xí)的現(xiàn)實(shí)意義不大。下面我就簡單列舉下。

1.Applet

作為頁面插件技術(shù),不用多說,連 flash 都快被淘汰了,更無論從未流行的 applet。

2.Swing

作為桌面 UI 框架。且不說本身設(shè)計(jì)的咋樣?,F(xiàn)實(shí)開發(fā)中,我接觸的桌面應(yīng)用,要么用 C++(例如 MFC),要么用 C#(Winform、WPF)。所以,Swing 就沒有學(xué)習(xí)的必要了。

3.JDBC

作為較低層的數(shù)據(jù)庫基礎(chǔ)設(shè)施,JDBC 被很多框架(例如 MyBatis)支持。但在實(shí)際開發(fā)中,程序員即使不了解也無大礙。因此,雖然我不能建議你放棄 JDBC 學(xué)習(xí),但如果你時(shí)間有限,完全可以把它的優(yōu)先級排低一點(diǎn)。

4.XML

XML 現(xiàn)在還在廣泛應(yīng)用。但作為一個(gè) web 數(shù)據(jù)傳輸格式,正在逐漸被 JSON 替代。所以,對 Java 后端學(xué)習(xí)來說,XML 簡單了解即可。至于龐雜的 XML 操作 API(例如 XPath),完全不必學(xué)習(xí)。將來真要用到,再查也不遲。

最后

上面是我的一家之言,肯定有武斷之處,見諒!

審核編輯:彭靜
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    8459

    瀏覽量

    150747
  • JAVA
    +關(guān)注

    關(guān)注

    19

    文章

    2952

    瀏覽量

    104493
  • spring
    +關(guān)注

    關(guān)注

    0

    文章

    338

    瀏覽量

    14298

原文標(biāo)題:別再學(xué)了!這些技術(shù)已經(jīng)被淘汰了,少走點(diǎn)彎路。。。

文章出處:【微信號:芋道源碼,微信公眾號:芋道源碼】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    [原創(chuàng)]學(xué)習(xí)java的流程

    項(xiàng)目的基礎(chǔ)上牢固的掌握應(yīng)用到知識,只有在實(shí)際的應(yīng)用中發(fā)現(xiàn)問題,加深所學(xué)的知識。在做項(xiàng)目的時(shí)候各位一定要從開始的需求分析一直到編程,按照流程來,一定不要去看參考代碼!
    發(fā)表于 11-06 12:38

    [分享]怎樣學(xué)好JAVA

    沒有捷徑,只有一步一步的積累,極少成多。記住一句話:代碼是敲出來的,程序是調(diào)出來的。 三、要培養(yǎng)自學(xué)能力,Java發(fā)展的速度真是太快了,你從任何書上學(xué)來的知識,好多都是已經(jīng)過時(shí)
    發(fā)表于 12-22 16:02

    [轉(zhuǎn)帖]全新全真項(xiàng)目是選擇java培訓(xùn)班的關(guān)鍵

    ; Java私塾沒有固定項(xiàng)目,每個(gè)班做項(xiàng)目之前會從企業(yè)獲取最新的項(xiàng)目需求,然后經(jīng)過挑選和精心設(shè)計(jì),以保證既能訓(xùn)練技術(shù),又能得到實(shí)際開發(fā)經(jīng)驗(yàn)。這樣實(shí)現(xiàn)了跟企業(yè)的同步,企業(yè)做什么,我們就
    發(fā)表于 06-28 14:06

    對于基于8051的設(shè)計(jì),是否有可行的Xilinx解決方案已經(jīng)過時(shí)了?

    對于基于8051的設(shè)計(jì),是否有可行的Xilinx解決方案已經(jīng)過時(shí)了?以上來自于谷歌翻譯以下為原文Is there a viable Xilinx solution for 8051 based designs that are becoming obsolete?
    發(fā)表于 02-13 12:27

    linux驅(qū)動開發(fā)嵌入式開發(fā)用到哪些知識

    移植,rootfs移植)linux驅(qū)動開發(fā)嵌入式開發(fā)用到哪些知識?編程語言:第一層次(C語言) 第二層次(ARM匯編、shell腳本、C++、Jav
    發(fā)表于 10-27 10:14

    JAVA相關(guān)基礎(chǔ)知識

    JAVA相關(guān)基礎(chǔ)知識,感興趣的小伙伴們可以瞧一瞧。
    發(fā)表于 11-10 11:17 ?0次下載

    相比其他系統(tǒng)的內(nèi)核設(shè)計(jì)Linux是否已經(jīng)過時(shí)?

    Linux 多年來取得的成績毋庸多言。但最近,reddit 上有人發(fā)起了一個(gè)話題,想知道 Linux 的內(nèi)核設(shè)計(jì)是否已經(jīng)過時(shí),并得到了一些有趣的答案。
    的頭像 發(fā)表于 11-29 17:25 ?2515次閱讀

    Java設(shè)計(jì)知識講解

    本文檔內(nèi)容介紹了基于Java設(shè)計(jì)知識講解,供參考
    發(fā)表于 03-26 11:09 ?16次下載

    Java程序設(shè)計(jì)教程之Java語言的基礎(chǔ)知識概述

    本文檔詳細(xì)介紹的是Java程序設(shè)計(jì)教程之Java語言的基礎(chǔ)知識概述主要內(nèi)容包括了:1.Java語言發(fā)展簡史,2.Java的特點(diǎn)(為什么要學(xué)習(xí)
    發(fā)表于 02-22 10:28 ?36次下載
    <b class='flag-5'>Java</b>程序設(shè)計(jì)教程之<b class='flag-5'>Java</b>語言的基礎(chǔ)<b class='flag-5'>知識</b>概述

    如何成長為一名Java高級程序員

    所謂的Java高級程序員往往是經(jīng)驗(yàn)和能力的結(jié)合,并不是說掌握了哪幾個(gè)技術(shù)就是高級程序員了,能否把掌握的知識運(yùn)用到實(shí)際的項(xiàng)目中,并且解決了具體
    的頭像 發(fā)表于 07-05 16:33 ?2771次閱讀
    如何成長為一名<b class='flag-5'>Java</b>高級程序員

    java工程師的前景分析

    java語言在2017年就是一個(gè)備受爭議的編程語言,有人說java語言已經(jīng)過時(shí)了,java工程師已經(jīng)飽和了;也有的人說
    的頭像 發(fā)表于 08-07 15:49 ?3100次閱讀

    Java:JVM虛擬機(jī)的入門知識

    Java開發(fā)現(xiàn)在面試越來越難了,進(jìn)大廠必備的JVM、多線程高并發(fā)這都是最基礎(chǔ)的知識了,今天我們一起來學(xué)習(xí)Java虛擬機(jī)入門。
    的頭像 發(fā)表于 07-01 11:43 ?2283次閱讀
    <b class='flag-5'>Java</b>:JVM虛擬機(jī)的入門<b class='flag-5'>知識</b>

    AD7769:LC平方MOS與我/O已經(jīng)過時(shí)的數(shù)據(jù)Sheet相對應(yīng)。

    AD7769:LC平方MOS與我/O已經(jīng)過時(shí)的數(shù)據(jù)Sheet相對應(yīng)。
    發(fā)表于 05-17 17:05 ?0次下載
    AD7769:LC平方MOS與我/O<b class='flag-5'>已經(jīng)過時(shí)</b>的數(shù)據(jù)Sheet相對應(yīng)。

    Java知識已經(jīng)過時(shí)”技術(shù)有哪些?

    因?yàn)?Hibernate 的設(shè)計(jì)目標(biāo)是徹底的 OR 映射,徹底的隔離 SQL 語句。但必然會帶來一定的性能損失。大部分情況下,應(yīng)用如果對性能不敏感,Hibernate 也沒問題。但應(yīng)用一旦對性能敏感,有SQL級別調(diào)優(yōu)的需求,Hibernate 的優(yōu)點(diǎn)反而成為缺點(diǎn)。
    發(fā)表于 10-18 10:26 ?827次閱讀

    千兆光模塊和萬兆光模塊已經(jīng)過時(shí)了嗎?

    領(lǐng)域。本文從千兆和萬兆光模塊的技術(shù)特點(diǎn)和市場趨勢分析入手,探討它們是否已經(jīng)過時(shí),以及它們是否可以適應(yīng)未來網(wǎng)絡(luò)的發(fā)展趨勢。
    的頭像 發(fā)表于 10-09 10:00 ?453次閱讀