如何把java程序封装到docker

如何把java程序封装到docker,第1张

初次安装部署好docker后,大多数镜像可以从DockerHub提取,但是大多数人都希望自己可以完全自定义一个镜像,那么这里需要一个第三方工具febootstrapepel6的源提供febootstrap的RPM包yuminstalldocker-iofebootstrap-yservicedockerstartchkconfigdocker--level35on复制代码制作CentOS66镜像目录febootstrap-iyum-iiputils-iiproute-ibash-ivim-minimal-icoreutils-itar-inet-toolscentos6base/centos/66/updates/x86_64/复制代码-i表示镜像里面安装的RPM包(包括一些人为有必要的软件包)centos6表示镜像的版本说明base表示生成的镜像目录后面之后了系统安装源和更新源为USTC安装执行后,会开始一系列的RPM包下载安装,过程与yum类似,安装完成后当前目录会多了base目录,里面就是一个镜像的系统文件进入base目录等于进入镜像的根目录[root@image~]#cdbase/[root@imagebase]#lsbinbootdevetchomeliblib64mediamntoptprocrootsbinselinuxsrvsystmpusrvar复制代码可以像一般的系统文件一样先做一些修改配置,例如配置第三方yum源等等把base目录把所有文件打包成二进制文件后导入docker创建为镜像

什么是封装?

在定义类的时候,如果可以直接修改类中的字段那么就可能会出现以下的情况,age可以设置成1000,score可以设置为10000

所以就引出了封装的概念,那么什么是封装呢或者说封装可以实现那些目的

封装可以隐藏实现的细节

让使用者只能通过实现写好的访问方法来访问这些字段,这样一来我们只需要在这些方法中增加逻辑控制,限制对数据的不合理访问、

方便数据检查,有利于于保护对象信息的完整性

便于修改,提高代码的可维护性

为了实现良好的封装,需要从两个方面考虑

把字段(成员变量)和实现细节隐藏起来,不允许外部直接访问

把方法暴露出来,让方法控制这些成员变量进行安全的访问和 *** 作

因此,封装就有两个含义:把该隐藏的隐藏起来,把该暴露的暴露出来。

用private来表述变量或类,方法,来达到防止被一些不必要的访问和修改。例如

private class pri()

{

}

private int i;

等等。

继承:

class c

{}

class A extends c

{}

这样就是A类继承C类了

JAVA的这些面向对象语言的特性,靠在这里一言两语只能是初步了解,要深刻认识,需要自己多去写一下代码,那样才能理解面向对象语言的特性,感受到它的好处。

public class Student2 {

 private String name;

 private String age;

 private String sex;

 private String major;

 

 public Student2(String name, String age) {

  super();

  thisname = name;

  thisage = age;

  thissex = "男";

  thismajor = "JAVA";

 }

 

 public Student2(String name, String age, String sex, String major) {

  super();

  thisname = name;

  thisage = age;

  thissex = sex;

  thismajor = major;

 }

 

 public String getName() {

  return name;

 }

 public void setName(String name) {

  thisname = name;

 }

 public String getAge() {

  return age;

 }

 public void setAge(String age) {

  thisage = age;

 }

 public String getSex() {

  return sex;

 }

 public void setSex(String sex) {

  thissex = sex;

 }

 public String getMajor() {

  return major;

 }

 public void setMajor(String major) {

  thismajor = major;

 }

 public String take() {

  return "大家好,我叫" + name + ",今年" + age + "岁,性别" + sex + ",专业是" + major;

 }

}

student2类

public class Student {

 /

   @param args

  /

 public static void main(String[] args) {

  // TODO Auto-generated method stub

  Student2 s1 = new Student2("张三", "18");

  Student2 s2 = new Student2("李四", "15", "女", "C++");

  Systemoutprintln(s1take());

  Systemoutprintln(s2take());

 }

}

测试方法

结果:

大家好,我叫张三,今年18岁,性别男,专业是JAVA

大家好,我叫李四,今年15岁,性别女,专业是C++

你是要这个东西么

不考虑内存溢出的情况,声明一个集合,比如List或Set或Map

然后循环100万次加入

class Test{

List<Object> lo = new List<Object>();

for(int i=0;i<1000000;i++){

loadd(new Object());

}

}

这个软件可以,里面还有破解补丁。

第一次安装时要求系统有15版本以上的JDK,如果你的机器上有JDK,点Locate找到你机器上已安装的JDK目录下/bin/javaexe就可以进行安装了。

下面就打包过程详细说明一下:

第1步,默认即可。

第2步,如果已经有制作好的jar文件,则下面一个"JARinEXE"。

第3步,上面是项目名称,可随便填写,下面一个写出你想要将打包后的exe文件输出的目录:

第4步,由于我的演示程序是图形的,所以选第一个,如果你的程序是控制台的,则选择第二个,Executable name写你将要生成的exe文件的名字,IconFile可以选择生成文件的图标

第5步,首先,单击绿色的"+"号,在d出的窗口中点Archive,然后找到起初已经做好的jar文件,"OK"后返回,在下面的Class Path里就出现jar文件路径后,再在上面Main Class栏内点击找到main所在的类,这一步即算完成:

第6步,你系统的JRE版本,上面填个13,下面填16:

当然,这样配置的程序只能在安装有JRE的机器上执行,发布时总要考虑的问题就是用户是否有能力在自己机器上安装JRE,总不能发布一个程序还要用户自己安装个JRE吧,下面我就介绍如何将JDK环境变量动态打包到exe中,在这里单击advancedoptions,选择searchsequence。

首先把JRE复制到exe文件输出的目录里,我用的是c:\xaocker\,在d出的窗口中,删除列表中所有项,然后单击绿+,选择directory并选择JRE的根目录(注意是拷贝后的目录)即可,单击ok后,再从图中单击advancedoptions,并选择preferred VM,在d出的窗口中选择clienthostspotVM,单击next按钮继续:

第7、8步是一些基本配置,默认即可,第9步编译,第10步你就可以点这个看到效果了:

exe4j未注册的版本会出现对话框:点击确定之后就可以看到你程序的运行结果了!

javaexe依照一套逻辑来寻找可以用的JRE,首先查找自己所在的目录下有没有JRE,其次查找自己的父目录下有没有JRE;最后才是查询Windows的注册表。

现在我们的程序可以在任意的计算机上执行了,可是缺点是致命的,比方说我的程序才160K,可是不论走到哪里都要背着70多M的JRE,未免有点小题大做吧,其实作为我们的私有的JRE,好多内容都是可以抛弃的。Jre目录下的license都可以不要,bin下的执行文件只需要保留javaexe或者javawexe,lib下只要保留rt,jsse,jce,charsets几个库就可以了。除了i386和zi两个子目录外,其余的子目录都可以不要。Zi下只需要保留自己地区的子目录和其下的一些文件就可以。Lib下除了库之外的属性文件等等都要保留。这样清理一番,JRE仍然有接近50MB。还可以继续清理几个库文件里面不需要的内容,这需要仔细的整理,会很费功夫。最好能写出一个自动工具帮助我们整理它们。从Sun公司上下到的JMF里面附带的用Java写的媒体播放器就自带了JRE,只有几个MB。

清理过后需要运行几遍我们的应用程序,以确保我们的JRE不缺少东西。

OK,仔细清理之后,文件变小了不少,可以发布了……

以上就是关于如何把java程序封装到docker全部的内容,包括:如何把java程序封装到docker、java 封装是什么、JAVA 的类封装到底怎么封装啊!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10119788.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存