基礎篇-Java相關的有些事

<Java相關的有些事>

Java是靜態(tài)震贵,強類型利赋,面向對象編程的語言,有完備的功能屏歹,能編寫多種程序隐砸。
JDK是Java語言的軟件開發(fā)工具包,包括Java運行環(huán)境(JVM和類庫)蝙眶,JAVA工具季希,包括:編譯工具褪那,監(jiān)控工具等。
JVM是Java虛擬機式塌,是JAVA語言和操作系統(tǒng)的中間層博敬,JVM屏蔽了操作系統(tǒng)及硬件的細節(jié)從而實現(xiàn)跨平臺,Java語言編譯后的字節(jié)碼由JVM執(zhí)行峰尝。同時JVM作為強大的平臺偏窝,支持其他語言,如:Scala武学,Groovy祭往,Kotlin等。

1-Java版本

主要長期支持版本Java8火窒,Java11硼补,Java17

Java8,2014年發(fā)布熏矿,Lambda表達式已骇,默認方法接口,流和日期時間庫
Java11票编,2018年發(fā)布褪储,模塊化系統(tǒng)
Java17,2021年發(fā)布慧域,Switch鲤竹,Records

發(fā)行版本
就源代碼而言,只有一套Java源代碼吊趾,存在OpenJDK項目中宛裕,但只是源代碼,發(fā)行版本需要根據不同平臺進行編譯论泛,所以就會存在不同的發(fā)行版本揩尸,主要版本如下:

OpenJDK,免費且沒有商標屁奏,java17下載岩榆,適合大部分用戶
OracleJDK,帶商標的商業(yè)版坟瓢,java17下載勇边,”更好“的那個折联,商業(yè)支持
AdoptOpenJdk粒褒,提供HotSpot和OpenJ9虛擬機,國內鏡像下載

其他Azul Zulu诚镰,阿里Dragonwell奕坟,華為畢昇JDK祥款,各有特色,按需選擇月杉。

JVM生態(tài)(2021年)
44.1%在生產中使用AdoptOpenJDK發(fā)行版
61.5%在生產中使用Java 11刃跛,60%使用Java 8
91%使用java,18%使用Kotlin
Spring主導java世界

來自:JVM Ecosystem Report 2021-Snyk

Docker版本
基礎鏡像主要受操作系統(tǒng)和文件大小的影響苛萎,主要版本如下:
openjdk:17-jdk-alpine[181M]基于alpine linux桨昙,小巧,簡單腌歉,安全但功能完備蛙酪,常用
openjdk:11-jdk-stretch[297M]基于debian,功能完整
openjdk:11-jre-slim[76M]該版本去掉了UI究履,鍵盤滤否,鼠標相關庫,更加精簡

*alpine版本沒有字體支持最仑,excel導出會報錯,可以根據此鏡像自定義帶字體鏡像炊甲,文件見項目openjdk-17-font

2-Java配置

為什么需要環(huán)境變量

你想打開一個程序泥彤,必須知道它的絕對位置,比如運行記事本:C:\Windows\System32\notepad.exe卿啡,通過該地址就可以運行記事本程序吟吝,每次運行都需要輸入很長的路徑是個很繁瑣的事情,如果不用寫地址颈娜,直接執(zhí)行就好了剑逃。為了實現(xiàn)[不用寫地址]功能,就出現(xiàn)了環(huán)境變量官辽∮蓟牵可以把操作系統(tǒng)作為一個最大的軟件,環(huán)境變量就是軟件中全局變量同仆,即操作系統(tǒng)提供給的全局變量。

需要設置那些環(huán)境變量
PATH:PATH是操作系統(tǒng)用的,指定操作系統(tǒng)自動搜索的路徑帝火,在該目錄下的執(zhí)行文件可以[不用寫地址]秘蛔,直接執(zhí)行。
JAVA_HOME:一個約定岁忘,通常指JDK的目錄(非java執(zhí)行路徑)辛慰,大部分程序會默認從環(huán)境變量中獲取。JAVA_HOME這個變量干像。在這個路徑下應該能夠找到bin,lib等目錄帅腌。例如辱志,Tomcat的.bat/.sh文件中就會默認獲取JAVA_HOME來用,具體代碼見https://github.com/apache/tomcat/blob/trunk/bin/catalina.bat

*Java其實是一個綠色軟件狞膘,無需安裝即可使用揩懒,一般直接解壓,并設置相應環(huán)境變量即可挽封。
參考:綠色Java(免安裝版Java已球,JavaFX etc.) - 知乎 (zhihu.com)

多版本共存
使用windows+IDEA的情況
使用Terminal的Project Settings,Terminal可以設置項目的環(huán)境變量辅愿,它會覆蓋系統(tǒng)環(huán)境變量智亮,從而在Terminal中執(zhí)行命令時使用特定版本,Terminal-Settings-Project Settings点待,具體說明

使用Terminal設置shell阔蛉,比如git bash,這樣就可以使用git環(huán)境命令癞埠,Terminal-Settings-Application Settings-Shell path

