JAVA初識,JAVA是什麼?

来源:https://www.cnblogs.com/WangYiqiang/archive/2018/10/01/9734711.html
-Advertisement-
Play Games

一、什麼是JAVA 二、JAVA發展歷史 1991年 SUN公司為搶占電腦單片機嵌入式領域市場,成立GReen項目小組,專攻家電嵌入式應用。由於C++程式複雜龐大,且跨平臺是個問題,所以對C++進行改造,去除了留在C++的一些不太實用及影響安全的成分,並結合嵌入式系統的實時性要求,開發了一種稱為O ...


一、什麼是JAVA

  1. Java是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特征。
  2. Java語言作為靜態面向對象編程語言的代表,極好地實現了面向對象理論,允許程式員以優雅的思維方式進行複雜的編程 。
  3. Java具有簡單性、面向對象、分散式、健壯性、安全性、平臺獨立與可移植性、多線程、動態性等特點 。
  4. Java可以編寫桌面應用程式、Web應用程式、分散式系統和嵌入式系統應用程式等 。

 

二、JAVA發展歷史

1991年

SUN公司為搶占電腦單片機嵌入式領域市場,成立GReen項目小組,專攻家電嵌入式應用。由於C++程式複雜龐大,且跨平臺是個問題,所以對C++進行改造,去除了留在C++的一些不太實用及影響安全的成分,並結合嵌入式系統的實時性要求,開發了一種稱為Oak的面向對象語言,但由於Oak是以硬體二進位機器碼(位元組碼)作為運行平臺,硬體廠商不遠冒著Oak語言未被推廣就生產硬體的風險,因此Oak語言被擱置。

1994年

GReen項目小組改變應用目標,決定將Oak應用在萬維網上,以有線電視網為模型開發小組開發出小型萬維網瀏覽器WebRunner。

1995年

互聯網發展要求一種能在網路傳播且跨平臺運行的程式,因為Oak基於嵌入式系統結構編寫,因此十分精簡,適合在網路上傳輸。於是Oak被SUN公司重新重視起來,併在同年推出可以嵌入在網頁內且能隨同網頁在網路上傳輸的小程式Applet,並將Oak更名為JAVA。JAVA開始得到推廣,各大電腦互聯網公司購買JAVA使用許可並開發相應平臺。

1996年 

Sun公司發佈了Java的第一個開發工具包(JDK 1.0),標志著Java成為一種獨立的開發工具。約8.3萬個網頁應用了Java技術來製作。同年Sun公司發佈了Java平臺的第一個即時(JIT)編譯器。

1997年 

Sun公司發佈了Java  JDK1.1 開發工具包

1998年

發佈三個不同版本JAVA:

Java J2EE(Java Platform,Enterprise Edition) JAVA企業版,應用為開發和部署可移植、健壯、可伸縮且安全的伺服器端Java應用程式。

Java J2SE(Java Platform,Standard Edition)Java標準版,應用為開發和部署在桌面、伺服器、嵌入式環境和實時環境中使用的Java應用程式。

Java J2ME(Java Platform,Micro Edition)Java微型版,應用為在移動設備和嵌入式設備(手機,電視機頂盒)上運行的應用程式提供一個健壯且靈活的環境。

1999年 

HotSpot虛擬機發佈。HotSpot虛擬機發佈時是作為JDK 1.2的附加程式提供的,後來它成為了JDK 1.3及之後所有版本的Sun JDK的預設虛擬機 。

2000年 

JDK1.3、JDK1.4和J2SE1.3相繼發佈。

2002年 

J2SE1.4發佈Java的計算能力有了大幅提升,與J2SE1.3相比,其多了近62%的類和介面。在這些新特性當中,還提供了廣泛的XML支持、安全套接字(Socket)支持(通過SSL與TLS協議)、全新的I/OAPI、正則表達式、日誌與斷言。

2004年 

J2SE1.5發佈,成為Java語言發展史上的又一里程碑。為了表示該版本的重要性,J2SE 1.5更名為Java SE 5.0(內部版本號1.5.0),代號為“Tiger”,Tiger包含了從1996年發佈1.0版本以來的最重大的更新,其中包括泛型支持、基本類型的自動裝箱、改進的迴圈、枚舉類型、格式化I/O及可變參數。

2005年 

Java SE 6發佈。同時其他兩個JAVA版本更名。J2EE更名為JavaEE,J2SE更名為JavaSE,J2ME更名為JavaME。

2006年 

Java技術的發明者Sun公司宣佈,將Java技術作為免費軟體對外發佈。Sun公司正式發佈的有關Java平臺標準版的第一批源代碼,以及Java迷你版的可執行源代碼。

2007年 

世界所有的開發人員均可對Java源代碼進行修改。

2009年 

甲骨文公司收購Sun。

2011年 

Java7發佈。

2014年

Java8發佈。

2017年

Java9發佈。

 

