`

2、《深入理解java虚拟机》

 
阅读更多

目录:

1、走近java

2、自动内存管理机制

3、虚拟机执行子系统

4、程序编译与代码优化

5、高效并发

 

1.1、概述

java不仅仅是一门编程语言,它还是个技术规范:提供完整的软件开发和跨平台部署,广泛用于嵌入式、移动、j2ee、大型机等各种场合;java语言的主要优点:摆脱硬件束缚;提供相对安全的内存管理和访问机制,避免大部分内存泄露和指针越界问题;常用代码索引使得程序运行越久效率越高;完善接口实现。

 

Groovy [英]'ɡru:vɪ[美]ˈɡruvi    

Groovy是一种基于JVM(Java虚拟机)的开发语言,它结合了Python、Ruby和Smalltalk的许多强大的特性,Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有代码。由于其运行在 JVM 上的特性,Groovy 可以使用其他 Java 语言编写的库,使用方式基本与使用 Java代码的方式相同,该语言特别适合与Spring的动态语言支持一起使用,设计时充分考虑了Java集成,这使 Groovy 与 Java 代码的互操作很容易。

还有Clojure、JRuby等基于JVM的开发语言,称为广义的java语言,因为他们都是基于jvm实现的。

 

1.2、JDK、JRE、JVM的联系与区别:

        JVM 是 Java 平台的基础,和实际的机器一样,它也有自己的指令集,并且在运行时操作不同的内存区域。 JVM 通过抽象操作系统和 CPU 结构,提供了一种与平台无关的代码执行方法,与主机硬件、主机操作系统无关。但是在一些小的方面, JVM 的实现也是互不相同的,比如垃圾回收算法,线程调度算法(可能不同 OS 有不同的实现)。 

        JVM 的主要工作是解释自己的指令集(即字节码)到 CPU 的指令集或 OS 的系统调用,保护用户免被恶意程序骚扰。JVM 对上层的 Java 源文件是不关心的,它关注的只是由源文件生成的字节码文件;类文件的 组成包括 JVM 指令集,符号表以及一些补助信息。 

        JVM是解释.class文件向CPU或OS发出指令的机器。

 

        JRE是指java运行的标准环境。光有JVM还不能成class的 执行,因为在解释class的时候JVM需要调用    解释所需要的类库lib。 在JDK的安装目录中可以找到jre目录,里面有两个文件夹bin和lib,在 这里可以认为bin里的就是jvm,lib中则是jvm工 作所需要的类库,而jvm和 lib和起来就称为jre。(jre里有运行.class的java.exe、却没有javac.exe,说明JRE不能编译java文件)

PS:在运行eclipse时,任务管理器会有一个或两个javaw.exe进程,这个进程是做什么的呢?

      运行java命令时,会出现并保持一个DOS窗口,而运行javaw,不出现DOS窗口,可以将java.exe理解为jvm的启动程序。

 

       JDK是java开发的最小环境。

       在JDK的安装目录下面有 一个src类库源码压缩包和几个声明文件、以及这文件夹:bin、include、lib、 jre;

       bin:最主要的是编译器(javac.exe)

       include:java和JVM交互用的头文件

       lib:类库

       jre:java运行环境

(注意:jdk里的bin、lib文件夹和jre里的bin、lib是 不同的)总的来说JDK是用于java程序开发,而jre 只能运行.class文件而没有编译的功能。在安装java时,要安装一个jdk和一个jre目录。

       eclipse、idea等 其他IDE都有自己的编译器而不是用JDK bin目录中自带的javac.exe,所以在安装时会发现只要求jre路径。

 

三者关系图:

JDK

     ++

      |-----jre

              ++

               |-------jvm(bin)

JRE自带的基础类库主要是JRE\lib\rt.jar这个文件,包括了J2SE标准版的所有类库。  

 

java技术平台:JAVA CRAD(如手机卡) 、 JAVA ME(手机、Pad) 、 JAVA  SE(桌面级)、JAVA EE(企业级);

java.xxx.xxx的包.类为j2se的api,但也包含了少量的javax.xxx.xxx;

javax.xxx.xxx的包.类为j2ee的api;

 

1.3、java的发展史

1991  James Gosling(詹姆斯.高思林)  oak(橡树语言)----- >1995(java)    "Write once ,run anywhere"

1996  jdk 1.0   第一代纯解释虚拟机 (Sun Classic VM);javaj技术:AWT,applet;

1997  jdk 1.1   java技术:Jar、JDBC、JavaBeans、RMI、InnerClass、Reflection, 收购HotSpot(主流商用虚拟机,1.3之后采用该虚拟机作为jvm)

1998  jdk 1.2   分平台(se/ee/me)发布,基于java产生的技术:EJB、java plug-in、java IDL 、Swing ;虚拟机(Sun Classic VM、Hotspot、Exact VM);后两种基于JIT编译器(just in time 实时编译)

2000  jdk 1.3   java技术:JNDI;虚拟机全面使用HotSpot

2002  jdk 1.4   java技术正则表达式、NIO、XML解析、异常链;产品走向成熟,主流公司参与或独立实现jdk1.4 , 至今许多应用仍能在jdk1.4上运行,微软发布竞争产品.net(sun控告micro发布jdk 1.2 vm侵权,micro独立研发.net语言)  

2004  jdk 1.5   自动装箱、泛型、注解、枚举、可变参数数量、foreach语句,虚拟机:改进内存模型。版本发布由原来的jdk1.5改为jdk5,往后为jdk6,...

2006  jdk6       开始支持动态语言(查看字节码执行引擎,动态多分派),改进类加载、垃圾收集,锁与同步;公布部分源码。2009 oracle 74亿收购sun,同时收购另一家主流商用虚拟机公司JRocki

2011  jdk7       提供G1垃圾收集器, 提升动态语言支持(groovy等)

2014  jdk8

 

1.4、虚拟机的概念

所谓虚拟机,就是指一台虚拟的计算机。它的虚拟的含义,是相对于我们日常使用的真实计算机来讲的。真实的计算机我们摸得到,看得见,CPU、硬盘、内存等等,这些设备我们都可以实实在在地接触到。

 

而虚拟机,则是一种被虚拟化的技术,虚拟机中的CPU、内存等硬件设备我们都看不见,但是我们可以使用它们,可以使用虚拟机中的硬盘来存储数据,使用虚拟机中的网卡来连接网络,其实这些功能都是由程序模拟出来的,但是我们在使用过程中,并没有感觉到和真实的计算机有什么不同,这就是虚拟机技术。

 

而虚拟机技术最直接的应用,就是虚拟机软件。其最大的作用就是在一台普通计算机上模拟出另外一台乃至数台能够单独运行的操作系统,甚至还可以将这几个操作系统连成一个虚拟的局域网络。

 

虚拟机技术的几种应用

1.JAVA 虚拟机技术      JVM处于操作系统和JAVA语言之间,负责将高级语言JAVA转换成操作系统能够理解的语言;

2.虚拟机在杀毒软件中的应用      虚拟机在杀毒软件中也有着极为重要的应用,这主要表现在虚拟机脱壳上。壳是一种加密手段,病毒程序通过加壳来改变自身特征码,以躲避杀毒软件的查杀,杀毒软件都需要具有脱壳能力,其脱壳能力的好坏,直接影响着杀毒效果。目前在杀毒软件中,脱壳技术主要有两种,一种是靠程序脱壳,即针对每一种壳,都编写相应的脱壳程序,杀毒时先将加壳的程序脱壳后,再进行特征码匹配杀毒,这种方法的优点是脱壳速度很快,节省系统资源,但是当遇到新壳时,就无能为力了。因此又出现了虚拟机脱壳技术。虚拟机脱壳技术,就是在杀毒软件内部,虚拟出来一个环境,让病毒在其中运行,等病毒脱掉它的“马甲”之后,再进行特征码的匹配杀毒。

3. 商用虚拟机软件     目前,最为成功的商用虚拟机软件,无疑要数VMware 和 Virtual PC了,可以虚拟出各种主流操作系统、还可以虚拟出各种硬件、甚至可以将它们连接成一个局域网、在Windows系统中运行Linux 操作系统。只要你的内存足够大,完全可以虚拟出多个操作系统。

 

 

2.1、openjdk与jdk的联系与区别

openjdk是jdk的开放原始码版本,以GPL协议的形式放出,而JDK则采用JRL协议放出。

在JDK7开发过程中,openjdk已经成为jdk7的主干开发,sun jdk7是在openjdk7的基础上发布的,大部分原始码都相同,只有少部分原始码被替换掉。 

 

 

ps、Mercurial简明教程

 

下载安装后执行:(查看版本)

D:\Program Files\Mercurial>hg version
Mercurial Distributed SCM (version 3.1.1)

 

使用help帮助:

D:\Program Files\Mercurial>hg help init

 

建库:

比如我希望在E:/Mercuiral Library下建立一个我自己的库,只需要在E:/Mercuiral Library目录输入hg init如下:

E:\Mercuiral Library>hg init

E:\Mercuiral Library>

看不到任何输出,但是执行:E:\Mercuiral Library>dir

或者直接打开.hg目录  会发现一些文件   这时一个库建好

 

克隆:

比如我要下载openJdk的源码:

.....没找到地址...

 

分享到:
评论

相关推荐

    深入理解Java虚拟机JVM高级特性与最佳实践1

    《深入理解Java虚拟机JVM高级特性与最佳实践》一书,正是为解决这一需求而生。 本书的作者周志明站在前人的基础上,对JVM进行了全面而深入的解读,不仅覆盖了JVM的基础概念,而且深入探讨了JVM的高级特性,让读者...

    深入理解java虚拟机视频教程

    深入理解java虚拟机视频教程,jvm原理,java虚拟机,jvm性能调优,内存模型,gc工作原理,内存分配,类的加载等等视频教程

    诸葛 BAT面试之深入理解Java虚拟机 9

    诸葛_BAT面试之深入理解Java虚拟机_9

    深入理解 Java 虚拟机 - v1.0.pdf

    Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java虚拟机屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种...

    深入理解JAVA虚拟机.xmind

    深入理解JAVA虚拟机.xmind

    深入理解Java虚拟机(第二版)_java_

    《深入理解Java虚拟机(第二版)》是Java开发者必读的经典著作,它全面而深入地探讨了Java虚拟机(JVM)的工作原理和技术细节。这本书涵盖了从内存管理、类加载机制、字节码执行到垃圾收集算法等多个关键领域,为...

    深入理解Java虚拟机.rar_JAVA虚拟机_java_深入理解JVM:pdf_深入理解Java_深入理解jvm

    了解jvm的pdf,高清pdf,希望大家下载

    深入JAVA虚拟机 不那么完美的第二版.pdf.zip

    虽然《深入JAVA虚拟机》的第二版可能在物理形态上有些许不足,但其内容依然对理解JVM的运作机制有着重要的指导意义。学习这些知识点,有助于Java开发者提升代码的运行效率,解决内存问题,以及进行性能优化。

    深入理解Java虚拟机.xmind

    自己看《深入理解Java虚拟机》(第二版)所做的一些笔记。因为个人水平有限,能够理解的也只有前面几章的内容,后面的内容觉得看了也不是很理解,就没有记在里面。希望能对大家有所帮助,也希望能和大家一起进步。

    深入理解Java虚拟机(jvm性能调优+内存模型+虚拟机原理).zip

    《深入理解Java虚拟机》是一本深度探讨Java虚拟机(JVM)的著作,涵盖了JVM性能调优、内存模型以及虚拟机原理等多个关键领域。本文将基于这些主题,详细阐述其中的重要知识点。 首先,我们要了解Java虚拟机(JVM)...

    深入Java虚拟机——本地方法栈.pdf

    Java虚拟机(JVM)是Java程序运行的基础,它提供了执行环境和各种内存区域,以支持Java代码的高效运行。本地方法栈是JVM的一部分,它主要负责处理与本地方法(通常是由C或C++编写)相关的调用。本地方法栈在Java线程...

    深入理解Java虚拟机——Java发展史.xmind

    这是自己读《深入理解Java虚拟机》时候用XMind建立的思维导图,目的是为了能够帮助自己整理、梳理相关的知识以及方便自己日后的回顾,帮助自己建立起关于JVM的知识体系,里边也有一些对相关内容的补充,通过备注的...

    深入理解JAVA虚拟机实用技巧案例讲解.ppt

    **深入理解JAVA虚拟机实用技巧案例讲解** Java虚拟机(JVM)是Java程序的核心运行环境,它负责解析字节码并执行Java程序。在实际开发中,了解JVM的工作原理和优化技巧对于提高程序性能至关重要。以下是一些关键知识...

    深入JAVA虚拟机 随书源码 JVM规范

    深入理解JVM对于优化代码性能、排查问题以及提升编程能力至关重要。本篇文章将详细探讨JVM的工作原理、内存管理、类加载机制以及垃圾收集等方面的知识。 首先,我们来看《深入JAVA虚拟机》这本书,它涵盖了JVM的...

    深入理解Java虚拟机学习笔记借鉴.pdf

    Java 虚拟机(JVM)自动内存管理机制 Java 虚拟机(JVM)自动内存管理机制是 Java 语言的一大特色,它使得 Java 程序员无需手动管理内存,从而提高了开发效率和程序稳定性。JVM 自动内存管理机制主要通过 JVM 的...

    深入理解嵌入式java虚拟机

    《深入理解嵌入式Java虚拟机》是一本专注于KVM(Kernel-based Virtual Machine)的权威教材,对于想要深入了解Java在嵌入式环境中的运行机制和技术的读者来说,这本书无疑是宝贵的资源。KVM是Linux内核中的一个模块...

    深入JAVA虚拟机第二版 Bill Venners著 曹晓钢 蒋靖译

    这本书是Java开发者必备的经典读物,它详细地解析了Java虚拟机(JVM)的工作原理,帮助读者深入理解Java程序的运行机制。尽管描述中提到内容为图片形式,但我们可以从其主题和标签中提炼出许多关于JVM的重要知识点。...

    深入理解Java虚拟机读书笔记之:第3章 安全(3)

    《深入理解Java虚拟机》是Java开发者必读的经典之作,其中第三章主要探讨了Java安全方面的内容。在Java中,安全是一个至关重要的概念,因为Java的设计目标之一就是提供一种可以在不同环境中安全运行的代码机制。本章...

    学习深入理解Java虚拟机的前几章笔记

    ### 学习深入理解Java虚拟机的前几章笔记 #### JVM内存模型 Java虚拟机(JVM)的内存模型主要分为两大类:线程共享区和线程私有区。 ##### 线程共享区 - **堆**:是所有线程共享的内存区域,在这里存放着对象实例...

Global site tag (gtag.js) - Google Analytics