Java基础 | java平台理解-01

一、宏观角度

.. 1、跟c/c++最大的不同点在于,c/c++编程是面向操作系统的,需要开发者极大地关心不同操作系统之间的差异性;而Java平台通过虚拟机屏蔽了操作系统的底层细节,使得开发者无需过多地关心不同操作系统之间的差异性。

  2、通过增加一个间接的中间层来进行”解耦“是计算机领域非常常用的一种”艺术手法“,虚拟机是这样,操作系统是这样,HTTP也是这样。

  3、Java平台已经形成了一个生态系统,在这个生态系统中,有着诸多的研究领域和应用领域:

    1)虚拟机、编译技术的研究(例如:GC优化、JIT、AOT等):效率的提高

    2)Java语言本身的优化

    3)大数据处理

    4)Java并发编程

    5)客户端开发(例如:Android平台)

二、微观角度:

  1. Java语言本身、JDK中所提供的核心类库和相关工具

    从事Java平台的开发,掌握Java语言、核心类库以及相关工具是必须的,我觉得这是基础中的基础。

    对语言本身的了解,需要开发者非常熟悉语言的语法结构;而Java又是一种面对对象的语言,这又需要开发者深入了解面对对象的设计理念;

    Java核心类库包含集合类、线程相关类、IO、NIO、J.U.C并发包等;

  2. Java虚拟机以及其他包含的GC

    Java语言具有跨平台的特性,也正是因为虚拟机的存在。Java源文件被编译成字节码,被虚拟机加载后执行。这里隐含的意思有两层:

    1)大部分情况下,编程者只需要关心Java语言本身,而无需特意关心底层细节。包括对内存的分配和回收,也全权交给了GC。

    2)对于虚拟机而言,只要是符合规范的字节码,它们都能被加载执行,当然,能正常运行的程序光满足这点是不行的,程序本身需要保证在运行时不出现异常。所以,Scala、Kotlin、Jython等语言也可以跑在虚拟机上。

    3)围绕虚拟机的效率问题展开,将涉及到一些优化技术

      解释:.class文件经过JVM内嵌的解释器转化成最终的机器码

      编译:JIT (Just In Time) 即动态编译器,JIT 能够在运行时将热点代码编译成机器码!

      AOT(Ahead-of-Time Compilation):直接将字节码编译成机器代码,这样就避免了 JIT 预热等各方面的开销

三、Java程序执行步骤

    1、首先javac编译器将源代码编译成字节码。

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容