??前面的話??
大家好!這是一個新的系列專欄,本專欄會介紹JavaSE及其應用,Java是一門面向物件編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++里難以理解的多繼承、指標等概念,因此Java語言具有功能強大和簡單易用兩個特征,Java語言作為靜態面向物件編程語言的代表,極好地實作了面向物件理論,允許程式員以優雅的思維方式進行復雜的編程 ,本篇文章帶大家認識Java,知道Java是什么,順便了解下“世界上最好的語言”,
📒博客主頁:未見花聞的博客主頁
🎉歡迎關注🔎點贊👍收藏??留言📝
📌本文由未見花聞原創,CSDN首發!
📆首發時間:🌴2021年10月10日🌴
??堅持和努力一定能換來詩與遠方!
💭參考書籍:📚《Java核心技術卷1》,📚《Java核心技術卷2》,📚《Java編程思想》
💬參考在線編程網站:🌐牛客網🌐力扣
🙏作者水平很有限,如果發現錯誤,一定要及時告知作者哦!感謝感謝!
博主的碼云gitee,平常博主寫的程式代碼都在里面,
📌導航小助手📌
- ??1.世界上最好的語言
- 🍵1.1真的有世界上最好的語言嗎?
- 🍶1.1.1編程語言排行榜(截止至2021年10月)
- 🍶1.1.2什么是Java?
- 🍶1.1.3Java是世界上最好的語言嗎?
- 🍵1.2Java的優點
- 🍶1.2.1 簡單性
- 🍶1.2.2 面向物件
- 🍶1.2.3 分布式
- 🍶1.2.4 健壯性
- 🍶1.2.5 安全性
- 🍶1.2.6 體系結構中立
- 🍶1.2.7 可移植性
- 🍶1.2.8 解釋型
- 🍶1.2.9 高性能
- 🍶1.2.10 多執行緒
- 🍶1.2.11 動態性
- 🍵1.3Java開發工具與環境
- 🍶1.3.1Java開發者工具
- 🍶1.3.2JavaJDK環境變數設定
- 🍶1.3.2Java推薦集成開發環境
- ??2.第一個Java程式
- 🍵2.1認識Java的main方法
- 🍵2.2Hello Java!

??1.世界上最好的語言
🍵1.1真的有世界上最好的語言嗎?
🍶1.1.1編程語言排行榜(截止至2021年10月)
在解釋這個問題之前,我們不妨先來看看最近的編程語言排行榜,看看在TIOBE社區誰是“最好的語言”(NO.1)
TIOBE Index for October 2021


我們從這個排行榜看出Python熱度是上升的,從2020年的第三名升到2021年的第一名,但是這就能說明Python就是最好的語言嗎?
其實,世界上沒有絕對地最好的語言,只能說從在某一方面,某個語言特別的擅長,可以說成在那一方面的“最好的語言”,比如Python特別擅長做資料的分析與處理,可以說在這一方面Python就是最好的語言,
我們再來看看編程語言熱度變化趨勢圖:

總體上看Java,C,C++三門語言熱度位于前三名而且多年來一直保持穩定,這是因為它們三者各有各的擅長領域,這使它們經久不衰!
參考網站:TIOBE社區
🍶1.1.2什么是Java?
Java的創始人是詹姆斯·高斯林,被人們稱為“Java之父”,

Java是一種優秀的程式設計語言,它具有令人賞心悅目的語法和易于理解的語意,不僅如此,Java還是一個有一系列計算機軟體和規范形成的技術體系,這個技術體系提供了完整的用于軟體開發和跨平臺部署的支持環境,并廣泛應用于嵌入式系統、移動終端、企業服務器、大型機等各種場合,下面我們通過Java官方提供的資料來一起感受一下,Java到底有多“火”,