Tomcat指定版本
tomcat在沒有設置環(huán)境變量的情況下状原,可以通過如下方式指定java版本。
通過catalina.sh中指定JAVA_HOME="/usr/local/share/jdk-zulu-8"即可指定具體版本苗踪。
通過JAVA_OPTS="$JAVA_OPTS -Xms1024m -Xmx1024m"即可設置JVM參數(shù)颠区。

3-JVM

HostSpot:目前使用范圍最廣的Java虛擬機,主要垃圾回收器包括:

串行收集器(Serial GC):開啟方式:-XX:+SerialGC通铲,單線程方式毕莱,整個掃描和復制,適用于單CPU颅夺,新生代空間小朋截,對暫停時間要求不高,client級別默認GC方式吧黄。
并行收集器(Parallel GC):開啟方式:-XX:UseParallelGC部服,以吞吐量為目標,串行收集器的的多線程版本稚字,Server模式下的默認收集器饲宿。
并發(fā)標記清除收集器(CMS):開啟方式:-XX:+UseConcMarkSweepGC,減少GC執(zhí)行時的停頓時間胆描,垃圾回收線程和應用線程同時執(zhí)行瘫想,適合堆內存大,CPU核數(shù)多的服務器端應用昌讲。
G1 GC:開啟方式:-XX:+UseG1GC国夜,兼顧了吞吐量和停頓時間的GC實現(xiàn),是Oracle JDK 9后默認的GC
ZGC:開啟方式:-XX:+UseZGC短绸,JDK 11中推出的一款追求極致低延遲的實驗性質的垃圾收集器车吹,ZGC以追求低停頓為主要目標筹裕,停頓時間不超過10ms,支持16TB的堆窄驹。

TornadoVM:針對Java和JVM的高性能平臺
可在GPU朝卒,F(xiàn)PGA,或多核CPU上自動運行程序乐埠,可以在運行時將Java代碼加載到異構硬件加速器上運行抗斤。

GraalVM:下一代的Java虛擬機
高性能,云原生丈咐,多語言-為微服務而生瑞眼。

4-Java框架

SpringBoot
開發(fā)更快,更簡單棵逊,更安全伤疙,最流行的java框架,包括眾多的庫辆影,滿足大部分的需求徒像。
SpringBoot也會更臃腫,啟動速度相對較慢秸歧,云原生支持欠缺厨姚。
SpringBoot3.0+Spring Native將會是Spring的未來。

Quarkus
超音速亞原子JAVA键菱,專為OpenJDK HotSpot及GraavlVM量身定制的云原生Java開發(fā)棧,采用最佳Java語法和標準精制而成今布。
啟動超快经备,內存極低,非常適合云原生項目部默,支持相應式編程侵蒙。

micronaut
現(xiàn)代化的基于JVM的全棧框架傅蹂,用于構建模塊化且易于測試的微服務或無服務程序纷闺。
對響應式提供一流的支持,提供Spring相似的編程模型份蝴。


SpringBoot入門系列

基礎篇-Java相關的有些事
基礎篇-SpringBoot那些事
基礎篇-Spring必須知道的
基礎篇-工欲善其事


*碼處高效-Java開發(fā)手冊
*Java架構核心寶典
**需要PDF書籍的可以私聊

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末犁功,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子婚夫,更是在濱河造成了極大的恐慌浸卦,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件案糙,死亡現(xiàn)場離奇詭異限嫌,居然都是意外死亡靴庆,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進店門怒医,熙熙樓的掌柜王于貴愁眉苦臉地迎上來炉抒,“玉大人,你說我怎么就攤上這事稚叹⊙姹。” “怎么了?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵入录,是天一觀的道長蛤奥。 經常有香客問我,道長僚稿,這世上最難降的妖魔是什么凡桥? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮蚀同,結果婚禮上缅刽,老公的妹妹穿的比我還像新娘。我一直安慰自己蠢络,他們只是感情好衰猛,可當我...
    茶點故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著刹孔,像睡著了一般啡省。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上髓霞,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天卦睹,我揣著相機與錄音,去河邊找鬼方库。 笑死结序,一個胖子當著我的面吹牛,可吹牛的內容都是我干的纵潦。 我是一名探鬼主播徐鹤,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼邀层!你這毒婦竟也來了返敬?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤被济,失蹤者是張志新(化名)和其女友劉穎救赐,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡经磅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年泌绣,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片预厌。...
    茶點故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡阿迈,死狀恐怖,靈堂內的尸體忽然破棺而出轧叽,到底是詐尸還是另有隱情苗沧,我是刑警寧澤,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布炭晒,位于F島的核電站待逞,受9級特大地震影響,放射性物質發(fā)生泄漏网严。R本人自食惡果不足惜识樱,卻給世界環(huán)境...
    茶點故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望震束。 院中可真熱鬧怜庸,春花似錦、人聲如沸垢村。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽嘉栓。三九已至宏榕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間侵佃,已是汗流浹背担扑。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留趣钱,地道東北人。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓胚宦,卻偏偏與公主長得像首有,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子枢劝,可洞房花燭夜當晚...
    茶點故事閱讀 42,828評論 2 345

推薦閱讀更多精彩內容