Docker最全教程之使用Docker搭建Java开发环境(十七)

前言

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来编辑上述代码,支持代码高亮,同时还会自动推荐相关扩展,如下所示:

  ![](/assets/70544-20190313094316099-730191896.png)

 并且还提供完善的文档教程:

  ![](/assets/70544-20190313094337408-396588552.jpg)

 #

 # 编写Dockerfile

 如下所示,示例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


 上一篇
Docker最全教程之Go实战,墙裂推荐(十八) Docker最全教程之Go实战,墙裂推荐(十八)
前言 与其他语言相比,Go非常值得推荐和学习,真香!为什么?主要是可以直接编译成机器代码(性能优越,体积非常小,可达10来M,见实践教程图片)而且设计良好,上手门槛低。本篇主要侧重于讲解了Go语言的优势,并且提供了一个推送钉钉消息的Demo
下一篇 
C#机器学习之判断日报是否合格 C#机器学习之判断日报是否合格
C#机器学习之判断日报是否合格简单来说机器学习的核心步骤在于“获取学习数据;选择机器算法;定型模型;评估模型,预测模型结果”,下面本人就以判断日报内容是否合格为例为大家简单的阐述一下C#的机器学习。 第一步:问题分析根据需求可以得出我们的模
  目录