最新国产在线不卡AV,国产又爽又黄的视频免费看,精品综合久久久久久97,日韩欧美高清中文字幕免费一区二区

            科普

            java語言特點及發(fā)展歷程_Java工程師需要具備技能 IT知識

            電腦知識優(yōu)爾供稿

            Java是一門面向?qū)ο蟮木幊陶Z言,不僅吸收了C++語言的各種優(yōu)點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強(qiáng)大和簡單易用兩個特征。下面是9252兒童網(wǎng)小編為大家整理的java語言特點及發(fā)展歷程,希望對你們有幫助。

            java語言特點

            1、簡單性

            Java看起來設(shè)計得很像C++,但是為了使語言小和容易熟悉,設(shè)計者們把C++語言中許多可用的特征去掉了,這些特征是一般程序員很少使用的。例如,Java不支持goto語句,代之以提供break和continue語句以及異常處理。Java還剔除了C++的操作符過載(overload)和多繼承特征,并且不使用主文件,免去了預(yù)處理程序。因為Java沒有結(jié)構(gòu),數(shù)組和串都是對象,所以不需要指針。Java能夠自動處理對象的引用和間接引用,實現(xiàn)自動的無用單元收集,使用戶不必為存儲管理問題煩惱,能更多的時間和精力花在研發(fā)上。

            2、面向?qū)ο?/p>

            Java是一個面向?qū)ο蟮恼Z言。對程序員來說,這意味著要注意其中的數(shù)據(jù)和操縱數(shù)據(jù)的方法(method),而不是嚴(yán)格地用過程來思考。在一個面向?qū)ο蟮南到y(tǒng)中,類(class)是數(shù)據(jù)和操作數(shù)據(jù)的方法的集合。數(shù)據(jù)和方法一起描述對象(object)的狀態(tài)和行為。每一對象是其狀態(tài)和行為的封裝。類是按一定體系和層次安排的,使得子類可以從超類繼承行為。在這個類層次體系中有一個根類,它是具有一般行為的類。Java程序是用類來組織的。

            Java還包括一個類的擴(kuò)展集合,分別組成各種程序包(Package),用戶可以在自己的程序中使用。例如,Java提供產(chǎn)生圖形用戶接口部件的類(java、awt包),這里awt是抽象窗口工具集(abstract windowing toolkit)的縮寫,處理輸入輸出的類(java、io包)和支持網(wǎng)絡(luò)功能的類(java、net包)。

            3、分布性

            Java設(shè)計成支持在網(wǎng)絡(luò)上應(yīng)用,它是分布式語言。Java既支持各種層次的網(wǎng)絡(luò)連接,又以Socket類支持可靠的流(stream)網(wǎng)絡(luò)連接,所以用戶可以產(chǎn)生分布式的客戶機(jī)和服務(wù)器。

            網(wǎng)絡(luò)變成軟件應(yīng)用的分布運(yùn)載工具。Java程序只要編寫一次,就可到處運(yùn)行。

            4、編譯和解釋性

            Java編譯程序生成字節(jié)碼(byte-code),而不是通常的機(jī)器碼。Java字節(jié)碼提供對體系結(jié)構(gòu)中性的目標(biāo)文件格式,代碼設(shè)計成可有效地傳送程序到多個平臺。Java程序可以在任何實現(xiàn)了Java解釋程序和運(yùn)行系統(tǒng)(run-time system)的系統(tǒng)上運(yùn)行。

            在一個解釋性的環(huán)境中,程序開發(fā)的標(biāo)準(zhǔn)“鏈接”階段大大消失了。如果說Java還有一個鏈接階段,它只是把新類裝進(jìn)環(huán)境的過程,它是增量式的、輕量級的過程。因此,Java支持快速原型和容易試驗,它將導(dǎo)致快速程序開發(fā)。這是一個與傳統(tǒng)的、耗時的“編譯、鏈接和測試”形成鮮明對比的精巧的開發(fā)過程。

            5、穩(wěn)健性

            Java原來是用作編寫消費(fèi)類家用電子產(chǎn)品軟件的語言,所以它是被設(shè)計成寫高可靠和穩(wěn)健軟件的。Java消除了某些編程錯誤,使得用它寫可靠軟件相當(dāng)容易。

            Java是一個強(qiáng)類型語言,它允許擴(kuò)展編譯時檢查潛在類型不匹配問題的功能。Java要求顯式的方法聲明,它不支持C風(fēng)格的隱式聲明。這些嚴(yán)格的要求保證編譯程序能捕捉調(diào)用錯誤,這就導(dǎo)致更可靠的程序。

            可靠性方面最重要的增強(qiáng)之一是Java的存儲模型。Java不支持指針,它消除重寫存儲和訛誤數(shù)據(jù)的可能性。類似地,Java自動的“無用單元收集”預(yù)防存儲漏泄和其它有關(guān)動態(tài)存儲分配和解除分配的有害錯誤。Java解釋程序也執(zhí)行許多運(yùn)行時的檢查,諸如驗證所有數(shù)組和串訪問是否在界限之內(nèi)。

            異常處理是Java中使得程序更穩(wěn)健的另一個特征。異常是某種類似于錯誤的異常條件出現(xiàn)的信號。使用try/catch/finally語句,程序員可以找到出錯的處理代碼,這就簡化了出錯處理和恢復(fù)的任務(wù)。

            6、安全性

            Java的存儲分配模型是它防御惡意代碼的主要方法之一。Java沒有指針,所以程序員不能得到隱蔽起來的內(nèi)幕和偽造指針去指向存儲器。更重要的是,Java編譯程序不處理存儲安排決策,所以程序員不能通過查看聲明去猜測類的實際存儲安排。編譯的Java代碼中的存儲引用在運(yùn)行時由Java解釋程序決定實際存儲地址。

            Java運(yùn)行系統(tǒng)使用字節(jié)碼驗證過程來保證裝載到網(wǎng)絡(luò)上的代碼不違背任何Java語言限制。這個安全機(jī)制部分包括類如何從網(wǎng)上裝載。例如,裝載的類是放在分開的名字空間而不是局部類,預(yù)防惡意的小應(yīng)用程序用它自己的版本來代替標(biāo)準(zhǔn)Java類。

            7、可移植性

            Java使得語言聲明不依賴于實現(xiàn)的方面。例如,Java顯式說明每個基本數(shù)據(jù)類型的大小和它的運(yùn)算行為(這些數(shù)據(jù)類型由Java語法描述)。

            Java環(huán)境本身對新的硬件平臺和操作系統(tǒng)是可移植的。Java編譯程序也用Java編寫,而Java運(yùn)行系統(tǒng)用ANSIC語言編寫。

            8、高性能

            Java是一種先編譯后解釋的語言,所以它不如全編譯性語言快。但是有些情況下性能是很要緊的,為了支持這些情況,Java設(shè)計者制作了“及時”編譯程序,它能在運(yùn)行時把Java字節(jié)碼翻譯成特定CPU(中央處理器)的機(jī)器代碼,也就是實現(xiàn)全編譯了。

            Java字節(jié)碼格式設(shè)計時考慮到這些“及時”編譯程序的需要,所以生成機(jī)器代碼的過程相當(dāng)簡單,它能產(chǎn)生相當(dāng)好的代碼。

            9、多線程性

            Java是多線程語言,它提供支持多線程的執(zhí)行(也稱為輕便過程),能處理不同任務(wù),使具有線索的程序設(shè)計很容易。Java的lang包提供一個Thread類,它支持開始線索、運(yùn)行線索、停止線索和檢查線索狀態(tài)的方法。

            Java的線索支持也包括一組同步原語。這些原語是基于監(jiān)督程序和條件變量風(fēng)范,由C、A、R、Haore開發(fā)的廣泛使用的同步化方案。用關(guān)鍵詞synchronized,程序員可以說明某些方法在一個類中不能并發(fā)地運(yùn)行。這些方法在監(jiān)督程序控制之下,確保變量維持在一個一致的狀態(tài)。

            10、動態(tài)性

            Java語言設(shè)計成適應(yīng)于變化的環(huán)境,它是一個動態(tài)的語言。例如,Java中的類是根據(jù)需要載入的,甚至有些是通過網(wǎng)絡(luò)獲取的。

            Java的發(fā)展歷程

            Java 的發(fā)展要追溯到 1991 年,Patrick Naughton(帕特里克·諾頓)和 James Gosling(詹姆斯·高斯林)帶領(lǐng) Sun 公司的工程師打算為有線電視轉(zhuǎn)換盒之類的消費(fèi)產(chǎn)品設(shè)計一種小型語言,因為這些設(shè)備的處理能力和內(nèi)存都有限,所以要求語言必須要小且能生成緊湊的代碼。另外由于處理器的多樣性,這種語言不能與任何體系結(jié)構(gòu)有關(guān)聯(lián),這個項目就被命名為“Green”(參考國內(nèi)許多軟件綠色版)。提起平臺無關(guān)性,Pascal 之父 Niklaus Wirth(尼古拉斯·沃斯)曾帶領(lǐng)團(tuán)隊設(shè)計出一種為假想的機(jī)器生成中間代碼的可移植語言,而這種假想的機(jī)器被稱為虛擬機(jī),Java 虛擬機(jī)(JVM)就是由此而來。由于當(dāng)時 Sun 公司的人都有 Unix 應(yīng)用開發(fā)經(jīng)驗,所以語言是以 C++ 為基礎(chǔ),Gosling 將這種語言命名為 Oak,隨后發(fā)現(xiàn) Oak 是一種已有的計算機(jī)語言的名字,于是將其改名為 Java。

            1992 年 Green 項目組發(fā)布了第一個產(chǎn)品,主要特性為智能遠(yuǎn)程控制,然而沒有一家公司對比感興趣,包括 Sun。而后 Green 項目組以 First Person 公司花費(fèi) 1993 年整整一年以及 1994 年上半年的時間來尋找其技術(shù)的買家,然而一個也沒有找到。1994 年 First Person 公司解散,而工作還在 Sun 公司中繼續(xù)進(jìn)行,同時互聯(lián)網(wǎng)業(yè)日漸壯大,Web 的關(guān)鍵是把超文本界面轉(zhuǎn)換到瀏覽器中,1994 年大部分人都在使用 Mosaic,Java 的開發(fā)者為了炫耀 Java 語言超強(qiáng)的能力,開發(fā)了 HotJava 瀏覽器,HotJava 具有執(zhí)行網(wǎng)頁中內(nèi)嵌代碼的能力,即所謂的 applet,在 1995 年 5 月 23 日的 SunWorld 上,這一技術(shù)印證得到了展示,同時引發(fā)了對 Java 的狂熱追逐并延續(xù)至今。

            1996 年年初,Sun 發(fā)布了 Java 的第一個版本,但是這個版本并不能進(jìn)行真正的應(yīng)用開發(fā),隨后而來的 Java 1.1 彌補(bǔ)了許多明顯的缺陷,大大改進(jìn)了反射能力,并為 GUI 編程增加了新的事件處理模型,但是仍具有很大的局限性。1998 年 JavaOne 會議上,Java 1.2 版發(fā)布,取代了之前玩具式的 GUI,并且圖形工具箱更加精細(xì)而具有可伸縮性,此次更新推出了標(biāo)準(zhǔn)版、微型版和企業(yè)版,即 Java2 SE、Java2 ME和Java2 EE。2000 年發(fā)布的 1.3 版和 2002 年發(fā)布的 1.4 版只是對 Java2 版本進(jìn)行 BUG 修正,擴(kuò)展了標(biāo)準(zhǔn)類庫,提高了系統(tǒng)性能,而在此期間,applet 漸漸淡出了客戶端的應(yīng)用,Java 成為服務(wù)器端應(yīng)用的首選平臺。

            2004 年 Java 5.0(一開始命名為 1.5,但是在 JavaOne 會議后版本號提升至 5.0)發(fā)布,這是自 1.1 版以來第一個對 Java 做出重大改進(jìn)的版本,此次更新添加了泛型類型、“for each”循環(huán)、自動裝箱和元數(shù)據(jù)等。2006 年年末,Java 6 發(fā)布,但是此次更新僅僅改進(jìn)了性能、增強(qiáng)了類庫,并未對語言方面再進(jìn)行改進(jìn)。2009 年,Sun 被 Oracle 收購,因此 Java 的開發(fā)停滯了很長一段時間,直到 2011 年 Oracle 發(fā)布了 Java 7,但是只是做了一些簡單的改進(jìn),決定把重要改進(jìn)留到 Java 8。

            2014 年 Oracle 發(fā)布了 Java 8,此次更新的重點之一就是 Lambda 表達(dá)式,目的是使 Java 更易于為多核處理器編寫代碼;其次新加入的 Nashorn 引擎也使得 Java 程序可以和 JavaScript 代碼互操作;加入了新的類庫并改進(jìn) GC 和并發(fā)。由于版本升級帶來的學(xué)習(xí)成本提升和語法變更導(dǎo)致的后期維護(hù)難度提升等因素,Java 8在這篇文章更新時( 2018 年 5 月)還未在實際開發(fā)中大范圍的投入使用。

            2017 年 9 月,在 Java 8 還未大范圍投入使用的時候,Oracle 發(fā)布了 Java 9。此次更新的最主要功能為模塊化開發(fā),隨著 Java 這么多年的發(fā)展,其本身類庫及第三方提供的類庫越來越多也越來越大,通常一個系統(tǒng)中需要包含大量的冗余代碼,Java 希望通過模塊化的方式減少冗余代碼,提升性能、安全性和可維護(hù)性。另外 Java 9 還增加了 HTTP/2 支持、私有接口方法、多版本兼容 JAR、修改了默認(rèn)垃圾回收器以及增強(qiáng) IO 流等。

            2018 年 3 月,Oracle 發(fā)布了 Java 10,此次更新合并了 JDK 的多個代碼倉庫,主要更新為局部變量的類型推斷,引入"var"關(guān)鍵字,可以隨意定義變量而不必指定變量的類型,個人認(rèn)為這一更新可能會增加代碼的維護(hù)難度,具體還需要在實踐中驗證,另外 Java 10 還包括諸如 GC 改進(jìn)、線程局部管控、基于 Java 的 JIT 編譯器以及證書相關(guān)等更新。

            按照當(dāng)前的 Java 更新計劃,Java 11 將會在 2018 年 9 月份發(fā)布,目前已公布的更新內(nèi)容主要是 Epsilon 垃圾收集器和lambda 參數(shù)的局部變量語法,同時會移除 Java EE和CORBA 模塊,以及 JavaFX 將作為獨立模塊提供,不再包含在 JDK 安裝包中。官方將在 2026 前對 Java 11 提供支持,可以看出 Java 11 將會是一個長期支持的穩(wěn)定版本。按照目前 Oracle 的開發(fā)計劃,半年一個版本,兩年一個長期支持版本,Java 12 將在 2019 年 3 月份發(fā)布,Java 15 將會是下一個長期支持版本。

            Java工程師需要具備什么技能

            1、夯實的java基礎(chǔ)

            當(dāng)前的java新技術(shù)層出不窮,各企業(yè)的有不同的側(cè)重點,根據(jù)企業(yè)用人的需求,只有具備堅實的java基礎(chǔ)功底的程序員才能快速掌握新的技術(shù)。需要在核心算法、面向?qū)ο髴?yīng)用、數(shù)據(jù)結(jié)合及集合框架、反射、輸入輸出、多線程、異常處理等方面進(jìn)行深入學(xué)習(xí)。

            2、熟悉Linux操作系統(tǒng)

            Linux是當(dāng)今用作廣泛的服務(wù)器操作系統(tǒng)。合格的java高級工程師必須具備熟練地Linux操作技巧,這也正是在企業(yè)面試中獲得加分的重要指標(biāo)之一。

            3、深入學(xué)習(xí)數(shù)據(jù)庫技術(shù)

            互聯(lián)網(wǎng)公司對Java應(yīng)用離不開數(shù)據(jù)庫技術(shù)。任何一個大中型應(yīng)用,數(shù)據(jù)庫設(shè)計的好壞、數(shù)據(jù)庫訪問的效率直接決定了該項目的成敗。當(dāng)前數(shù)據(jù)庫最主流的技術(shù)有Oracle和MySQL兩種,除了能熟練應(yīng)用數(shù)據(jù)庫體系結(jié)構(gòu)和SQL語句之外,還要掌握數(shù)據(jù)庫設(shè)計、SQL語句優(yōu)化方面。

            4、系統(tǒng)的Web前端技術(shù)

            隨著互聯(lián)網(wǎng)技術(shù)由Web2.0向Web3.0邁進(jìn),Web前端技術(shù),包括HTML、CSS特別是java script語言越來越被企業(yè)重視。很多企業(yè)為此設(shè)置“Web前端工程師”崗位,所以作為一名合格的java高級工程師要不斷學(xué)習(xí)包括java script在內(nèi)的Java知識還有其相關(guān)的Ajax、JQuery框架、Ext-JS框架。

            5、企業(yè)及框架

            Java是組件和框架的世界,所有的java程序員都應(yīng)當(dāng)了解java框架。

            6、專門的企業(yè)級開發(fā)及部署環(huán)境

            企業(yè)在開發(fā)、測試、部署實際項目時需要有特定的軟件環(huán)境,但是很多技術(shù)人員往往不太重視這個,所以在工作中會出現(xiàn)很多問題和失誤甚至被淘汰。因此,作為java工程師對Linux高級命令集腳本編程、遠(yuǎn)程登錄、Art、單元測試技術(shù)、Maven構(gòu)建技術(shù)、SVN應(yīng)用技術(shù)等要有所了解。

            7、規(guī)范的企業(yè)開發(fā)流程及文檔

            軟件開發(fā)是團(tuán)隊合作,因此企業(yè)開發(fā)流程和文檔規(guī)范尤為重要。這也是區(qū)分“草根程序員”和“正規(guī)程序員”的重要指標(biāo)之一。開發(fā)項目項目無論大小都應(yīng)該按照企業(yè)開發(fā)的流程進(jìn)行(需求分析、系統(tǒng)設(shè)計、編碼實現(xiàn)、單元測試、系統(tǒng)測試、部署上線)。

              為你推薦