使用JAVA已经快三年了,但说来惭愧,一直以来认为Java就是Java语言本身,最多再包括一个JVM,对于整个Java的体系结构还是不甚明了,现在有时间把《深入理解Java虚拟机》这本书读了一下,也算解答了自己很多的疑惑。

        JAVA不仅仅是一门语言,而是由一系列软件和规范形成的技术体系,我们可以根据这些技术体系构造符合JAVA规范的虚拟机,语言,解析器等;由于JAVA的最初的设计目标是为了实现“一次编写,到处运行”的理想,整个软件界在这个理想的鼓舞下,针对不同的应用场景,设计了不同的VM以及语言。
 
        对JAVA语言来说,现在大规模使用的JAVA虚拟机有ORACLE 公司的Hotspot,JRocket和IBM 的J9虚拟机。其中JROCKET主要针对高性能场景,而J9则通常嵌入在IBM相关产品之中。
 
        从广义上讲,Clojure、JRuby、Groovy等运行在Java虚拟机上的语言及相关程序都属于Java技术体系,但从传统意义上来看,Java技术体系包含了以下几个部分:
 
  • Java程序设计语言
  • 各种硬件平台上的java虚拟机
  • Class文件格式
  • Java API类库
  • 来自商业机构和开源社区的第三方Java类库
        我们把Java程序设计语言、Java虚拟机、Java API类库这三部分统称JDK(Java Development Kit),JDK是支持Java程序开发的最小环境。
 
        另外,可以把Java API类库中的Java SE API子集和Java虚拟这两部分统称JRE(Java Runtime Enviroment),JRE是支撑Java运行的标准环境。

深入理解Java虚拟机 - Java体系的更多相关文章

  1. 深入理解java虚拟机----java技术体系(一)

    1.java技术体系 举例: class文件格式:如下图所示,java源代码可以根据不同的编译器可以编译成不同的代码.即可以自定义语言规范比如beanshell,并编写代码; 然后自己编写java编译 ...

  2. 深入理解java虚拟机---java虚拟机内存管理(七)

    本地方法栈.java堆.方法区 本地方法栈在HotSpot版本内与java虚拟机栈是合二为一的.不单独区分本地方法栈.但是java虚拟机中是有这样一块区域的. 作用: 1.本地方法栈为虚拟机栈执行ja ...

  3. 深入理解java虚拟机---java虚拟机内存管理(六)

    java虚拟机栈的理解 虚拟机栈就是我们所熟知的栈内存,栈内存属于线程独有的.而在栈内存中的局部变量表中存储的引用类型只是存储对象的内存地址.对象的创建在堆内存中,即对象在线程共享区中. 局部变量表: ...

  4. 深入理解java虚拟机---java虚拟机内存管理(五)

    1.深入理解java虚拟机 总图: 1.线程共享区: 2.线程独占区: 1.程序计数器 理解为当前线程锁执行的字节码的行号指示器,程序计数器没有内存异常错误.

  5. 深入理解java虚拟机---java内存区域与内存溢出异常---1内存结构

    本文来源于翁舒航的博客,点击即可跳转原文观看!!!(被转载或者拷贝走的内容可能缺失图片.视频等原文的内容) 若网站将链接屏蔽,可直接拷贝原文链接到地址栏跳转观看,原文链接:https://www.cn ...

  6. 深入理解java虚拟机---java虚拟机的发展史(四)

    1.java虚拟机 A:java虚拟机有很多个版本,但是我们经常使用的是sun公司的HotSpot,可以通过以下命令获取java虚拟机版本 B:JAVA虚拟机分类: 1.Sun Class VM 2. ...

  7. 深入理解java虚拟机---->java内存区域与内存溢出异常

    2. java内存区域于内存溢出异常 2.1 概述: 对于C/C++而言,内存管理具有最高的权利,既拥有每一个对象的“所有权”,又担负着每一个对象生命开始到结束的维护责任. 对于java而言,则把内存 ...

  8. Java虚拟机——Java内存区域

    1.运行时区域 Java虚拟机在执行Java程序的时候会把它管理的内厝划分为若干个不同功能的数据区域,如图所示 首先是程序计数器,程序计数器可以理解为当前程序执行的字节码的行号指示器,计数器中的数据即 ...

  9. Java虚拟机——Java内存区域与内存溢出

    内存区域 Java虚拟机在执行Java程序的过程中会把他所管理的内存划分为若干个不同的数据区域.Java虚拟机规范将JVM所管理的内存分为以下几个运行时数据区:程序计数器.Java虚拟机栈.本地方法栈 ...

随机推荐

  1. 解决java.io.IOException: Cannot run program "cygpath": CreateProcess error=2, 系统找不到指定的文件 的错误

    一.外部环境: 系统环境:Windows 8 磁盘分区:只有C盘 开发环境:IntelliJ IDEA Community Edition 2016.1.3(64) 执行代码:rdd.saveAsTe ...

  2. 4、WPF应用程序的启动

    启动第一步: 启动第二步 启动第三步:

  3. WPF系列

    一.ListView绑定数据源XML //前端代码 1 <Window x:Class="ListView读取XML数据.MainWindow" xmlns="ht ...

  4. SC命令详解

    我们知道在MStools SDK,也就是在Resource Kit有一个很少有人知道的命令行软件,SC.exe,这个软件向所有的Windows NT和Windows 2000要求控制他们的API函数. ...

  5. 如何正确看待Linq的DistinctBy扩展和ForEach扩展

    在微软标准的Linq中,并没有DistinctBy扩展和ForEach扩展,但在平时使用工作中却又经常需要使用到这两个功能,照理来说,微软在Linq中应该包含这两个扩展才对,可事实上为什么并没有呢?本 ...

  6. iis7、mvc2.0 文件上传配置方案

    http://blog.csdn.net/useruse/article/details/5602495

  7. 【递推】BZOJ 3930: [CQOI2015]选数

    Description 我们知道,从区间[L,H](L和H为整数)中选取N个整数,总共有(H-L+1)^N种方案.小z很好奇这样选出的数的最大公约数的规律,他决定对每种方案选出的N个整数都求一次最大公 ...

  8. unity3d学习笔记(十九)--ngui制作3d人物头顶的头像和血条

    原地址:http://blog.csdn.net/lzhq1982/article/details/18793479 本系列文章由Aimar_Johnny编写,欢迎转载,转载请标明出处,谢谢. htt ...

  9. OneAPM 技术公开课:北京,北京!

    随着互联网行业的高速发展,数据库已经是绝大多数 IT 应用的核心因素,虽然数据库种类繁多,但是多层体系结构以及 SOA 的发展,使得应用逻辑的实现前移.数据库的性能与其功能相比较,变得越来越重要了. ...

  10. Windows平台上C++开发内存泄漏检查方法

    充分的利用调试工具可以非常方便地避免内存泄漏问题. 这里介绍两种方法,互为补充,第一种是VC编译器提供的方法,第二种是专用的内存泄漏检查工具Memmory Validator.这两种方法的基本原理是一 ...