CH1:Java平台概論

Justin Lin
Justin LinTechnology / Community Evangelist at Free lancer
1
Java平台概論
學習目標
• 簡介Java版本遷移
• 認識Java SE、Java EE、Java ME
• 認識JDK規範與實作
• 瞭解JVM、JRE與JDK
• 下載、安裝JDK
2
Java不只是語言
• 從1995年至今
• 不僅是個程式語言,也代表解決問題的平臺
• 原廠、各個廠商、社群、開發者與使用者溝
通的成果
3
Java誕生
• 最早是Sun公司綠色專案(Green Project)中
撰寫Star7應用程式的程式語言
• 當時名稱不是Java,而是取名為Oak
• 許多為了節省資源而做的設計
• 全球資訊網(World Wide Web)興起,Java
Applet成為網頁互動技術代表
4
• 1995年5月23 日,Oak正式改名為Java
• Java Development Kits(當時JDK全名)1.0a2
版本正式對外
• 這一天公認為Java的誕生日
• 1996年Netscape Navigator 2.0正式支援Java,
Microsoft Explorer亦開始支援Java
5
6
從J2SE到Java SE
• Sun在1998/12/04年發佈Java 2 Platform,簡稱
J2SE 1.2
• Java開發者版本一開始是以Java Development
Kit名稱發表,簡稱JDK
• J2SE是平臺名稱,包含了JDK與Java程式語
言
7
8
• 2004/09/29發表的Java平臺標準版的版號不是
1.5,而直接跳到5.0,稱為J2SE 5.0
• 2006/12/11發表的Java平臺標準版,除了版號
之外,名稱也有了變化,稱為Java Platform,
Standard Edition 6,簡稱Java SE 6
• JDK6全名為Java SE Development Kit 6,也
就是不再像以前Java 2帶有"2"這個號碼
9
江山易主
• 2010年Oracle宣佈併購Sun,Java也正式成為
Oracle所屬
10
目前釋出週期
• 從Java SE 9開始,JDK採取以半年為週期,
持續發布新版本
• $FEATURE.$INTERIM.$UPDATE.$PATCH
11
• 就企業而言,需要留意的是長期支援版本(
Long-Term-Support)
• 每三年釋出LTS
• Java SE 8、Java SE 11是LTS,下個LTS預計
是Java SE 17
• LTS版本實際維護時間視JDK來源而定,可能
會是三到六年不等的時間
• Java SE 9、12、13、14等,只是短期支援版
本,釋出後六個月後就不再維護
12
• Sun公司在1999年6月美國舊金山的Java One
大會上,公佈了新的Java體系架構
– J2SE(Java 2 Platform, Standard Edition)
– J2EE(Java 2 Platform, Enterprise Edition)
– J2ME(Java 2 Platform, Micro Edition)
13
14
JCP與JSR
• Java不僅是程式語言,而是標準規範!
• Sun公司於1998年組成了JCP(Java
Community Process)
• 任何想加入Java的功能或特性,必須以JSR(
Java Specification Requests)正式文件的方
式提交
15
System.out.println("Hello, World");
• 若JSR成為最終文件,必須根據JSR實作出免
費且開放原始碼的參考實現,稱為RI(
Reference Implementation)
• 提供TCK(Technology Compatibility Kit)
作為技術相容測試工具箱
16
• 在JSR規範的標準之下,各廠商可以各自實
作
• Java SE 14的主要規範是在JSR 389文件之中
17
jcp.org/en/jsr/detail?id=389
Oracle JDK與OpenJDK
• Sun JDK實現,就是JDK的參考實作(
Reference Implementation)
• 有興趣的廠商或組織可以根據JSR自行實現
產品
• 只有通過TCK 相容性測試的實作,才可以使
用Java這個商標
18
• 2006年的JavaOne大會上,Sun宣告其參考實
作將開放原始碼
• 從JDK7 b10 開始有了OpenJDK,並於2009
年4月15日正式發佈 OpenJDK
• Oracle接管Sun之後發佈的JDK7正式版本,指
定了OpenJDK7為官方參考實作
19
Oracle JDK7與OpenJDK7
• Sun JDK當時採JRL
– 原始碼可用於個人研究使用,禁止任何商業用途
• OpenJDK7採GPL2 with the Classpath
Exception
– 允許商業上的使用
– 必須拿掉許多在兩個授權間有衝突的程式碼
– 不包括一些部署(Deployment)工具(像是Java
Web Start等 )以及軟體套件(像是Java DB)等
20
• 原始的OpenJDK7是不完整的,無法通過JCK
相容測試
• 如果執行java -version,會顯示openjdk
version字樣,而不是java version字樣
• Red Hat於2007年發起了IcedTea計畫
21
Open JDK7與OpenJDK6
• OpenJDK6並不是Sun JDK6的分支,而是將
OpenJDK7中JDK7的特性拿掉
• 實際上是OpenJDK7的分支
22
使用哪個版本?
• Sun BCL
– 從Sun下載的JDK用於桌面個人電腦時,是免費
的(no-fee)
• Oracle BCL
– 從Oracle下載的JDK,只能用於一般用途(
general purpose)
23
• Oracle JDK License
– 除了開發、測試、原型、應用程式展示外,不可
用於任何資料處理、商業、產品、內部企業使用
等目的
• Oracle JDK使用者,必須取得商用授權
24
• OpenJDK
– 基於GPL2 with the Classpath Exception
– 不能使用Oracle提供的臭蟲、安全性修補等服務
– 修補原始碼會回饋至OpenJDK的原始碼庫
– 可以自行取得原始碼進行建構
25
• 預先建構好的OpenJDK LTS
– AdoptOpenJDK
– Amazon Corretto
• Azul Zulu為OpenJDK提供了付費服務
• 考量與作業系統整合度時,Red Hat提供內含
OpenJDK的建構版本
26
• 就企業而言,需要留意的是LTS
– Java SE 8與Java SE 11
• Java SE 8釋出於2014年
• Java SE 9以後開始支援模組化
27
建議的學習路徑
28
• 深入瞭解JVM/JRE/JDK
• 理解封裝、繼承、多型
• 掌握常用Java SE API架構
• 學習容器觀念
• 研究開放原始碼專案
• 學習模式與重構
• 熟悉相關開發工具
29
JVM/JRE/JDK
30
什麼是JVM?
• Java Virtual Machne(JVM)
31
32
33
• 編譯一次,到處到處執行
JRE與JDK
• Java Runtime Environment
• 包括了Java SE API與JVM
34
• Java Development Kit
• 包括了Java程式語言、工具程式與JRE,
JRE則包括了部署技術、Java SE API與JVM
• 新版本的Oracle JDK或OpenJDK,都不再提
供獨立的JRE安裝或下載
35
下載、安裝JDK
• Oracle JDK
– www.oracle.com/java/technologies/javase-
downloads.htm
36
37
38
39
OpenJDK
• jdk.java.net/14/
40
認識JDK安裝內容
41
1 of 41

