[Java · 初窺門徑] Java 語言初識

🌟?想系統化學習 Java 編程?看看這個:[編程基礎] Java · 學習手冊

0x01:Java · 編程語言簡介

Java 是一種高級計算機編程語言,它是由 Sun Microsystems 公司(已被 Oracle 公司收購)于 1995 年 5 月推出的一種可以編寫跨平臺應用軟件、完全面向對象的程序設計語言。

0x0101:Java · 誕生史 — 從機頂盒到改變世界的編程語言

Java 的誕生史要追溯到 1991 年,由 Patrick Naughton 及其伙伴 James Gosling(被譽為 “Java之父” )帶領的 Sun 公司的工程師小組想要設計一種小型的計算機語言,主要是面向有線電視轉換盒這類的消費設備。

由于這些消費設備的處理能力和內存都很有限,所以要求語言必須非常短小且能夠生成非常緊湊的代碼。另外,由于不同的廠商會選擇不同的中央處理器(CPU),因此這種語言的關鍵是不能與任何特定的體系結構捆綁在一起。這個項目起初被命名為 “Green”。

為滿足消費電子設備的嚴苛要求,這種新語言必須具備 代碼精簡、運行高效 的特性,同時實現 跨平臺兼容 —— 即同一套代碼無需修改即可在不同硬件架構上運行。盡管 Sun 團隊擁有深厚的 UNIX系統開發背景,但鑒于 C++ 在 跨平臺能力內存管理 上的局限性,他們決定以 C++ 語法為基礎進行改良重構。

在 James Gosling 的主導下,新語言初步定名為 Oak(靈感源自其辦公室窗外的一棵橡樹),意在體現其如同橡樹般穩健可靠的特性。然而,當準備對外發布時,團隊發現 "Oak" 已被其他編程語言占用,最終更名為 Java —— 這個名字既暗合開發團隊對咖啡文化的熱愛(Java是印尼著名咖啡產地),又隱喻著新語言能為開發者帶來如咖啡般提神的高效編碼體驗。

0x0102:Java · 發展史 — Java 版本迭代史

Java 語言發展到今天經歷了一系列的過程 (同時掃盲一波 Java 8 & Java 1.8)

  • 1991 年:SUN 公司的 Green 項目,Oak 誕生

  • 1995 年:推出 Java 測試版

  • 1996 年:JDK 1.0 — JDK(Java 開發工具包)

  • 1997 年:JDK 1.1

  • 1998 年:JDK 1.2,大大改進了早期版本缺陷,是一個革命性的版本,更名為 Java2

  • 2004 年:J2SE 5.0(1.5.0)Tiger 老虎稱為 Java 語言發展史上的又一里程碑,為了表示該版本的重要性,J2SE 1.5 更名為 Java SE 5.0

  • 2005 年:Java 的各種版本進行更名,以取消其中的數字 “2”,J2ME 更名為 Java ME,J2SE 更名為 Java SE,J2EE 更名為 Java EE。

  • 2006 年:Java SE 6.0(1.6.0)

  • 2009 年:甲骨文(Oracle)收購 SUN,交易額高達 74 億

  • 2011 年:JavaSE 7.0(1.7.0)

  • 2014 年:JavaSE 8.0(1.8.0) - 長期支持

  • 2017 年:Java 9.0

  • 2018 年 3 月:Java 10

  • 2018 年 9 月:Java 11 - 長期支持

  • 2019 年 3 月:Java 12

  • 2019 年 9 月:Java 13

  • 2020 年 3 月:Java 14

  • 2020 年 9 月:Java 15

  • 2021 年 3 月:Java 16

  • 2021 年 9 月:Java 17 - 長期支持

  • 2022 年 3 月:Java 18

  • 2022 年 9 月:Java 19

  • 2023 年 3 月:Java 20

  • 2023 年 9 月:Java 21,9 月 19 日,以六個月為更新頻次的 Java 正式發布了最新的長期支持版本 — Java 21,這一版本將獲得官方 5 年的重要支持,這意味著對于開發者、企業而言,如果想要用上穩定而前沿的 Java,JDK 21 無疑是最好的選擇。

  • 2024 年 3 月:Java 22


