主頁 > 後端開發 > Java的前世今生

Java的前世今生

2020-10-20 09:20:54 後端開發

Java的前世今生

  • 我的個人博客
  • 本文視屏

前言

這一期來講故事 你說為啥這杯咖啡能喝這么多年還這么香 讓我們一起來看看這杯咖啡的魔力

現如今一提到 Java開發 就完完全全是spring的事情 一談學習就是 springboot springcloud 好像沒有什么事情是spring全家桶不能一把梭哈的 很多人就覺得這個Java很單一 很枯燥

Java真的就只能是服務端開發嗎 讓我們來捋一捋這個Java的前世今生

首先是太陽公司


在這里插入圖片描述

SUN公司介紹

SUN公司是從斯坦福大學范訓器出的高科技公司 是當時互聯網里面的老大, GoogleCEO埃里克.施密特和首任工程部副總裁韋恩.羅森(Wayne Rosen) 從這里出去的

時間來到1991


(詹姆斯·高斯林)James Gosling 大家習慣稱他為高司令 Java之父 當時高司令著手一個名叫Green的專案 專攻計算機在家電產品上的嵌入式應用(電視機頂盒、面包烤箱、移動電話)

當時選用的是c++ C++程式過于復雜和龐大 但是嵌入式的產品性能差 種類多, 所以需要新的跨平臺的 簡潔的開發語言 隨后便開發了Oak(橡樹)語言 這就是 Java 語言的前身,

由于當時并不被硬體生產商認同 所以Oak并沒有掀起大風大浪

時間來到 1995年


互聯網的快速發展給了Oak機會 因為Oak的小巧 Sun公司首先推出了可以嵌入網頁并且快速在網路上傳輸的Applet 非常適合網路傳播

隨后 各大公司競相購買了Java使用許可證

申請注冊商標時,發現Oak已經被人使用了,然后他們正在咖啡館喝Java咖啡,靈機一動Oak語言改名為Java

Java吸收C++ 的很多優點 精簡了很多東西(還摒棄了C++ 里難以理解的多繼承、指標等概念) 當時被人稱為 C++-

這一年的5月23日Java 1.0版本正式在SunWorld大會上發布 喊出了"Write Once,Run Anywhere"的口號 體現了其跨平臺的特性

時間來到 1996 年

這一年的1月23日正式發布了JDK1.0,這個版本包括了兩部分:運行環境(即JRE)
和開發環境(即JDK), 這個時候java才能真正的用來撰寫軟體

版本號 名稱 中文名 發布日期
JDK 1.1.4 Sparkler 寶石 1997-09-12
JDK 1.1.5 Pumpkin 南瓜 1997-12-13
JDK 1.1.6 Abigail 阿比蓋爾--女子名 1998-04-24
JDK 1.1.7 Brutus 布魯圖--古羅馬政治家和將軍 1998-09-28
JDK 1.1.8 Chelsea 切爾西--城市名 1999-04-08
J2SE 1.2 Playground 運動場 1998-12-04
J2SE 1.2.1 none 1999-03-30
J2SE 1.2.2 Cricket 蟋蟀 1999-07-08
J2SE 1.3 Kestrel 美洲紅隼 2000-05-08
J2SE 1.3.1 Ladybird 瓢蟲 2001-05-17
J2SE 1.4.0 Merlin 灰背隼 2002-02-13
J2SE 1.4.1 grasshopper 蚱蜢 2002-09-16
J2SE 1.4.2 Mantis 螳螂 2003-06-26
J2SE 5.0 (1.5.0) Tiger 老虎 2004-10
J2SE 6.0/1.6 (Beta) Mustang 野馬 2006-04
Java SE 7.0 / 1.7 Dolphin 海豚 2011-07-28
Java SE 8.0 / 1.8 Spider 蜘蛛 2014-03-18
Java SE 9.0 2017-09-21
Java SE 10.0 2018-03-21
Java SE 11.0 2018-09-25
JAVA 12 2019-03-19

這一年5月底,Sun公司于美國舊金山舉行了首屆JavaOne大會,從此JavaOne成為全世界數百萬Java開發者的盛會

