前言
Java 是一门面向对象的优秀编程语言, 市场占有率极高, 但是在容器化实践过程中, 发现官方支持并不友好, 同时与其他编程语言的基础镜像相比 (具体见各语言镜像比较), 确实是非常臃肿.
本篇仅作探索, 希望对大家有所帮助.
目录
Java
官方镜像
各语言镜像比较
使用 Docker 搭建 Java 开发环境
编写 Hello world!
编写 Dockerfile
构建镜像并执行
Java
Java 是一门面向对象编程语言, 不仅吸收了 C++ 语言的各种优点, 还摒弃了 C++ 里难以理解的多继承, 指针等概念, 因此 Java 语言具有功能强大和简单易用两个特征. Java 语言作为静态面向对象编程语言的代表, 极好地实现了面向对象理论, 允许程序员以优雅的思维方式进行复杂的编程.
Java 具有简单性, 面向对象, 分布式, 健壮性, 安全性, 平台独立与可移植性, 多线程, 动态性等特点. Java 可以编写桌面应用程序, web 应用程序, 分布式系统和嵌入式系统应用程序等.
目前最新的版本为 Java 9, 以下为官方文档地址:
https://docs.oracle.com/javase/9/
注意: 值得注意的是, Oracle (甲骨文) 公司宣布,"2019 年 1 月之后", 如果没有获得 Oracel 公司的商业许可证, Java SE 8(注: Java SE 为 Java 平台标准版的简称) 将不会再收到公开更新, 也将无法用于 "商业或生产用途". 目前收费标准为, 对于 PC, 每用户每月是 2.5 美元, 对于服务器 / 云部署, 每个处理器每月是 25 美元.
官方镜像
Java 官网镜像地址为:
https://hub.docker.com/_/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.*;
- // 类
- public class Hello{
- // 程序入口
- public static void main(String[] args){
- // 打印字符串 (控制台)
- System.out.println("Hello World!");
- // 打印当前时间
- System.out.println(new Date());
- }
- }
这里顺便说下, 我们使用万能编辑器 VisualStudio Code 来编辑上述代码, 支持代码高亮, 同时还会自动推荐相关扩展, 如下所示:
并且还提供完善的文档教程:
编写 Dockerfile
如下所示, 示例 Dockerfile 文件如下:
- # 基于 Java 9
- FROM java:9
- # 设置工作目录
- WORKDIR /App
- # 复制文件到工作目录
- 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
来源: https://www.cnblogs.com/codelove/p/10521104.html