前言:
现在朋友们对“jsaes加密”可能比较重视,兄弟们都想要了解一些“jsaes加密”的相关资讯。那么小编同时在网络上收集了一些对于“jsaes加密””的相关内容,希望同学们能喜欢,朋友们快快来了解一下吧!今日分享开始啦,请大家多多指教~
1、JDK、JRE、JVM的关系
引用oracle官网对JDK的概述,里面很明确指出jdk、jre、jvm的关系,jdk是包括jre的,而jvm是jre是一部分。
JDK 8 is a superset of JRE 8, and contains everything that is in JRE 8, plus tools such as the compilers and debuggers necessary for developing applets and applications. JRE 8 provides the libraries, the Java Virtual Machine (JVM), and other components to run applets and applications written in the Java programming language. Note that the JRE includes components not required by the Java SE specification, including both standard and non-standard Java components.
引用官网的图片进行描述:
2、什么是Java virtual machine(JVM)?
JVM:java virtual machine,java虚拟机是执行 Java 程序的虚拟机的实现,是一个抽象的计算机器。
既然是按照计算机的理论设计的,那就遵循冯诺依曼计算机结构。
JVM运行过程涉及的组件:
类加载器运行时数据区执行引擎
引用Oracle官网的图例表示HotSpot JVM的架构设计:如图首先java文件经过javac编译成class类文件,经过类加载器,加载到JVM,再通过执行引擎执行。HotSpot JVM支持高并发和拓展性也很好。
JVM的高性能是由支持并发的垃圾收集器和动态JIT编辑器保证的。HotSpot JVM JIT 编译器在 Java 应用程序运行时做出动态优化决策,并生成针对底层系统架构的高性能本地机器指令。
HotSpot JVM的高移植性, Write Once Run Anywhere:
ok,现在比较详细介绍HotSpot JVM运行过程需要的3个重要组件类加载器、运行时数据区、执行引擎。
2.1、 类加载器
JVM的类加载机制分为五个部分:加载,验证,准备,解析,初始化,如图:
所谓JVM加载过程,是查找和导入class文件,加载过程:
(1)通过类的全限定名获取这个类的二进制字节流;
(2)将字节流所代表的静态存储结构转换为方法区的运行时数据结构;
(3)在JVM堆中生成代表这个类的java.lang.class对象(作为方法区中这些数据的访问入口)
JVM验证(Verify)这个过程是为了保证被加载类的正确性,保证其它后续步骤的正确正常执行,验证的过程包括:
文件格式验证元数据验证字节码验证符号引用验证
准备(Prepare)阶段,是为类变量分配内存并设置初始化值的。
解析(Resolve)这个阶段是将常量池中的符号引用转换为直接引用的过程。
直接引用和字符引用一个最明显的区别是,直接引用是目标是已经被加载到内存的,而字符引用并不一定已经加载到内存。
初始化(Initialize)类加载的初始化阶段,是对类的变量和代码块执行初始化操作,是执行类构造器的过程,换句话说是对类的静态变量,静态代码块执行初始化操作。
2.2、运行时数据区
运行时数据区,是java虚拟机定义的在程序执行期间使用的各种运行时的数据区。这些运行时数据区分为两种,一种是在java虚拟机启动时创建,仅在java虚拟机退出时才被销毁,这种可以理解为线程共享的。
另外一种是数据区是针对每个线程的,是在创建线程时创建的,并在线程退出时销毁这个数据区,这种可以理解为线程私有的。
JVM运行时数据区图例:
思维导图:Java虚拟机运行时数据区,虚拟机栈、本地方法栈、程序计数器是线程私有的,方法区、堆是线程共享的。
2.3、 执行引擎
执行引擎主要有如下3个部分:Interpreter(解释器)、Just-In-Time (JIT) Compiler(即时 (JIT) 编译器)、Garbage Collector(垃圾收集器)
Interpreter
一旦类加载器加载并验证字节码,解释器就会逐行执行字节码,这个过程是比较慢的,一个方法被多次调用时,每次都要执行
Just-In-Time (JIT) Compiler
JVM 自动监视正在执行的方法。一旦一个方法符合 JIT 编译的条件,它就会被JIT编辑器编译成机器代码。这种方法被称为热方法。这个编译过程发生在单独的JVM线程上。编译成机器码后,程序运行速度是更快的。
Garbage Collector
JVM的垃圾收集器主要用于对运行时数据区的内存进行回收整理,保证内存空间的正常使用。
3、什么是Java Runtime Environment(JRE)?
Java 运行时环境 (JRE) 是一组用于运行 Java 应用程序的软件组件
JRE 的核心组件包括:
JVM运行 Java 程序所需的类属性文件
JVM上一节已经做了比较详细的描述,所以这里只介绍运行 Java 程序所需的类和属性文件
3.1、运行 Java 程序所需的类
Bootstrap 类
Bootstrap class可以翻译为引导类,放在 jre/lib/路径下面,这里类在Bootstrap ClassLoader启动时候就会被加载
rt.jar 运行时类
i18n.jar 国际化类
charsets.jar 字符转换用
等等
extension类
extension class,也即拓展类,放在jre/lib/ext/路径下面,可以将自定义的jar放在此路径
包括的类: jfxrt.jar (JavaFX 运行时库)、localedata.jar(包括java.text和java.util)、等等
jre/lib/security 安全管理jre/lib/applet 放置小程序支持类的目录jre/lib/fonts 字体相关文件等等
3.2、 属性文件
属性文件位于/jre/lib/内的不同文件夹中
calendar.properties 日历配置logging.properties 日志配置net.properties 中的网络配置/jre/lib/deploy/ 中的部署属性/jre/lib/management/ 中的管理属性等等4、什么是Java Development Kit (JDK)?
Java Development Kit (JDK) 提供用于开发、编译、调试和执行 Java 程序的环境和工具。
JDK的核心组件包括:
JRE
开发工具
现在,我们将专注于各种开发工具
javac –将java文件编译成class类文件java – 启动 Java 应用程序javadoc – 从 Java 源文件生成 API 文档(HTML 页面)apt – 根据指定源文件集中的注释查找并执行注释处理器appletviewer – 使我们能够在没有 Web 浏览器的情况下运行 Java 小程序jar – 将 Java 小程序或应用程序打包到单个存档中,可以用于运行jar文件jdb – 用于查找和修复 Java 应用程序中的错误的命令行,调试工具javah – 从 Java 类生成 C 头文件和源文件javap – 反汇编class类文件,并显示有关类文件中存在的字段、构造函数和方法的信息extcheck – 检测目标 Java 存档 (JAR) 文件和当前安装的扩展 JAR 文件之间的版本冲突
安全工具
java是有提供一些安全的授权证书的,Java Keystore 是授权证书或公钥证书的容器。因此,它经常被基于 Java 应用程序用于加密、身份验证和通过 HTTPS 提供服务。
keytool – 加密密钥和证书jarsigner – 使用密钥库信息生成数字签名的 JAR 文件policytool – 管理外部策略配置文件
监控和性能分析
jconsole –提供一个图形控制台,让您监控和管理 Java 应用程序jps –列出目标系统上检测的 JVMjstat –监控 JVM 统计信息jstatd –监控已检测的JVMinfo – 为指定的 Java 进程生成配置信息jmap –打印指定进程的共享对象内存映射或堆内存详细信息jsadebugd –附加到 Java 进程并充当调试服务器jstack –打印Java 堆栈跟踪,栈溢出问题排查
等等
今日份分享已结束,请大家多多包涵和指点!
标签: #jsaes加密