這一年 Sun和IBM聯手創建了用于嵌入式系統的Java OS 這個東西你在網上資料都查不到 注定是失敗的

時間來到1998 年


JDK1.2 發布,Java 技術體系被拆分為 J2SE、J2EE、J2ME 三大體系

大家可能對這個 J2ME 不是很熟悉 是為機頂盒、移動電話和PDA之類嵌入式消費電子設備提供的Java語言平臺,包括虛擬機和一系列標準化的Java API 比如當時手機里面的 Java小軟體 小游戲

這也是我對Java的興趣的起始 每次看到 螢屏上的 咖啡標志都非常親切 通宵通宵的玩國產rpg游戲

時間來到2004 年


Spring1.0 框架迅速發展 Spring 2.0 于 2006 年 10 月發布

時間來到2006年


這一年的12月11日 JDK 1.6發布

Sun終結了從JDK 1.2開始已經有8年歷史的J2EE、J2SE、J2ME的命名方式,啟用Java SE 、Java EE 、Java ME 的命名方式

JAVA在桌面軟體也是有一腿的 最開始的AWT 到后來布局讓人非常頭疼的 swing 把swing發揮到極致的是IDEA是吧 swing這東西的ui界面 大家大一的Java基礎課時候應該是見識過的 非常的難搞 最近這幾年很多的搶購軟體還在用這個撰寫

雖然后來 JavaFx 有了很多的提升 但是Java 在GUI這個方面是真的不太行

2009 年


Sun 公司因為經營不善被 Oracle 公司收購 曾經的老大被提供資料庫服務的收購了 互聯網 真的是變化莫測

當Java程式員開發web的時候還是使用 Servlet out.println 一個一個列印 網頁片段進行拼接的時候 PHP .NET 已經可以使用模板頁面了 導致一部分web開發的java程式員轉向 php的懷抱 由此 JSP誕生了 JSP雖然原則上還是編譯為Servlet 但是情況就好的多了 隨后bootstrapjquery成了JavaWeb開發的伴侶 現在很多老專案的維護 都是它們的身影

2011 年,Java SE 7.0 發布, 2014年3月18日,Java SE 8.0 發布

這仍然是當前占有率最高的 JDK版本

時間回到幾年前


這個時候 市場已經從 ssh 轉向 ssm 但是開發模式還是沒有變化 配置麻煩 故障率高 會偷懶的碼農 都是用別人的腳手架 可以說 springboot 就是個高級的腳手架

也在這個同一時期

這個時候原生Android開發 如日中天 當時Android培訓就像現在的javaweb培訓一樣火熱 寫 xml 的碼農 就像現在寫springboot的碼農一樣多 再后來過渡飽和加上移動平臺的相對穩定 一大部分人尋求出路 Android原生開發可以說是我當時對Java的學習熱情的主要來源 試問哪個程式員沒有中二的一段時間 想做點自己的東西呢?

現在 springboot 開發真的非常方便 開箱即用 幾個注解就能快速開始開發

最后說些話


Java經久不衰,當時也肯定不可能一直火下去,會不斷有新語言出現并替代

無論什么語言、什么框架,都只不過是需求的最終落地而已,我們搞技術的需要做的事情就是把老板的需求變現,判斷還是那個判斷,回圈還是那個回圈

無論語言怎么變化,我們所掌握的資料結構和演算法才是經久不衰的,這也是為什么每個程式員都要重視的原因

不同的語言有不同的特點,沒有必要去爭論誰才是最好的,我自己覺得只有最適合的,沒有最好的

比如說現在php仍然是網頁快速落地的好方案,要是你對一個正在使用php的公司說2020年了還在用php,為啥不上Java?

這只能說明你的愚昧,寫代碼的人老是覺得自己會的是最牛逼的,老板會覺得能快速實作業務的最好的,這也就是你和老板的差距,你可能覺得老板愚昧不如你,但是他是老板,你是員工,他就是比你厲害

如果你非要覺得自己厲害,你完全可以嘗試改變一下自己的角色,最后會發現,自己也僅僅就是會敲點代碼而已

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/181813.html

標籤:Java

上一篇:Dubbo 2.7.7 發布,FastJson 升級了!

下一篇:原理一、Java中的HashMap的實作

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more