|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
自己的整个学习思路完全被老师的讲课思路所牵制,这样几节课听下来,恐怕自己的见解都应该是书里的知识点了,根本谈不上自身发现问题,分析问题,和解决问题能力的切实提高。
JPDA(JavaPlatformDebuggerArchitecture)是Java平台调试系统布局的缩写,经由过程JPDA供应的API,开辟职员能够便利天真的搭建Java调试使用程序。JPDA次要由三个部分构成:Java假造机工具接口(JVMTI),Java调试线协定(JDWP),和Java调试接口(JDI),本系列将会具体先容这三个模块的外部细节、经由过程实例为读者揭开JPDA的面纱。本文是该系列的第一篇,将会侧重从全体上先容JPDA的各个构成,论述它们相互之间的内涵联系关系。
JPDA概述
一切的程序员城市碰到bug,关于运转态的毛病,我们常常必要一些办法来察看和测试运转态中的情况。在Java程序中,最复杂的,您是不是实验过利用System.out.println()来输入您的Java程序的实行中的各类变量形态来发明您的Java程序运转时的成绩?这类体例便利易用,在一些复杂的情形下可以办理您的成绩,可是假如当您的程序运转在远程情况上,大概以后情况不同意把持台终端输入(好比,思索一下假造机初始化之时),您没法猎取终端输入的时分呢?大概,假如您基本没法当地修正运转您的程序?
不必忧虑,您能够经由过程良多的调试工具来匡助您办理这个成绩,罕见的IDE都附带一个十分直不雅复杂的调试工具,好比Eclipse()就供应一个功效十分周全,操纵十分复杂的调试器。
.利用Eclipse调试Java程序
其他的一些罕见的JavaIDE,好比Netbeans和IntelliJ等等也都供应了相似的功效,您乃至能不必IDE供应的图形界面,利用JDK自带的jdb工具,以文本命令的情势来调试您的Java程序。这些五花八门的调试器都撑持当地和远程的程序调试,那末它们是怎样被开辟的?它们之间存在着甚么样的接洽呢?我们不能不说起Java的调试系统——JPDA。
我们晓得,Java程序都是运转在Java假造机上的,我们要调试Java程序,现实上就必要向Java假造机哀求以后运转态的形态,并对假造机收回必定的指令,设置一些回调等等,那末Java的调试系统,就是假造机的一整套用于调试的工具和接口。
关于Java假造机接口熟习的人来讲,您必定还记得Java供应了两个接口系统,JVMPI(JavaVirtualMachineProfilerInterface)和JVMDI(JavaVirtualMachineDebugInterface),而它们,和在JavaSE5中筹办取代它们的JVMTI(JavaVirtualMachineToolInterface),都是Java平台调试系统(JavaPlatformDebuggerArchitecture,JPDA)的主要构成部分。JavaSE自1.2.2版就入手下手推出Java平台调试系统布局(JPDA)工具集,而从JDK1.3.x入手下手,JavaSDK就供应了对Java平台调试系统布局的间接撑持。望文生义,这个别系为开辟职员供应了一整套用于调试Java程序的API,是一套用于开辟Java调试工具的接口和协定。实质上说,它是我们通向假造机,考查假造机运转态的一个通道,一套工具。了解这一点关于进修JPDA十分主要。
换句话说,经由过程JPDA这套接口,我们就能够开辟本人的调试工具。经由过程这些JPDA供应的接口和协定,调试器开辟职员就可以依据特定开辟者的需求,扩大定制Java调试使用程序,开辟出吸引开辟职员利用的调试工具。后面我们提到的IDE调试工具都是基于JPDA系统开辟的,区分仅仅在于它们大概供应了分歧的图形界面、具有一些分歧的自界说功效。别的,我们要注重的是,JPDA是一套尺度,任何的JDK完成都必需完成这个尺度,因而,经由过程JPDA开辟出来的调试工具后天具有跨平台、不依附假造机完成、JDK版本有关等移植长处,因而年夜部分的调试工具都是基于这个别系的。
JPDA构成模块
JPDA界说了一个完全自力的系统,它由三个绝对自力的条理配合构成,并且划定了它们三者之间的交互体例,大概说界说了它们通讯的接口。这三个条理由低到高分离是Java假造机工具接口(JVMTI),Java调试线协定(JDWP)和Java调试接口(JDI)。这三个模块把调试历程分化成几个很天然的观点:调试者(debugger)和被调试者(debuggee),和他们两头的通讯器。被调试者运转于我们想调试的Java假造机之上,它能够经由过程JVMTI这个尺度接口,监控以后假造机的信息;调试者界说了用户可以使用的调试接口,经由过程这些接口,用户能够对被调试假造机发送调试命令,同时调试者承受并显现调试了局。在调试者和被调试着之间,调试命令和调试了局,都是经由过程JDWP的通信协定传输的。一切的命令被封装成JDWP命令包,经由过程传输层发送给被调试者,被调试者吸收到JDWP命令包后,剖析这个命令并转化为JVMTI的挪用,在被调试者上运转。相似的,JVMTI的运转了局,被格局化成JDWP数据包,发送给调试者并前往给JDI挪用。而调试器开辟职员就是经由过程JDI失掉数据,收回指令。展现了这个历程:
.JPDA模块条理
<p>
因为能用到多少功能就用多少,不能用就不用!总的来说:要简单要性能好,可以不用框架。你说java复杂,就是因为你把java(j2ee)与这些框架混在了一起。 |
|