FreeBSD 12 與 Java 9
前天按照往例更新Java 時:
Oracle 竟然下了最後通牒 ?
這讓我渾身不對勁....
按照Java 的時間表
Java 8 應該會在2019年1月停止支援
這對一個電腦工程師來說
便是一項警訊....被淘汰或是與時俱進
目前著手更新所有Java-based 的應用程式以符合現在Java的要求
雖然Java 9之後確實在效能上有十分良好的改善...
Oracle 改變了Java 的更新生態,分為六個月便更新的短命版本
與LTS的長期支援版本,便是目前我們所期待的Java 11
而Java 9 卻是早已遭到淘汰的短命版本...
那為什麼我還是要更新Java 9 呢 ?
既然都是已經淘汰的版本了,也沒有必要更新吧 ?
原因是因為:
1. Java 9/10/11 的相似程度高,程式改為Java 9 可以正常執行的版本後可以繼續往後平滑升級
2. 既然我們的主題是探討FreeBSD上的Java,目前測試的結果只有到Java 9 可以正常Working
對於在FreeBSD上升級Java 9 我的看法:
1. 一個給工程師銜接與適應的期間,不要等到跳到Java 11才手忙腳亂
2. 建議在開發平台上使用即可,而實際的執行電腦與伺服器請再等等
3. FreeBSD 的Repository 一向保守,預計下次進入Repository 的Java 版本應該是Java 11 LTS
在此野獸並不多言Java 9相對於Java 8的新特性
我們便直接進入FreeBSD 的Java 9 安裝。
本文所使用的FreeBSD 12系統僅剛安裝好,並透過安裝程式建立了一個帳戶wayne
一樣注意本文使用的命令列前Prompt符號:
# : root權限下 (su下)
$ : 一般使用者權限下
這讓FreeBSD 有模擬CentOS 6.9 (含64位元) 的能力
由於Java 9 是硬從Linux 搬過來的,所以我們需要載入Linux Capability:
完成後可以使用以下指令檢查linux與linux64是否已經掛載入核心內
然而我們必須將FreshPort 資訊先下載到電腦中:
首先需要將Java 9 的安裝檔放在/usr/ports/distfile/下
並且必須是從Oracle 下載的 jdk-9.0.4_linux-x64_bin.tar.gz
可以從以下網址取得
http://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase9-3934878.html
取得檔案後可以使用WinSCP 或者是其他SFTP傳輸工具上傳至FreeBSD 主機
我們目前已經將檔案上傳至 /root 下
故:
我們要使用的套件是linux-oracle-jdk9
所以:
安裝中途一半會出現這個:
按下OK 即可
由於Java 9 需要從Linux 的 procfs 讀取部分系統資訊,故我們必須繼續做出模擬:
首先我們要先將proc (講白了就是Linux 讀取執行程序的一個地方,一般是放置在/proc) 掛載起來
透過編輯fstab 完成:
接下來必須要這些東西掛載入檔案系統中:
最後一個,linux proc 的Module:
備註: 出現can't load linprocfs 這行代表module 已經載入,不須再執行載入
如果出現以上的資訊,恭喜您,Java 9 已經能夠在FreeBSD上正常執行了。
但是基礎的輸出入是沒有問題的。當然我們只能慢慢期待Java 11於FreeBSD上的來臨
但如果他不來... 野獸也會硬把它搬來的。Lol.
https://www.freshports.org/java/linux-oracle-jdk9/
Oracle 竟然下了最後通牒 ?
請先看完這段說明再繼續:
由於Oracle 對於Java經營方式的轉變,對Java 下放Community 是有激勵效果的,請見:這讓我渾身不對勁....
按照Java 的時間表
Java 8 應該會在2019年1月停止支援
這對一個電腦工程師來說
便是一項警訊....被淘汰或是與時俱進
目前著手更新所有Java-based 的應用程式以符合現在Java的要求
雖然Java 9之後確實在效能上有十分良好的改善...
Oracle 改變了Java 的更新生態,分為六個月便更新的短命版本
與LTS的長期支援版本,便是目前我們所期待的Java 11
而Java 9 卻是早已遭到淘汰的短命版本...
那為什麼我還是要更新Java 9 呢 ?
既然都是已經淘汰的版本了,也沒有必要更新吧 ?
原因是因為:
1. Java 9/10/11 的相似程度高,程式改為Java 9 可以正常執行的版本後可以繼續往後平滑升級
2. 既然我們的主題是探討FreeBSD上的Java,目前測試的結果只有到Java 9 可以正常Working
對於在FreeBSD上升級Java 9 我的看法:
1. 一個給工程師銜接與適應的期間,不要等到跳到Java 11才手忙腳亂
2. 建議在開發平台上使用即可,而實際的執行電腦與伺服器請再等等
3. FreeBSD 的Repository 一向保守,預計下次進入Repository 的Java 版本應該是Java 11 LTS
在此野獸並不多言Java 9相對於Java 8的新特性
我們便直接進入FreeBSD 的Java 9 安裝。
本文所使用的FreeBSD 12系統僅剛安裝好,並透過安裝程式建立了一個帳戶wayne
一樣注意本文使用的命令列前Prompt符號:
# : root權限下 (su下)
$ : 一般使用者權限下
開始安裝
1. 掛載Linux Capability
為了讓FreeBSD 能夠執行更多應用程式,FreeBSD 提供了Linux Capability 的功能這讓FreeBSD 有模擬CentOS 6.9 (含64位元) 的能力
由於Java 9 是硬從Linux 搬過來的,所以我們需要載入Linux Capability:
# kldload linux
# kldload linux64
完成後可以使用以下指令檢查linux與linux64是否已經掛載入核心內
# kldstat
2. 使用Portsnap
FreeBSD 對於新Porting(移植)且還沒有完整驗證過的程式都會放在FreshPort 上。而使用者可以透過Portsnap進行安裝。然而我們必須將FreshPort 資訊先下載到電腦中:
# portsnap fetch
完成後必須解壓縮portsnap 資訊:
# portsnap extract
3. 先將Java 9 的安裝檔放置到正確的地方
部分的Port 需要使用者先執行其他動作,Java 9 也是一樣首先需要將Java 9 的安裝檔放在/usr/ports/distfile/下
並且必須是從Oracle 下載的 jdk-9.0.4_linux-x64_bin.tar.gz
可以從以下網址取得
http://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase9-3934878.html
取得檔案後可以使用WinSCP 或者是其他SFTP傳輸工具上傳至FreeBSD 主機
我們目前已經將檔案上傳至 /root 下
故:
# mkdir /usr/ports/distfiles
# cp /root/jdk-9.0.4_linux-x64_bin.tar.gz /usr/ports/distfiles/
4. 瀏覽Java 9 的Port 套件並安裝
FreeBSD 對於Port 套件的所有資訊都會放在: /usr/ports 下我們要使用的套件是linux-oracle-jdk9
所以:
# cd /usr/ports/java/linux-oracle-jdk9/
# make install clean
安裝中途一半會出現這個:
按下OK 即可
4. 安裝後續設定
稍早我們講過Java 9 畢竟是硬從Linux 搬過來的,當然我們仍需要做部分的後續設定由於Java 9 需要從Linux 的 procfs 讀取部分系統資訊,故我們必須繼續做出模擬:
首先我們要先將proc (講白了就是Linux 讀取執行程序的一個地方,一般是放置在/proc) 掛載起來
透過編輯fstab 完成:
# nano /etc/fstab
加入這兩行:
linprocfs /compat/linux/proc linprocfs rw 0 0
tmpfs /compat/linux/dev/shm tmpfs rw,mode=1777 0 0
完成後儲存接下來必須要這些東西掛載入檔案系統中:
# mount /compat/linux/proc
# mount /compat/linux/dev/shm
最後一個,linux proc 的Module:
# kldload linprocfs
備註: 出現can't load linprocfs 這行代表module 已經載入,不須再執行載入
5. 測試執行:
# /usr/local/linux-oracle-jdk9/bin/java --version
如果出現以上的資訊,恭喜您,Java 9 已經能夠在FreeBSD上正常執行了。
後記:
再次聲明,這畢竟是FreshPort,野獸還沒有寫些程式進行進階測試。(如GUI顯示,網路測試)但是基礎的輸出入是沒有問題的。當然我們只能慢慢期待Java 11於FreeBSD上的來臨
但如果他不來... 野獸也會硬把它搬來的。Lol.
參考資料:
https://www.freebsd.org/doc/zh_TW/books/handbook/ports-using.htmlhttps://www.freshports.org/java/linux-oracle-jdk9/
留言
張貼留言