別再學(xué)那些落后的 Web 開(kāi)發(fā)技術(shù)了 !
大家好,我是Echa。
最近這段時(shí)間收到了一些粉絲們的私信,問(wèn)小編這個(gè)技術(shù)要不要學(xué),某個(gè)技術(shù)要不要學(xué),還想找這方面的工作。由于白天還要上班比較忙,一直沒(méi)抽出時(shí)間去回答這類問(wèn)題。現(xiàn)在好了,利用這夜深人靜的時(shí)候,盤(pán)點(diǎn)一下那些不再流行的Web 開(kāi)發(fā)技術(shù),以及對(duì)應(yīng)現(xiàn)代化替換方案。
近幾年,Web 開(kāi)發(fā)技術(shù)可謂是飛速發(fā)展,不斷有新的技術(shù)涌現(xiàn)。比如說(shuō)火爆的前端技術(shù)框架Astro,前端運(yùn)行時(shí)Bun,構(gòu)建工具Vite等都給前端提供了強(qiáng)大動(dòng)力。再說(shuō)說(shuō)流行的后端大數(shù)據(jù)采集器Python, 處理高并發(fā)的Golang,微服務(wù)架構(gòu)的Spring Cloud和Netflix OSS。再繼續(xù)高端大氣一點(diǎn)就是云原生開(kāi)發(fā)Docker和Kubernetes,以及Serverless架構(gòu)。還有最近一兩年特火的人工智能(AI)和機(jī)器學(xué)習(xí)(ML)。
當(dāng)然,也有很多前端后端技術(shù)隨著技術(shù)的發(fā)展不再需要使用,有了更好的替代方案。
借此機(jī)會(huì),小編給大家詳細(xì)說(shuō)說(shuō)別再學(xué)那些落后的Web 開(kāi)發(fā)技術(shù)了,希望對(duì)準(zhǔn)備踏入程序員道路的和初學(xué)者有所幫助,看了本篇文章讓你少走彎路。
本文提到的技術(shù)不代表不能再使用了,其仍存在一些適用場(chǎng)景,并且很多遺留老項(xiàng)目可能是使用這些技術(shù)實(shí)現(xiàn)的,需要進(jìn)行維護(hù)。只是在新項(xiàng)目技術(shù)選型時(shí),應(yīng)盡可能考慮使用更為現(xiàn)代化的前后端技術(shù)。
JQuery
JQuery 官網(wǎng)
jQuery由美國(guó)人John Resig(約翰·萊西格)于2006年創(chuàng)建。至今為止,仍然是一個(gè)很流行的 JavaScript 庫(kù),其生態(tài)系統(tǒng)中有超百萬(wàn)個(gè)插件。并沒(méi)有統(tǒng)一規(guī)范管理,但這是一個(gè)技術(shù)上的歷史遺留問(wèn)題,并不是真的很流行,只是很多老網(wǎng)站仍然使用。根據(jù)網(wǎng)上數(shù)據(jù)統(tǒng)計(jì),排名前100W的網(wǎng)站中就有80%還是已JQuery 方式實(shí)現(xiàn),大部分網(wǎng)站都用了WordPress 前端代碼用的是JQuery,而且直接位置還有繼續(xù)用WordPress 創(chuàng)建。
小編的建議是:不要在學(xué)老。雖然 jQuery 依然被廣泛使用,但它已經(jīng)不再是前端開(kāi)發(fā)中的必須技術(shù)?,F(xiàn)在有很多前端框架,都已經(jīng)把JQuery 能實(shí)現(xiàn)的功能封裝的更好了,包括性能、兼容、響應(yīng)式布局等等都不用過(guò)多的考慮,前端框架本身就全部幫你搞定了。可以選擇當(dāng)下流行的前端框架,如 Vue、React、Nuxt.js、Next.js 等。
Bootstrap
Bootstrap 官網(wǎng)
Bootstrap是美國(guó)Twitter公司的設(shè)計(jì)師Mark Otto和Jacob Thornton合作基于HTML、CSS、JavaScript 開(kāi)發(fā)的簡(jiǎn)潔、直觀、強(qiáng)悍的前端開(kāi)發(fā)框架,使得 Web 開(kāi)發(fā)更加快捷。Bootstrap提供了優(yōu)雅的HTML和CSS規(guī)范,它即是由動(dòng)態(tài)CSS語(yǔ)言Less寫(xiě)成。Bootstrap一經(jīng)推出后頗受歡迎,一直是GitHub上的熱門(mén)開(kāi)源項(xiàng)目,包括NASA的MSNBC(微軟全國(guó)廣播公司)的Breaking News都使用了該項(xiàng)目。 國(guó)內(nèi)一些移動(dòng)開(kāi)發(fā)者較為熟悉的框架,如WeX5前端開(kāi)源框架等,也是基于Bootstrap源碼進(jìn)行性能優(yōu)化而來(lái)。
Bootstrap 是一個(gè)流行的 CSS 框架,它提供了預(yù)定義的CSS樣式、網(wǎng)格系統(tǒng)、JavaScript插件以及許多可重用的組件,如導(dǎo)航欄、按鈕、表單等。在七八年前,很多網(wǎng)站都使用 Bootstrap 來(lái)編寫(xiě),當(dāng)時(shí)他們聲稱自己是“世界上最先進(jìn)的響應(yīng)式前端框架”。但是,現(xiàn)在來(lái)看,Bootstrap 的樣式并不是很美觀,還存在包體積大,難以自定義,實(shí)現(xiàn)落后,開(kāi)發(fā)體驗(yàn)不好等問(wèn)題。
小編的建議是:不要再學(xué)了。可以用目前很多優(yōu)秀的方案代替它。
比如:
- UI 組件庫(kù):Ant Design、Element UI、Arco Design、WeUI、Vant Weapp、iView Weapp、TaroUI、Lin UI、Wux Weapp;
- CSS-in-JS:Styl-Components、Emotion;
- 功能類優(yōu)先框架:Tailwind CSS、UnoCSS。
Ajax
Ajax即Asynchronous Javascript And XML(異步JavaScript和XML)在 2005年被Jesse James Garrett提出的新術(shù)語(yǔ),用來(lái)描述一種使用現(xiàn)有技術(shù)集合的‘新’方法,包括: HTML 或 XHTML, CSS, JavaScript, DOM, XML, XSLT, 以及最重要的XMLHttpRequest。使用Ajax技術(shù)網(wǎng)頁(yè)應(yīng)用能夠快速地將增量更新呈現(xiàn)在用戶界面上,而不需要重載(刷新)整個(gè)頁(yè)面,這使得程序能夠更快地回應(yīng)用戶的操作。
小編的建議是:不要再學(xué)了。Ajax 的功能簡(jiǎn)單,使用起來(lái)有很多局限性,推薦使用功能更全面的第三方數(shù)據(jù)請(qǐng)求庫(kù)來(lái)處理數(shù)據(jù)請(qǐng)求,比如 Axios,它們的功能更加全面,使用起來(lái)也更方便,或者更現(xiàn)代化的前端請(qǐng)求 API:fetch。
AngularJS
AngularJS誕生于2009年,由Misko Hevery 等人創(chuàng)建,是一款構(gòu)建用戶界面的前端框架,后為Google所收購(gòu)。 AngularJS是一個(gè)應(yīng)用設(shè)計(jì)框架與開(kāi)發(fā)平臺(tái),用于創(chuàng)建高效、復(fù)雜、精致的單頁(yè)面應(yīng)用,通過(guò)新的屬性和表達(dá)式擴(kuò)展了 HTML,實(shí)現(xiàn)一套框架,多種平臺(tái),移動(dòng)端和桌面端。 AngularJS有著諸多特性,最為核心的是:MVVM、模塊化、自動(dòng)化雙向數(shù)據(jù)綁定、語(yǔ)義化標(biāo)簽、依賴注入等等。
2016 年,我們今天所熟知的 Angular 發(fā)布了。注意,不要把 AngularJS 和 Angular 混淆了。AngularJS 從版本 2 開(kāi)始就被 Angular 取代了,目前已經(jīng)不再被 Google 官方支持和維護(hù)。
Angular 是一個(gè)用 TypeScript 編寫(xiě)的現(xiàn)代化前端框架,是對(duì) AngularJS 的改進(jìn)和升級(jí)。它采用了組件化編程方式、模塊化體系結(jié)構(gòu),并提供了更好的性能、可擴(kuò)展性和可測(cè)試性。Angular 又被稱為 "Angular 2+" 或 "Angular Next"。
小編的建議是:不要再學(xué)AngularJS了。對(duì)于新的項(xiàng)目,可以選擇使用 Angular 來(lái)開(kāi)發(fā),但是更推薦使用更受歡迎的 Vue 和 React 來(lái)開(kāi)發(fā),因?yàn)樵趪?guó)內(nèi)這兩個(gè)框架使用的更多,生態(tài)更加完善,社區(qū)比較活躍,這也意味著遇到問(wèn)題時(shí)更容易解決。
Python Django
Django 是一個(gè)由 Python 編寫(xiě)的一個(gè)開(kāi)放源代碼的 Web 應(yīng)用框架。
Django 借鑒了經(jīng)典的 MVC 模式,它也將交互的過(guò)程分為了 3 個(gè)層次,也就是 MTV 設(shè)計(jì)模式;M全拼為Model,與MVC中的M功能相同,負(fù)責(zé)和數(shù)據(jù)庫(kù)交互,進(jìn)行數(shù)據(jù)處理。數(shù)據(jù)存儲(chǔ)層,處理所有數(shù)據(jù)相關(guān)的業(yè)務(wù),和數(shù)據(jù)庫(kù)進(jìn)行交互,并提供數(shù)據(jù)的增刪改查;T全拼為T(mén)emplate,與MVC中的V功能相同,負(fù)責(zé)封裝構(gòu)造要返回的html。模板層(也叫表現(xiàn)層)具體來(lái)處理頁(yè)面的顯示;V全拼為View,與MVC中的C功能相同,接收請(qǐng)求,進(jìn)行業(yè)務(wù)處理,返回應(yīng)答。業(yè)務(wù)邏輯層,處理具體的業(yè)務(wù)邏輯,它的作用是連通Model 層和 Template 。除了以上三層之外,還有一個(gè)URL分發(fā)器,它的作用是將一個(gè)個(gè)URL的頁(yè)面請(qǐng)求分發(fā)給不同的View處理,View再調(diào)用相應(yīng)的Model和Template
小編的建議是:不要再學(xué)Django了。由于現(xiàn)代前端技術(shù)如 React、Angular 和 Vue 的興起,Django 已經(jīng)不再是前端開(kāi)發(fā)中的必須技術(shù)。Django 相對(duì)于現(xiàn)代前端框架來(lái)說(shuō),生態(tài)系統(tǒng)不完善,開(kāi)發(fā)難度更大,并且不符合現(xiàn)代開(kāi)發(fā)的前后端分離的理念。可以選用現(xiàn)在更為流行的前端框架,比如 React、Vue等。
Grunt、Gulp
Grunt 和 Gulp 都是前端自動(dòng)化構(gòu)建工具。
Grunt 是一套前端自動(dòng)化工具,一個(gè)基于nodeJs的命令行工具,一般用于:① 壓縮文件② 合并文件③ 簡(jiǎn)單語(yǔ)法檢查
Gulp 是基于node.js的一個(gè)前端自動(dòng)化構(gòu)建工具,開(kāi)發(fā)者可以使用它構(gòu)建自動(dòng)化工作流程(前端集成開(kāi)發(fā)環(huán)境)。使用gulp你可以簡(jiǎn)化工作量,讓你把重點(diǎn)放在功能的開(kāi)發(fā)上,從而提高你的開(kāi)發(fā)效率和工作質(zhì)量。
Gulp 特性:
使用方便通過(guò)代碼優(yōu)于配置的策略,Gulp可以讓簡(jiǎn)單的任務(wù)簡(jiǎn)單,復(fù)雜的任務(wù)更可管理。
構(gòu)建快速通過(guò)流式操作,減少頻繁的 IO 操作,更快地構(gòu)建項(xiàng)目。
插件高質(zhì)有嚴(yán)格的插件指導(dǎo)策略,確保插件能簡(jiǎn)單高質(zhì)的工作。
易于學(xué)習(xí)少量的API,掌握Gulp可以毫不費(fèi)力。構(gòu)建就像流管道一樣,輕松加愉快。
小編的建議是:不要再學(xué)Grunt 和 Gulp了。 雖然這兩個(gè)工具都很強(qiáng)大,目前還有一些使用場(chǎng)景。但是隨著前端的快速發(fā)展,出現(xiàn)了很多更為現(xiàn)代化工具,比如 Webpack、Vite 等,這些工具使用更簡(jiǎn)單,效率更高,推薦使用這些現(xiàn)代化的構(gòu)建工具。
React 類組件
使用組件的方式進(jìn)行編程,可以提高開(kāi)發(fā)效率,提高組件的復(fù)用性、提高代碼的可維護(hù)性和可擴(kuò)展性
React定義組件的方式有兩種:
- 類組件:React16.8版本之前幾乎React使用的都是類組件
- 函數(shù)組件:React16.8之后,函數(shù)式組件使用的越來(lái)越多
小編的建議是:不要再學(xué)React16.8之前版本了,直接從React16.8之后開(kāi)始學(xué)。v16.8 版本引入了 Hooks,得以讓我們更方便的使用函數(shù)組件,函數(shù)組件的代碼也更加清晰易懂。
因此,理解類組件是如何工作的以及生命周期方法仍然是很好的。但如果正在編寫(xiě)新的 React 組件,建議使用帶有 React Hook 的函數(shù)組件。
IE兼容技術(shù)
IE瀏覽器,是美國(guó)微軟公司很早前就推出的一款網(wǎng)頁(yè)瀏覽器。隨著技術(shù)的發(fā)展,IE瀏覽器經(jīng)歷了很多次升級(jí)。在IE 6以前,我們稱之為Microsoft Internet Explorer;IE 7到IE 11版本稱為Windows Internet Explorer,簡(jiǎn)稱為IE瀏覽器。相較于其他瀏覽器,IE瀏覽器有著更加簡(jiǎn)潔的外觀和更為簡(jiǎn)單的操作模式,這使得瀏覽器的運(yùn)行速度更快;但是相應(yīng)的,在功能拓展部分就比較欠缺,而且容易中病毒,安全性不高。
2022 年 6 月 16 日,IE 瀏覽器正式退役,之后將由 Edge 瀏覽器接棒繼續(xù)提供服務(wù)。許多網(wǎng)站和程序要求兼容 IE,IE6 對(duì) W3C 標(biāo)準(zhǔn)支持不夠友好,這可能是很多前端開(kāi)發(fā)的噩夢(mèng)了,IE6 的普及導(dǎo)致之后的 20 年間,不斷有開(kāi)發(fā)者因?yàn)檫m配需要適配 IE6 而焦頭爛額。
小編的建議是:IE兼容技術(shù)不要再做兼容了。如果產(chǎn)品和運(yùn)營(yíng)人員還這么要求,直接拿出40米大刀擺在眼前,讓他們?nèi)ンw會(huì)。如今,IE 瀏覽器,由現(xiàn)代瀏覽器 Edge 繼續(xù)提供服務(wù),Edge 緊跟最近的技術(shù),快速更新和維護(hù)。開(kāi)發(fā)者也不再需要學(xué)習(xí)那些令人頭疼的兼容 IE 的技術(shù)了,喜大普奔!
雪碧圖
雪碧圖,英文原名叫 CSS sprites。sprite 指的是精靈。我們喝的雪碧,它的英文也是 sprite,應(yīng)該直譯為 “精靈” 的。但要符合中國(guó)市場(chǎng),因?yàn)槟悴荒苷f(shuō)我喝的飲料叫“精靈”,那特別怪。于是就走音譯的路線,翻譯成 “雪碧” 了。
雪碧圖的主要作用是減少 HTTP 請(qǐng)求數(shù)量。
假如你有 100 張小圖片,你要發(fā)起 100 個(gè)請(qǐng)求。如果你合并成一個(gè)大圖片,那你只需要發(fā)一個(gè)請(qǐng)求。
這在 HTTP/1 上是有不錯(cuò)的優(yōu)化效果的,因?yàn)?HTTP/1 下不能充分利用 TCP 帶寬,一個(gè) TCP 同時(shí)只能有一個(gè)請(qǐng)求,請(qǐng)求太多就要排隊(duì),導(dǎo)致嚴(yán)重的阻塞。
到了 HTTP/2 因?yàn)槎嗦窂?fù)用特性的緣故,則沒(méi)有太大必要了,所有的請(qǐng)求都是通過(guò)流的方式打散發(fā)送的,充分利用 TCP 的帶寬。
另一個(gè)作用是 提前加載好需要用到的圖片。
假設(shè)我們的一個(gè)按鈕是用圖片做的,hover 時(shí)會(huì)替換圖片。如果分成獨(dú)立的兩個(gè)圖片,hover 就會(huì)出現(xiàn)閃爍的效果。
這是因?yàn)閳D片還沒(méi)有下載好,在圖片完成下載前,顯示的是空白,直到圖片下載完成才替換上圖片。
如果我們將按鈕的所有狀態(tài)都放到雪碧圖了,就不會(huì)有這個(gè)問(wèn)題了。當(dāng)然還有一種方式就是通過(guò) JS 手動(dòng)做其他狀態(tài)小圖片的緩存。
小編的建議是:不要再學(xué)雪碧圖了?,F(xiàn)在前端技術(shù)快速發(fā)展,出現(xiàn)了更多實(shí)用的技術(shù),比如 SVG、iconfont,這些技術(shù)提供了更多靈活性和便利性,很多情況下可以取代雪碧圖。HTTP 2 的出現(xiàn)使得一次可以請(qǐng)求多個(gè)文件,雪碧圖存在的意義就不大了。并且,由于雪碧圖使用復(fù)雜,不易維護(hù),一張圖崩了整個(gè)網(wǎng)頁(yè)的圖標(biāo)就都崩了,圖標(biāo)位置確定后就不好再修改等問(wèn)題,不再需要雪碧圖這種形式。
現(xiàn)在說(shuō)后端Web介紹不要再學(xué)了
小編從2008到現(xiàn)在2023年,見(jiàn)證了許多 Java 技術(shù)變遷,包括:JavaEE 框架,從百家混戰(zhàn)到現(xiàn)在 Spring 基本一統(tǒng)天下。Web 開(kāi)發(fā),從標(biāo)配的 SSH 到現(xiàn)在 SpirngMVC + MyBatis 組合。IDE,從當(dāng)年如火如荼的 JBuilder 到 Eclipse,再到更好用的 IDEA。
JSP
JSP(全稱Java Server Pages)是由Sun Microsystems公司主導(dǎo)創(chuàng)建的一種動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)標(biāo)準(zhǔn)。JSP部署于網(wǎng)絡(luò)服務(wù)器上,可以響應(yīng)客戶端發(fā)送的請(qǐng)求,并根據(jù)請(qǐng)求內(nèi)容動(dòng)態(tài)地生成HTML、XML或其他格式文檔的Web網(wǎng)頁(yè),然后返回給請(qǐng)求者。JSP技術(shù)以Java語(yǔ)言作為腳本語(yǔ)言,為用戶的HTTP請(qǐng)求提供服務(wù),并能與服務(wù)器上的其它Java程序共同處理復(fù)雜的業(yè)務(wù)需求。
JSP 作為頁(yè)面模板,在后端通過(guò) MVC 框架渲染成 HMTL,然后再發(fā)送到客戶端(例如瀏覽器)來(lái)呈現(xiàn)。這也就是我們常說(shuō)的“前后端不分離”,“混合式”開(kāi)發(fā)。
而當(dāng)前,包括我所在的公司,以及大部分互聯(lián)網(wǎng)公司。要么已經(jīng)拋棄這種模式,要么正在拋棄的路上,而轉(zhuǎn)向徹底的“前后端分離”。
在“前后端分離”模式下,后端只負(fù)責(zé)提供服務(wù)接口(例如 REST),而前端(例如 HTML5)通過(guò)接口發(fā)送/獲取,呈現(xiàn)數(shù)據(jù)(例如 JSON 格式)。
這樣,在后端,原來(lái)的 MVC 框架,某種意義上已經(jīng)演變?yōu)?MC 框架。因此,與 V(View)相關(guān)的一切模板技術(shù)都失去了學(xué)習(xí)的必要,其中當(dāng)然也包括 JSP。
小編的建議是:可以完全放棄再學(xué)JSP了??梢詫W(xué)Spring Boot + MyBatis Plus + Vue & Element 實(shí)現(xiàn)的后臺(tái)管理系統(tǒng) + 用戶小程序,支持 RBAC 動(dòng)態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能
Struts
Struts是Apache軟件基金會(huì)(ASF)贊助的一個(gè)開(kāi)源項(xiàng)目。它最初是Jakarta項(xiàng)目中的一個(gè)子項(xiàng)目,并在2004年3月成為ASF的頂級(jí)項(xiàng)目。它通過(guò)采用Java Servlet/JSP技術(shù),實(shí)現(xiàn)了基于Java EE Web應(yīng)用的Model-View-Controller(MVC)設(shè)計(jì)模式的應(yīng)用框架,是MVC經(jīng)典設(shè)計(jì)模式中的一個(gè)經(jīng)典產(chǎn)品。
在 Java 后端開(kāi)發(fā)中,MVC 模型還是主流。而 Struts 作為一個(gè) MVC 框架,單從技術(shù)上來(lái)說(shuō),還是很優(yōu)秀的。
但是,現(xiàn)在 Spring 實(shí)在是太強(qiáng)勢(shì)了,越來(lái)越成為 Java 開(kāi)發(fā)中的“一站式”工具包,其中的一個(gè)利器就是 Spring MVC。
望名知意,Spring MVC 也是一個(gè) MVC 框架。而且因?yàn)樗?Spring 的親兒子,自然和 Spring 契合的非常完美。
同時(shí),在設(shè)計(jì)之初,Spring MVC 就參照了其他 MVC 框架的優(yōu)缺點(diǎn)(包括 Struts),所以用起來(lái)非常爽。因此,在 MVC 框架領(lǐng)域,Spring MVC 大有一統(tǒng)天下的趨勢(shì)。
小編的建議是:可以完全放棄學(xué)Struts了,從 Spring MVC 開(kāi)始。可以這樣組合Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實(shí)現(xiàn)的后臺(tái)管理系統(tǒng) + 用戶小程序,支持 RBAC 動(dòng)態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能
Hibernate
Hibernate是一個(gè)開(kāi)放源代碼的對(duì)象關(guān)系映射框架,它對(duì)JDBC進(jìn)行了非常輕量級(jí)的對(duì)象封裝,它將POJO與數(shù)據(jù)庫(kù)表建立映射關(guān)系,是一個(gè)全自動(dòng)的orm框架,hibernate可以自動(dòng)生成SQL語(yǔ)句,自動(dòng)執(zhí)行,使得Java程序員可以隨心所欲的使用對(duì)象編程思維來(lái)操縱數(shù)據(jù)庫(kù)。 Hibernate可以應(yīng)用在任何使用JDBC的場(chǎng)合,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應(yīng)用中使用,最具革命意義的是,Hibernate可以在應(yīng)用EJB的JavaEE架構(gòu)中取代CMP,完成數(shù)據(jù)持久化的重任。
Hibernate 作為老牌的 OR 映射框架,功能非常強(qiáng)大,涵蓋面非常廣。但這既是它的優(yōu)點(diǎn),同時(shí)也成為它的“負(fù)擔(dān)”,是開(kāi)發(fā)人員“不能承受之重”。
Hibernate 的設(shè)計(jì)初衷,是為了最大程度的解放程序員,完全隔離數(shù)據(jù)庫(kù),實(shí)現(xiàn)徹底的 OR 映射。程序員甚至可以不寫(xiě)一行 SQL 語(yǔ)句,單通過(guò)配置就能實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的操作。
當(dāng)然,為了實(shí)現(xiàn)這個(gè)目標(biāo),Hibernate 也設(shè)計(jì)的非常復(fù)雜、非常精巧。就不可避免的帶來(lái)以下副作用:
- 學(xué)習(xí)成本高
- 配置復(fù)雜
- 調(diào)優(yōu)困難
前兩點(diǎn)不難理解,單說(shuō)“調(diào)優(yōu)困難”。
因?yàn)?Hibernate 的設(shè)計(jì)目標(biāo)是徹底的 OR 映射,徹底的隔離 SQL 語(yǔ)句。但必然會(huì)帶來(lái)一定的性能損失。大部分情況下,應(yīng)用如果對(duì)性能不敏感,Hibernate 也沒(méi)問(wèn)題。但應(yīng)用一旦對(duì)性能敏感,有 SQL 級(jí)別調(diào)優(yōu)的需求,Hibernate 的優(yōu)點(diǎn)反而成為缺點(diǎn)。
小編的建議是:可以完全放棄學(xué)Hibernate了。在實(shí)際開(kāi)發(fā)中,Hibernate 使用的越來(lái)越少了。大家更偏愛(ài) MyBatis 這種輕量級(jí)框架。所以,對(duì)后來(lái)學(xué)習(xí)者,學(xué) MyBatis 就夠了。
Servlet 要精通
Servlet(Server Applet)是 Java Servlet 的簡(jiǎn)稱,稱為小服務(wù)程序或服務(wù)連接器,用 Java 編寫(xiě)的服務(wù)器端程序,具有獨(dú)立于平臺(tái)和協(xié)議的特性,主要功能在于交互式地瀏覽和生成數(shù)據(jù),生成動(dòng)態(tài) Web 內(nèi)容。
Java Servlet 是運(yùn)行在 Web 服務(wù)器或應(yīng)用服務(wù)器上的程序,它是作為來(lái)自 Web 瀏覽器或其他 HTTP 客戶端的請(qǐng)求和 HTTP 服務(wù)器上的數(shù)據(jù)庫(kù)或應(yīng)用程序之間的中間層。
狹義的 Servlet 是指 Java 語(yǔ)言實(shí)現(xiàn)的一個(gè)接口,廣義的 Servlet 是指任何實(shí)現(xiàn)了這個(gè) Servlet 接口的類,一般情況下,人們將 Servlet 理解為后者。Servlet 運(yùn)行于支持 Java 的應(yīng)用服務(wù)器中。從原理上講,Servlet 可以響應(yīng)任何類型的請(qǐng)求,但絕大多數(shù)情況下 Servlet 只用來(lái)擴(kuò)展基于 HTTP 協(xié)議的 Web 服務(wù)器。
小編的建議是:Servlet 不僅要學(xué),而且要學(xué)深,學(xué)透。當(dāng)前,Servlet 雖然不再是一個(gè)主流 web 開(kāi)發(fā)技術(shù),但依然是 Java Web 開(kāi)發(fā)技術(shù)的基礎(chǔ),是 Java Web 容器的基石,是行業(yè)標(biāo)準(zhǔn)。而現(xiàn)在流行的各種 MVC 框架(包括 SpringMVC),在最底層,還是以 Servlet 為基礎(chǔ)的。
所以,如果你想要徹底掌握某個(gè) MVC 框架,則必須徹底理解 Servlet。
而且,Servlet 作為一個(gè)基礎(chǔ)設(shè)施。精通它,不僅有助于理解各種 MVC 框架。即使 Servlet 本身,也有很多實(shí)用價(jià)值。
其他
目前在國(guó)內(nèi),Java 更多是作為 web 后端技術(shù)出現(xiàn)的。因此在實(shí)際學(xué)習(xí)中,很多技術(shù)就不符合“國(guó)情”,學(xué)習(xí)的現(xiàn)實(shí)意義不大。下面我就簡(jiǎn)單列舉下。
1.Applet
作為頁(yè)面插件技術(shù),不用多說(shuō),連 flash 都快被淘汰了,更無(wú)論從未流行的 applet。
2.Swing
作為桌面 UI 框架。且不說(shuō)本身設(shè)計(jì)的咋樣?,F(xiàn)實(shí)開(kāi)發(fā)中,我接觸的桌面應(yīng)用,要么用 C++(例如 MFC),要么用 C#(Winform、WPF)。所以,Swing 就沒(méi)有學(xué)習(xí)的必要了。
3.JDBC
作為較底層的數(shù)據(jù)庫(kù)基礎(chǔ)設(shè)施,JDBC 被很多框架(例如 MyBatis)支持。但在實(shí)際開(kāi)發(fā)中,程序員即使不了解也無(wú)大礙。因此,雖然我不能建議你放棄 JDBC 學(xué)習(xí),但如果你時(shí)間有限,完全可以把它的優(yōu)先級(jí)排低一點(diǎn)。
4.XML
XML 現(xiàn)在還在廣泛應(yīng)用。但作為一個(gè) web 數(shù)據(jù)傳輸格式,正在逐漸被 JSON 替代。所以,對(duì) Java 后端學(xué)習(xí)來(lái)說(shuō),XML 簡(jiǎn)單了解即可。至于龐雜的 XML 操作 API(例如 XPath),完全不必學(xué)習(xí)。將來(lái)真要用到,再查也不遲。
總結(jié)
文章內(nèi)容描述和建議只是小編一家之言,肯定沒(méi)有考慮全面,有武斷之處,見(jiàn)諒,勿噴!
最后
一行代碼,可能會(huì)創(chuàng)造出下一個(gè)讓人驚嘆的產(chǎn)品;一個(gè)創(chuàng)新,可能會(huì)開(kāi)啟一個(gè)全新的科技時(shí)代;一份初心,可能會(huì)影響到無(wú)數(shù)人的生活;無(wú)論是在大公司工作,還是在小團(tuán)隊(duì)奮斗;無(wú)論是資深的程序員,還是剛剛?cè)胄械男率郑幻總€(gè)人的代碼,都有力量改變世界。