聊聊java平台哪些事

如果有人让你聊聊java平台,你会怎么说呢?java平台包括的东西太多了,有java语言,java类库,jvm,还有一些java常用到的框架......,简直说都说不过来,下面是我的一些见解,算是现阶段对java的一点总结,可以指导我向哪些方面前进。

(1)java语言

java语言是一门面向对象的编程语言,号称Write once, run anywhere,书写一次,到处运行。其实java语言本身和其它编程语言没什么区别,关键是jvm让java语言在不同的平台运行的环境而已。JRE是java的运行环境,JDK是JRE的超集,除了包括java的运行环境,还有java的开发环境以及一些诊断工具。我们想要运行java程序,首先就得安装JDK,这就给我们提供了一个统一的编程环境,而不用关心操作系统的差异性,只关注编程技术。

java有三大特性,封装,继承,多态

封装是将类的关键信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。

继承是使用已经存在的类来建立新类的技术,新类可以增加新的属性和方法,父类提供共性,子类提供特殊性。

多态是一个引用在不同情况下的多种状态。通过指向父类的指针,来调用不同子类的实现方法。

还有泛型,反射,Lambda ......

(2)java虚拟机(JVM)

java语言实现运行的流程:编码->编译->运行->调试,我们编写java源文件,首先通过javac编译成.class字节码文件,机器不识别字节码文件,而是jvm通过加载.class文件,通过解释器一行一行解释字节码文件,同时执行对应的一行一行代码。同时如果是热点代码,jvm就通过JIT编辑器(Just In Time 即时编辑器)动态编译这段代码形成目标机器码缓存下来,下次这段代码就不通过解释器而是直接执行机器码。下面是一张JIT工作的示意图。

jvm在启动的时候,可以指定不同的参数选择不同的编译模式。

-Xint:就是告诉JVM只进行解释执行,不对代码进行编译执行,这种模式可能抛弃了JIT带来的性能优越。

-Xcomp:就是告诉JVM关闭解释器,进行编译执行,不需要解释执行,这种是最大优化级别,当然这种模式也可能不是高效模式

-Xmixed:混合编译模式,JDK8就支持这种模式,通常运行在Server模式的JVM,会进行上万次的调用以收集足够的信息进行高效的编译,Client模式的JVM这个门限是1500次,Oracle Hotspot JVM 内置了2个不同的JIT compiler,C1对应Client模式,适用于对启动速度敏感的应用,C2对应Server模式,适用长时间运行的服务器端设计的。

除了上面常用的JVM编译模式,还有一种新的编译模式,即AOT(Ahead-of-Time Compilation)模式,直接将字节码转化为机器码,这样就避免了JIT预热各方面的开销了。比如Oracle JDK9就引用了实验性的AOT特性。

(3)java类库

  • 核心类库,如集合,IO/NIO,网络,并发,utils等
  • 安全类库
  • 海量的第三方类库

(4)java/jvm生态

java EE, Spring,Spring Boot,Spring Mvc, Hadoop, Spark, Maven......

以上就是我自己总结的关于java平台的一点认识,具体细节有的还不是很清楚,希望我一天一个脚印,朝着成功出发。

发布了19 篇原创文章 · 获赞 0 · 访问量 1968

猜你喜欢

转载自blog.csdn.net/jiankangzhu/article/details/104339420
今日推荐