這門編程語言最開始并不是叫做Java,而是Oak,可以說Oak是Java的前身,由于一系列的原因最終叫做Java,
聽說是Java創始人高斯林喜歡喝咖啡,而有個叫爪哇的島盛產咖啡,所以把這門語言叫做Java,
Java具有簡單性、面向物件、分布式、健壯性、安全性、平臺獨立與可移植性、多執行緒、動態性等特點 ,Java可以撰寫桌面應用程式、Web應用程式、分布式系統和嵌入式系統應用程式等 ,
🍶1.1.3Java是世界上最好的語言嗎?
不是,因為在每個領域都有更合適的編程語言,
C 語言無疑是現代計算機軟體編程語言的王者,幾乎所有的作業系統都是 C 語言寫成的,C++ 是面向物件的 C 語言,一直在不斷的改進,
JavaScript 是能運行在瀏覽器中的語言,豐富的前端界面離不開 Javascript 的功勞,近年來的 Node.js 又在后端占有一席之地,
Python 用于系統管理,并通過高性能預編譯的庫,提供 API 來進行科學計算,文本處理等,是 Linux 必選的解釋性語言,
Ruby 強于 DSL(領域特定語言),程式員可以定義豐富的語意來充分表達自己的思想,Erlang 就是為分布式計算設計的,能保證在大規模并發訪問的情況下,保持強壯和穩定性,
Go 語言內置了并發能力,可以編譯成本地代碼,當前新的網路相關專案,很大比例是由 Go 語言撰寫的,如Docker、Kubernetes 等,
撰寫網頁用 PHP,函式式編程有 Lisp/Scala,撰寫 iOS 程式有 Swift/Objective-C,一句話概括,能留在排行榜之上的語言,都是好的語言,在其所在的領域能做到最好,
那么,Java 語言到底有什么優勢可以穩居排行榜前三的位置呢?
其一,語法比較簡單,學過計算機編程的開發者都能快速上手,
其二,在若干了領域都有很強的競爭力,比如服務端編程,高性能網路程式,企業軟體事務處理,分布式計算,
Android 移動終端應用開發等等,
最重要的一點是符合工程學的需求,我們知道現代軟體都是協同開發,那么代碼可維護性,編譯時檢查,較為高效的運行效率,跨平臺能力,豐富的 IDE,測驗,專案管理工具配合,都使得 Java 成為企業軟體公司的首選,也得到很多互聯網公司的青睞,
沒有短板,容易從市場上找到 Java 軟體工程師,軟體公司選擇 Java 作為主要開發語言,再在特定的領域使用其他語言協作編程,這樣的組合選擇,肯定是不會有大的問題, 所以綜合而言,Java 語言全能方面是最好的,我們來一起看看Java社區的概況:
Java 是一門開放的語言,其開源社區也是參與者眾多,最有名的應當數 Apache 社區,目前已經擁有近 200 個頂級專案,其中絕大多數是 Java 語言專案,在 Java 生態圈中,具有重要地位的如 Spring、Ant、Commons、Tomcat、Xerces、Maven、 Struts、Lucene、ActiveMQ、CXF、Camel、Hadoop 等等,很多技術時代,一大批 Java 專案加入,如 Web 時代的 Velocity、Wicket;JavaEE 相關的 Tomee、OpenJPA、OpenWebBeans、Myfaces;WebService 時代的 jUDDI、Axis、ServiceMix;Osgi 時期的 Flex、Karaf;大資料時代的 HBase、Hive、ZooKeeper、Cassandra;云時代的 Mesos、CloudStack 等等,
涉及到軟體開發的方方面面,可以說當今幾乎所有的中型以上 Java 應用中,都會有 Apache 開源專案的身影,國內最早參與 Apache 社區的以國外軟體公司國內研發團隊成員為主,如紅帽、IONA、Intel、IBM 研發中心等,如今國內互聯網公司和軟體公司也不斷的參與,特別是開始主導一些 Apache 專案,如 Kylin 等,
JBoss 開源社區,包含了 50 多個 Java 開源專案,其中有 Hibernate、Drools、jBPM 等業界知名開源專案,也有Undertow、Byteman、Narayana 等名氣不算大,但絕對是相應領域業界的頂級優秀專案,當前 JBoss 開源社區主要以企業應用中間件軟體為主,RedHat 是主要的技術貢獻力量,
Eclipse 開源社區,之前主要是包含 Eclipse IDE 的專案,后來也逐步進行多方面的擴展,比如 OSGi,服務器等,目前一些知名 Java 專案,如 Jetty、Vertx 等都是 Eclipse 開源組織成員,此外 IOT 目前是 Eclispe 的一個重點方向,在這里可以找到完整的 IOT Java 開發方案,
Spring 開源社區,以 SpringFramework 為核心,包括 SpringBoot、SpringCloud、SpringSecurity、SpringXD 等開源專案,在國內有廣泛的應用場景,
所以說,Java不僅僅是一門編程語言,它是一個綜合的技術體系,是面向物件思想的規范,
🍵1.2Java的優點
🍶1.2.1 簡單性
人們希望構建一個無須深奧的專業訓練就可以進行編程的系統,并且要符合當今的標準慣例,因此,盡管人們發現C++不太適用,但在設計Java的時候還是盡可能地接近C++,以便系統更易于理解,Java剔除了C++ 中許多很少使用、難以理解、易混淆的特性,在目前看來,這些特性帶來的麻煩遠遠多于其帶來的好處,
的確,Java 語法是C++語法的一個"純凈"版本,這里沒有頭檔案、指標運算(甚至指標語法)、結構、聯合、運算子多載、虛基類等,然而,設計者并沒有試圖清除C++中所有不適當的特性,例如,switch陳述句的語法在 Java中就沒有改變,如果你了解C++ 就會發現可以輕而易舉地轉換到 Java 語法,
Java發布時,實際上C++并不是最常用的程式設計語言,很多開發人員都在使用Visual Basic 和它的拖放式編程環境,這些開發人員并不覺得 Java簡單,很多年之后 Java開發環境才迎頭趕上,如今,Java開發環境已經遠遠超出大多數其他編程語言的開發環境,
簡單的另一個方面是小,Java的目標之一是支持開發能夠在小型機器上獨立運行的軟體,基本的解釋器以及類支持大約僅為 40KB;再加上基礎的標準類別庫和對執行緒的支持(基本上是一個自包含的微內核)大約需要增加175KB,
在當時,這是一個了不起的成就,當然,由于不斷的擴展,類別庫已經相當龐大了,現在有個獨立的具有較小類別庫的Java 微型版(Java Micro Edition),這個版本適用于嵌入式設備,
🍶1.2.2 面向物件
簡單地講,面向物件設計是一種程式設計技術,它將重點放在資料(即物件)和物件的介面上,用木匠打一個比方,一個"面向物件的"木匠始終關注的是所制作的椅子,第二位才是所使用的工具;一個"非面向物件的"木匠首先考慮的是所用的工具,在本質上,Java的面向物件能力與C++是一樣的,
開發 Java 時面向物件技術已經相當成熟,Java的面向物件特性與C++ 旗鼓相當,Java 與C++的主要不同點在于多重繼承,在 Java中,取而代之的是更簡單的介面概念,與C++相比,Java 提供了更豐富的運行時自省功能,
🍶1.2.3 分布式
Java有一個豐富的例程庫,用于處理像HTTP和FTP之類的TCP/IP協議,Java應用程式能夠通過URL打開和訪問網路上的物件,其便捷程度就好像訪問本地檔案一樣,如今,這一點已經得到認可,不過在1995年,主要還是從C++或Visual Basic程式連接Web 服務器,
🍶1.2.4 健壯性
Java的設計目標之一在于使得 Java撰寫的程式具有多方面的可靠性,Java投入了大量的精力進行早期的問題檢測、后期動態的(運行時)檢測,并消除了容易出錯的情況……Java和C++最大的不同在于Java采用的指標模型可以消除重寫記憶體和損壞資料的可能性,
Java編譯器能夠檢測許多在其他語言中僅在運行時才能夠檢測出來的問題,至于第二點,對于曾經花費幾個小時來檢查由于指標 bug 而引起記憶體沖突的人來說,一定很喜歡 Java 的這一特性,
🍶1.2.5 安全性
Java適用于網路/分布式環境,為了達到這個目標,在安全方面投入了很大精力,使用Java 可以構建防病毒、防篡改的系統,
從一開始,Java 就設計成能夠防范各種攻擊,其中包括∶
- 運行時堆疊溢位,如蠕蟲和病毒常用的攻擊手段,
- 破壞自己的行程空間之外的記憶體,
- 未經授權讀寫檔案,
原先,Java對下載代碼的態度是"盡管來吧!",不可信代碼在一個沙箱環境中執行,在這里它不會影響主系統,用戶可以確信不會發生不好的事情,因為 Java代碼不論來自哪里,都不能脫離沙箱,
不過,Java的安全模型很復雜,Java開發包(Java Development Kit,JDK))的第一版發布之后不久,普林斯頓大學的一些安全專家就發現一些小 bug會允許不可信的代碼攻擊主系統,
最初,安全 bug 可以快速修復,遺憾的是,經過一段時間之后,黑客已經很擅長找出安全體系結構實作中的小漏洞,Sun 以及之后的 Oracle 為修復 bug 度過了一段很是艱難的日子,
遭遇多次高調攻擊之后,瀏覽器開發商和 Oracle 都越來越謹慎,Java 瀏覽器插件不再信任遠程代碼,除非代碼有數字簽名而且用戶同意執行這個代碼,
注釋∶現在看來,盡管 Java 安全模型沒有原先預想的那么成功,但Java 在那個時代確實相當超前,微軟提供了一種與之競爭的代碼傳輸機制,其安全性完全依賴于數字簽名顯然這是不夠的,因為微軟自身產品的任何用戶都可以證實,知名開發商的程式確實會崩潰并對系統產生危害,
🍶1.2.6 體系結構中立
編譯器生成一個體系結構中立的目標檔案格式,這是一種編譯過的代碼,只要有Java運行時系統,這些編譯后的代碼可以在許多處理器上運行,Java編譯器通過生成與特定的計算機體系結構無關的位元組碼指令來實作這一特性,精心設計的位元組碼不僅可以很容易地在任何機器上解釋執行,而且還可以動態地翻譯成本地機器代碼,
當時,為"虛擬機"生成代碼并不是一個新思路,諸如 Lisp、Smalltalk 和 Pascal等編程語言多年前就已經采用了這種技術,
當然,解釋虛擬機指令肯定會比全速運行機器指令慢很多,然而,虛擬機有一個選項,可以將執行最頻繁的位元組碼序列翻譯成機器碼,這一程序被稱為即時編譯,
Java 虛擬機還有一些其他的優點,它可以檢測指令序列的行為,從而增強其安全性,
🍶1.2.7 可移植性
與C和C++不同,Java規范中沒有"依賴具體實作"的地方,基本資料型別的大小以及有關運算都做了明確的說明,
例如,Java中的int永遠為32 位的整數,而在C/C++中,int可能是16位整數、32位整數,也可能是編譯器提供商指定的其他大小,唯一的限制只是 int型別的大小不能低于 short int,并且不能高于long int,在 Java中,資料型別具有固定的大小,這消除了代碼移植時令人頭痛的主要問題,二進制資料以固定的格式進行存盤和傳輸,消除了位元組順序的困擾,字串是用標準的 Unicode 格式存盤的,
作為系統組成部分的類別庫,定義了可移植的介面,例如,有一個抽象的Window 類,并給出了在 UNIX、Windows和 Macintosh環境下的不同實作,
選擇Window類作為例子可能并不太合適,凡是嘗試過的人都知道,要撰寫一個在Windows、Macintosh 和 10種不同風格的 UNIX上看起來都不錯的程式有多么困難,Java 1.0 就嘗試著做了這么一個壯舉,發布了一個將常用的用戶界面元素映射到不同平臺上的簡單工具包,遺憾的是,花費了大量的心血,卻構建了一個在各個平臺上都難以讓人接受的庫,原先的用戶界面工具包已經重寫,而且后來又再次重寫,不過跨平臺的可移植性仍然是個問題,
不過,除了與用戶界面有關的部分外,所有其他 Java庫都能很好地支持平臺獨立性,你可以處理檔案、正則運算式、XML、日期和時間、資料庫、網路連接、執行緒等,而不用操心底層作業系統,不僅程式是可移植的,Java API往往也比原生 API質量更高,
🍶1.2.8 解釋型
Java 解釋器可以在任何移植了解釋器的機器上執行 Java位元組碼,由于鏈接是一個增量式且輕量級的程序,所以,開發程序也變得更加快捷,更加具有探索性,
這看上去很不錯,用過Lisp、Smalltalk、Visual Basic、Python、R或 Scala的人都知道"快捷而且具有探索性"的開發程序是怎樣的,你可以做些嘗試,然后就能立即看到結果,Java 開發環境并沒有將重點放在這種體驗上,
🍶1.2.9 高性能
盡管對解釋后的位元組碼性能已經比較滿意,但在有些場合下還需要更加高效的性能,位元組碼可以(在運行時刻)動態地翻譯成對應運行這個應用的特定 CPU 的機器碼,
使用 Java的頭幾年,許多用戶不同意這樣的看法∶性能就是"適用性更強",然而,現在的即時編譯器已經非常出色,以至于成了傳統編譯器的競爭對手,在某些情況下,甚至超越了傳統編譯器,原因是它們含有更多的可用資訊,例如,即時編譯器可以監控經常執行哪些代碼并優化這些代碼以提高速度,更為復雜的優化是消除函式呼叫(即"行內"),即時編譯器知道哪些類已經加載,基于當前加載的類集,如果特定的函式不會被覆寫,就可以使用行內,必要時,還可以撤銷優化,
🍶1.2.10 多執行緒
多執行緒可以帶來更好的互動回應和實時行為,
如今,我們非常關注并發性,因為摩爾定律行將完結,我們不再追求更快的處理器,而是著眼于獲得更多的處理器,而目要讓它們一直保持作業,不過,可以看到,大多數編程語言對于這個問題并沒有顯示出足夠的重視,
Java在當時很超前,它是第一個支持并發程式設計的主流語言,從白皮書中可以看到. 它的出發點稍有些不同,當時,多核處理器還很神秘,而 Web 編程才剛剛起步,處理器要花很長時間等待服務器回應,需要并發程式設計來確保用戶界面不會"凍住",
并發程式設計絕非易事,不過 Java在這方面表現很出色,可以很好地管理這個作業,
🍶1.2.11 動態性
從各種角度看,Java與C或C++相比更加具有動態性,它能夠適應不斷發展的環境,庫中可以自由地添加新方法和實體變數,而對客戶端卻沒有任何影響,在Java中找出運行時型別資訊十分簡單,
當需要將某些代碼添加到正在運行的程式中時,動態性將是一個非常重要的特性,一個很好的例子是∶從 Internet下載代碼,然后在瀏覽器上運行,如果使用C或 C++,這確實難度很大,不過 Java 設計者很清楚動態語言可以很容易地實作運行程式的演進,最終,他們將這一特性引入這個主流程式設計語言中,
注釋:Java成功地推出后不久,微軟就發布了一個叫做J++的產品,它與 Java有幾乎相同的編程語言以及虛擬機,現在,微軟不再支持J++,取而代之的是另一種名為C#的語言,C#與 Java有很多相似之處,然而使用的卻是完全不同的虛擬機,
🍵1.3Java開發工具與環境
🍶1.3.1Java開發者工具

