前言
Java是一門面向對象的優秀編程語言,市場佔有率極高,但是在容器化實踐過程中,發現官方支持並不友好,同時與其他編程語言的基礎鏡像相比(具體見各語言鏡像比較),確實是非常臃腫。
Java
Java是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++裏難以理解的多繼承、指針等概念,因此[Java語言具有功能強大和簡單易用兩個特徵。Java語言作爲靜態面向對象編程語言的代表,極好地實現了面向對象理論,允許程序員以優雅的思維方式進行復雜的編程。
Java具有簡單性、面向對象、分佈式、健壯性、安全性、平臺獨立與可移植性、多線程、動態性等特點。Java可以編寫桌面應用程序、Web應用程序、分佈式系統和嵌入式系統應用程序等。
注意:值得注意的是,Oracle (甲骨文)公司宣佈,“2019年1月之後”,如果沒有獲得Oracel公司的商業許可證,Java SE 8(注:Java SE爲Java平臺標準版的簡稱)將不會再收到公開更新,也將無法用於“商業或生產用途”。目前收費標準爲,對於 PC,每用戶每月是 2.5 美元,對於服務器/雲部署,每個處理器每月是 25 美元。
官方鏡像
Java官網鏡像地址爲:
官方介紹無。在Java社區,對Docker的擁抱粒度相對其他語言不是很大,不僅教程相對缺失,而且官方支持力度不大。這一點,大家可以通過搜索引擎進一步瞭解。不過,還是有許多Java開發者也在擁抱Docker。
各語言鏡像比較
寫到這裏,筆者突發奇想,相對主流的鏡像做一個體積比較。
我們可以通過docker images命令來列出本地鏡像,同時可以使用參數來進行篩選。
Java
我們可以使用以下命令來查看Java相關鏡像的大小:
600M左右的體積,相對來說,還是臃腫。我們可以和其他鏡像做一些對比:
NET Core
docker images microsoft/dotnet
運行時鏡像200M左右,而且高版本鏡像越來越輕量。
Python
docker images python
Php
docker images php
使用Docker搭建Java開發環境
本篇僅做探索,主要解決以下問題:
無需搭建Java開發環境
-
開發環境變化只需更新鏡像即可(比如從Java8改爲Java9)
-
無需安裝IDE(比如eclipse)
-
提供一個極簡Demo
編寫Hello world!
按照碼農協會行業定律,初學必寫Hello World,以表達對編程世界的敬仰之情。如下面代碼所示:
//引入命名空間
import java.util.*;
//加入Java開發交流君樣:756584822一起吹水聊天
//類
public class Hello{
//程序入口
public static void main(String[] args){
//打印字符串(控制檯)
System.out.println("Hello World!");
//打印當前時間
System.out.println(new Date());
//加入Java開發交流君樣:756584822一起吹水聊天
}
}
這裏順便說下,我們使用萬能編輯器VisualStudio Code來編輯上述代碼,支持代碼高亮,同時還會自動推薦相關擴展,如下所示:
並且還提供完善的文檔教程:
編寫Dockerfile
如下所示,示例Dockerfile文件如下:
# 基於Java 9
FROM java:9
# 設置工作目錄
WORKDIR /app
//加入Java開發交流君樣:756584822一起吹水聊天
# 複製文件到工作目錄
COPY . /app
# 設置Java環境變量
ENV PATH=$PATH:$JAVA_HOME/bin
ENV JRE_HOME=${
JAVA_HOME}/jre
ENV CLASSPATH=.:${
JAVA_HOME}/lib:${
JRE_HOME}/lib
# 編譯
RUN ["/usr/lib/jvm/java-9-openjdk-amd64/bin/javac","Hello.java"]
# 運行
ENTRYPOINT ["/usr/lib/jvm/java-9-openjdk-amd64/bin/java", "Hello"]
構建鏡像並執行
接下來,我們可以執行以下命令以構建Docker鏡像:
docker build --rm -f “Dockerfile” -t java-hello:latest .
構建成功後,我們跑起來看效果:
docker run java-hello:latest