深刻理解Java虚拟机-第1章-走进Java-读书笔记

第 1 章 走近 Java

前言

  Java 的技术体系主要是由支撑 Java 程序运行的虚拟机、为各开发领域提供接口支持的 Java API、Java 编程语言及许许多多的第三方 Java 框架(如 Spring 和 Struts 等)构成。
  关于 Java 虚拟机的资料较少只要是因为 Java 开发技术的一个重要有点致使的:在虚拟机层面隐藏了底层技术的复杂性以及机器与操做系统的差别性。运行程序的物理机器状况千差万别,而 Java 虚拟机则在千差万别的物理机上面创建了统一的运行平台,实现了在任意一台虚拟机上编译的程序能在任何一台虚拟机上正常运行。
  随着 Java 技术的不断发展,它被应用于愈来愈多的领域之中。其中一些领域,如电力、金融、通讯等,对程序的性能、稳定性和可扩展性方面都有极高的要求。因此,了解虚拟机的运行也是必要的。
  在绝大多数状况下,提高硬件效能没法等比例的提高程序的性能和并发能力,有时甚至可能对程序的性能没有任何改善做用。这里面有 Java 虚拟机的缘由:为了达到为全部硬件提供一致的虚拟机平台的目的,牺牲了一些硬件相关的性能特性。更重要的人为缘由:开发人员若是不了解虚拟机的一些技术特性的运行原理,就没法写出最适合虚拟机运行和可自优化的代码。java

本章主要内容

概述
Java 技术体系
Java 发展史
展望 Java 技术的将来
实战:本身编译 JDK

1.1 概述

  Java 不只仅是一门编程语言,它仍是一个由一系列计算机软件和规范造成的技术体系,这个技术体系提供了完整的用于软件开发和跨平台部署的支持环境,并普遍应用于嵌入式系统、移动终端、企业服务器和大型机等各类场合。
  Java 能得到如此普遍的承认,除了由于它拥有一门结构严谨、面向对象的编程语言以外,还有许多不可忽略的优势:它摆脱了硬件平台的束缚,实现了“一次编写,处处运行”的理想;它提供了一种相对安全的内存管理和访问机制,避免了绝大部分的内存泄漏和指针越界问题;它实现了热点代码检测和运行时编译及优化,这使得 Java 应用能随着运行时间的增长而得到更高的性能;它有一套完善的应用程序接口,还有无数的来自商业机构和开源社区的第三方类库来帮助实现各类各样的功能。。。。。。 Java 所带来的的这些好处让程序的开发效率获得了很大的提高。web

1.2 Java 技术体系

  Java 技术体系包括了一下几个组成部分:编程

  • Java 程序设计语言
  • 各类硬件平台上的 Java 虚拟机
  • Class 文件格式
  • Java API 类库
  • 来自商业机构和开源社区的第三方 Java 类库。

图 Java技术体系所包含的内容
小程序

  把 Java 程序设计语言、Java 虚拟机、Java API 类库这三部分统称为 JDK(Java Development Kit),JDK 是用于支持 Java 程序开发的最小环境。
  把 Java API 类库中的 Java SE API 子集和 Java 虚拟机这两部分统称为 JRE (Java Runtime Environment),JRE 是支持 Java 程序运行的标准环境。
  若是按照技术所服务的领域来划分,或者说按照 Java 技术关注的重点业务领域来划分,Java 技术体系能够分为四个平台,分别是:安全

  • Java Card:支持一些 Java 小程序(Applets)运行在小内存设备(如智能卡)上的平台。
  • Java ME (Micro Edition):支持 Java 程序运行在移动终端(手机、PDA)上的平台,对 Java API 有所精简,并加入了针对移动终端的支持,这个版本之前称为 J2ME。
  • Java SE (Standard Edition):支持面向桌面级应用(如 Windows 下的应用程序)的 Java 平台,提供了完整的 Java 核心 API ,这个版本之前称为 J2SE。
  • Java EE (Enterprise Edition):支持使用多层架构的企业应用(如 ERP、CRM 应用)的 Java 平台,除了提供 Java SE API 以外,还对其作了大量的扩充并提供了相关的部署支持,这个版本之前称为 J2EE 。

1.3 Java 发展史

  主要讲述了 Java 从诞生到如今的发展,每一个版本新增的一些东西。服务器

1.4 展望 Java 技术的将来

1.4.1 模块化

  模块化是解决应用系统与技术平台愈来愈复杂、愈来愈庞大而产生的一系列问题的一个重要途径。不管是开发人员仍是产品的最终用户,都不但愿为了系统中的一小块功能而不得不下载、安装、部署及维护整套庞大的系统。最近几年 OSGi 技术的迅速发展正说明了经过模块化实现按需部署、下降复杂性和维护成本的需求是至关迫切的。架构

1.4.2 混合语言

  Java 平台上的多语言混合编程正成为主流,没中语言均可以针对本身擅长的方面更好地解决问题。并发

1.4.3 多核并行

  CPU 硬件的发展方向已经从高频率转变为多核心,随着多核时代的来临,软件开发愈来愈关注并行编程的领域。框架

1.4.4 进一步丰富语法

  不断的扩充 Java 语法。编程语言

1.4.5 64 位虚拟机

  几年以前,主流的 COU 就开始支持 64 为架构。Java 虚拟机也在很早以前就推出了支持 64 位系统的版本。但 Java 程序运行在 64 为虚拟机上须要付出比较大的额外代价:首先是内存问题,因为指针膨胀和各类数据类型对齐补白的缘由,运行于 64 位系统上的 Java 应用须要消耗不少的内存,一般要比 32 位系统额外增长 10% ~ 30% 的内存消耗;其次是多个机构的测试结果显示,64 位虚拟机的运行速度在各个测试项上几乎全面落后于 32 位虚拟机,二者大约有 15% 左右的性能差距。

1.5 实战:本身编译 JDK

  想要一探 JDK 内部的实现机制,最便捷的路径之一就是本身编译一套 JDK 。经过阅读和跟踪调试 JDK 源码去了解 Java 技术体系的原理,虽然门槛会高一些,但确定会比阅读各类文章、书籍更加容易切近本质。另外,JDK 中的不少底层方法都是 Native 的,当须要跟踪这些方法的运做或对 JDK 进行 Hack 的时候,都须要编译一套本身的 JDK 。

1.5.1 获取 JDK 源码

1.5.2 系统需求

1.5.3 构建编译环境

1.5.4 准备依赖项

1.5.5 进行编译

1.6 本章小结

  本章介绍了 Java 技术体系的过去、如今和将来的发展趋势,并经过实践的方式介绍了如何本身来独立编译一个 OpenJDK 7。

相关文章
相关标签/搜索