目前Java语言有很多版本。除了常用的Java8,一些遗留项目可能会使用Java7,一些比较新的项目可能会使用Java10或以上版本。版本。Java培训如果要切换本地的Java开发环境,折腾的时间会比较长,以后每次切换不同版本的时候都得折腾。Docker的出现,方便了我们维护不同版本的开发编译环境。如果你不知道Docker是什么,可以看看Docker的介绍。我们可以通过两种方式来搭建java开发环境,一种是在容器内编译运行,另一种是在容器外编译运行,下面分别看看如何实现。在容器中编译运行本文以一个简单的Helloworld程序为例。项目的文件目录结构和代码如下。$ls-lhtotal24-rw-r--r--1shiqiangstaff60B111119:02Dockerfile-rw-r--r--1shiqiangstaff123B111119:02Helloworld.java代码内容.publicclassHelloworld{publicstaticvoidmain(Stringargs[]){System.out.println("Helloworld.\n");}}完成以上准备后,就可以编辑Dockerfile的内容了。FROMopenjdk:8#基于openjdk:8构建镜像COPY./usr/src/myapp#复制目录下的代码到镜像中/usr/src/myapp的位置WORKDIR/usr/src/myapp#复制/usr/src/myapp设置为工作目录RUNjavacHelloworld.java#运行编译命令编译Helloworld.javaProgramCMD["java","Helloworld"]#执行编译好的Helloworld构建镜像文件。$dockerbuild-tjava_in_docker_env_8。$dockerimages#使用dockerimages命令查看构建的运行容器的java_in_docker_env_8镜像。$dockerrun-it--rmjava_in_docker_env_8Helloworld.$ls-lhtotal24-rw-r--r--1shiqiangstaff112B111210:53Dockerfile-rw-r--r--1shiqiangstaff123B111210:49Helloworld.java可以看到程序的输出,看到当前目录下没有编译结果。但是这种方式每次启动容器都需要编译,编译结果没办法共享。下一节将介绍如何将编译结果保存在容器外。容器外编译运行的工作目录和代码准备与上一节相同,Dockerfile与上一节略有不同。从openjdk:8COPY。/usr/src/myappWORKDIR/usr/src/myapp构建映像文件。$dockerbuild-tjava_env_8$dockerimages#使用dockerimages命令可以看到构建好的java_env_8镜像编译文件。$dockerrun--rm-v"$PWD":/usr/src/myapp-w/usr/src/myappjava_env_8javacHelloworld.java$ls-lh#可以看到编译结果total32-rw-r--r--1实强员工112B111210:53Dockerfile-rw-r--r--1实强员工427B111211:09Helloworld.class-rw-r--r--1实强员工123B111210:49Helloworld.java运行程序。$dockerrun--rm-v"$PWD":/usr/src/myapp-w/usr/src/myappjava_env_8javaHelloworld你好世界。在本文的最后,我只是搭建了一个简单的java开发环境,使用这种方式编译运行java程序的好处是不需要在本地安装jdk,在编译多个jdk的程序时更加方便版本。原作者:大江小浪
