【Java核心技术-1】

Java平台

内容总结

  • Java特性:
    面向对象(封装,继承,多态)
    平台无关性(JVM运行.class文件)
    语言(泛型,Lambda)
    类库(集合,并发,网络,IO/NIO)
    JRE(Java运行环境,JVM,类库)
    JDK(Java开发工具,包括JRE,javac,诊断工具)

  • Java是解析运行吗?
    不正确!
    1,Java源代码经过Javac编译成.class文件
    2,.class文件经JVM解析或编译运行。
    (1)解析:.class文件经过JVM内嵌的解析器解析执行。
    (2)编译:存在JIT编译器(Just In Time Compile 即时编译器)把经常运行的代码作为"热点代码"编译与本地平台相关的机器码,并进行各种层次的优化。
    (3)AOT编译器: Java 9提供的直接将所有代码编译成机器码执行。

    • 【首先javac编译器将源代码编译成字节码。
    • 然后jvm类加载器加载字节码文件,然后通过解释器逐行解释执行,这种方式的执行速度相对会比较慢。有些方法和代码块是高频率调用的,也就是所谓的热点代码,所以引进jit技术,提前将这类字节码直接编译成本地机器码。这样类似于缓存技术,运行时再遇到这类代码直接可以执行,而不是先解释后执行。】

怎么理解Java平台答案

  • Java平台包括java语言,class文件结构,jvm,api类库,第三方库,各种编译、监控和诊断工具等。
  • Java语言是一种面向对象的高级语言;通过平台中立的class文件格式和屏蔽底层硬件差异的jvm实现‘一次编写,到处运行’;
    • jvm 层面封装了系统API,提供不同系统一致的调用行为。减少了为适配不同操作系统,不同架构的带来的工作量。
  • 通过‘垃圾收集器’管理内存的分配和回收。
    • 垃圾回收,降低了开发过程中需要注意内存回收的难度。降低内存泄露出现的概率。虽然也带来了一些额外开销,但是足以弥补带来的好处。合理的分代策略,提高了内存使用率。
  • jvm通过使用class文件这种中间表示和具体语言解耦,使得任何在源码早期编译过程中以class文件为中间表示或者能够转换成class文件的具体语言,都能运行jvm之上,也就可以使用jvm的各种特性。
    • 围绕虚拟机的效率问题展开,将涉及到一些优化技术,例如:JIT、AOT。因为如果虚拟机加载字节码后,完全进行解释执行,这势必会影响执行效率。所以,对于这个运行环节,虚拟机会进行一些优化处理,例如JIT技术,会将某些运行特别频繁的代码编译成机器码。而AOT技术,是在运行前,通过工具直接将字节码转换为机器码。
  • api类库主要包含集合、IO/NIO、网络、并发等。
  • 第三方库包括各种商业机构和开源社区的java库,如spring、mybatis等。
  • 各种工具如javac、jconsole、jmap、jstack等。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值