Java發展史

Java發展史

Java歷史的幾個重要節點:

  • 1990,Sun公司啟動了一個名為“綠色計劃”的項目,由James Gosling等領導,目標是開發一種可以在機頂盒等消費性電子產品上運行的程序架構。這個計劃產生了Java的前身:Oak,隨著1995年互聯網的興起,Oak找到了適合自己的發展方向并最終蛻變成Java。
  • 1995年5月23日,Oak正式改名為Java,Java也第一次提出來**“一次編譯,到處運行”(Write Once, Run Anywhere)**的口號。
  • 1996年1月23日,JDK 1.0發布,Java語言有了第一個正式版本的運行環境。
  • 1998年12月4日,Sun公司將Java技術體系分為三個方向:面向桌面應用開發的J2SE(Java 2 Platform, Standard Edition)、面向企業級開發的J2EE(Java 2 Platform, Enterprise Edition)、面向機頂盒等移動終端開發的J2ME(Java 2 Platform, Micro Edition)。
  • 2004年9月30日,Sun公司放棄了“JDK 1.x”的命名方式,將版本號修改為“JDK x”,并且發布了JDK 5。
  • 2006年11月13日,Sun公司在Java One大會上宣布要將Java開源。在隨后的一年多里,Sun公司陸續將JDK各個部分的源碼在GPL v2協議下公開,并建立了OpenJDK組織獨立管理這些源碼。
  • 2006年12月11日,JDK 6發布,從這個版本開始,J2SE、J2EE、J2EE的命名方式被Java EE、 Java SE、 Java ME代替。
  • 2009年4月20日,Oracle正式收購Sun公司,Java商標也隨之歸Oracle所有(Java語言本身由JCP組織進行管理,并不屬于某家公司所有)。
  • 2017年,JDK 9發布。并且,Oracle宣布以后將會在每年的3月和9月各發布一個JDK的大版本,另外,每六個大版本中才會被劃分出一個長期支持(Long Term Support)版本。只有LTS版的JDK才可以獲得長期的支持和更新,普通版本的JDK只有六個月的生命周期。目前,有4個LTS版本:JDK 8、 JDK 11、 JDK 17、 JDK21
  • 2018年3月,Oracle宣布“按計劃報廢”Java EE(包含JDBC、Servlet等基礎組件),將所有權贈送給Eclipse基金會,且Java EE不準再使用Java的商標,取而代之的是Jakarta EE
  • 2018年9月25日,JDK 11發布,同時Oracle宣布以后將會同時發行兩個JDK:一個是在GPL v2+CE協議下由Oracle發行的OpenJDK,一個是在OTN協議下發行的OracleJDK。這兩個JDK共享絕大部分代碼,在功能上幾乎一樣。OpenJDK可以免費在開發、測試以及生產環境下使用,但只有半年時間的更新支持;OracleJDK僅允許少數的免費使用場景,若在生產環境中商用就必須收費,且有長期的更新支持。一些公司會在OpenJDK的基礎上開發自己的JDK,如阿里巴巴的Dragonwell,OpenJDK的管理以及維護目前由RetHat負責。

注:

  • JavaSE、JaveEE、JavaME三者之間的關系

    • JavaSE是基礎,面向桌面級應用(如Windows應用),提供了核心庫和語言特性
    • JavaEE擴展了JavaSE,面向服務端的Web應用,針對企業級應用開發提供了更多的功能和組件,如javax.servlet.*等
    • JavaME專注于嵌入式設備和移動設備的應用開發,提供了輕量級的運行時環境和API,如javax.microedition.io.*等

    (Android APP開發也使用了Java,但并不是Java ME開發)

Java三個技術體系的關系

  • 4個LTS版本更新支持結束時間分別為
LTS版本支持結束時間
JDK 82030年12月
JDK 112032年1月
JDK 172024年9月
JDK 212026年9月
  • OpenJDK

    OpenJDK以及OracleJDK之間具體的歷史關系,可以參考博客。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/210160.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/210160.shtml
英文地址,請注明出處:http://en.pswp.cn/news/210160.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java八股文面試全套真題【含答案】-XML篇

XML 是什么?它的全稱是什么? 答案:XML(可擴展標記語言)是一種用于描述數據的標記語言,用于存儲和交換結構化的信息。XML 的全稱是 eXtensible Markup Language。XML 和 HTML 有什么區別? 答案&a…

看圖學源碼 之 ConcurrentHashMap put、get、remove、clear、擴容等相關方法的源碼分析

ConcurrentHashMap 引入 HashMap 的弊端 多線程下是不安全的,是有死循環的 JDK1.7 的時候會使用頭插法將新的節點增加到頭部,那么就會造成鏈表翻轉成為了閉環,就是所謂的死循環。 JDK1.8之后使用的是尾插法,因此不會造成環形鏈…

京東數據運營:京東API接口有哪些?京東數據如何采集調用?

市場分析對于電商品牌來說非常重要,它可以幫助電商品牌更好地理解市場,把握市場機會,以及制定有效的產品定價、產品營銷策略等等。 結合市場中可以幫助品牌方做市場分析的電商數據分析工具——鯨參謀電商數據分析平臺,我們一起具體…

在Mac上安裝Windows應用程序的簡便方法:CrossOver for Mac

對于許多Mac用戶來說,有時候他們可能需要使用一些只有在Windows上才能找到的應用程序。以前,解決這個問題的方法是通過安裝Windows虛擬機或使用雙系統來在Mac上運行Windows應用程序。但這些方法需要額外的硬件資源和時間來配置,并且可能會導致…

IOT安全學習路標

1. 物聯網基礎知識 首先,你需要建立堅實的物聯網基礎知識,包括IoT的架構和組件,傳感器和設備的連接和通信技術,云端和邊緣計算等。 2. 通信和網絡安全 學習關于物聯網通信和網絡安全的基礎知識,包括加密和認證技術、…

