很多朋友在初學(xué)編程時(shí),經(jīng)常會(huì)有這樣的苦惱,在種類(lèi)繁多的諸如C、C++、C#、GO、Java等開(kāi)發(fā)語(yǔ)言中,到底該選擇哪種開(kāi)發(fā)語(yǔ)言來(lái)作為自己的主攻方向呢?
作為有多年開(kāi)發(fā)經(jīng)驗(yàn)的IT從業(yè)人員,我個(gè)人比較推崇通用編程語(yǔ)言C++和Java,這兩門(mén)語(yǔ)言長(zhǎng)期占據(jù)著全球開(kāi)發(fā)語(yǔ)言排行榜的前兩位!今天我們先來(lái)介紹一下Java開(kāi)發(fā)語(yǔ)言。
1、概述
多年以來(lái),Java始終高居*受歡迎的編程語(yǔ)言榜首位,很多科技公司都是使用Java來(lái)開(kāi)發(fā)軟件和應(yīng)用程序。Java是Web系統(tǒng)后臺(tái)開(kāi)發(fā)的*語(yǔ)言,也是大型互聯(lián)網(wǎng)公司必備的開(kāi)發(fā)語(yǔ)言,社會(huì)需求量很大。
Java具有面向?qū)ο?、分布式、健壯性、安全性、平臺(tái)獨(dú)立與可移植性(運(yùn)行在Java虛擬機(jī)上)、多線(xiàn)程、動(dòng)態(tài)性等特點(diǎn),擁有很好的跨平臺(tái)能力,是一種強(qiáng)類(lèi)型語(yǔ)言??梢跃帉?xiě)桌面應(yīng)用程序、Web應(yīng)用程序、分布式系統(tǒng)和嵌入式系統(tǒng)應(yīng)用程序等,是很多程序員*喜歡的編程語(yǔ)言。
Java也是封裝性*強(qiáng)的語(yǔ)言,幾乎封裝了所有常用的功能,比如常用文件的上傳與下載、郵件的接收與發(fā)送、JSON操作庫(kù)、線(xiàn)程池、數(shù)據(jù)庫(kù)操作等功能,這些功能以jar包的方式提供,簡(jiǎn)單易用,還具有良好的擴(kuò)展性。開(kāi)發(fā)人員只需要根據(jù)自己的業(yè)務(wù)需要,將這些功能組裝起來(lái)就好了!
除了Java開(kāi)發(fā)人員,做接口測(cè)試和自動(dòng)化測(cè)試的測(cè)試人員也會(huì)使用到Java,使用Java編寫(xiě)測(cè)試腳本和測(cè)試代碼。
所以學(xué)好Java語(yǔ)言后,可以從事Web后臺(tái)開(kāi)發(fā)工程師、大數(shù)據(jù)工程師、安卓APP應(yīng)用程序開(kāi)發(fā)工程師、自動(dòng)化測(cè)試和接口測(cè)試工程師等崗位。
2、Java的技術(shù)體系
開(kāi)始學(xué)習(xí)Java時(shí),我們都要從*基礎(chǔ)的學(xué)起,包括面向?qū)ο筇匦?、基本?shù)據(jù)類(lèi)型、抽象類(lèi)、接口、GUI圖形編程、IO、網(wǎng)絡(luò)編程等知識(shí)點(diǎn)。其中,GUI圖形編程,主要用于桌面應(yīng)用程序的開(kāi)發(fā),現(xiàn)在很少有公司在使用Java開(kāi)發(fā)桌面客戶(hù)端程序了,所以只需要大概了解一下,不必深入研究。
學(xué)完這些基礎(chǔ)知識(shí)點(diǎn)之后,我們一般需要了解一下用于Web前端編程的Html、CSS、Javascript等相關(guān)知識(shí),生成動(dòng)態(tài)網(wǎng)頁(yè)的Jsp和Servlet也需要了解一下。
這些知識(shí)點(diǎn)掌握以后,就需要研究Java的框架部分了 。*早使用的框架是SSH,即Struts+Spring+Hibernate,其中Struts用于流程控制,Spring用于業(yè)務(wù)流轉(zhuǎn),Hibernate用于對(duì)數(shù)據(jù)庫(kù)的操作。目前這個(gè)框架已經(jīng)很陳舊了,基本不用了,但還是要了解這個(gè)框架的實(shí)現(xiàn)思路和核心思想的。
現(xiàn)在常用的框架是SpringMvc和SpringBoot,這兩個(gè)框架也是我們必須要掌握的。掌握上述基礎(chǔ)與框架之后,基本就可以輕松應(yīng)對(duì)Java相關(guān)的工作了。
在掌握上述Java體系技術(shù)點(diǎn)以后,我們?cè)谌粘5拈_(kāi)發(fā)工作中還會(huì)用到很多中間件技術(shù),比如應(yīng)用服務(wù)器JBoss、緩存技術(shù)Memcached和Redis、負(fù)載均衡Nginx、消息隊(duì)列RabbitMQ、Kafka、Dubbo、Zookeeper等、Mongodb之類(lèi)的非關(guān)系數(shù)據(jù)庫(kù)、分布式框架Hadoop、應(yīng)用容器引擎Docker、大數(shù)據(jù)計(jì)算引擎Spark、云計(jì)算平臺(tái)OpenStack、分布式文件存儲(chǔ)系統(tǒng)Gluster和FreeNAS、項(xiàng)目構(gòu)建Maven、Gradle等、代碼管理Git、持續(xù)集成Jenkins等。熟練掌握這些技術(shù)點(diǎn),是從初級(jí)工程師到中級(jí)工程師,到高級(jí)工程師的必經(jīng)之路。
3、Java語(yǔ)言與大數(shù)據(jù)
Java是目前使用*為廣泛的編程語(yǔ)言之一,很多大數(shù)據(jù)處理技術(shù)與框架都是用Java寫(xiě)的。分布式文件系統(tǒng)框架Hadoop,就是用Java開(kāi)發(fā)的,在分布式環(huán)境下提供了海量數(shù)據(jù)的處理能力,Hadoop已經(jīng)成為大數(shù)據(jù)的標(biāo)配框架。
高性能、面向列、可伸縮的分布式存儲(chǔ)系統(tǒng)Hbase也是用Java開(kāi)發(fā)的,利用Hbase技術(shù)可在廉價(jià)PC Server上搭建起大規(guī)模結(jié)構(gòu)化數(shù)據(jù)集群。開(kāi)源分布式數(shù)據(jù)庫(kù)管理系統(tǒng)Cassandra、為云構(gòu)建的分布式RESTful搜索引擎Elasticsearch也都是使用Java實(shí)現(xiàn)的。因此Java是大數(shù)據(jù)工程師*喜歡的編程語(yǔ)言。想學(xué)好大數(shù)據(jù),掌握J(rèn)ava基礎(chǔ)是必不可少的。
4、Java語(yǔ)言的IDE開(kāi)發(fā)環(huán)境
(1)IntelliJ IDEA(*好的Java開(kāi)發(fā)環(huán)境,五星推薦)
IntelliJIDEA由捷克JetBrains公司(由三個(gè)俄羅斯天才程序員在捷克創(chuàng)建的公司)出品的*為重量級(jí)的IDE開(kāi)發(fā)工具,主要用于Java開(kāi)發(fā),集成了廣泛通用的組件,可以用于Web和安卓移動(dòng)應(yīng)用程序開(kāi)發(fā)。
IntelliJ IDEA在業(yè)界被公認(rèn)為*好的Java開(kāi)發(fā)工具,是廣大軟件開(kāi)發(fā)人員*喜愛(ài)、也*為推崇的一款I(lǐng)DE開(kāi)發(fā)工具,尤其在智能代碼助手、代碼自動(dòng)提示、重構(gòu)、JavaEE支持、各類(lèi)版本工具(git、svn等)、JUnit、CVS整合、代碼分析、 創(chuàng)新的GUI設(shè)計(jì)等方面的功能可以說(shuō)是超常的。
它的旗艦版本還支持HTML,CSS,PHP、MySQL,Python等。免費(fèi)版只支持Java等少數(shù)語(yǔ)言。
很多使用過(guò)IntelliJ IDEA的同事,都深深地被IDEA折服,均表示這是見(jiàn)到過(guò)的*好用的Java語(yǔ)言的開(kāi)發(fā)環(huán)境。
(2)Android Studio
開(kāi)發(fā)安卓系統(tǒng)上運(yùn)行的APP應(yīng)用程序,一般都會(huì)使用Google的Android Studio開(kāi)發(fā)環(huán)境。Android Studio是谷歌推出的一個(gè)用于開(kāi)發(fā)Android APP應(yīng)用程序的集成開(kāi)發(fā)工具,它也是基于IntelliJ IDEA開(kāi)發(fā)的。谷歌在IntelliJ IDEA社區(qū)版本的基礎(chǔ)上剔除了其他的功能,添加了支持Android開(kāi)發(fā)的插件,可以說(shuō)Android Studio是弱化版的IntelliJ IDEA。
(3)Eclipse
IBM的Eclipse是被廣泛應(yīng)用的免費(fèi)開(kāi)源的Java編輯器和IDE。Eclipse對(duì)Java進(jìn)行的深度設(shè)計(jì),擁有功能豐富的JavaEE集成開(kāi)發(fā)環(huán)境,包括了完備的編碼、調(diào)試、測(cè)試和發(fā)布功能,對(duì)HTML、Struts、JSP、CSS、Javascript、SQL,Hibernate,Spring等做了完整的封裝,利用它可以很好的提高Java開(kāi)發(fā)效率。
Eclipse有很好的插件機(jī)制,支持各種各樣的擴(kuò)展和插件,比如SpotBugs、Checkstyle等。另外,Eclipse也是一個(gè)跨平臺(tái)的IDE,支持Windows、Linux和Mac OS X等系統(tǒng)。
(4)MyEclipse
MyEclipse是在Eclipse 基礎(chǔ)上加上自己的插件開(kāi)發(fā)而成的功能強(qiáng)大的企業(yè)級(jí)集成開(kāi)發(fā)環(huán)境,主要用于Java、Java EE以及移動(dòng)應(yīng)用的開(kāi)發(fā)。在*新版本的MyEclipse中,配合CodeMix使用支持也十分廣泛,尤其是對(duì)各種開(kāi)源產(chǎn)品和主流開(kāi)發(fā)框架的支持相當(dāng)不錯(cuò)。目前已支持PHP、Python、Vue、Angular、React等語(yǔ)言和框架開(kāi)發(fā)。