技术标签: java javaSE基础入门 开发语言
目录
关于JVM,在百度上的解释为:JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。
简单地说,JVM是《JVM虚拟机规范》中提出来的规范,并不是具体实现,相当于“接口”,而真正实现他的是形如HotSport的“实现类”。
从百度的定义来看,我们可以发现:JVM并不是只为Java语言服务,而是针对字节码文件,只要是字节码文件,JVM就支持。
像java语言自不必说,还有大数据开发常用的Scala语言,Groovy语言,python等其他语言经过处理也可以转换成字节码文件,从而在JVM环境中运行。
程序执行的方式一般有三种,包括静态编译执行、动态编译执行、动态解释执行。编译指的是将程序编译成可让操作系统直接执行的机器码。在java语言中,程序的执行方式是以动态解释为主,动态编译为辅(静态编译执行类似C语言,编译成可执行文件(windows一般是exe,Linux一般为sh),里面存的都是机器码)。
1.1字节码与机器码的区别:
机器码:是CPU直接读取的机器指令,运行速度非常快。
字节码:一种中间状态的二进制文件,需要直译器转译后才能变成机器码。
1.2执行流程图:
如上图得出一个结论:java程序编译成的字节码文件可以做到一次编译到处使用,字节码不分操作系统,而不同的操作系统的JVM是不同的,所以只要是字节码,就能在不同的平台由不同的JVM解释成为机器码进行运行使用,所以为什么jdk的下载区分操作系统,这也体现了java语言的(.class字节码文件)强大的跨平台性和可移植性。。
1.3JDK、KRE、JVM之间的关系
JDK主要包括了编译器等开发工具和JRE两部分,JRE包含了JVM和运行类库。
有关OpenJDK和OracleJDK的区别
在命令行中使用命令 java -version 通过查看结果进行区分
①若为下图所示:
则表示该JDK为OracleJDK,其中HotSpot为JVM的实现,HotSpot为JVM规范的商用产品,除此之外还有Oracle JRockit、IBM的J9;Server为该JVM的运行模式,JVM有两种运行模式,分别为Client模式和Server模式;对于这两种模式,他们是互补的关系,区别在于Client模式启动速度较快,Server模式启动较慢; 但是启动进入稳定期长期运行之后Server模式的程序运行速度比Client要快很多。 因为Server模式启动的JVM采用的是重量级的虚拟机,对程序进行了更多的优化;而Client模式启动的JVM采用的是轻量级的虚拟机。所以Server启动慢,但稳定后速度比Client远远要快。
②若结果为
2.1基于JVM架构的JVM程序执行流程:
首先,由java编译器(javac)将java源代码.java文件编译成为java字节码.class文件,该字节码文件可能存在于网络、内存、硬盘等地方,而JVM都有方式可以将其加载到类装载器中,进行字节码验证等操作,若为非法字节码文件,则会被丢弃,之后再通过对于热点代码的判断,在java解释器和即时编译器之间进行协调选择执行,然后转换成操作系统可识别的机器码运行程序。
2.2java解释器和编译器(JIT)之间的协调配合流程:
在一些商用JVM实现中(这里举例HotSpot) ,字节码转换为机器码的操作最初是由解释器interpretor执行的,但是当一个代码或者代码块执行的次数(如一个方法的频繁调用和循环体的多次执行)很多时,如果每次都进行解释,那么对于空间会造成浪费和拥挤,也会降低JVM的性能,导致程序的执行缓慢,而JIT(Just In Time Compiler)很好的解决了这个问题,在JIT中(参照上图的JVM架构图),探测器检测并判断哪些代码为热点代码,并标记,然后将他们编译成与本地平台相关的机器码,并进行代码的优化,提高了程序执行的效率;JIT是属于在运行时进行编译的动态编译,这种编译方市因为编译发生在方法执行过程之中,因此形象的称为栈上替换(On Stack Replacement,OSR),即方法栈帧还在栈上,方法就被替换 了。
2.3热点代码的探测有两种方式,分别是基于采样的热点探测和基于计数器的热点探测。
文章浏览阅读60次。HTML5标准学习 - 编码 from:http://www.cnblogs.com/GrayZhang/archive/2011/04/11/learning-html5-charset.html相信每一个前端工程师都或多或少遇上过“乱码”这位仁兄,无论你的基...
文章浏览阅读1.9k次。今天我要和大家聊聊AB压测工具,如果你对网站性能测试感兴趣或有需要,那么这篇文章一定会帮到你。我曾经也因为缺少良好的压力测试工具而苦恼,直到我发现了AB压测工具。它可以帮助我们测试网站在高并发情况下的性能表现,让我们更好地了解网站的性能瓶颈和优化方向。接下来,我将为大家介绍AB压测工具的安装和使用方法,希望能够帮助大家更好地进行网站性能测试,提升网站的质量和用户体验。_ab压测工具
文章浏览阅读847次。打开URL启动android默认浏览器,启动指定浏览器 分类: android2015-05-07 09:2718人阅读评论(0)收藏举报浏览器uri原文出自:http://blog.csdn.net/u013812046/article/details/39226515一、启动android默认浏览器 Intent intent _scheme打开系统自带浏览器
文章浏览阅读863次,点赞2次,收藏2次。计算机网络+计算机网络课程设计这门课挺有意思,是真的有意思,知道一个网络具体是怎么运作,然后还能自己动手配置一个网络,观察一个数据包的流转过程,不过学校的课程不是那么全面,讲得不是那么浅显易懂,学完只是懂了一些老古董。除此之外,课程安排确实让人吐槽,连上四节课,一般上到第三节课就已经熄火了,听不进去。关于课程设计安排更是有问题,思科学院的东西,如此现代,如此浅显易懂,居然让我们用课设时间去看,最关键的是,课设只有四天,你要看完一本书,这是不切实际的,完完全全地浪费了那么好的课程,所以不建议的那么安排。_计算机网络课程设计的建议
文章浏览阅读545次。概念:开放式对话系统是指一种可以与用户进行自由对话的系统,用户可以提出任意话题的问题或发表意见,而系统能够理解用户的输入并做出相应的回应。与任务导向的对话系统不同,开放式对话系统更注重与用户的自由互动,旨在模拟人类的对话能力和语言交流。目标:开放式对话系统的目标是实现自然、流畅、有趣的对话体验,使用户感到与真实人类对话类似。自然性:系统能够理解用户的语言表达,包括词汇、语法、语义等,并以自然、流畅的方式进行回应,使用户感到在与真人交谈。_开放式对话不支持多轮
文章浏览阅读9.2k次。/ 01 /前话《周末·听雨》包含动态雨滴效果,采用Dreamweaver软件制作,代码结构简单,DIV+CSS布局,目录结构为index.html页面、js、css和images文件夹。/ 02 /图摘/ 03 /_个人网站源码
文章浏览阅读5.4k次。我有一个csv文件,我想从中提取ratings和comments字段,并将其存储在两个变量中-rating和comment。这个过程完成后,我需要查看提取的数据。CSV文件中存储的数据如下:在我的dataclean python文件中,目前编写的代码是:class Extractdata:def __init__(self, rating, comment):self.rating = ratin..._python提取特定列数据
文章浏览阅读404次。[b]引入一个页面,出现如下异常:[/b] [code="java"] 2010-10-6 11:44:08 org.apache.catalina.core.ApplicationDispatcher invoke严重: Servlet.service() for servlet jsp threw exceptionorg.apache.jasper.JasperExcept..._exception: unable to compile expression "$.data": syntax error token recogni
文章浏览阅读981次。http://blog.csdn.net/luofen521/article/details/51783914http://blog.csdn.net/luofen521/article/details/51783914http://blog.csdn.net/luofen521/article/details/51783914场景复现:
文章浏览阅读252次。注:用户表字段必须有oppid & session_key。_laravel 微信登录
文章浏览阅读339次。In JSF 2.0, all your web resources files like css, images or JavaScript, should put in “resources” folder, under the root of your web application (same folder level with “WEB-INF“).The sub-folder under_outputscript
文章浏览阅读402次。一、显示文本(一)more命令1.语法格式格式:more [选项] filename功能:读取filename中的内容,逐屏往下翻页显示,按h显示帮助,按q退出。2.选项-d, --silent display help instead of ringing bell-f, --logical count logical rather than screen lines-l, --no-pause suppress pause after form feed-c, --print-over do_grep 找到重复的字符,删除