通俗解釋一下“強靜態類型”

我寫軟件已經有 20 多年了,隨著時間的推移,我越來越確信強靜態類型不僅是一個好主意,而且幾乎總是正確的選擇。 非類型化語言(或語言變體)肯定有用途,例如,當使用 REPL 時,或者在已經無可救藥的無類型環境(…

有什么進銷存軟件能對接微信小程序?

有什么進銷存軟件能對接微信小程序? 據我所知,很多進銷存軟件都有配套的微信小程序吧。 以我們現在用的這個為例,這也是同行推薦過來的,很好用,而且性價比很高—— 在線平臺,無需下載APP,搭載…

C語言實戰演練之跳動的愛心C語言版

跳 動 的 愛 心 - LOVE - 完整程序 #include <stdio.h> #include <math.h> #include <windows.h> #include <tchar.h> float f(float x, float y, float z) {float a x * x 9.0f / 4.0f * y * y z * z - 1;return a * a * a - x * x * z * z …

ELK簡單介紹一

任務背景 運維人員需要對系統和業務日志進行精準把控&#xff0c;便于分析系統和業務狀態。日志分布在不同的服務器上&#xff0c;傳統的使用傳統的方法依次登錄每臺服務器查看日志&#xff0c;既繁瑣又效率低下。所以我們需要集中化的日志管理工具將位于不同服務器上的日志收…

藍橋杯日期問題

藍橋杯其他真題點這里&#x1f448; 注意日期合法的判斷 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;public class Main{static int[] days {0,31,28,31,30,31,30,31,31,30,31,30,31};static BufferedReader in new Buf…

【核心重點】Flink四大基石

1. Time&#xff08;時間機制&#xff09; 時間概念 處理時間&#xff1a;執行具體操作時的機器時間&#xff08;例如 Java的 System.currentTimeMillis()) &#xff09;事件時間&#xff1a;數據本身攜帶的時間&#xff0c;事件產生時的時間。攝入時間&#xff1a;數據進入 …

linux vim 基礎設置-自動填充文件頭

前言 當前為vimrc腳本設置&#xff0c;腳本位置在 ~/.vimrc or /etc/vimrc 當前為首次打開 C C Shell 文件&#xff0c;自動填充對應文件頭信息&#xff0c;再次打開時會修改對應時間信息 :set nu "顯示行號 :set hlsearch "搜索時 高亮"新建 .c .cpp .sh文件&a…

理解Go語言中的defer

引言 Go有許多在其他編程語言中可以找到的常見控制流關鍵字,例如if、switch、for等。defer是其他大多數編程語言中沒有的關鍵字,盡管它不太常見,但你很快就會看到它在你的程序中有多么有用。 defer語句的主要用途之一是清理資源,例如打開的文件,網絡連接和數據庫句柄。在…

在AWS Lambda上部署EC2編譯的FFmpeg工具——自定義層的方案

大綱 1 確定Lambda運行時環境1.1 Lambda系統、鏡像、內核版本1.2 運行時1.2.1 Python1.2.2 Java 2 環境準備2.1 創建EC2實例 3 編譯FFmpeg3.1 連接EC2 4 編譯5 上傳S3存儲桶5.1 創建S3桶5.2 創建IAM策略5.3 創建IAM角色5.4 EC2關聯角色5.5 修改桶策略5.6 打包并上傳 6 創建Lamb…

智能優化算法應用:基于海鷗算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼

智能優化算法應用&#xff1a;基于海鷗算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼 文章目錄 智能優化算法應用&#xff1a;基于海鷗算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼1.無線傳感網絡節點模型2.覆蓋數學模型及分析3.海鷗算法4.實驗參數設定5.算法結果6.參考文獻7.MA…

【nuxt3】cannot read preperties of null (reading ‘$nuxt‘)

問題描述 vue3 中&#xff0c;通過 createVNode 創建子組件實例時&#xff0c;發現子組件無法獲取到父組件中的 router、store 信息&#xff0c;一旦子組件使用就會報錯。 問題原因 通過控制臺斷點調試&#xff0c;發現時 appContext 值為空導致的。懷疑是創建子組件的時候&a…

海外地區開啟IPV6無法訪問服務器問題

前言 最近有海外地區的用戶反饋無法訪問公司的網絡&#xff0c;無法下載應用和系統進行升級。了解到瀏覽器可以正常訪問公司域名&#xff0c;谷歌&#xff0c;油管等都能正常使用。日志分析GET請求服務器數據時沒有得到應答&#xff0c;最終查詢網絡相關修改確認與網絡IPV6有關…

掌握游戲開發的全方位知識:這些內容你一定要知道

游戲開發是一項涉及多學科的綜合性工作&#xff0c;從游戲設計到編程、美術、音頻、測試等多個方面都需要開發者具備廣泛的知識。以下是進行游戲開發時需要掌握的主要知識領域。 首先&#xff0c;游戲設計是整個過程的基石。這包括游戲機制和玩法設計、關卡設計、用戶界面&…

表示你的shell未被正確配置以使用conda activate--換成清華源anaconda

1 CommandNotFoundError: Your shell has not been properly configured to use conda activate. If using conda activate from a batch script, change your invocation to CALL conda.bat activate.To initialize your shell, run$ conda init <SHELL_NAME>這個錯誤提…

uniapp-獲取手機型號

要獲取當前設備的手機型號&#xff0c;您可以使用uni-app提供的uni.getSystemInfo() API來實現此目的。 代碼示例&#xff1a; uni.getSystemInfo({success: function(res) {console.log("手機型號&#xff1a;" res.platform)} })該方法會返回一個包含設備信息的…