Java · 知識掃盲:

Java 1.8 & Java 8 Java 1.8.0 & Java 8 其實是一樣的 😂。得益于 Java 神奇的版本迭代機制,搞亂了一堆初學者。

Java · 學習建議:關于 Java 學習版本的選擇

從 Java 的版本迭代史可以看出來,Java 的版本更新非常的快。對于我們初學者而言,筆者建議學習那些長期支持的版本,比如 8、11、17、21 版本。另外,對于語言的學習我們一開始并不推薦追求最新版,有以下幾點考量:

  1. 編程語言的基礎語法很難改動 => 學了低版本的基礎語法你到高版本僅僅是換個版本的事情。

  2. 新版本生態環境尚未搭建 => 新版本剛推出,參考資料比較少,除了 Bug 很難排查。

0x0103:Java · 體系結構 — SE & EE & ME

針對不同開發市場,Sun 公司將 Java 劃分為 3 個技術平臺(體系結構):

  • Java SE(Java Standard Edition):標準版,定位在個人計算機上使用

  • Java EE(Java Enterprise Edition):企業版,定位在服務器端的應用

  • Java ME(Java Micro Edition):微型版,定位在消費性電子產品的應用上

1. Java SE — 標準版 Java 技術平臺

適用場景: 開發普通桌面和商務應用程序

這個版本是 Java 平臺的核心,它提供了非常豐富的 API 來開發一般個人計算機上的應用程序,包括用戶界面接口 AWT 及 Swing,網絡功能和國際化、圖像處理高能力以及輸入輸出支持等。

在上個實際 90 年代末互聯網上大放異彩的 Applet 也屬于這個版本。Applet 后來被 Flash 取代,而 Flash 現在也被 HTML5 取代了。

2. Java EE — 企業版 Java 技術平臺

適用場景: 開發企業級應用程序

JavaEE 是 JavaSE 的擴展,增加了用于服務器開發的類庫。如:JDBC 讓程序員能直接在 Java 內使用SQL 的 語法來訪問數據庫內的數據;Servlet 能夠延伸服務器的功能,通過 請求-響應 的模式來處理客戶端的請求;JSP 是一種可以將 Java 程序代碼內嵌在網頁內的技術。

3. Java ME — 微型版 Java 技術平臺

適用場景: 開發電子消費產品和嵌入式設備

JavaME 是 JavaSE 的內伸,包含 J2SE 的一部分核心類,也有自己的擴展類,增加了適合微小裝置的類庫:javax.microedition.io.* 等。該版本針對資源有限的電子消費產品的需求精簡核心類庫,并提供了模塊化的架構讓不同類型產品能夠隨時增加支持的能力。

0x0104:Java · 語言特性

筆者備注:沒有最牛逼的語言,只有最適合的語言 !!

