前言

Java是一门面向对象的优秀编程语言,市场占有率极高,但是在容器化实践过程中,发现官方支持并不友好,同时与其他编程语言的基础镜像相比(具体见各语言镜像比较),确实是非常臃肿。

Java

[Java])具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。

注意:值得注意的是,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.*;
//加入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 9FROM java:9# 设置工作目录WORKDIR /app//加入Java开发交流君样:756584822一起吹水聊天# 复制文件到工作目录COPY . /app# 设置Java环境变量ENV PATH=$PATH:$JAVA_HOME/binENV JRE_HOME=${JAVA_HOME}/jreENV 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最全教程之使用Docker搭建Java开发环境相关推荐

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

    前言 Java是一门面向对象的优秀编程语言,市场占有率极高,但是在容器化实践过程中,发现官方支持并不友好,同时与其他编程语言的基础镜像相比(具体见各语言镜像比较),确实是非常臃肿. 本篇仅作探索,希望 ...

  2. 乐鑫Esp32学习之旅② 巧用eclipes编辑器,官方教程在Windows下搭建esp32开发环境,打印 “Hello World”。

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 " ...

  3. 上课偷懒全靠它,VS code中搭建Java开发环境+小霸王游戏环境—颤抖吧,德玛西亚!!

    上课偷懒全靠它,VS code中搭建Java开发环境+小霸王游戏环境-颤抖吧,德玛西亚!!! Visual Studio Code 下载安装 搭建小霸王游戏环境 VS code 中搭建 JAVA 开发 ...

  4. 【kratos入门实战教程】1-kratos项目搭建和开发环境配置

    1.系列目录 [kratos入门实战教程]0-商城项目介绍 [kratos入门实战教程]1-kratos项目搭建和开发环境配置 [kratos入门实战教程]2-实现注册登陆业务 2.概览 经过上一篇的 ...

  5. 从零开始vim搭建Java开发环境[视频]

    视频教程 从零开始vim搭建Java开发环境 全屏观看 前言 起初我仅仅是想在手机上搭建一套能开发Java的vim环境.<玩转手机中的linux系统termux并搭建java开发环境> 玩 ...

  6. win10开发java_win10系统搭建Java开发环境的操作方法

    很多小伙伴都遇到过对win10系统搭建Java开发环境进行设置的困惑吧,一些朋友看过网上对win10系统搭建Java开发环境设置的零散处理方法,并没有完完全全明白win10系统搭建Java开发环境的操 ...

  7. Sublime Text 2搭建Java开发环境

    <Sublime Text 2搭建Java开发环境> 作者:chszs,转载需注明. 作者博客主页:http://blog.csdn.net/chszs Sublime Text 2是我非 ...

  8. 腾讯云-搭建 JAVA 开发环境

    搭建 JAVA 开发环境 搭建 JAVA 开发环境 任务时间:18min ~ 20min 此实验教大家如何配置 JDK .Tomcat 和 Mysql 00.安装 JDK JDK 是开发Java程序必 ...

  9. 【java开发】快速搭建java开发环境(离线开发、在线开发)

    文章目录 1.简介 2.下载和安装jdk 2.2 下载jdk 2.2 配置环境变量 2.3 常见命令 3.jdk开发 3.1 测试代码(hello world) 3.2 测试代码(animal, do ...

最新文章

  1. fork/join 并行编程
  2. WSUS 3.0 STEP BY STEP 配置手册
  3. Java培训教程分享:变量与常量
  4. 零基础的跨界自学拿到腾讯Offer的学习资料
  5. Spring IoC容器:BeanFactory和ApplicationContext谁才是Spring IoC容器
  6. 前端初学者开发学习视频_初学者学习前端开发的实用指南
  7. 使用VS Code开发.Net Core 2.0 MVC Web应用程序教程之一
  8. 为什么要做短视频秒播优化
  9. linux-进程的理解-进程的状态与生命周期
  10. 使用计算机效果不理想的应用,有效提高计算机应用课程教学效果的方法探究.doc...
  11. 前端:JS/25/DOM官方定义,DOM分类,HTML节点树(节点关系,节点类型,),核心DOM中公共的属性和方法(节点访问,查找DOM节点,节点属性,节点的创建,追加和删除)
  12. matplotlib.text.Text
  13. 刚刚,谷歌宣布TPU全面开放,AI芯片及云市场再迎变局
  14. TSP问题详解(旅行商问题)
  15. Linux find 命令
  16. 深度学习计算框架综述(一)行业内计算框架总览
  17. Squid合并回源技术
  18. 物联网小试一下——使用阿里云控制Arduino套件灯的开关
  19. linux网络与防火墙
  20. django基于python的图书馆管理系统--python-计算机毕业设计

热门文章

  1. [译]ABP vNext介绍
  2. 2017中国开源年会(COSCon'17) 报名正式开启
  3. ASP.NET Core 运行原理解剖[4]:进入HttpContext的世界
  4. SQL Server 2014内存优化表的使用场景
  5. 在离线环境中发布.NET Core至Windows Server 2008
  6. ENode 2.8 最新架构图简介
  7. hibernate mysql 主从_MYSQL主从复制和写分离
  8. 【空间数据库】ArcSDE 10.7+SQLEXPRESS+ArcServer 10.7.ecp企业级数据库环境搭建
  9. LeetCode之Two Sum
  10. 面向对象类的使用(15)