jdk和jre

JDK与JRE详解及jar命令使用

jdk和jre

jps :列出java进程

E:\IDEA\IdeaProjects\code131\out\production\code131>jps
13616 Jps
4416 RemoteMavenServer
8848
5636 SimpleClient
7300 SimpleSocket
10504 Launcher
13304 Launcher

JDK:游戏编辑器,JDK是整个Java的核心,包括了Java基础类库、Java运行环境(JRE)和Java开发工具。

JRE:游戏

做Java开发的,首先要做的就是Java环境的搭建, 而 Java环境根据需要又分为:开发环境运行环境。开发环境需要安装JDK, 运行环境需要安装JRE(如果安装了JDK,则无需再安装JRE)

Java开发:[1]JDK和JRE的区别

img

使用jar命令:

​ jar --create --file classes.jar Foo.class Bar.class

E:\IDEA\IdeaProjects\code131\out\production\code131>jar cvf network.jar learnsocket\SimpleClient.class learnsocket\SimpleSocket.class
已添加清单
正在添加: learnsocket/SimpleClient.class(输入 = 1264) (输出 = 742)(压缩了 41%)
正在添加: learnsocket/SimpleSocket.class(输入 = 2064) (输出 = 1225)(压缩了 40%)

E:\IDEA\IdeaProjects\code131\out\production\code131>

用jar执行Class文件

-cp classpath

E:\IDEA\IdeaProjects\code131\out\production\code131>java -cp network.jar learnsocket.SimpleSocket
Serve端启动,在端口45632监听

使用javap命令反编译

E:\IDEA\IdeaProjects\code131\out\production\code131>javap learnsocket\SimpleSocket
警告: 二进制文件learnsocket\SimpleSocket包含learnsocket.SimpleSocket
Compiled from "SimpleSocket.java"
public class learnsocket.SimpleSocket {
  public static final int SERVER_PORT;
  public static final java.nio.charset.Charset SERVER_CHRSET;
  public static final java.lang.String BYE;
  public learnsocket.SimpleSocket();
  public static void main(java.lang.String[]);
  static {};

底层:字节码 类加载器 jvm

精简jre步骤 1. 拷贝一个完整版的jre文件夹到D盘 2. 删除jre目录下所有出binlib目录的所有文件或目录 3. 打开cmd窗口,设置path路径为空,转到D:\jre\bin目录,运行java –version。正常显示当前Java的版本。 4. 在bin目录中新建一个temp目录,将除java.exejava.dll外的移到temp目录中 5. 再次运行java –version命令,提示没找到verify.dll。将temp目录中的verify.dll移到bin目录中 6. 再次运行 java –version命令,提示:Could not create the Java virtual machine.错误 7. 根据测试:还要将hpi.dllzip.dll放到bin目录中 8. 再次运行java –version命令,OK,又出现了版本信息。此时,可以将temp目录移出bin目录中。(放到桌面先) 9. 删除client目录中的除jvm.dll外的文件。转到jre目录,查看bin目录的大小,为2.89MB。但此时lib目录仍有60M有余 10. 转到lib目录,新建一个temp目录,将i386除外的目录都移动到temp目录中,再次运行java –version命令,OK 11. 再新建一个temp2目录,将charsets.jarrt.jar外的所有文件移动到temp2目录中,再次运行 Java –version命令,OK 12. 将temp2temp目录移到桌面。此时lib仍有48.7M接近50M。(还得努力) 13. 缩减charsets.jarrt.jar(使用7z工具可以查看修改jar文件的内容『直接添加删除』)。准备做个软件来实现。 14. 缩减原则。运行java -verbose:class -version > temp.java 命令,此时在bin目录下生成了一个temp.java文件,用EditPlus打开,看到没有,要加载的就是那些类了,把不需要的全部删除就是了。 15. 原来charsets.jar没有加载呀。直接删除,再次运行java –version命令,OK 16. 接下来的工作就是裁剪rt.jar了。慢慢来。也可以做个软件来完成。可以下载一个GreenJVMMake.jar来完成。不过有时候好像有些类没加载到。要考虑更新了。 17. 裁剪玩rt.jar后,再次运行java –version ,出现了版本信息。OK 18. 转到D盘查看一下精简的jre才4.47MB。不到5M。OK 19. 最小的jre制作完毕。 附带制作过程图片,可用Picasa来查看,播放模式效果更佳。 Thoams 2010-6-25 15:53
JDKJRE在多个方面存在区别: - **性质与功能**:JDKJava开发工具包,用于Java程序的开发;JREJava运行环境,仅能运行class文件,没有编译功能。JDK包含了JRE,还具有Java编译器(javac)、Java文档生成工具(javadoc)等开发工具,以及很多Java程序调试分析的工具(JConsole,Web Services等工具软件),还包含了Java基础的类库(即Java API 包括rt.jar);而JRE不包含开发工具,如编译器调试器,仅针对使用Java程序的用户[^1][^4][^5]。 - **组件构成**:JRE主要包含java类库的class文件(都在lib目录下打包成了jar)虚拟机(jvm.dll);JDK主要包含java类库的class文件(都在lib目录下打包成了jar)并自带一个JRE,且jdk/jre/bin下的clientserver两个文件夹下都包含jvm.dll,说明JDK自带的JRE有两个虚拟机。JDK安装目录下真正在运行Java时起作用的主要是bin、include、lib、jre四个文件夹,其中bin包含编译器(javac.exe),include是JavaJVM交互用的头文件,lib是类库,jreJava运行环境,这里的bin、lib文件夹jre里的bin、lib不同[^2][^4]。 - **面向用户**:JDK面向Java开发者,用于开发Java程序;JRE面向只需要运行Java程序的普通用户[^1]。 - **工作流程角色**:在开发阶段需要JDK,因为要使用其开发工具进行程序的编写编译;在运行阶段只需要JRE,因为只需要运行已编译好的Java程序[^3]。 示例代码展示JDK开发与JRE运行的简单示意: ```java // 这是一个简单的Java程序,使用JDK开发 public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } } ``` 上述代码使用JDK中的编译器(javac)进行编译: ```sh javac HelloWorld.java ``` 编译后生成`HelloWorld.class`文件,此文件可在JRE环境下运行: ```sh java HelloWorld ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值