下面是 Java 的特性與優勢,簡而言之,Java 牛逼!!!

  • 跨平臺/可移植性: Java 通過 JVM(Java Virtual Machine,Java 虛擬機)以及字節碼實現跨平臺性。Java 程序由 Javac 編譯器編譯為字節碼文件(.class文件),JVM 中的 Java 解釋器會將字節碼文件翻譯成所在平臺上的機器碼文件,執行對應的機器碼文件就可以了。Java 程序只要一次編寫,就可到處運行。

  • 安全性:

    • Java 的存儲分配模型可以防御惡意代碼攻擊。

    • Java 沒有指針,外界不能通過偽造指針操作存儲器。

    • Java 編譯器在編譯程序時不顯示存儲安排策略,程序員不能通過查看聲明猜測出類的實際存儲安排。

    • Java 程序的存儲是在程序運行時由 Java 解釋程序決定的。

  • 面向對象: 面向對象是一種程序設計技術,非常適合大型軟件的設計與開發。由于 C++ 為了照顧大量 C 語言使用者而兼容了 C,使得自身僅僅成為了帶類的 C 語言,多少影響了其面向對象的徹底性!而 Java 是完全的面向對象的語言。

  • 簡單性: Java 使用引用代替指針,并提供了自動垃圾回收機制,使程序員不必擔心內存管理。

  • 高性能: Java 最初發展階段,總是被人詬病 ”性能低“;客觀上,高級語言運行效率總是低于級語言的,這個無法避免。Java 語言本身發展中通過虛擬機的優化提升了幾十倍的運行效率。比如,通過 JIT(JUST IN TIME)即時編譯技術提高運行效率。將一些 ”熱點“ 字節碼編譯成本地機器碼,并將結果緩存起來,在需要的時候重新調用。這樣的話,使 Java 程序的執行效率大大提高,某些代碼甚至接近 C++ 的效率。

  • 分布性: Java是為 Internet 的分布式環境設計的,因為它能夠處理 TCP/IP 協議。事實上,通過URL 訪問一個網絡資源和訪問本地文件是一樣簡單的。Java 還支持遠程方法調用(RMI,Remote Method Invocation),使程序能夠通過網絡調用方法。

  • 多線程: 多線程的使用可以帶來更好的交互響應和實時行為。 Java 多線程的簡單性是 Java 成為主流服務器端開發語言的主要原因之一。

上面雖然羅列了 Java 這么多的好,但是并不是說它就是萬能的,每種語言都有自己適合的賽道,沒有最好,只有最適合。一個簡單的例子,C 的性能很好,但是語法復雜。Python 性能比 C 慢多了,但它學起來 Easy,所以 Python 對小白來說肯定優于 C。

0x02:Java · 學習它的意義?

我們學習一門語言,不應為是為了學而學,而應該知道,我為啥要學它?學了它之后我能干什么?目前市場上主流的開發有以下幾類,Java 都可以做,但是咱們講究一個合適:

  • 桌面應用開發: Java 是能寫桌面程序的,但目前桌面 C# 比較流行。

  • 企業級應用開發: 微服務、大型互聯網應用。(主流)

  • 移動應用開發: 目前安卓、鴻蒙這些比較火,但 Java 也可以做。

  • 服務器系統: 各種應用的后臺。(主流)

  • 大數據開發: hadoop。(主流)

  • 游戲開發: 能做,但不是主流。

0x03:Java · 核心機制 — 垃圾回收(了解)

這部分是提升階段,如果你之前學過其它的編程語言,那么對 Java 的這個機制會了解的比較深刻。對于小白而言,了解即可(應對應對面試)。


”垃圾回收“ 機制是 Java 的一個核心機制,這里的 ”垃圾回收“ 是指 清除不再使用的對象。Java 中有一個系統級的垃圾收集器,我們管它叫 Garbage Collection - GC

每當一個對象被創建,GC 就會盯著這個對象,看它啥時候不用,一旦它后續沒人用了,GC 就自動給它干掉了。不像 C++,掃垃圾還得自己動手寫程序。

自動是挺好的,但是因為自動,所以程序員是無法對其進行精確控制和干預的。

0x04:Java · 核心機制 — 跨平臺原理(掌握)

跨平臺 泛指程序語言、軟件或硬件設備可以在多種作業系統或不同硬件架構的電腦上運作。

Java 通過 JVM(Java Virtual Machine,Java 虛擬機)以及字節碼實現跨平臺性。

Java 程序由 Javac 編譯器編譯為字節碼文件(.class文件),JVM 中的 Java 解釋器會將字節碼文件翻譯成所在平臺上的機器碼文件,并執行對應的機器碼文件。所以 Java 程序只要一次編寫,就可到處運行(要運行的機器上安裝對應平臺的 JVM 即可):

上面提到的那么多工具(javacjava.exeJVM),你只需要安裝一個 JDK,就全部都有了。

