《Java核心技术36讲》阅读笔记:谈谈对Java平台的理解笔记
1. 谈谈你对Java平台的理解。
Java是一种面向对象的语言,最显著的特性有两个方面:
一个就是一次编译,到处运行(Write once, run anywhere),能够非常容易的获得跨平台能力;
另一个就是垃圾收集(GC,Garbage Collection),Java通过GC回收分配内存,大部分情况下程序员不需要操心内存的分配和回收;
什么是JRE(Java Runtime Environment)/JDK(Java Development Kit)?
JRE:java运行环境,包含了JVM,Java内裤,以及一些模块;
JDK:JRE的一个超集,提供了更多工具,比如编辑器、各种诊断工具;
JVM < JRE < JDK
2. Java是解释执行,这句话正确么?
Java是解释执行,这个说法不太准确。我们开发java的源代码,通过Javac编译成字节码,然后在运行时通过JVM内嵌的解释器将字节码转换为最终的机器码。
但是常见的JVM(Oracle JDK 提供的Hotspot JVM),都提供了动态编译器JIT(Just in Time),JIT能够在运行时将热点代码编译成机器码,这种情况下部分热点代码就属于编译执行,而不是解释执行。
如图Java是分为编译器和运行时。java的编译生成的是字节码,而不是可以直接执行的机器码。Java通过字节码和JVM这种跨平台的抽象,屏蔽了操作系统和硬件的细节,这也是“一次编译,到处执行的基础”。
JVM启动时可以指定不同的参数对运行模式进行选择,例如:
-Xmixed:解释和编译混合模式;
-Xint:只进行解释执行,不对代码进行编译,抛弃JIT可能带来的性能优势;
-Xcomp:关闭解释器或者叫做最大优化级别。但这种模式并不一定是最高效的,他会导致JVM启动变慢,同时有些JIT编译器优化方式,如分支预测,如果不进行profiling,往往不能进行有效优化。
AOT(Ahead-of-Time Compilation):直接将字节码编译成机器代码,避免了JIT预热等各方面的开销。在Oracle JDK 9 引入了实验性的AOT特征,并增加了新的jaotc工具;
《Java核心技术36讲》阅读笔记:谈谈对Java平台的理解笔记的更多相关文章
- java核心技术-(总结自杨晓峰-java核心技术36讲)
1. 谈谈你对java平台的理解 首先是java最显著的两个特性,一次写入处处运行:还有垃圾收集器gc,gc能够对java内存进行管理回收,程序员不需要关心内存的分配和回收问题 然后谈谈jre和jdk ...
- 《Java核心技术36讲》阅读笔记:Exception和Error有什么区别?
1.Exception 和 Error有什么区别?运行时异常与一般异常有什么区别? Exception和Error都继承自java.lang.Throwable.在Java中只有Throwable的实 ...
- 《java核心技术36讲》学习笔记-------杨晓峰(极客时间)
非常荣幸作为晓峰哥的同事,之前就看过这篇文章,重写读一遍,再学习学习. 一.开篇词 初级.中级:java和计算机科学基础.开源框架的使用:高级.专家:java io/nio.并发.虚拟机.底层源码.分 ...
- java核心技术36讲笔记
Java-Basic 谈谈final. finally. finalize有什么不同? 典型回答: final可以用来修饰类.方法.变量,分别有不同的意义, final修饰的class代表不可以继承扩 ...
- Java核心技术36讲----------谈谈final、finally、finalize有什么不同
一.final 1.final修饰方法时,需要注意的点: #final修饰方法时,之前的第二个原因是效率.但是如果方法过于庞大,可能看不到内嵌调用带来的任何性能提升.在最近的Java版本中,不需要使用 ...
- java核心技术36讲
https://time.geekbang.org/column/intro/82?utm_source=website&utm_medium=infoq&utm_campaign=8 ...
- Java核心技术36讲----------Exception和Error有什么区别
1.异常知识点学习实例 代码如下: package fromnet; /** * 参考链接:https://blog.csdn.net/qq_18505715/article/details/7319 ...
- Java核心技术卷一基础知识-第3章-Java的基本程序设计结构-读书笔记
第3章 Java的基本程序设计结构 本章内容: 一个简单的Java应用程序 字符串 注释 输入输出 数据类型 控制流 变量 大数值 运算符 数组 本章主要讲述程序设计相关的基本概念(如数据类型.分支以 ...
- Java核心技术卷一基础知识-第2章-Java程序设计环境-读书笔记
第2章 Java程序设计环境 本章内容: 安装Java开发工具箱 使用集成开发环境 选择开发环境 运行图形化应用程序 使用命令行工具 建立并运行applet本章主要介绍如何安装Java开发工具箱(JD ...
随机推荐
- 超强windows10稳定Nginx绿色环境,可无限自定义PHP和mysql版本、同时运行N个版本
转载自互联网, 小编发现最近PHPWAMP集成环境的作者Lccee,又更新了phpwamp8.8.8.8n版本 phpwamp8.8.8.8n一共集成了12个PHP版本和3个mysql版本,并且可以高 ...
- 解决charles中文乱码(附代码)
1. 将下面的代码保存为一个*.xml的文件 <?xml version='1.0' encoding='UTF-8' ?> <?charles serialisation-vers ...
- Redis.md
rpm 包安装 CentOS 系列系统安装redis可以通过第三方提供的rpm包进行安装: # yum install -y epel-release # yum install -y redis 源 ...
- AESUtil 加密
package com.hxqc.basic.dependency.util; import org.apache.commons.lang.StringUtils; import sun.misc. ...
- ArcFac_C#_DEMO开发
手上有一个项目,需要检验使用本程序的,是否本人!因为在程序使用前,我们都已经做过头像现场采集,所以源头呢是不成问题的,那么人脸检测,人脸比对,怎么办呢?度娘了下,目前流行的几个人脸检测,人脸比对核心, ...
- 智慧监狱来了!SaCa EMM 助推现代监狱建设迈上新台阶
近几年来,移动化已经成为警务信息化建设的必然方向,为紧急和突发事件的处理提供了信息依据.为监狱民警提供移动警务所需的信息管理系统,司法系统从很早就开始推动警务通项目.为了落实移动警务的工作需求,很多监 ...
- 搭建Hexo博客系统
也许这个教程部署不是特别详细,因为我主要是参考这个链接:https://blog.csdn.net/weixin_39879178/article/details/80319392 感觉这里已经写的很 ...
- 通讯协议(三)Protocol Buffers协议
Protocol Buffers是Google开发一种数据描述语言,能够将结构化数据序列化,可用于数据存储.通信协议等方面. 不了解Protocol Buffers的同学可以把它理解为更快.更简单.更 ...
- 我的QT5学习之路(一)——浅谈QT的安装和配置
一.前言 说到Qt,不能不说到C++,这门伟大的语言.因为其面向对象的编程思想和陡峭的学习曲线,一开始学习起来很是吃力.Qt从QT4开始基本封装了很多C++的工具库和界面库,而且支持跨平台,这是它最大 ...
- JS与OC交互,JS中调用OC方法(获取JSContext的方式)
最近用到JS和OC原生方法调用的问题,查了许多资料都语焉不详,自己记录一下吧,如果有误欢迎联系我指出. JS中调用OC方法有三种方式: 1.通过获取JSContext的方式直接调用OC方法 2.通过继 ...