三、JAVA環境

  • JDK(Java Development Kit)稱為Java開發包或Java開發工具,是一個編寫Java的Applet小程式和應用程式的程式開發環境。JDK是整個Java的核心,包括了Java運行環境(Java Runtime Envirnment),一些Java工具和Java的核心類庫(Java API)。不論什麼Java應用伺服器實質都是內置了某個版本的JDK。
  • JRE(JAVA Runtime Environment)稱為Java運行環境,是一個由Java API類庫中的Java SE API子集和Java虛擬機組成。JRE是支持Java程式運行的標準環境。

 

使用註意:

  • JDK是個開發環境,JRE是個運行環境。編寫Java程式的時候需要JDK,而運行Java程式的時候就需要JRE。而JDK裡面已經包含了JRE,因此只要安裝了JDK,就可以編輯Java程式,也可以正常運行Java程式。當JAVA程式無需編寫,只需運行時,只安裝JRE即可。

四、JAVA編程工具

  • Eclipse:一個開放源代碼的、基於Java的可擴展開發平臺  。
  • IntelliJ IDEA:在代碼自動提示、代碼分析等方面的具有很好的功能。
  • NetBeans:開放源碼的Java集成開發環境,適用於各種客戶機和Web應用。
  • MyEclipse:由Genuitec公司開發的一款商業化軟體,是應用比較廣泛的Java應用程式集成開發環境。
  • EditPlus:如果正確配置Java的編譯器“Javac”以及解釋器“Java”後,可直接使用EditPlus編譯執行Java程式。

 

五、JAVA語言特點

1.簡單性

Java看起來設計得很像C++,但是為了使語言小和容易熟悉,設計者們把C++語言中許多可用的特征去掉了,這些特征是一般程式員很少使用的。例如,Java不支持go to語句,代之以提供break和continue語句以及異常處理。Java還剔除了C++的操作符過載(overload)和多繼承特征,並且不使用主文件,免去了預處理程式。因為Java沒有結構,數組和串都是對象,所以不需要指針。Java能夠自動處理對象的引用和間接引用,實現自動的無用單元收集,使用戶不必為存儲管理問題煩惱,能更多的時間和精力花在研發上。

2.面向對象

Java是一個面向對象的語言。對程式員來說,這意味著要註意應中的數據和操縱數據的方法(method),而不是嚴格地用過程來思考。在一個面向對象的系統中,類(class)是數據和操作數據的方法的集合。數據和方法一起描述對象(object)的狀態和行為。每一對象是其狀態和行為的封裝。類是按一定體系和層次安排的,使得子類可以從超類繼承行為。在這個類層次體系中有一個根類,它是具有一般行為的類。Java程式是用類來組織的。 Java還包括一個類的擴展集合,分別組成各種程式包(Package),用戶可以在自己的程式中使用。例如,Java提供產生圖形用戶介面部件的類(java.awt包),這裡awt是抽象視窗工具集(abstract windowing toolkit)的縮寫,處理輸入輸出的類(java.io包)和支持網路功能的類(java.net包)。

3.分佈性

Java設計成支持在網路上應用,它是分散式語言。Java既支持各種層次的網路連接,又以Socket類支持可靠的流(stream)網路連接,所以用戶可以產生分散式的客戶機和伺服器。 網路變成軟體應用的分佈運載工具。Java程式只要編寫一次,就可到處運行。

4.編譯和解釋性

Java編譯程式生成位元組碼(byte-code),而不是通常的機器碼。Java位元組碼提供對體繫結構中性的目標文件格式,代碼設計成可有效地傳送程式到多個平臺。Java程式可以在任何實現了Java解釋程式和運行系統(run-time system)的系統上運行。 在一個解釋性的環境中,程式開發的標準“鏈接”階段大大消失了。如果說Java還有一個鏈接階段,它只是把新類裝進環境的過程,它是增量式的、輕量級的過程。因此,Java支持快速原型和容易試驗,它將導致快速程式開發。這是一個與傳統的、耗時的“編譯、鏈接和測試”形成鮮明對比的精巧的開發過程。

5.穩健性  

Java Java原來是用作編寫消費類家用電子產品軟體的語言,所以它是被設計成寫高可靠和穩健軟體的。Java消除了某些編程錯誤,使得用它寫可靠軟體相當容易。 Java是一個強類型語言,它允許擴展編譯時檢查潛在類型不匹配問題的功能。Java要求顯式的方法聲明,它不支持C風格的隱式聲明。這些嚴格的要求保證編譯程式能捕捉調用錯誤,這就導致更可靠的程式。 可靠性方面最重要的增強之一是Java的存儲模型。Java不支持指針,它消除重寫存儲和訛誤數據的可能性。類似地,Java自動的“無用單元收集”預防存儲漏泄和其它有關動態存儲分配和解除分配的有害錯誤。Java解釋程式也執行許多運行時的檢查,諸如驗證所有數組和串訪問是否在界限之內。 異常處理是Java中使得程式更穩健的另一個特征。異常是某種類似於錯誤的異常條件出現的信號。使用try/catch/finally語句,程式員可以找到出錯的處理代碼,這就簡化了出錯處理和恢復的任務。

