永存、曲折、已死、重生——傳奇的java
如果說用“永存、曲折、已死、重生”來形容 Java,筆者以為一點也不為過。
1991 年,James Gosling 帶領著名為“Green Team”的團隊著手研發一種新的語言以及專為下一代數字裝置和計算機使用的網路系統。歷時 4 年辛勤工作後,該專案最終修成正果並取名為 Java。
Java 有著類似於C的語法並有“一次編譯,隨處執行”的靈便性。透過虛擬機器機制,可以使程式碼在底層平臺進行執行時編譯。回首 Java 過去的 20 年,首先是經歷了微機時代的興與衰,然後進入伺服器領域及智慧電話領域,繼而在 DHS(美國土安全部)的“不安全”定義下艱難前行,最後投入甲骨文(Oracle)懷抱現正蓄勢迸發第二春。難道還有別的語言有如此跌宕起伏的情節嗎?
Java 推出後,Sun 發現市場上存在著一個問題—計算機領域與非計算機領域彼此是隔斷的。Sun 認為這是一個機遇,如果能把兩者連線起來將會帶來一場計算機革命。“統一的主題是網路。”Gosling 說,
“放眼當時的市場,兩個領域的廠家各自為政,沒有形成統一的網路。因此很多時候不得不重複大量的實驗,但這些其實早在 30 年前的電腦科學中已得到解決。”
問題的所在是電子消費品製造者沒有考慮使用網路,例如跨平臺的公共 APIs 或者程式碼複用,
“你幾乎找不到任何的軟體複用。所有軟體都只能不斷地被重複建立。我們提出的模組概念終將改變這一局面。”
▋成功非坦途
Java 面世的頭五年,成為當之無愧的編譯器高效能代言人。而過後五年,所有人都把重心轉向了企業應用。Gosling 說,
“回首 Java EE 統治世界的場景至今仍歷歷在目。我們唯一的失誤是把全部精力都集中於此,所有資源都被優先調配到 EE,導致無法投入更多的精力去開拓桌面的世界。”
Oracle Java 平臺開發副總裁 Saab 是這樣說的,
“在 90 年代,大多數開發者都把精力投入到桌面應用的編寫之上。到了 2000 年,Pet.com 的成功吸引了大批的跟風者。業界又把焦點從桌面轉移到了 HTML 應用。隨著智慧電話和平板的到來,基於觸控式螢幕的移動應用又站在了風口。所以對於下一個流行趨勢是很難把握的,這涉及到天時、地利、人和。”
Java 2 Micro Edition (J2ME)在 1998 年引入並把 Java 劃分了三個平臺:Java 2 Standard Edition(J2SE)、J2ME 以及 Java 2 Enterprise Edition(J2EE)。ME 的意思是小型裝置和嵌入系統。ME 在翻蓋手機上得到推廣,成為當時的標配。Gosling 說,
“ME 已經做得足夠好了,在當時是最強大的智慧電話開發平臺。不過現在漸漸被遺忘,因為 Android 太耀眼了。”
作為一個獨立平臺,Java ME 被邊緣化了。Oracle 開發部高階副總裁 Cameron Purdy 說在下一個版本 Java 9 中會把所有平臺統一起來,
“對比 SE、ME 被獨立出來但發展緩慢。Java 9 的模組化特性會使得 Java ME 的可複用性得到增強,這將是反擊 Android 和 iOS 的有力武器。”
▋陷入低谷
隨著 Sun 在最近 10 年的低迷,Java 也不能倖免地經歷著蹉跎歲月。IBM 報價 65 億美元,Sun 沒答應,74 億美元,Oracle 得到了 Sun。
在 Oracle 管理下,頭幾年 Java 表現良好,以 0 重大失誤成為安全的代名詞。不過在 2013 年 1 月情況開始變壞,美國土安全部(DHS)建議人們儘量不要使用 Java。作為面向企業的軟體公司,打補丁修復 Bug 的速度是 Oracle 的短板,根本無法與面向大眾消費者的微軟或 Adobe 相比。別人是以小時或天來計,而 Oracle 是以月為基本單位。
Purdy 認為 Oracle 已經盡了最大的努力去修補並清楚這個短板的重要性。問題的關鍵是如何打造一支在失去 Gosling 等干將後仍能獨當一面的團隊。他說,
“我們聽到了不少質疑之聲,但其實我們一直都在不斷加入投入的力度並努力尋求解決的方案。”
▋浴火重生
DHS 的公開宣告不啻是壓垮 Java 的最後一根稻草,很多人都預言 Java 將風光不再。然而事情慢慢得到轉機,不少 Java 粉絲開始出來捍衛 Java 的名聲。Dr. Dobb’s Journal 編輯 Andrew Binstock 曾發表一篇社論,其題目是:《即使面臨死亡,Java 看上去還是相當健康的》。
對於 Oracle 的接管,Gosling 表達了自己的喜悅之情,
“得知這個訊息後,我感到非常驚喜。Oracle 是個非常優秀的監護人並大大超出了我的期望。一開始我還擔心它會不會成為第二個 Solaris,現在看來我是多慮了。”
接管 Java 的頭五年,Oracle 不得不重新打造一支 Java 團隊。
“我們花了大量時間來審視整個過程以確定如何進行 Bug 修復,從輸入到釋出機制,我們回顧了大量的程式碼。最後列出了一個長長的錯誤修復表。”
Purdy 回憶說。
安全曾讓 Java 蒙羞,安全也讓 Java 重獲新生。在 2014 Pwn20wn 黑客大會上,Java 成為唯一沒有被攻破的平臺。而在 2015 的會議中,Pwn20wn 甚至沒有把 Java 列在攻擊名單上。
▋現在和未來
Java 9 將是自被 Oracle 收購後釋出的首個重大版本。Java 9 的最主要目標是最大限度實現模組化以幫助人們實現積木式的應用編寫。
“我們的目的是幫助人們從 JAR 的束縛中解脫出來。”
Saab 說,
“你將很輕鬆地處理在過去相當複雜的事情,例如打包。你可以只用到需要的模組,而把其它忽略。”
Purdy 補充道,
“這開創了 Java 平臺的先河。該特性將貫穿整個 Java 庫,並以單依賴圖的方式重新整理依賴。”
談及 Java 的未來,Eclipse 基金會執行董事 Mike Milinkovich 的看法是,
“我認為 Java 的未來在於物聯網。我十分樂意看到 Oracle 及其合作伙伴能把精力放在完全點對點的 Java 儲存方案上,透過閘道器實現裝置到企業後臺的連線。如果成功將能使 Java 在往後 20 年發展得更好走得更遠。雖然這還有一段路要走,但我相信 Java 能夠做到。”
Gosling 的看法是,
“VM 是它本身的生態,所有部分彼此相通。IT 世界的未來是要實現互聯互通。把邊緣和核心有效地統一起來,可以省卻內外分開管理的麻煩,從而得到更加強大的平臺。”
▋遍地開花
雖然很多人都曾預言 Java 將一蹶不振,但是現今在不少的重要專案中,Java 仍扮演著極其重要的角色。
Purdy 指出,沒有 Java,甚至不會有大資料的大發展,
“Hadoop 本身就是用 Java 編寫的。當你需要在執行 MapReduce 的伺服器叢集上釋出新功能時,你需要進行動態的部署,而這正是 Java 所擅長的。”
另一 Java 受惠者是 Twitter。一開始 Twitter 是用 Ruby on Rails 編寫的,但是隨著使用者數的增長 RoR 逐漸顯得力不從心。Fail Whale(失敗鯨)的宕機畫面預示著瓶頸問題亟需解決。在 2012 年,Twitter 從 RoR 轉向了 Java 和 Scala,而失敗鯨從此滅絕了。
可見 Java 不但沒有成為昨日黃花,還重新煥發了新的生機。讓我們共同期待 Java 9,看看 Oracle 將為廣大開發者帶來什麼樣的驚喜。
1、具有1-5工作經驗的,面對目前流行的技術不知從何下手,需要突破技術瓶頸的可以加群。
2、在公司待久了,過得很安逸,但跳槽時面試碰壁。需要在短時間內進修、跳槽拿高薪的可以加群。
3、如果沒有工作經驗,但基礎非常紮實,對java工作機制,常用設計思想,常用java開發框架掌握熟練的,可以加群。
4、覺得自己很牛B,一般需求都能搞定。但是所學的知識點沒有系統化,很難在技術領域繼續突破的可以加群。
5.群號581290258 java高階開發
6.阿里Java高階大牛直播講解知識點,分享知識,上面五大專題都是各位老師多年工作經驗的梳理和總結,帶著大家全面、科學地建立自己的技術體系和技術認知!
相關推薦
永存、曲折、已死、重生——傳奇的java
如果說用“永存、曲折、已死、重生”來形容 Java,筆者以為一點也不為過。 1991 年,James Gosling 帶領著名為“Green Team”的團隊著手研發一種新的語言以及專為下一代數字裝置和計算機使用的網路系統。歷時 4 年辛勤工作後,該專案最終修
“互聯網+”已死 騰訊、阿裏巔峰已過
開始 管理 傳統 綜合 力量 成熟 部件 高科技 未來 上兩篇文章《》《》講了我的書《互聯網黑洞 跨越邊界的中國式企業擴張》中對黑洞的定義。 這一篇是我演講的第三部分:《互聯網+已死 騰訊、阿裏巔峰已至》 。 27.面對互聯網、互聯網黑洞、互聯網+的趨勢,不同的領袖有不
C語言已死(連載1)——趣味、通俗、實用的計算機達人成長之路之C語言高階技巧篇
第一章 學習C語言的起跑線1.1 C語言已死?本書描述的就是使用C語言的高階技巧,力求將你的C語言能力由“基礎”提升為“高階”。但是學習態度勝過學習方法,在正式學習之前,有一個問題不吐不快,那就是“C語言還值得學習嗎?”正方觀點——C語言已死正方論據:C語言的三宗罪:1、程式
MySQL5-函數/存儲過程與定時器、觸發器
名稱 狀態 訪問 safe 安全問題 ant comm gnu led 目錄 一、函數/存儲過程 二、定時器 三、觸發器 四、函數語句學習 一、函數/存儲過程 1、函數與存儲過程 (1) function與procedure的區別:一個有返回值,一個沒有,僅此而已。
VMware虛擬機預留內存分別與HA接入控制、磁盤使用容量的關系
memory 虛擬機 信息 主機 資源 預留內存 VMware虛擬機預留內存分別與HA接入控制、磁盤使用容量的關系一個cluster ,共10臺256GB內存的主機,HA接入控制策略為允許一臺主機故障當前的HA 運行時的信息如下:Slot size:cpu 32MHzMemory 8G
15套java互聯網架構師、高並發、集群、負載均衡、高可用、數據庫設計、緩存、性能優化、大型分布式 項目實戰視頻教程
二階 並發 支持 線程並發 important http 系統架構 四十 mongodb入門 * { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架構師、集群、高可用、高可擴
鏈式存儲(頭插法、尾插法)
for 返回值 string.h 依據 類型 false 指向 status track #include "stdio.h" #include "string.h" #include "ctype.h"
C語言中存儲類別又分為四類:自動(auto)、靜態(static)、寄存器的(register)和外部的(extern)。
字符變量 修飾 例如 register ext 進行 適合 sta -- 除法運算中註意: 如果相除的兩個數都是整數的話,則結果也為整數,小數部分省略,如8/3 = 2;而兩數中有一個為小數,結果則為小數,如:9.0/2 = 4.500000。 取余運算中註意: 該運算只適
三、vue如何配置路由 、獲取路由的參數、部分刷新頁面、緩存頁面
component 有一個 數據 main -a his 如何配置 自動 收件人 1、路由配置:所有的啟動文件都在最初始的main.js文件裏面,這個文件中首先需要引入: 2、路由文件配置說明: 3、如何獲取頁面url的參數? this.$route.quer
Python基礎知識進階(五---2)----程序基本結構、簡單分支、異常處理、三大實例分析、基本循環結構、通用循環構造方法、死循環嵌套循環、布爾表達式
方法 算法 嵌套 構造方法 決策樹 輸入 繼續 實例 控制 上一篇隨筆寫的內容有點多了,決定分成兩節,不然自己看的時候也頭疼。 三者最大實例: 分支結構可以改變程序的控制流,算法不再是單調的一步步順序執行。 假設:以找出三個數字中最大者的程序設計為例。
四、Oracle loop循環、while循環、for循環、if選擇和case選擇、更改讀取數據、遊標、觸發器、存儲過程
bsp 邏輯或 pda 傳遞依賴 函數 名稱 執行 count 記錄 數據庫的設計(DataBase Design): 針對於用戶特定的需求,然後我們創建出來一個最使用而且性能高的數據庫! 數據庫設計的步驟: 01.需求分析 02.概念
存儲過程的創建、調用與刪除
mysql創建一個存儲過程create procedure porc () #存儲過程名稱porc begin select `user` from mysql.`user`; #sql語句 end;調用存儲過程call porc();刪除存儲過程DROP PROC
DNS服務基礎 、 特殊解析 、 DNS子域授權 、 緩存DNS
dns################################################################################################### 虛擬機A 1. 將防火墻狀態設置為trusted 2.SELinux當前修改為permis
內存的使用:棧區、堆區、靜態區、只讀區
效率 空間 綜述 安排 cnblogs 變量 註意 調用 內存地址 內存的使用感覺好亂啊,需要整理一下!於是參考C++ primer與網上資源,整理如下: 一、綜述:內存中的棧區分配的是局部變量空間;堆區是向上增長的用於分配程序員申請的內存空間(比如new 申請的動態內存)
Scrapy教程——搭建環境、創建項目、爬取內容、保存文件
.com 目錄 tor strong targe self 文件名 ng- start 1、創建項目 在開始爬取之前,您必須創建一個新的Scrapy項目。進入您打算存儲代碼的目錄中,運行新建命令。 例如,我需要在D:\00Coding\Python\scra
查看磁盤io、內存free、系統進程ps、網絡狀態netstat、Linux抓包tcpdump
ipv mon 1.3 sda verify available x86 4.0 length 查看磁盤io性能狀態 iostat -x 查看磁盤使用(安裝包與sar的安裝包一起)主要查看%util [root@shu-test ~]# iostat -x Linux 3.
oracle存儲過程、聲明變量、for循環
compute 使用方式 數組 ++ 查詢 lib money sch ear oracle存儲過程、聲明變量、for循環 1、創建存儲過程 create or replace procedure test(var_name_1 in type,var_name_2
JDBC【PreparedStatment、批處理、處理二進制、自動主鍵、調用存儲過程、函數】
參數 高效 gpo 批量處理 資源 key limit 場景 註入 1.PreparedStatement對象 PreparedStatement對象繼承Statement對象,它比Statement對象更強大,使用起來更簡單 Statement對象編譯SQL語句時,如果
網頁性能優化,緩存優化、加載時優化、動畫優化--摘抄
其他 one padding 頁面滾動 chrome 屬性 服務 sync style 本文提供一個優化網頁性能的大概思路,具體操作網上資料很多。 緩存優化 性能優化第一步,便是管理好頁面的緩存,避免重復下載資源。否則,即增加服務器壓力,又折磨用戶的錢包。 瀏覽器緩存機制
Spark核心RDD、什麽是RDD、RDD的屬性、創建RDD、RDD的依賴以及緩存、
ase 數組 依據 shuff esc 從數據 目錄 ordering 存儲 1:什麽是Spark的RDD??? RDD(Resilient Distributed Dataset)叫做分布式數據集,是Spark中最基本的數據抽象,它代表一個不可變、可分區、裏面的元素