Recommended

CH03:基礎語法CH03:基礎語法
CH03:基礎語法Justin Lin
528 views48 slides
CH04:認識物件CH04:認識物件
CH04:認識物件Justin Lin
421 views87 slides
CH02:從JDK到IDECH02:從JDK到IDE
CH02:從JDK到IDEJustin Lin
481 views58 slides
Ch09 整合資料庫Ch09 整合資料庫
Ch09 整合資料庫Justin Lin
233 views92 slides

More Related Content

Similar to CH1:Java平台概論(14)

More from Justin Lin

Ch11 簡介 JavaMailCh11 簡介 JavaMail
Ch11 簡介 JavaMailJustin Lin
157 views8 slides
Ch08 自訂標籤Ch08 自訂標籤
Ch08 自訂標籤Justin Lin
133 views54 slides
Ch04 會話管理Ch04 會話管理
Ch04 會話管理Justin Lin
238 views30 slides

More from Justin Lin(20)

Ch14 簡介 Spring BootCh14 簡介 Spring Boot
Ch14 簡介 Spring Boot
Justin Lin872 views
Ch11 簡介 JavaMailCh11 簡介 JavaMail
Ch11 簡介 JavaMail
Justin Lin157 views
Ch10 Web 容器安全管理Ch10 Web 容器安全管理
Ch10 Web 容器安全管理
Justin Lin153 views
Ch08 自訂標籤Ch08 自訂標籤
Ch08 自訂標籤
Justin Lin133 views
Ch04 會話管理Ch04 會話管理
Ch04 會話管理
Justin Lin238 views
CH1. 簡介 Web 應用程式CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式
Justin Lin1.2K views
14. 進階主題14. 進階主題
14. 進階主題
Justin Lin404 views
13.並行、平行與非同步13.並行、平行與非同步
13.並行、平行與非同步
Justin Lin237 views
12. 除錯、測試與效能12. 除錯、測試與效能
12. 除錯、測試與效能
Justin Lin153 views
11. 常用內建模組11. 常用內建模組
11. 常用內建模組
Justin Lin149 views
10. 資料永續與交換10. 資料永續與交換
10. 資料永續與交換
Justin Lin156 views
9. 資料結構9. 資料結構
9. 資料結構
Justin Lin292 views
8. open() 與 io 模組8. open() 與 io 模組
8. open() 與 io 模組
Justin Lin245 views
7. 例外處理7. 例外處理
7. 例外處理
Justin Lin115 views
6. 類別的繼承6. 類別的繼承
6. 類別的繼承
Justin Lin166 views
5. 從模組到類別5. 從模組到類別
5. 從模組到類別
Justin Lin169 views
4. 流程語法與函式4. 流程語法與函式
4. 流程語法與函式
Justin Lin188 views
3.型態與運算子3.型態與運算子
3.型態與運算子
Justin Lin199 views
1. Python起步走1. Python起步走
1. Python起步走
Justin Lin662 views
2. 從 REPL 到 IDE2. 從 REPL 到 IDE
2. 從 REPL 到 IDE
Justin Lin234 views

CH1:Java平台概論