Java 起源與誕生
JavaEE:12天掌握J(rèn)ava語言開發(fā) - Java-環(huán)境搭建及基礎(chǔ)語法 - 創(chuàng)客學(xué)院直播室
20世紀(jì)90年代劫樟,單片式計(jì)算機(jī)系統(tǒng)誕生楷怒,單片式計(jì)算機(jī)系統(tǒng)不僅廉價(jià)葫盼,而且功能強(qiáng)大残腌,使用它可以大幅度提升消費(fèi)性電子產(chǎn)品的智能化程度。
SUN公司為了搶占市場(chǎng)先機(jī)贫导,在1991年成立了一個(gè)由詹姆斯·高斯林(James Gosling)領(lǐng)導(dǎo)抛猫,名為“Green”項(xiàng)目小組,目的是開發(fā)一種能夠在各種消費(fèi)性電子產(chǎn)品上運(yùn)行的程序架構(gòu)孩灯。
那么使用何種編程語言來設(shè)計(jì)闺金,是項(xiàng)目小組頭疼的事。當(dāng)時(shí)C++較為有優(yōu)勢(shì)的峰档,項(xiàng)目小組首先考慮的是采用它來編寫程序败匹,但C++過于復(fù)雜和龐大,再加上由于消費(fèi)電子產(chǎn)品所采用的嵌入式處理器芯片的種類繁雜讥巡,需要讓編寫的程序跨平臺(tái)運(yùn)行掀亩,假如用C++編寫的話對(duì)程序的跨平臺(tái)運(yùn)行不友好。
最后項(xiàng)目小組決定:既不用C++編寫欢顷,也不開發(fā)全新的編程語言槽棍,而是對(duì)C++進(jìn)行改造:去除了C++復(fù)雜的指針和內(nèi)存管理,并結(jié)合嵌入式系統(tǒng)的實(shí)時(shí)性要求抬驴,最終在1992年炼七,他們開發(fā)了一種名為“Oak”的面向?qū)ο笳Z言〔汲郑科當(dāng)他們?cè)谙蛴布a(chǎn)商進(jìn)行演示的時(shí)候豌拙,硬件生產(chǎn)商對(duì)此并不感冒,OaK語言因?yàn)槿狈τ布闹С侄鵁o法進(jìn)入市場(chǎng)题暖,從而被擱置一旁按傅。1994年,項(xiàng)目小組看到了瀏覽器在未來的發(fā)展前景芙委,于是決定將OaK應(yīng)用于萬維網(wǎng)逞敷。1995年狂秦,他們用OaK語言研發(fā)了一種能將小程序嵌入到網(wǎng)頁中執(zhí)行的技術(shù)——Applet灌侣,由于Applet不僅能嵌入網(wǎng)頁,還可隨同網(wǎng)頁在網(wǎng)絡(luò)上進(jìn)行傳輸裂问,這讓無數(shù)的程序員看到了OaK這門語言侧啼,與此同時(shí)牛柒,OaK正式更名為Java。從此痊乾,Java在互聯(lián)網(wǎng)的推動(dòng)下火了皮壁。
Java的衍變
1996年1月,SUN公司推出了JDK1.0哪审。在JDK1.0發(fā)布后蛾魄,有很多程序員學(xué)習(xí)并運(yùn)用Java來制作網(wǎng)頁,JDK包括兩大部分:開發(fā)工具和運(yùn)行環(huán)境湿滓。運(yùn)行環(huán)境包括核心API滴须、集成API、用戶界面API叽奥、發(fā)布技術(shù)扔水、Java虛擬機(jī)(JVM)。JDK1.0的發(fā)布朝氓,標(biāo)志著Java成為一種獨(dú)立的開發(fā)工具魔市。在同年9月,約有8.3萬個(gè)網(wǎng)頁應(yīng)用了Java技術(shù)來制作赵哲。JDK1.0的代表性技術(shù)有:Java虛擬機(jī)待德、Applet、AWT等枫夺。1997年2月磅网,SUN公司緊接著推出了JDK 1.1,在推出后3周時(shí)間里筷屡,達(dá)到了近22萬次的下載量涧偷。4月2日,首屆Java One大會(huì)在美國(guó)舊金山召開毙死,參加會(huì)議的人超過一萬人燎潮,創(chuàng)造了當(dāng)時(shí)全球同類會(huì)議規(guī)模最高的紀(jì)錄。9月扼倘,Java Developer Connection社區(qū)成員超過10萬确封,同年還有10個(gè)最主要的操作系統(tǒng)供應(yīng)商正式聲明將在他們的產(chǎn)品中使用Java。JDK1.1的代表性技術(shù)有:JDBC再菊、JavaBeans爪喘、RMI、JAR文件格式纠拔、Java語法中的內(nèi)部類和反射秉剑。1998年12月8日,JDK1.2——第二代Java平臺(tái)的企業(yè)版J2EE發(fā)布稠诲。1999年6月侦鹏,Sun公司把Java體系分為三個(gè)方向:J2ME(Java2 Micro Edition诡曙,Java2平臺(tái)的微型版),應(yīng)用于移動(dòng)略水、無線及有限資源的環(huán)境价卤;J2SE(Java 2 Standard Edition,Java 2平臺(tái)的標(biāo)準(zhǔn)版)渊涝,應(yīng)用于桌面環(huán)境慎璧;J2EE(Java 2Enterprise Edition,Java 2平臺(tái)的企業(yè)版)跨释,應(yīng)用于基于Java的應(yīng)用服務(wù)器炸卑。隨著供應(yīng)商的不同,Java的API也分為三大類:Java Core API:Java核心類庫煤傍;Java Optional API:對(duì)之前API的擴(kuò)充盖文;特殊API:由特殊廠商或組織提供的API。Java 2平臺(tái)的發(fā)布蚯姆,是Java發(fā)展過程中最重要的一個(gè)里程碑五续,標(biāo)志著Java的應(yīng)用開始普及。JKD1.2的代表性技術(shù)有:Swing龄恋、Java IDL疙驾、EJB、Java Plug-in等郭毕,在API文檔中它碎,添加了strictfp關(guān)鍵字和Collections集合類。1999年4月27日显押,HotSpot虛擬機(jī)發(fā)布扳肛。HotSpot是由一家叫“Longview Technologies”的小公司開發(fā)的,后來被SUN公司收購(gòu)乘碑。HotSpot虛擬機(jī)發(fā)布時(shí)是作為JDK 1.2的附加程序提供的挖息,后來它成為了JDK 1.3及之后所有版本的Sun JDK的默認(rèn)虛擬機(jī) 。2000年5月兽肤,JDK1.3套腹、JDK1.4和J2SE1.3相繼發(fā)布,J2SE1.3是對(duì)J2SE1.2的補(bǔ)充和擴(kuò)展资铡,從應(yīng)用領(lǐng)域的角度分析电禀,JavaSE1.3已經(jīng)涵蓋了數(shù)據(jù)庫、WEB笤休、網(wǎng)絡(luò)尖飞、圖形、多媒體、電話葫松、影像等大部分的信息技術(shù)領(lǐng)域。2002年2月26日底洗,J2SE1.4發(fā)布腋么。與J2SE1.3相比,多了近62%的類和接口亥揖。在這些新特性當(dāng)中珊擂,還提供了廣泛的XML支持、安全套接字(Socket)支持(通過SSL與TLS協(xié)議)费变、全新的I/OAPI摧扇、正則表達(dá)式、日志與斷言挚歧。2004年9月30日扛稽,J2SE1.5發(fā)布,成為Java語言發(fā)展史上的又一里程碑滑负。為了表示該版本的重要性在张,J2SE 1.5更名為Java SE 5.0(內(nèi)部版本號(hào)1.5.0)。Java SE 5.0包含了從1996年發(fā)布1.0版本以來的最重大的更新矮慕,其中包括泛型支持帮匾、基本類型的自動(dòng)裝箱、改進(jìn)的循環(huán)痴鳄、枚舉類型瘟斜、格式化I/O及可變參數(shù)。2005年6月痪寻,在Java One大會(huì)上螺句,Sun公司發(fā)布了Java SE 6。此時(shí)橡类,Java的各種版本已經(jīng)更名壹蔓,已取消其中的數(shù)字2,如J2EE更名為JavaEE猫态,J2SE更名為JavaSE佣蓉,J2ME更名為JavaME。2011年7月28日亲雪,收購(gòu)Sun公司的Oracle發(fā)布了 Java SE 7勇凭,引入了二進(jìn)制整數(shù)、支持字符串的switch語句义辕、棱形語法虾标、多異常捕抓、自動(dòng)關(guān)閉資源的try語言等新特性灌砖。2014年3月18日璧函,Oracle公司發(fā)布Java SE8傀蚌,這次版本升級(jí)為Java帶來了全新的Lambda表達(dá)式、流式編程等大量新特性蘸吓,這些新特性使得Java變得更加強(qiáng)大善炫。2017年9月22日,Oracle公司發(fā)布Java SE 9库继,這次版本升級(jí)強(qiáng)化了Java的模塊化系統(tǒng)箩艺,讓Java語言更輕量化,且采用了更高效宪萄、更智能的GI 垃圾回收器艺谆,并在核心類庫上進(jìn)行大量更新,可進(jìn)一步簡(jiǎn)化編程拜英。2018 年 3 月 21 日静汤,Java SE 10 發(fā)布,Java 10 版本帶來了很多新特性居凶,其中最備受廣大開發(fā)者關(guān)注的莫過于局部變量類型推斷撒妈。此外,還包垃圾收集器改善排监、GC 改進(jìn)狰右、性能提升、線程管控等新特性舆床。2018年9月26日棋蚌,Java SE 11 發(fā)布。這是 Java 大版本周期變化后的第一個(gè)長(zhǎng)期支持版本(LTS版本持續(xù)支持到2026年9月)挨队。Java11 帶來了 ZGC谷暮、Http Client 等重要特性,一共包含 17 個(gè) JEP(JDK Enhancement Proposals盛垦,JDK 增強(qiáng)提案)湿弦。2019年3月20日,Java SE 12 發(fā)布腾夯。Java 12是短期支持版本颊埃,可在下一個(gè)版本發(fā)布之前獲得Oracle的商業(yè)支持。2019年9月23日蝶俱,Java SE 13發(fā)布班利,此版本中添加了“文本塊”,文本塊是一個(gè)多行字符串文字榨呆,避免對(duì)大多數(shù)轉(zhuǎn)義序列的需要罗标,以可預(yù)測(cè)的方式自動(dòng)格式化字符串,并在需要時(shí)讓開發(fā)人員控制格式。
Java歷經(jīng)千辛萬苦闯割,換來春暖花開
經(jīng)過二十多年的版本更新彻消,一步步的積累,造就了如今的Java宙拉。一覽Java在更新歷程中所新增的特性:
Java 1.0:
虛擬機(jī)——Sun Classic VM
Java小應(yīng)用程序——Applet
Java圖形設(shè)計(jì)——AWT
Java 1.1:
Jar包——Jar
Java規(guī)范——JavaBeans
連接數(shù)據(jù)庫——JDBC(Java DataBase Connectivity)遠(yuǎn)程調(diào)用——RMI
內(nèi)部類——Inner Class
反射——Reflection
Java 1.2:
字符串常量做內(nèi)存映射
對(duì)打包的Java文件進(jìn)行數(shù)字簽名
控制授權(quán)訪問系統(tǒng)資源的策略工具
JDBC中引入可滾動(dòng)結(jié)果集宾尚,BLOB,CLOB鼓黔,批量更新和用戶自定義類型
在Applet中添加聲音支持
即時(shí)編譯技術(shù)——JIT
運(yùn)行插件——Java Plug-In
J2EE規(guī)范——EJB
平臺(tái)對(duì)象請(qǐng)求代理體系結(jié)構(gòu)——Java IDL
集合——Collections
Java 1.3:
數(shù)學(xué)運(yùn)算
CORBA IIOP實(shí)現(xiàn)RMI的通信協(xié)議
Java 2D新特性
Jar文件索引
時(shí)間——Timer API
聲音——Java Sound API
Java1.4:
正則表達(dá)式
異常鏈
XML解析器
XSLT轉(zhuǎn)換器
XML處理
Java打印服務(wù)
JDBC高級(jí)——Java Web Start JDBC 3.0
可以操作系統(tǒng)的高級(jí)功能——Preferences
高級(jí)流——NIO
日志功能——Logging
圖片流——Imgae I/O
Java1.5:
自動(dòng)裝箱拆箱
泛型
元數(shù)據(jù)
靜態(tài)引入
內(nèi)省——Introspector
枚舉——enum
可變長(zhǎng)參數(shù)——Varargs
高級(jí)虛幻——foreach
內(nèi)存模型——JMM
并發(fā)包——concurrent
Java SE 6:
命名方式變更
腳本語言
編譯API和微型HTTP服務(wù)器API
鎖與同步
垃圾收集
類加載
Kerberos
LDAP
JDBC高級(jí)——JDBC 4.0
Java? 編程語言編譯器的接口——Java Compiler
可插拔注解
公鑰基礎(chǔ)設(shè)——Native PKI
通用安全服務(wù)——Java GSS
web服務(wù)——Web Services
Java SE 7:
switch語句塊中允許以字符串作為分支條件
創(chuàng)建泛型對(duì)象時(shí)應(yīng)用類型推斷
try-with-resources
null值得自動(dòng)處理
數(shù)值類型可以用二進(jìn)制字符串表示
引入Java NIO.2開發(fā)包
動(dòng)態(tài)語言支持
安全的加減乘除
Map集合支持并發(fā)請(qǐng)求
Java SE 8:
Java SE 8在Java更新的歷史中是一個(gè)非常重要的版本央勒,引入的函數(shù)式編程使得Java編程更為強(qiáng)大不见,較典型的有:
Java工具的操作增強(qiáng)
Unicode增強(qiáng)功能澳化,包括對(duì)Unicode 6.2.0的支持
并行陣列排序
標(biāo)準(zhǔn)編碼和解碼Base64
無符號(hào)算術(shù)支持
新的并發(fā)
Lambda表達(dá)式
方法參數(shù)反射Java XML技術(shù)增強(qiáng)功能
虛擬機(jī)操作增強(qiáng)JSSE服務(wù)器中的SSL / TLS服務(wù)器名稱指示(SNI)擴(kuò)展支持
支持AEAD算法……
Java SE 9、10……版本的不斷更新稳吮,是對(duì)舊版本改良以及補(bǔ)充缎谷,越更新,越友好灶似。
看今朝列林,Java 位居世界編程語言榜首,風(fēng)光無限好酪惭。憶往昔希痴,初生之時(shí)便陷入低谷,后借互聯(lián)網(wǎng)之勢(shì)拔地而起春感,J2SE攻占桌面砌创、J2ME攻占手機(jī)、J2EE攻占服務(wù)器鲫懒,Java三大強(qiáng)軍也曾飽受歲月蹉跎嫩实,后浴火重生,最終投入Oracle懷抱窥岩,換得春暖花開甲献。此情此景,悲之颂翼、喜之晃洒、感之、嘆之朦乏,Java如今之風(fēng)光锥累,并非一日之功,望天下眾程序員惜之集歇、盼之桶略。
Java已崛起,未來有可期
1、用發(fā)展的眼光看Java:API穩(wěn)更新际歼,復(fù)用性穩(wěn)強(qiáng)化
Java的更新速度是很快的惶翻,每隔一段時(shí)間都會(huì)進(jìn)行一次版本迭代,來適應(yīng)新技術(shù)的發(fā)展趨勢(shì)鹅心,學(xué)Java的程序員遍布全世界吕粗,很慶幸我也是茫茫Java程序員中的一員,近些年來很火熱的大數(shù)據(jù)也是和Java息息相關(guān)旭愧。Java本身具有很大的開放性和可擴(kuò)展性颅筋,再加上Java如此雄厚的歷史背景,我相信一個(gè)語言只要不斷發(fā)展输枯,就很難會(huì)被時(shí)代淘汰议泵。
2、用就業(yè)的眼光看Java:互聯(lián)網(wǎng)的時(shí)代桃熄、人工智能的時(shí)代先口、5G+的時(shí)代,Java一直都在
隨著網(wǎng)絡(luò)的發(fā)展瞳收,如今Java已廣泛應(yīng)用于數(shù)據(jù)中心碉京、PC、游戲螟深、移動(dòng)電話等行業(yè)谐宙,從近幾年的招聘量上來看,對(duì)Java開發(fā)人員的需求量依舊很大界弧,Java的學(xué)習(xí)依舊是主流凡蜻,發(fā)展前景一片光明。我國(guó)信息化人才培養(yǎng)還處于發(fā)展階段夹纫,導(dǎo)致社會(huì)實(shí)際需求人才基數(shù)遠(yuǎn)遠(yuǎn)大于信息化人才的培養(yǎng)基數(shù)咽瓷,使得數(shù)以萬計(jì)的中小企業(yè)急需全面系統(tǒng)掌握J(rèn)ava軟件開發(fā)基礎(chǔ)技能與知識(shí)的軟件工程師。Java軟件工程師就業(yè)前景良好舰讹,再加上Java軟件工程師不僅IT專業(yè)企業(yè)需要茅姜,廣大的非IT企業(yè)也需要,前景是較為樂觀的月匣。目前我所了解的有:1钻洒、Java企業(yè)級(jí)應(yīng)用開發(fā)目前Java在許多行業(yè)的企業(yè)信息應(yīng)用方面有很多,比如郵箱锄开、物流素标、醫(yī)療、股票萍悴、OA头遭、金融等信息系統(tǒng)寓免。這些和目前的主流行業(yè)密切相關(guān)的,所以Java開發(fā)者的需求還是較大计维,待遇也是相當(dāng)不錯(cuò)袜香,工資水平與Java互聯(lián)網(wǎng)方向的差不多,很容易在一些大型企業(yè)就業(yè)鲫惶,只要你有恒心有毅力地學(xué)習(xí)蜈首,我想至少面臨這么多選擇時(shí),你不會(huì)一無所用欠母,機(jī)會(huì)總是會(huì)留給有準(zhǔn)備的人欢策。2、Java網(wǎng)站建設(shè)近些年來赏淌,網(wǎng)站建設(shè)業(yè)務(wù)一直呈現(xiàn)快速上升的勢(shì)頭踩寇,行業(yè)市場(chǎng)也是越來越大,很多新技術(shù)的應(yīng)用使得企業(yè)網(wǎng)站建設(shè)更具魅力猜敢、更加強(qiáng)大姑荷。Java編程語言將使網(wǎng)站結(jié)構(gòu)更緊密盒延,訪問更流暢缩擂,更能適應(yīng)新的要求。雖然以目前的市場(chǎng)分析Java做網(wǎng)站成本太高添寺,而且對(duì)硬件要求也比較高胯盯,中小企業(yè)大多都會(huì)選擇使用PHP語言進(jìn)行開發(fā),但是在很多大型企業(yè)還是用Java語言的比較多计露,所以你依舊有機(jī)會(huì)博脑,向大廠沖鴨。3票罐、 Android開發(fā)Android是全球最大的智能手機(jī)操作系統(tǒng)叉趣,前幾年Android發(fā)展快速,在國(guó)內(nèi)的市場(chǎng)份額也是越來越高该押,但在快速興起的小程序和H5的沖擊下疗杉,導(dǎo)致Android原生開發(fā)門檻增高,公司對(duì)Android開發(fā)工程師的要求也提高了蚕礼,這就要求學(xué)習(xí)Android的程序員們精于技術(shù)烟具,優(yōu)秀的Android開發(fā)工程師仍然存在不小的缺口,中奠蹬、高級(jí)的Android工程師還是很受歡迎的朝聋。Android應(yīng)用的主要開發(fā)語言就是Java,所以如果你技術(shù)很精囤躁,選擇Android這個(gè)方向還是很不錯(cuò)的冀痕。4荔睹、Java游戲開發(fā)Java可用來編寫游戲腳本,如Bean言蛇、Shell应媚、Groovy等腳本語言可以方便、無縫的和Java語言進(jìn)行交互猜极,這些極大地促進(jìn)Java游戲編程中姜。當(dāng)前國(guó)內(nèi)游戲較為火熱,很多熱門電競(jìng)跟伏,所以國(guó)內(nèi)游戲?qū)I(yè)人才的需求一直都存在缺口丢胚。所以,好好努力去填補(bǔ)這些缺口吧受扳,只要你有過人的技術(shù)携龟,不愁沒飯吃。
不忘初心勘高,與Java同行
我是一名學(xué)Java的程序員峡蟋,通過整理撰寫本文,我又重新認(rèn)識(shí)了Java华望。在我看來蕊蝗,Java的”火“并不是偶然的,有很多因素的積累而成赖舟。Java的發(fā)展進(jìn)程值得考究蓬戚,作為一名Java的忠實(shí)粉絲,Java的重要性不言而喻宾抓,相信不管是計(jì)算機(jī)專業(yè)還是非計(jì)算機(jī)專業(yè)的程序員也會(huì)感同身受子漩。對(duì)我而言,其他Java程序員也是一樣石洗,因?yàn)閷?duì)Java有著持久不衰的熱愛幢泼,所以愿意不斷追求專業(yè)追求卓越,而帶著這份忠誠(chéng)的熱愛讲衫,我們不畏風(fēng)雨缕棵,一路前行。不忘初心焦人,方得始終挥吵,我愿以Java為馬,詩酒趁年華花椭!