JDK(Java Development Kit,Java 開發工具包)是 Oracle 官方提供的 Java 核心開發套件,包含開發、編譯、調試和運行 Java 程序所需的所有工具和庫,它是 Java 開發者必須安裝的基礎環境(從下一章開始我們就要配置 JDK 了)。

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

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

相關文章

1187. 【動態規劃】競賽總分

題目描述 學生在我們USACO的競賽中的得分越多我們越高興。我們試著設計我們的競賽以便人們能盡可能的多得分。 現在要進行一次競賽,總時間T固定,有若干類型可選擇的題目,每種類型題目可選入的數量不限,每種類型題目有一個si(解答…

使用KeilAssistant代替keil的UI界面

目錄 一、keil Assistant的優勢和缺點 二、使用方法 (1)配置keil的路徑 (2)導入并使用工程 (3)默認使用keil自帶的ARM編譯器而非GUN工具鏈 一、keil Assistant的優勢和缺點 在日常學…

【React】通過 fetch 發起請求,設置 proxy 處理跨域

fetch 基本使用跨域處理 fetch 基本使用 在node使用原生ajax發請求:XMLHttpRequest()1.獲取xhr對象 2.注冊回調函數 3.設置參數,請求頭 4.發起連接原生ajax沒有帶異步處理 promise;原生ajax封裝一下,以便重復調用jQuery&#…

Redis(二) - Redis命令詳解

文章目錄 前言一、啟動Redis并進入客戶端1. 啟動Redis2. 進入Redis客戶端3. 使用IDEA連接Redis 二、查看命令幫助信息1. 查看所有命令2. 查看指定命令幫助 三、鍵操作命令1. set命令2. mset命令3. keys命令4. get命令5. mget命令6. dump命令7. exists命令8. type命令9. rename命…

【Qt】初識Qt(二)

目錄 一、顯示hello world1.1 圖形化界面1.2 寫代碼 二、對象樹三、使用輸入框顯示hello world四、使用按鈕顯示hello world 一、顯示hello world 有兩種方式實現hello world: 通過圖形化界面,在界面上創建出一個控件,顯示hello world通過寫…

空調制冷量和功率有什么關系?

空調的制冷量和功率是衡量空調性能的兩個核心參數,二者既有區別又緊密相關,以下是具體解析: 1. 基本定義 制冷量(Cooling Capacity)指空調在單位時間內從室內環境中移除的熱量,單位為 瓦特(W) 或 千卡/小時(kcal/h)。它直接反映空調的制冷能力,數值越大,制冷效果越…

【prometheus+Grafana篇】Prometheus與Grafana:深入了解監控架構與數據可視化分析平臺

💫《博主主頁》:奈斯DB-CSDN博客 🔥《擅長領域》:擅長阿里云AnalyticDB for MySQL(分布式數據倉庫)、Oracle、MySQL、Linux、prometheus監控;并對SQLserver、NoSQL(MongoDB)有了解 💖如果覺得文章對你有所幫…

基于n8n的AI應用工作流原理與技術解析

基于n8n的AI應用工作流原理與技術解析 在AI技術深度融入企業數字化轉型的今天,開源工作流自動化工具n8n憑借其靈活的架構和強大的集成能力,成為構建智能自動化流程的核心引擎。本文將從技術原理、AI融合機制、典型應用場景三個維度,解析n8n在…

經濟指標學習(二)

系列文章目錄 文章目錄 系列文章目錄1、市凈率**一、定義與計算****二、核心意義****三、應用場景****四、局限性****五、分類與衍生指標****總結** 2、市銷率**一、定義與計算****二、核心意義****三、優缺點分析****四、適用場景****五、與其他指標的對比****六、實際應用案例…

大語言模型減少幻覺的常見方案

什么是大語言模型的幻覺 大語言模型的幻覺(Hallucination)是指模型在生成文本時,輸出與輸入無關、不符合事實、邏輯錯誤或完全虛構的內容。這種現象主要源于模型基于概率生成文本的本質,其目標是生成語法合理、上下文連貫的文本&…

CSS 美化頁面(四)

一、浮動float屬性 ?屬性值??描述??適用場景?left元素向左浮動,騰出右側空間供其他元素使用,其他內容會圍繞在其右側?。橫向排列元素(如導航菜單)、圖文混排布局?。right元素向右浮動,騰出左側空間供其他元素使…

如何將 .txt 文件轉換成 .md 文件

一、因為有些軟件上傳文件的時候需要 .md 文件,首先在文件所在的目錄中,點擊“查看”,然后勾選上“文件擴展名”,這個時候該目錄下的所有文件都會顯示其文件類型了。 二、這時直接對目標的 .txt 文件進行重命名,把后綴…

C++ 迭代器失效詳解:如何避免 vector 操作中的陷阱

目錄 1. 什么是迭代器失效? 2. 哪些操作會導致迭代器失效? 2.1 vector 的插入操作(push_back, insert) 示例:push_back 導致迭代器失效 如何避免? 2.2 vector 的刪除操作(erase, pop_back&…

(EtherCAT 轉 EtherNet/IP)EtherCAT/Ethernet/IP/Profinet/ModbusTCP協議互轉工業串口網關

型號 協議轉換通信網關 EtherCAT 轉 EtherNet/IP MS-GW12 概述 MS-GW12 是 EtherCAT 和 EtherNet/IP 協議轉換網關,為用戶提供兩種不同通訊協議的 PLC 進行數據交互的解決方案,可以輕松容易將 EtherNet/IP 網絡接入 EtherCAT 網絡中,方便…

榕壹云酒水定制系統:基于THinKPHP+MySQL+UniApp打造數字化時代的個性化購酒新體驗

數字化浪潮下的酒水定制新機遇 在消費升級與個性化需求崛起的背景下,傳統酒水行業正面臨數字化轉型的迫切需求。為此,我們團隊基于ThinkPHPMySQLUniApp技術棧,開發了一套榕壹云酒水定制系統,旨在通過數字化手段解決消費者個性化購…

GR00T N1:面向通用類人機器人的開放基礎模型

摘要 通用型機器人需要具備多功能的身體和智能的大腦。近年來,類人機器人的發展在構建人類世界中的通用自主性硬件平臺方面展現出巨大潛力。一個經過大量多樣化數據源訓練的機器人基礎模型,對于使機器人能夠推理新情況、穩健處理現實世界的多變性以及快…

WebRTC實時通話EasyRTC嵌入式音視頻通信SDK,構建智慧醫療遠程會診高效方案

一、方案背景 當前醫療領域,醫療資源分布不均問題尤為突出,大城市和發達地區優質醫療資源集中,偏遠地區醫療設施陳舊、人才稀缺,患者難以獲得高質量的醫療服務,制約醫療事業均衡發展。 EasyRTC技術基于WebRTC等先進技…

深入理解主成分分析(PCA):原理、算法與應用

內容摘要 本文深入剖析主成分分析(PCA)技術。介紹其通過正交變換簡化數據維度的核心原理,詳細推導基于最小投影距離和最大投影方差的算法過程,總結算法流程步驟。全面分析PCA的優缺點,并對比其與KPCA的差異。同時闡述…

uniapp-商城-25-頂部模塊高度計算

計算高度: 使用computed進行頂部模塊的計算。 總高度:bartotalHeight log 介紹--收款碼這一條目 也就是上一章節的title的高度計算 bodybarheight。 在該組件中: js部分的代碼: 包含了導出的名字: shop-head…

【MCP】第一篇:MCP協議深度解析——大模型時代的“神經連接層“架構揭秘

【MCP】第一篇:MCP協議深度解析——大模型時代的"神經連接層"架構揭秘 一、什么是MCP?二、為什么需要MCP?三、MCP的架構四、MCP與AI交互的原理4.1 ReAct(Reasoning Acting)模式4.2 Function Calling 模式 五…