6.安全性

Java的存儲分配模型是它防禦惡意代碼的主要方法之一。Java沒有指針,所以程式員不能得到隱蔽起來的內幕和偽造指針去指向存儲器。更重要的是,Java編譯程式不處理存儲安排決策,所以程式員不能通過查看聲明去猜測類的實際存儲安排。編譯的Java代碼中的存儲引用在運行時由Java解釋程式決定實際存儲地址。 Java運行系統使用位元組碼驗證過程來保證裝載到網路上的代碼不違背任何Java語言限制。這個安全機制部分包括類如何從網上裝載。例如,裝載的類是放在分開的名字空間而不是局部類,預防惡意的小應用程式用它自己的版本來代替標準Java類。

7.可移植性

Java使得語言聲明不依賴於實現的方面。例如,Java顯式說明每個基本數據類型的大小和它的運算行為(這些數據類型由Java語法描述)。 Java環境本身對新的硬體平臺和操作系統是可移植的。Java編譯程式也用Java編寫,而Java運行系統用ANSIC語言編寫。

8.高性能

Java是一種先編譯後解釋的語言,所以它不如全編譯性語言快。但是有些情況下性能是很要緊的,為了支持這些情況,Java設計者製作了“及時”編譯程式,它能在運行時把Java位元組碼翻譯成特定CPU(中央處理器)的機器代碼,也就是實現全編譯了。 Java位元組碼格式設計時考慮到這些“及時”編譯程式的需要,所以生成機器代碼的過程相當簡單,它能產生相當好的代碼。

9.多線索性

Java是多線索語言,它提供支持多線索的執行(也稱為輕便過程),能處理不同任務,使具有線索的程式設計很容易。Java的lang包提供一個Thread類,它支持開始線索、運行線索、停止線索和檢查線索狀態的方法。 Java的線索支持也包括一組同步原語。這些原語是基於監督程式和條件變數風範,由C.A.R.Haore開發的廣泛使用的同步化方案。用關鍵詞synchronized,程式員可以說明某些方法在一個類中不能併發地運行。這些方法在監督程式控制之下,確保變數維持在一個一致的狀態。

10.動態性

Java語言設計成適應於變化的環境,它是一個動態的語言。例如,Java中的類是根據需要載入的,甚至有些是通過網路獲取的。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 01背包基本模板,要是需要更詳細解釋的話可以評論留言我補上,記得持續關註
  • 傳送門:Wash!! 題意: 有L件衣服要洗,有N台洗衣機,M台烘乾機,給出了每台機器完成一件衣服的工作時間(每台機器同時只能完成一件衣服),問怎麼選擇機器才能使得總的工作時間是最短的。 思路: 用兩個優先隊列,一個表示洗衣機,一個表示烘乾機。先讓洗衣機進行工作,最後一件洗出來的衣服對應著結束的清洗 ...
  • 題意 "題目鏈接" Sol 按照dls的說法,一般這一類的題有兩種思路,一種是枚舉一個點$M$,然後check它能否成為答案。但是對於此題來說好像不好搞 另一種思路是枚舉最小的區間長度是多少,這樣我們把所有區間按長度排序後可以二分出滿足條件的最短的區間長度 觀察後不難發現,較長區間的長度一定是隨著短 ...
  • 關於圖像模糊演算法的實現, 我相信大多數學習圖像演算法的朋友都很熟悉。 例如常見的毛玻璃效果,高斯模糊等等。 而圖像模糊最簡單的實現就是 在一定區域 對像素做平均值計算。 術語描述,捲積。 1.認識捲積 而平均值計算可以,是一種常見的捲積計算,捲積核權重都為1。 OpenCV中與之對應的演算法是BoxBl ...
  • 1.Eclipse無法連接到Eclipse Marketplace的解決方法 (1)在eclipse文件夾下的eclipse.ini文件末尾添加 -Djava.net.preferIPv4Stack=true (2)點擊Add進行添加 (3)在help–install new software–ad ...
  • 1998年 SUN發佈三個不同版本JAVA,分別是: Java J2EE(Java Platform,Enterprise Edition) JAVA企業版,應用為開發和部署可移植、健壯、可伸縮且安全的伺服器端Java應用程式。 Java J2SE(Java Platform,Standard Ed ...
  • 題意 "題目鏈接" Sol Get到了這題樹狀數組的做法,感覺非常nice 區間加:直接差分 區間求和:考慮每一位的貢獻 $sum_{i = 1}^x (x+1 i) d_i$ $= sum_{i = 1}^x (x+1)d_i \sum_{i = 1}^x id_i$ $= (x+1) sum_{ ...
  • 當我們想要將數組值存儲到資料庫時,就可以對數組進行序列化操作,然後將序列化後的值存儲到資料庫中。其實PHP序列化數組就是將複雜的數組數據類型轉換為字元串,方便數組存庫操作。對PHP數組進行序列化和反序列化操作,主要就用到兩個函數,serialize和unserialize。 一、PHP數組序列化:s ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...