微機(jī)原理鬧危機(jī),隨機(jī)過程隨機(jī)過,實(shí)變函數(shù)學(xué)十遍,匯編語言不會(huì)編。(三)第三代語言:高級(jí)語言。高級(jí)語言又分面向過程語言和面向?qū)ο笳Z言。C語言是面向過程變成語言中的佼佼者,同期的其他語言基本已經(jīng)被拋棄了,但是C語言一直沿用了下來,至今仍然在占據(jù)著TIOBE編程語言榜單的重要位置(難道在給C語言起名字的時(shí)候就有C位一說么?);而面向過程語言中的佼佼者就是C++和Java,尤其是Java語言,憑借其開源及優(yōu)秀的可移植性,占據(jù)著很大的市場(chǎng)。在高級(jí)語言時(shí)期,編程語言的語法更加的友好,可讀性和可維護(hù)性更強(qiáng),使得語言的學(xué)習(xí)難度進(jìn)一步的降低。而Java作為面向?qū)ο笳Z言中的佼佼者,還接管了讓人頭疼的指針和內(nèi)存管理工作(其實(shí)是JVM的能力),使得其學(xué)習(xí)難度進(jìn)一步的降低。
此外,腳本語言也逐漸流行起來?;鸨腜ython和Go都出現(xiàn)在了TIOBE的TOP20榜單中。
編程語言的不斷“革命”,其實(shí)就是編程語言學(xué)習(xí)門檻在不斷降低的有力證明,因?yàn)榇蠹铱偸歉矚g簡(jiǎn)單且高效的事物。
二、強(qiáng)大的公共組件支持
現(xiàn)在的軟件開發(fā)離不開各種組件(中間件、應(yīng)用級(jí)框架等),組件為我們的開發(fā)提供了很多的便利條件,讓我們的程序員能夠?qū)⒏嗟木ν度氲綐I(yè)務(wù)邏輯上。我們不妨設(shè)想一下,如果沒有了框架和中間件,即使有Java這種高級(jí)語言的存在,想快速構(gòu)建一個(gè)系統(tǒng)也是非常困難的。為了能夠更加直觀的體會(huì)到組件的發(fā)展,我將結(jié)合我從業(yè)以來應(yīng)用級(jí)框架的發(fā)展情況進(jìn)行介紹。
(一)J2EE。這是一個(gè)Java官方牽頭制定,并得到廣泛認(rèn)可的企業(yè)級(jí)規(guī)范。在這套規(guī)范中,我們可以通過servlet組件來很便捷的處理WEB請(qǐng)求,使用jsp組件對(duì)頁面進(jìn)行動(dòng)態(tài)的渲染,使用JDBC與數(shù)據(jù)庫建立良好的交互。J2EE不需要開發(fā)者關(guān)注傳輸層協(xié)議(這部分工作由WEB中間實(shí)現(xiàn)),僅需要關(guān)注應(yīng)用層實(shí)現(xiàn)即可,但是基于Servlet/jsp進(jìn)行開發(fā)還是比較繁瑣的。我來簡(jiǎn)單介紹下使用Servlet/jsp進(jìn)行開發(fā)的一些基本流程,童鞋們可以感受一下。
創(chuàng)建web項(xiàng)目;
編寫
web.xml
文件(web.xml
是J2EE的核心配置文件,也是應(yīng)用和中間件連接的橋梁);編寫Filter、Servlet;
編寫Jsp動(dòng)態(tài)頁面;
打成war包,并提交到web中間件上。
主要的工作在第3步,在開發(fā)過程中需要考慮字符集、線程安全問題,還需要手動(dòng)獲取請(qǐng)求參數(shù)、手動(dòng)寫出應(yīng)答數(shù)據(jù),程序最終需要發(fā)布到web中間件上來運(yùn)行。
(二)SSH,這是Spring+Struts2+Hibernate的簡(jiǎn)寫。SSH很好的落地了MVC模式,由Struts2負(fù)責(zé)業(yè)務(wù)控制層處理,HIbernate封裝對(duì)數(shù)據(jù)庫的操作,Spring負(fù)責(zé)解耦以及整個(gè)項(xiàng)目的整合。相對(duì)于Servlet/jsp來說,SSH確實(shí)要在編碼方面簡(jiǎn)化了不少,不再需要人工的獲取參數(shù),也不需要“寫死”依賴到代碼中,繁瑣的數(shù)據(jù)庫事務(wù)也被AOP接管。雖然相對(duì)Servlet來說少了不少開發(fā)工作量,但是超多的配置文件和jar包的依賴成了開發(fā)人員的負(fù)擔(dān),曾經(jīng)有些開發(fā)人員戲稱自己為配置工程師~。
(三)SSM,Spring+SpringMVC+MyBatis的簡(jiǎn)寫。簡(jiǎn)單而安全的SpringMVC代替了Struts2(繁瑣且頻繁有漏洞),輕量高效的MyBatis代替了Hibernate(框架比較重,問題也比較多)。注解的出現(xiàn),使得項(xiàng)目的配置內(nèi)容大幅度減少。于此同時(shí),Maven也流行了起來,可以比較方便的管理項(xiàng)目的第三方依賴。
(四)SpringBoot,SpringBoot的優(yōu)秀可以通過其流行程度來證明。在SpringBoot中內(nèi)嵌了web容器,并且提供了豐富的plugin,可以讓項(xiàng)目以jar包的方式運(yùn)行。此外,對(duì)依賴jar包的管理也更加簡(jiǎn)單,在其他方面也提供了一站式服務(wù)的能力。
綜合java主流的應(yīng)用級(jí)框架的發(fā)展情況來看,雖然都是基于J2EE標(biāo)準(zhǔn),但是從開發(fā)、配置、管理、運(yùn)維等方面都在不斷的進(jìn)行提升,應(yīng)用框架將很多與業(yè)務(wù)無關(guān)的技術(shù)細(xì)節(jié)進(jìn)行了處理,開發(fā)人員只需要關(guān)注相應(yīng)的業(yè)務(wù)實(shí)現(xiàn)即可。
可見,隨著語言門檻的不斷降低,應(yīng)用框架及相關(guān)組件日益成熟,IT從業(yè)的門檻是相對(duì)(過去)較低的。
培訓(xùn)速成
我們需要對(duì)入門有一個(gè)相對(duì)客觀的定義,我認(rèn)為入門的標(biāo)準(zhǔn)為:具備獨(dú)立承擔(dān)開發(fā)任務(wù)的能力(有師父帶的那種不算)?,F(xiàn)階段對(duì)開發(fā)人員的最低(入門級(jí),外包公司能賣人頭的那種。大廠、獨(dú)角獸、互聯(lián)網(wǎng)等等尖端的先不計(jì)算在內(nèi))要求主要包括四個(gè)方面(行業(yè)/公司還會(huì)有其他要求):
語言,需要熟練掌握語言的語法(編譯都過不去的不能要)
API,需要熟悉常見的API(String、Date、IO、BIO等)
框架,SSM、SpringBoot(應(yīng)用層面必須掌握)
數(shù)據(jù)庫,基本增刪改查、關(guān)聯(lián)查詢要掌握
單從以上四點(diǎn)來看,幾乎所有java培訓(xùn)班提供的課程安排都是能覆蓋到的,但是,從我參加培訓(xùn)的情況以及后續(xù)從培訓(xùn)機(jī)構(gòu)招聘的情況來看,學(xué)員之間的差距還是非常大的,差不多滿足2/8原則吧(畢竟培訓(xùn)班是商業(yè)化機(jī)構(gòu))。
因此,“靠培訓(xùn)就可以入門”有點(diǎn)絕對(duì)了,培訓(xùn)就是學(xué)習(xí)的過程,一定會(huì)有差異,除了自身的努力之外,還要看老天爺賞不賞飯。所以,報(bào)班還是要理性一些。另外,選擇培訓(xùn)機(jī)構(gòu)也要謹(jǐn)慎(有些培訓(xùn)機(jī)構(gòu)會(huì)存在學(xué)員畢業(yè)直接成講師的情況),一定要試聽!
培訓(xùn)速成是適用于老天爺賞飯并且自身還非常努力的同學(xué)的!
程序員是一個(gè)需要持續(xù)學(xué)習(xí)的職業(yè),IT也是一個(gè)需要持續(xù)學(xué)習(xí)的行業(yè),入門不是目的,走下去才是目的,只有持續(xù)學(xué)習(xí)才能在這條路上走的更遠(yuǎn)!與君共勉!
我是一名程序員,更多精彩請(qǐng)關(guān)注:空心小窩頭