Java會被新興語言取代嗎?
雖然現(xiàn)在不能完全說Java 經(jīng)久不衰抖拴,但是未來一段時間內(nèi)燎字,想要完全取代Java 并不是那么容易的事。
Java 為何經(jīng)久不衰阿宅?
1995年5月23日 Java 誕生候衍。
憑借著"Write Once,run Anywhere(一次編寫,到處運行)"的經(jīng)典宣言洒放、每六個月更新一次的發(fā)版頻率蛉鹿,其在Tiobe、Pypl 以及 RedMonk 等編程語榜上笑傲多年往湿,并且在計算技術(shù)數(shù)十年的發(fā)展演變之后仍保持著旺盛的活力妖异。
時至今日,Java 仍是后臺開發(fā)人員最為可靠的技能儲備之一领追。
1.Java 的定義
Java 是由 Sun Microsystems 公司于 1995 年 5 月推出的高級程序設(shè)計語言他膳。
Java是一門面向?qū)ο蟮木幊陶Z言,不僅吸收了C++語言的各種優(yōu)點绒窑,還摒棄了C++里難以理解的多繼承棕孙、指針等概念,因此Java語言具有功能強大和簡單易用兩個特征些膨。Java語言作為靜態(tài)面向?qū)ο缶幊陶Z言的代表蟀俊,極好地實現(xiàn)了面向?qū)ο罄碚摚试S程序員以優(yōu)雅的思維方式進行復(fù)雜的編程订雾。
2肢预、Java 的特性
2.1、簡單性
跟C++相比較而言洼哎,因為Java沒有結(jié)構(gòu)烫映,數(shù)組和串都是對象,所以不需要指針谱净。Java能夠自動處理對象的引用和間接引用窑邦,實現(xiàn)自動的無用單元收集,使用戶不必為存儲管理問題煩惱壕探,能更多的時間和精力花在研發(fā)上郊丛。
2.2李请、面向?qū)ο?/h5>
Java是一個面向?qū)ο蟮恼Z言。對程序員來說导盅,這意味著要注意其中的數(shù)據(jù)和操縱數(shù)據(jù)的方法(method)较幌,而不是嚴格地用過程來思考白翻。在一個面向?qū)ο蟮南到y(tǒng)中,類(class)是數(shù)據(jù)和操作數(shù)據(jù)的方法的集合滤馍。數(shù)據(jù)和方法一起描述對象(object)的狀態(tài)和行為岛琼。每一對象是其狀態(tài)和行為的封裝。
2.3槐瑞、分布性
網(wǎng)絡(luò)變成軟件應(yīng)用的分布運載工具。Java程序只要編寫一次阁苞,就可到處運行。
2.4那槽、編譯和解釋性
Java編譯程序生成字節(jié)碼(byte-code)悼沿,而不是通常的機器碼。Java字節(jié)碼提供對體系結(jié)構(gòu)中性的目標文件格式显沈,代碼設(shè)計成可有效地傳送程序到多個平臺。Java程序可以在任何實現(xiàn)了Java解釋程序和運行系統(tǒng)(run-time system)的系統(tǒng)上運行逢唤。
2.5、穩(wěn)健性
比如異常處理是Java中使得程序更穩(wěn)健的一個特征鳖藕。異常是某種類似于錯誤的異常條件出現(xiàn)的信號魔慷。使用 try/catch/finally 語句,程序員可以找到出錯的處理代碼著恩,這就簡化了出錯處理和恢復(fù)的任務(wù)院尔。
2.6、安全性
Java的存儲分配模型是它防御惡意代碼的主要方法之一喉誊。Java沒有指針邀摆,所以程序員不能得到隱蔽起來的內(nèi)幕和偽造指針去指向存儲器。更重要的是伍茄,Java編譯程序不處理存儲安排決策栋盹,所以程序員不能通過查看聲明去猜測類的實際存儲安排。編譯的Java代碼中的存儲引用在運行時由Java解釋程序決定實際存儲地址敷矫。
2.7例获、可移植性
Java使得語言聲明不依賴于實現(xiàn)的方面汉额。例如,Java顯式說明每個基本數(shù)據(jù)類型的大小和它的運算行為(這些數(shù)據(jù)類型由Java語法描述)榨汤。
Java環(huán)境本身對新的硬件平臺和操作系統(tǒng)是可移植的蠕搜。Java編譯程序也用Java編寫,而Java運行系統(tǒng)用ANSIC語言編寫收壕。
2.8妓灌、高性能
Java是一種先編譯后解釋的語言,所以它不如全編譯性語言快蜜宪。但是有些情況下性能是很要緊的虫埂,為了支持這些情況,Java設(shè)計者制作了“及時”編譯程序端壳,它能在運行時把Java字節(jié)碼翻譯成特定CPU(中央處理器)的機器代碼告丢,也就是實現(xiàn)全編譯了。
Java字節(jié)碼格式設(shè)計時考慮到這些“及時”編譯程序的需要损谦,所以生成機器代碼的過程相當簡單岖免,它能產(chǎn)生相當好的代碼。
2.9照捡、多線程性
Java是多線程語言颅湘,它提供支持多線程的執(zhí)行(也稱為輕便過程),能處理不同任務(wù)栗精,使具有線索的程序設(shè)計很容易闯参。Java的lang包提供一個Thread類,它支持開始線索悲立、運行線索鹿寨、停止線索和檢查線索狀態(tài)的方法。
Java的線索支持也包括一組同步原語脚草。這些原語是基于監(jiān)督程序和條件變量風范,由C.A.R.Haore開發(fā)的廣泛使用的同步化方案原献。用關(guān)鍵詞synchronized,程序員可以說明某些方法在一個類中不能并發(fā)地運行姑隅。這些方法在監(jiān)督程序控制之下,確保變量維持在一個一致的狀態(tài)讲仰。
2.10慕趴、動態(tài)性
Java語言設(shè)計成適應(yīng)于變化的環(huán)境,它是一個動態(tài)的語言霹俺。例如柔吼,Java中的類是根據(jù)需要載入的,甚至有些是通過網(wǎng)絡(luò)獲取的愈魏。
3觅玻、Java 三劍客Jdk培漏,Jre、Jvm之間啥關(guān)系呢牌柄?
JVM:英文全拼是 Java Virtual Machine,翻譯過來就是Java虛擬機珊佣。它只認識class類型的文件蹋宦,也就是Java文件被編譯后生成的文件咒锻,它能夠?qū)lass文件中的字節(jié)碼指令進行識別并調(diào)用操作系統(tǒng)上的API完成作業(yè)。也是Java能夠?qū)崿F(xiàn)跨平臺惑艇,一次編譯蒿辙,到處運行的核心滨巴。
JRE:英文全拼是Java Runtime Environment,翻譯過來也就是Java運行時環(huán)境恭取,它主要包含兩個部分,JVM和運行時所需要的核心類庫秽荤,負責提供Java運行環(huán)境和Java文件的編譯工作甜奄。
在JDK的安裝目錄下有一個名為jre的目錄窃款,里面有兩個文件夾bin和lib,在這里可以認為bin里的就是jvm晨继,lib中則是jvm工作所需要的類庫烟阐,而jvm和lib和起來就稱為jre。
JDK:英文全拼是Java Development Kit唉擂,翻譯過來就是Java開發(fā)工具包。是Java開發(fā)的核心檀葛,它集成了JRE和一些好用的工具命令。例如:java屿聋、javac、jar等常用命令润讥。
4转锈、Java 工作原理
把源文件編譯生成一種二進制中間碼楚殿,存儲在class文件中,然后再通過運行與操作系統(tǒng)平臺環(huán)境相對應(yīng)的Java虛擬機來運行class文件脆粥,執(zhí)行編譯產(chǎn)生的字節(jié)碼,調(diào)用class文件中實現(xiàn)的方法來滿足程序的Java API調(diào)用 冠绢。
5抚吠、我的第一個Java程序
打開我們的記事本弟胀,來展示我們的 Java 編程,創(chuàng)建文件 HelloWorld.java(文件名需與類名一致), 代碼如下:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
Hello World 就這樣孵户,我們的 Java 程序就正式問世了。
javac 編譯夏哭,java 執(zhí)行我們的字節(jié)碼 class文件就 Ok了检柬。
是不是很簡單呢竖配?
6、 Jdk版本迭代
1990年末进胯,Sun公司啟“Green計劃”,由James Gosling領(lǐng)導胁镐,旨在開發(fā)嵌入式系統(tǒng)偎血,C++到 Oak。
1992 年 Oak 相關(guān)操作系統(tǒng)颇玷、類庫等完成笨农,11 月帖渠,“Green 計劃”被轉(zhuǎn)化成“FirstPerson 有限公司”(致力高度互動的設(shè)備),關(guān)于機頂盒的交易屢敗阿弃,Green 項目幾乎接近夭折羞延。
1994 年互聯(lián)網(wǎng)和瀏覽器出現(xiàn)渣淳,對 Oak 改進出現(xiàn)第一個 Java 語言的網(wǎng)頁瀏覽器 WebRunner伴箩,并得到 Sun 的賞析,由于 Oak 已被別人注冊嗤谚,因此改名為 Java棺蛛。
1995 年 Sun 公司發(fā)布了 Java 語言巩步,并將源代碼毫不保留地放到互聯(lián)網(wǎng)上,幾個月后椅野,Java 成為互聯(lián)網(wǎng)上最熱門的寶貝终畅,涌現(xiàn)了大量 Java 小程序(Applet)竟闪,Java 在移動互聯(lián)網(wǎng)上主要用于交互、動畫炼蛤。至此妖爷,Java 誕生理朋。
1996 年 Flash 的出現(xiàn)逐漸吞噬了 Java 在網(wǎng)頁上的應(yīng)用。第一個 JDK 誕生嗽上。
1998 年定位到企業(yè)、桌面和移動 3 個領(lǐng)域炸裆,Java 飛速發(fā)展垃它。
1999 年 Sun 公司發(fā)布 J2SE、J2EE国拇、J2EE。
2004 年 Java SE5.0 發(fā)布酱吝。
2007 年 Google 推出的 Android 給 Java 帶來了新的發(fā)展機會。
2009 年 Sun 公司被 Oracle 以總價值約 74 億美元收購务热,獲得兩項軟件資產(chǎn)忆嗜,Java 和 Solaris崎岂。
2012 年,Java 7 發(fā)布 冲甘。
2014年3月绩卤,JavaSE 8 發(fā)布江醇。
2017年9月,JavaSE 9 發(fā)布陶夜。
2018年3月凛驮,Java SE 10 發(fā)布条辟。
2018年9月,Java SE 11 發(fā)布捂贿。
2019年3月纠修,Java SE 12 發(fā)布厂僧。
2019年9月,Java SE 13 發(fā)布颜屠。
2020年3月,Java SE 14 發(fā)布甫窟。
2020年9月密浑,Java SE 15 發(fā)布粗井。
2021年3月街图,Java SE 16 發(fā)布。
2021年9月懒构,Java SE 17 發(fā)布。
2022年3月胆剧,Java SE 18 發(fā)布絮姆。
不得不說版本的更新迭代類似社區(qū)用戶的活躍度秩霍,更新越快,就代表它的活躍度越高铃绒。
7、中國編程語言排行榜
過去的十多年匿垄,java幾乎每年都是全世界使用人數(shù)第一的語言移宅。推薦:Java椿疗,屠榜之王糠悼!編程界的半壁山。
7.1倔喂、編程語言比例
7.2铝条、Java 占比人數(shù)依然最多
8席噩、廣泛的應(yīng)用領(lǐng)域
全世界數(shù)百萬的IT企業(yè)構(gòu)建了龐大的Java生態(tài)圈,大量的軟件基于Java開發(fā)悼枢。
Java目前在企業(yè)級軟件開發(fā)、安卓開發(fā)馒索、大數(shù)據(jù)莹妒、云計算等方方面面都是主流的編程語言绰上。
8.1、有關(guān)通信及網(wǎng)絡(luò)的大型企業(yè):移動蜈块、聯(lián)通鉴腻、電信、網(wǎng)通主要的信息化都是Java爽哎;
8.2、有關(guān)金融行的大型企業(yè)倦青,所有的銀行瓮床、證券公司如工商銀行产镐、建設(shè)銀行;大型管理系統(tǒng)如供應(yīng)鏈癣亚、客戶管理系統(tǒng)等丑掺;
8.3述雾、電子政務(wù),主要使用JavaEE玻孟,相關(guān)的政府部門絕大多數(shù)的信息化系統(tǒng)是Java開發(fā)的唆缴;
8.4黍翎、游戲,很多手機游戲都是用Java的匣掸。
這個生態(tài)圈的影響力越來越大趟紊,需要的人才也越來越多碰酝。越多人會Java,就有越多軟件使用Java編寫送爸,反過來促進需要更多的Java人才铛嘱。
這就是著名的“馬太效應(yīng)”碱璃,即“強者越強,弱者越弱”嵌器。選擇方向這件事肛真,有時候就是看興趣爽航,看機遇乾忱,看你能堅持多久,如果你對一個方向感興趣历极,并且愿意持續(xù)學習,不斷深挖趟卸,這個方向可能就適合你蹄葱,當你在這個方向投入了一定時間之后锄列,有了一定積累和經(jīng)驗,就不太容易再改變方向了邻邮。如果你下定決心選擇Java竣况,就得在這條技術(shù)路上不斷深挖筒严,不可老是搖擺不定,否則只是浪費時間鸭蛙。
看到這里摹恨,你認為Java 會被新興語言取代嗎规惰?
記得點贊評論哦!