Java開發者工具為JavaJDK,下載官網為:https://www.oracle.com/java/technologies/downloads,
🍶1.3.2JavaJDK環境變數設定
以Windows為例,
1.安裝JDK,
2.打開系統設定,“此電腦/我的電腦”,滑鼠右鍵-屬性,

3.點擊高級系統設定

4.點擊環境變數

5.點擊“新建”系統變數JAVA_HOME,內容為JDK路徑,本人路徑為:C:\Program Files\Java\jdk-17


6.配置Path, 需要注意Path路徑一般是存在的,只需要追加即可,追加的值為:%JAVA_HOME%\bin,這里使用%JAVA_HOME%的意思是直接參考上面配置的JAVA_HOME的值,這樣的好處在于,如果Java安裝目錄發生變話,主需要修改JAVA_HOME的值,不用再修改Path變數的值,


7.新建系統變數CLASSPATH
變數名: CLASSPATH
變數值: .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
注意前面的 . 這個點號不能省略掉

8驗證
安裝完成JDK以及相應的配置之后,需要驗證是否安裝成功,是否配置正常,
第一步:打開cmd命令列視窗
鍵盤win+r或者搜索框搜索cmd.

命令列輸入java -version,得到版本資訊,

命令列輸入javac,得到一系列命令資訊,

如果像這樣,就說明你的JDK安裝與環境配置成功了,就可以使用了,
🍶1.3.2Java推薦集成開發環境

下載網址:https://www.jetbrains.com/zh-cn/idea/download/#section=windows
社區版免費,直接下載安裝即可!
專業版需要付費,但是可以免費試用30天,
轉發專業版免費安裝教程:IDEA專業版
??2.第一個Java程式
🍵2.1認識Java的main方法
檔案名:HelloJava.java
public class HelloJava{
public static void main(String[] args){
System.out.println("Hello Java!");
}
}
注意公共類需要類名需要與檔案名相同!
🍵2.2Hello Java!
我們現在不使用idea運行這個HelloJava,我們嘗試使用命令列運行代碼!
1.將命令列目錄轉到Java檔案路徑,如果是位于C盤,直接輸入cd + 路徑,否則先轉到目的盤(比如D盤)d:,然后輸入cd + 路徑 ,

2.使用javac + 檔案名.java進行編譯,如果含中文字串或中文注釋則需要輸入javac -encoding utf-8 + 檔案名.java

編譯后未報例外,表示編譯成功!
3.運行程式,輸入java + 檔案名運行,


轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/308744.html
標籤:java
上一篇:類的認識及使用
