四虎影视库国产精品一区-四虎影视库-四虎影视久久久免费-四虎影视久久久-四虎影视久久-四虎影视精品永久免费网站

TEL:15195455103

Java培訓 > Java知識 >

Java的未來發展趨勢會是如何

作者:南京????來源:南京????發布時間:2019-12-30 09:47????瀏覽量:64

  Java 作為一門長青的編程語言,在比較長的發展時間里,時常會有唱衰的聲音。但 Java 一直在不斷向前發展,受歡迎程度也一直很高,TIOBE 榜單常年保持在 Top 2,未來 Java 將如何發展呢?本文搜集了一些國外開發者和相關從業人員的看法。

  Java 語言發展的這 24 年也正是全世界互聯網技術飛速發展的 20 年,Java 語言同時也見證了電子商務浪潮、互聯網技術浪潮、互聯網大數據浪潮、云計算技術浪潮,所以在現今各大互聯網企業身上都能見到 Java 的身影。

  縱看 Java 語言的發展趨勢,禁不住讓人聯想到辛棄疾的一首詞:

  千古江山,英雄無覓,孫仲謀處。舞榭歌臺,風流總被雨打風吹去。斜陽草樹,尋常巷陌,人道寄奴曾住。想當年,金戈鐵馬,氣吞萬里如虎。元嘉草草,封狼居胥,贏得倉皇北顧。四十三年,望中猶記,烽火揚州路。可堪回首,佛貍祠下,一片神雅社鼓。憑誰問,廉頗老矣,尚能飯否?

  TIOBE 的語言排名榜顯示,自 2016 年初 Java 語言就出現了顯著的下頹趨勢,開發者社區也出現了一些唱衰 Java 語言的論調,編者心中也有些許疑問:Java 老矣,尚能飯否?

  java的往日輝煌

  Java 語言始于 1991 年 Sun 企業 James Gosling 領導的的 Ork 項目,1995 年 Sun 企業宣布起名為 Java,并提出“Write once, Run anywhere"的口號。

  1996 年 1 月 Java 1.0 發布,提供了1個解釋執行的 Java 虛擬機,其時正逢互聯網技術剛開始盛行,Java 的 Applet 能在 Mozilla 電腦瀏覽器中運作,被看做是將來的互聯網技術語言。

  1997 年 2 月 Java 1.1 發布,Java 語言的基礎特性基本明確了,例如反射 (reflection), JavaBean, 接口和類的關聯這些,始終到今日都完全一致。然而,Java 開始的一些總體目標,如在電腦瀏覽器中執行 Applet,以及跨平臺的圖形界面 Awt 很快遭受到負面影響的評論。

  1998 年 12 月,Java 第一位里程碑式的版本,即 Java 1.2 發布了。這種版本應用了 JIT(Just in time)編譯器技術,促使語言的可遷移性和實行速率達到優化的平衡,同時 Collections 集合類設計良好,在企業應用開發中快速獲得了廣泛性應用。Sun 公司把 Java 技術機制分為3個大方向,各自是 J2SE(面向桌面和通用應用程序開發),J2EE(面向企業級應用開發),J2ME(面向移動終端開發)。這一歸類影響十分悠久,突顯出主流語言設計師的觀念:對于于不一樣的應用領域,在特征,API 集合等開展劃分。

  2000 年 5 月,Java 1.3 公布,這種版本中 Corba 作為語言等級的分布式系統對象技術性,成為 J2EE 的一個技術條件。J2EE 受到 Corba 的設計的影響較大,早期 EJB 的 Home,接口類型和保持就是說 Corba 在 C 語言的實現,被移植到 Java 語言當中。J2EE 中的 Servlet 標準規范得到了巨大的成功,隨著著互聯網的興起,和瀏覽器真接通過 HTTP 安全協議人機交互的 Servlet,和諸多的 MVC 架構,變成 Web1.0 的網紅。

  2002 年 2 月,Java 1.4 發布,Java 語言真正邁向成熟期,保證了十分完善的語言特性,如 NIO,正則表達式,XML 處理器等。同年微軟的.NET 框架公布,兩者開始了為期十多年的暗自竟爭。從語言特點上而言,.NET 后發先至,始終處在優勢。但 Java 依賴優良的開發者生態,絕大部分大型軟件公司的用戶眾多和不斷奉獻,以及對 Linux 電腦操作系統優良的支持,逐漸的在服務器端取得優越性主導地位。

  2004 年 9 月,Java 5 發布,Sun 已不選用 J2SE, J2EE 這類取名方法,而使用 Java SE 5, Java EE 5 這樣的命名。我覺得 Java 5 是第二個里程碑式的版本。Java 語言語法產生太大的轉變,如注解 (Annotation),裝箱 (Autoboxing),泛型 (Generic),枚舉 (Enum),foreach 等被添加,提供了 java.util.concurrent 并發包。Java 5 對于 Java 語言的推進是極大的,特別是注釋的加入,促使語言定義靈活了許多,程序員還可以寫出更為適用領域概念的描述性程序。

  2006 年 5 月, JavaEE 5 發布,至少主要是 EJB3.0 的版本升級。在此之前,EJB2.X 版本被廣泛質疑,SpringFramework 創建者 Rod Johnson 在經典書籍“J2EE Development without EJB“中,對 EJB2 意味著的分布式對象的設計方法予以批駁。EJB3 則再次歷經更新改造,應用注解方法,歷經應用服務器對 POJO 對象開展提高來改變分布式服務能力。在某種意義,都可以說 EJB3 拯救了 JavaEE 的太早衰落。

  2006 年 12 月,Java 6 發布,這個語言語法改善不多,但在虛擬機內部結構做了很多的改善,稱得上1個相當成熟平穩的版本,直到現在國內的許多公司仍然以 Java6 當做首要 Java 開發版本來應用。同年 Sun 公司作出1個值得尊敬的決策,將 Java 開源。OpenJDK 從 Sun JDK 1.7 版本分支出去,成為今日 OpenJDK 的基礎。OpenJDK6 則由 OpenJDK7 剪裁而成,目前由紅帽承當保護,來滿足 Redhat Enterprise Linux 6.X 用戶的需要。

  2009 年 12 月,JavaEE 6 公布,這個版本應當就是 JavaEE 到迄今為止改善多影響悠遠的1個版本。由于 JavaEE5 只有 EJB3 適應了 Java 注解語法的添加,而 EE6 全面接受了注釋。CDI 和 BeanValidation 規范的進入,在 POJO 之中還可以界定完善的語義,由器皿來決策怎樣去做。Servlet 也升級到 3.0 版本,并在接口上添加異步支持,促使系統軟件總體速率可以大幅度提高。EE 劃分為 Full Profile 和 Web Profile,用戶還可以依據自身的需用挑選不一樣的功能集。

  在此之前,Oracle 已經以 74 億美金的價格收購了 Sun 公司,獲得了 Java 商標logo和 Java 主動權。也收購了 BEA 公司,得到市場占有率多的應用服務器 Webogic。JavaEE 6 雖然是收購之后發布的版本,但關鍵的設計方案工作依然由原 Sun 企業的 Java 權威專家進行。

  2011 年 7 月,Oracle 發布 Java 7, 列舉關鍵的特點是 NIO2 和 Fork/Join 并發包,雖然語言上沒有大的提高,但我本人覺得,自從 Oracle JDK(包括 OpenJDK7),Java 虛擬機的穩定真正作到的工業級,變成1個計算平臺而服務于全球。

  2013 年 6 月,Oracle 公布 JavaEE 7,這一版本進入了 websocket,Batch 的支持,而且加入 Concurrency 來對服務器多線程進行監管。然而全部的子標準,算上選擇項 (Optional) 總共有 40 多項,開發人員光是閱讀理解標準文本就很費勁了,更不必說可以全局速成熟練掌握。JavaEE 規范的本質是企業級應用設計的經驗結晶,每1個 API 都歷經諸多豐富工作經驗的權威專家反反復復商討并明確。各個版本相互之間都可以保證向后兼容,換句話說,即便是 10 年前寫的 Servlet 程序,當今的開發者還可以流暢的閱讀源代碼,歷經一部分代碼更改和配置改動,還可以部署在當今的應用服務器上。相反,今后用 Servlet4 寫的程序,瀏覽器和服務器通信應用全新升級的 HTTP/2 協議,但程序員在理解上不會有障礙,就是說因為 Servlet 規范的 API 十分平穩,基本找不到大的變動修改。

  2014 年 3 月,Oracle 發布 Java 8,這個版本是我認為的第三個有里程碑式作用的 Java 版本。其中引人注意的便是 Lambda 表達式了,此后 Java 語言原生提供了函數式編程能力。語言層面大的特性提升還有:Streams,Date/Time API, 新的 Javascript 引擎 Nashorn,集合的并行計算支持等,Java8 更加適應海量云計算的需要。

  依照原先的計劃方案,Java9 應該在2017年 7 月發布,但由于模塊化 (JPMS) 投票未通過的原因,推遲到2017年 9 月份發布。其中主要更新是 Servlet 4.0 和 CDI 2.0。

  北大青鳥軟件學校

  Ruby 強于 DSL(各個領域指定語言),程序員還可以界定豐富的語義來充足表述自身的思想。Erlang 就是為分布式計算設計的,能保證在規模性并發訪問的狀況下,維持強壯和穩定性。Go 語言內置了并發能力,可以編譯成本地代碼。當前新的網絡相關項目,很大比例是由 Go 語言編寫的,如 Docker、Kubernetes 等。

  編寫網頁用 PHP,函數式編程有 Lisp,編寫 iOS 程序有 Swift/ObjectiveC。一段話歸納,能留到排行榜之中的語言,全部都是好的語言,在其所屬的領域能做到好。

  那麼,Java 語言究竟有何優勢可以占有排名榜第二的位子呢?

  其一,語法非常簡單,學過計算機編程的開發者都能快速上手。

  其二,在若干了領域都有較強的競爭能力,例如服務端編程,高性能互聯網程序,企業軟件事務處理,分布式計算,Android 移動終端應用開發這些。

  重要的一點是符合工程學的需求,我們了解當代軟件全是協作開發,那麼代碼可維護性,編譯時檢查,較為高效率的運行效率,跨平臺能力,豐富的 IDE,測試,項目管理工具配合。都使得 Java 成為企業軟件公司的首選,也得到很多互聯網公司的青睞。

  沒有薄弱點,容易從市場上找到 Java 軟件工程師,軟件公司選擇 Java 做為首要編程語言,再在特定的領域應用其他語言協作編程,這樣的組合選擇,肯定是不會有大的疑問。

  因此綜合性來講,Java 語言全能層面是好的。小編整理了一些java進階學習資料和面試題,需要資料的請加JAVA高階學習Q群:664389243 這是小編創建的java高階學習交流群,加群一起交流學習深造。群里也有小編整理的2019年新全的java高階學習資料! ????

  Java的未來展望

  現如今的 Java,早已在功能性上相當豐富多彩了,Java 8 加入 Lambda 特性,Java 9 加入模塊化特性之后,關鍵的語言特點好像早已都列入進去。要是說些該考量的一些作用,我認為有以下幾點:

  模塊化改造結束以后,將會會冒出大量專業的 JDK 發行軟件商,提供在功能方面,例如針對于分布式計算,機器學習,圖形計算等,納入相關的功能庫作為文件。這樣專業行業用戶還可以挑選歷經充足提升后的 JDK 版本。

  Java 語義上對“模式匹配”有更強的支持,如今的 switch 語句能力還是較為缺乏,可以向 Erlang, Scala 等語言效仿。

  多線程并發處理,Java 做的已經很好了。不過我本人感覺還可以在多進程多線程配合,以及語言檔次數據管路表達上,可以開展改建和提升。

  JDK9 會有 HTTP/2 client 端的能力,但毫無疑問會有更多更好的三方庫出現,JDK 可以和這些三方庫通力合作,提供一個更好 API 界面和 SPI 參考實現。

  目前 Java 在云計算方面遇到的大問題還是占用內存過大。我個人認為從兩個方面來看:

  如果該應用的確是長時間運行的服務,可以考慮結構清晰的單體結構,算下來總的內存消耗并不會比多個微服務進程占用的更多。

  微服務應用,未來可以采用編譯成本地代碼的方式,并使用優化過的三方庫,甚至本地 so 文件,減少單個進程的過多內存占用。

  安全框架更加清晰,SPI 可以允許三方庫提供更強大更高效的安全功能。

  JavaEE 方向則有更多的改進的地方:

  EJB 重構目前的 Corba 分布通信基礎,參考 gRPC 進行遠程系統調用。

  分解 EJB 規范,把 JVM 進程相關的特性,如注入 / 加強 / 事務 / 安全都統一到 CDI 規范中;對 EJB 進行裁剪,保留遠程訪問特性和作為獨立執行主體分布式對象能力。

  加強 JMS 和 MDB,媲美 Akka 目前的能力。

  JaxRS 適度優化,不必要依賴 Servlet,或者適度調整,來提供更大的能力。

  JPA 借鑒 JDO,以及融入一部分特性,做到對 NoSQL 更良好的支持。

  Java 模塊化系統采用也是一個很有趣的話題。我敢肯定 OSGI 擁護者對于將它放在創新者階段會有意見,但這樣做可能是對的。

  我想可以將 Clojure 移到晚期大眾階段。當然,人們還在用它,但我感覺到它的使用量在下降,而且它本身面向的就是利基市場。

  我會將 Ceylon 移掉。它一直以來都沒有獲得太多關注,而且我不認為進入 Eclipse 會給它帶來多大幫助。這個項目的活躍度很低,過去 6 個月只有 10 個代碼提交。

  測試框架的趨勢看起來相當穩定。我們要把它移掉嗎?從采用率來看,我給它們排個順序:JUnit、TestNG/Cucumber、Spock,但似乎變化不大?(相關推薦:java的變化有哪些

  SmartBear 近收購了 Cucumber,可能會促進它的發展,但即使是這樣,我仍然傾向于把它們移掉。

  人們似乎對 JVM 上的 Node 不感興趣?我想可以把它移掉。

  我很想把 Kotlin 移到早期大眾階段,它是我近來經常聽到的一門 JVM 編程語言,這要得益于 Android 開發的流行??梢哉f,它已經越過了鴻溝,但仍然落后于其他編程語言,比如 Groovy、Swift 或 Go 語言。

  我覺得 Scala 可以留在晚期大眾階段,人們會逐步棄用它。


本文內容、圖片由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至2353260942@qq.com 舉報,一經查實,本站將立刻刪除。(如需投稿聯系管理員開通!)

? CopyRight njjava.com ???? 蘇ICP備14052071號

搶試聽名額

名額僅剩66名

教育改變生活

WE CHANGE LIVES