jvm 基础知识
1、jdk是什么
jdk 包含简单来说包含java工具包,jre (运行环境)
jre 包含jvm(java虚拟机),运行时类库
如图
其中
javac – 编译器,将源程序转成字节码 jar – 打包工具,将相关的类文件打包成一个文件 javadoc – 文档生成器,从源码注释中提取文档 jdb – debugger,查错工具 java – 运行编译后的java程序(.class后缀的) appletviewer:小程序浏览器,一种执行HTML文件上的Java小程序的Java浏览器。 Javah:产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件。 Javap:Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。 Jconsole: Java进行系统调试和监控的工具 运行时类库: java.lang: 这个是系统的基础类,比如String等都是这里面的,这个包是一个可以不用引入(import)就可以使用的包。 java.io: 这里面是所有输入输出有关的类,比如文件操作等。 java.nio:为了完善io包中的功能,提高io包中性能而写的一个新包 ,例如NIO非堵塞应用 java.net: 这里面是与网络有关的类,比如URL,URLConnection等。 java.util: 这个是系统辅助类,特别是集合类Collection,List,Map等。 java.sql: 这个是数据库操作的类,Connection, Statement,ResultSet等。 javax.servlet:这个是JSP,Servlet等使用到的类2、java 从编译到执行
java类(helloWorld.java文件)通过javac 工具解析成helloWorld.class文件,
然后jvm通过类加载器、字节码解释器等一些列过程将class文件解析成os可以识别的机器码
如图
3、jvm的跨平台和跨语言
跨平台:java 针对不同的操作系统提供了对应的jdk版本,使得同样的java代码可以运行在不同的操作系统上,产生的结果是一致的
跨语言:由于jvm解析的只是java字节码,所以无论上层语言是java还是scala、kotlin等只要其最终生成对应的java字节码,都可以在jvm上运行
如图
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。