深入理解java虚拟机读书笔记(一)-前沿

深入理解java虚拟机(jvm高级特性与最佳实践)

一、前沿

二、第一部分-走进java

三、第二部分-走进内存管理机制

四、第三部分-虚拟机执行子系统

五、程序编译与代码优化

六、高效并发

                                                                  一、前沿

           

    Java的技术体系主要由支撑:Java程序运行的虚拟机、 提供各开发领域接口支持的Java API、Java编程语言及许多第三方Java框架(如Spring、Struts等)构成。Java开发技术本身的一个重要优点:在虚拟机层面隐藏了底层技术的复杂性以及机器与操作系统的差异性。运行程序的物理机器的情况千差万别,而Java虚拟机则在千差万别的物理机上建立了统一的运行平台,实现了在任意一台虚拟机上编译的程序都能在任何一台虚拟机上正常运行。程序员可以把主要精力集中在具体业务逻辑上,而不是物理硬件的兼容性上。在一般情况下,一个程序员只要了解了必要的Java API、 Java语法,以及学习适当的第三方开发框架,就已经基本能满足日常开发的需要了。虚拟机会在用户不知不觉中完成对硬件平台的兼容及对内存等资源的管理工作。随着程序的性能、 稳定性和可扩展性方面都需要迫切提高,了解java虚拟机为了写出最适合虚拟机运行和自优化的代码。
   JDK 1.7在2011年7月28日正式发布,新版本增加了新特性和改进,1.7中最新的G1收集器,以及JDK 1.7中JSR-292InvokeDynamic(对非Java语言的调用支持)的分析讲解等内容。书本面向的读者:
1)使用Java技术体系的中、高级开发人员。Java虚拟机作为中、 高级开发人员必须修炼的知识。
2)系统调优师:系统调优师是近几年才兴起的职业。
(3)系统架构师:保障系统的性能、 并发和伸缩等能力是系统架构师的主要职责之一,而这部分与虚拟机的运作密不可分。

                         、走进java
21概述
Java不仅仅是一门编程语言,还是一个由一系列计算机软件和规范形成的技术体系,这个
技术体系提出 完整的用于软件开发和跨平台部署的支持环境,并广泛应用到各种终端。
java语言的有点不仅仅他是一种结构严谨的面向对象的语言还有其它的优点:1:它摆脱
了硬件平台的束缚,实现了“一次编写,到处运行”的理想;2:它提供了一个相对安全
的内存管理和访问机制,避免了绝大部分的内存泄露和指针越界问题;3:它实现了热点
代码检测和运行时编译及优化,这使得Java应用能随着运行时间的增加而获得更高的性能
4:它有一套完善的应用程序接口,还有无数来自商业机构和开源社区的第三方类库来帮
助它实现各种各样的功能。
2、2  java体系结构
  从广义上讲,运行于Java虚拟机上的语言及其相关的程序都属于Java技术体系中的一员。 如果仅从传统意义上来看,Sun官方所定义的Java技术体系包括以下几个组成部分:
1:Java程序设计语言。2:各种硬件平台上的Java虚拟机。3:Class文件格式。4:Java API类库。5:来自商业机构和开源社区的第三方Java类库。
可以把Java程序设计语言、Java虚拟机、Java API类库这三部分统称为JDK(JavaDevelopment Kit),JDK是用于支持Java程序开发的最小环境。可以把Java API类库中的JavaSE API子集和Java虚拟机这两部分统称为JRE(Java Runtime Environment),JRE是支持Java程序运行的标准环境。如图体系结构(以组成部分功能划分),按照技术领域划分主要是右图的三个方向还有java Card:支持一下小程序运行在小内存设备如智能卡上的平台。java ME:支持移动动端平台以前也称J2ME。java SE:支持桌面级应用程序。java EE:企业级开发。(J2EE)
深入理解java虚拟机读书笔记(一)-前沿_第1张图片
2.3 java发展史


1995年5月23日,Oak语言改名为Java,并且在SunWorld大会上正式发布Java 1.0版本。JDK 1.0版本的代表技术包括:Java虚拟机、Applet、AWT等。

1.1版的技术代表有:JAR文件格式、JDBC、JavaBeans、RMI。Java语法也有了一定的发展,如内部类(Inner Class)和反射(Reflection)都是在这个时候出现的。
JDK 1.2把Java技术体系拆分为3个方向,分别是面向桌面应用开发的。J2SE(Java 2 Platform,Standard Edition)、 面向企业级开发的J2EE(Java 2 Platform,EnterpriseEdition)和面向手机等移动终端开发的J2ME(Java 2 Platform,Micro Edition)。
JDK 1.4是Java真正走向成熟的一个版本。JDK 1.4同样发布了很多新的技术特性,如正则表达式、 异常链、 NIO、 日志类、 XML解析器和XSLT转换器等。 
JDK 1.5
Java语法易用性上做出了非常大的改进如,自动装箱、 泛型、 动态注解、 枚举、 可变长参数、 遍历循环(foreach循环)等语法特性。
JDK 1.6的改进包括:提供动态语言支持(通过内置MozillaJavaScript Rhino引擎实现)、 提供编译API和微型HTTP服务器API等。 同时,这个版本对Java虚拟机内部做了大量改进,包括锁与同步、 垃圾收集、 类加载等方面的算法都有相当多的改动。

2.4 java的未来

1:模块化:模块化是解决应用系统与技术平台越来越复杂、 越来越庞大问题的一个重要途径。

2:混合语言:Java平台上的多语言混合编程,越来越多基于Java虚拟机的语言开发被应用到软件项目中。
3:多核并行:并行编程多核并行运算解决任务。在Java 8中,将会提供Lambda支持,这将会极大改善目前Java语言不适合函数式编程的现状(目前Java语言使用函数式编程并不是不可以,只是会显得很臃肿)。
4:进一步丰富语法。
5: 64位虚拟机:Java虚拟机在很早之前就推出了支持64位系统的版本。 但Java程序运行在64位虚拟机上需要付出比较大的额外代价:首先是内存问题,由于指针膨胀和各种数据类型对齐补白的原因,运行于64位系统上的Java应用需要消耗更多的内存,通常要比32位系统额外增加10%~30%的内存消耗;其次,多个机构的测试结果显示,64位虚拟机的运行速度在各个测试项中几乎全面落后于32位虚拟机,两者大约有15%左右的性能差距。

你可能感兴趣的:(深入理解java虚拟机)