JPDA(Java Platform Debugger Architecture)是 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 程序
其他的一些常见的 Java IDE 比如 Netbeans 和 IntelliJ 等等也都提供了类似的功能 您甚至能不用 IDE 提供的图形界面 使用 JDK 自带的 jdb 工具 以文本命令的形式来调试您的 Java 程序 这些形形 的调试器都支持本地和远程的程序调试 那么它们是如何被开发的?它们之间存在着什么样的联系呢?我们不得不提及 Java 的调试体系—— JPDA
我们知道 Java 程序都是运行在 Java 虚拟机上的 我们要调试 Java 程序 事实上就需要向 Java 虚拟机请求当前运行态的状态 并对虚拟机发出一定的指令 设置一些回调等等 那么 Java 的调试体系 就是虚拟机的一整套用于调试的工具和接口
对于 Java 虚拟机接口熟悉的人来说 您一定还记得 Java 提供了两个接口体系 JVMPI(Java Virtual Machine Profiler Interface)和 JVMDI(Java Virtual Machine Debug Interface) 而它们 以及在 Java SE 中准备代替它们的 JVMTI(Java Virtual Machine Tool Interface) 都是 Java 平台调试体系(Java Platform Debugger Architecture JPDA)的重要组成部分 Java SE 自 版就开始推出 Java 平台调试体系结构(JPDA)工具集 而从 JDK x 开始 Java SDK 就提供了对 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 模块层次
当然 开发人员完全可以不使用完整的三个层次 而是基于其中的某一个层次开发自己的应用 比如您完全可以仅仅依靠通过 JVMTI 函数开发一个调试工具 而不使用 JDWP 和 JDI 只使用自己的通讯和命令接口 当然 除非是有特殊的需求 利用已有的实现会使您事半功倍 避免重复发明轮子
这三个模块我们会在后续文章中分别详细介绍 这里我们简单介绍它们的主要功能
Java 虚拟机工具接口(JVMTI)
JVMTI(Java Virtual Machine Tool Interface)即指 Java 虚拟机工具接口 它是一套由虚拟机直接提供的 native 接口 它处于整个 JPDA 体系的最底层 所有调试功能本质上都需要通过 JVMTI 来提供 通过这些接口 开发人员不仅调试在该虚拟机上运行的 Java 程序 还能查看它们运行的状态 设置回调函数 控制某些环境变量 从而优化程序性能 我们知道 JVMTI 的前身是 JVMDI 和 JVMPI 它们原来分别被用于提供调试 Java 程序以及 Java 程序调节性能的功能 在 J SE 之后 JDK 取代了 JVMDI 和 JVMPI 这两套接口 JVMDI 在最新的 Java SE 中已经不提供支持 而 JVMPI 也计划在 Java SE 后被彻底取代
Java 调试线协议(JDWP)
JDWP(Java Debug Wire Protocol)是一个为 Java 调试而设计的一个通讯交互协议 它定义了调试器和被调试程序之间传递的信息的格式 在 JPDA 体系中 作为前端(front end)的调试者(debugger)进程和后端(back end)的被调试程序(debuggee)进程之间的交互数据的格式就是由 JDWP 来描述的 它详细完整地定义了请求命令 回应数据和错误代码 保证了前端和后端的 JVMTI 和 JDI 的通信通畅 比如在 Sun 公司提供的实现中 它提供了一个名为 jdwp dll(jdwp so)的动态链接库文件 这个动态库文件实现了一个 Agent 它会负责解析前端发出的请求或者命令 并将其转化为 JVMTI 调用 然后将 JVMTI 函数的返回值封装成 JDWP 数据发还给后端
另外 这里需要注意的是 JDWP 本身并不包括传输层的实现 传输层需要独立实现 但是 JDWP 包括了和传输层交互的严格的定义 就是说 JDWP 协议虽然不规定我们是通过 EMS 还是快递运送货物的 但是它规定了我们传送的货物的摆放的方式 在 Sun 公司提供的 JDK 中 在传输层上 它提供了 socket 方式 以及在 Windows 上的 shared memory 方式 当然 传输层本身无非就是本机内进程间通信方式和远端通信方式 用户有兴趣也可以按 JDWP 的标准自己实现
Java 调试接口(JDI)
JDI(Java Debug Interface)是三个模块中最高层的接口 在多数的 JDK 中 它是由 Java 语言实现的 JDI 由针对前端定义的接口组成 通过它 调试工具开发人员就能通过前端虚拟机上的调试器来远程 *** 控后端虚拟机上被调试程序的运行 JDI 不仅能帮助开发人员格式化 JDWP 数据 而且还能为 JDWP 数据传输提供队列 缓存等优化服务 从理论上说 开发人员只需使用 JDWP 和 JVMTI 即可支持跨平台的远程调试 但是直接编写 JDWP 程序费时费力 而且效率不高 因此基于 Java 的 JDI 层的引入 简化了 *** 作 提高了开发人员开发调试程序的效率
表 总结了三个模块的不同点
表 JPDA 层次比较 模块 层次 编程语言 作用 JVMTI 底层 C 获取及控制当前虚拟机状态 JDWP 中介层 C 定义 JVMTI 和 JDI 交互的数据格式 JDI 高层 Java 提供 Java API 来远程控制被调试虚拟机
JPDA 实现
关于 Apache Harmony 项目 Apache Harmony 旨在开发出一个独立且与现有 JDK 兼容的 Java SE 实现 它以 Apache 软件许可证 版发行 它建立了一个开放的模块化运行时架构 包括虚拟机和类库之间及其内部的模块化 通过这个平台 社区能在已有实现的基础上自由定制自己的 Java 实现 或者对某个模块单独进行创新
每一个虚拟机都应该实现 JVMTI 接口 但是 JDWP 和 JDI 本身与虚拟机并非是不可分的 这三个层之间是通过标准所定义的交互的接口和协议联系起来的 因此它们可以被独立替换或取代 但不会影响到整体调试工具的开发和使用 因此 开发和使用自己的 JDWP 和 JDI 接口实现是可能的
Java 软件开发包(SDK)标准版里提供了 JPDA 三个层次的标准实现 事实上 调试工具开发人员还有很多其他开源实现可以选择 比如 Apache Harmony 提供了 JDWP 的实现 而 JDI 我们可以在 Eclipse 一个子项目 eclipse jdt debug 里找到其完整的实现(Harmony 也使用了这套实现 作为其 J SE 类库的一部分) 通过标准协议 Eclipse IDE 的调试工具就可以完全在 Harmony 的环境上运行
Java 调试接口的特点
Java 语言是第一个使用虚拟机概念的流行的编程语言 正是因为虚拟机的存在 使很多事情变得简单而轻松 掌握了虚拟机 就掌握了内存分配 线程管理 即时优化等等运行态 同样的 Java 调试的本质 就是和虚拟机打交道 通过 *** 作虚拟机来达到观察调试我们自己代码的目的 这个特点决定了 Java 调试接口和以前其他编程语言的巨大区别
以C/C++ 的调试为例 目前比较流行的调试工具是 GDB 和微软的 Visual Studio 自带的 debugger 在这种 debugger 中 首先 我们必须编译一个 debug 模式的程序 这个会比实际的 release 模式程序大很多 其次 在调试过程中 debugger 将会深层接入程序的运行 掌握和控制运行态的一些信息 并将这些信息及时返回 这种介入对运行的效率和内存占用都有一定的需求 基于这些需求 这些 Debugger 本身事实上是提供了 或者说 创建和管理了一个运行态 因此他们的程序算法比较复杂 个头都比较大 对于远端的调试 GDB 也没有很好的默认实现 当然 C/C++ 在这方面也没有特别大的需求
而Java 则不同 由于 Java 的运行态已经被虚拟机所很好地管理 因此作为 Java 的 Debugger 无需再自己创造一个可控的运行态 而仅仅需要去 *** 作虚拟机就可以了 Java 的 JPDA 就是一套为调试和优化服务的虚拟机的 *** 作工具 其中 JVMTI 是整合在虚拟机中的接口 JDWP 是一个通讯层 而 JDI 是前端为开发人员准备好的工具和运行库
从构架上说 我们可以把 JPDA 看作成是一个 C/S 体系结构的应用 在这个构架下 我们可以方便地通过网络 在任意的地点调试另外一个虚拟机上的程序 这个就很好地解决了部署和测试的问题 尤其满足解决了很多网络时代中的开发应用的需求 前端和后端的分离 也方便用户开发适合于自己的调试工具
从效率上看 由于 Java 程序本身就是编译成字节码 运行在虚拟机上的 因此调试前后的程序 内存占用都不会有大变化(仅仅是启动一个 JDWP 所需要的内存) 任意程度都可以很好地调试 非常方便 而 JPDA 构架下的几个组成部分 JDWP 和 JDI 都比较小 主要的工作可以让虚拟机自己完成
从灵活性上 Java 调试工具是建立在强大的虚拟机上的 因此 很多前沿的应用 比如动态编译运行 字节码的实时替换等等 都可以通过对虚拟机的改进而得到实现 随着虚拟机技术的逐步发展和深入 各种不同种类 不同应用领域中虚拟机的出现 各种强大的功能的加入 给我们的调试工具也带来很多新的应用
总而言之 一个先天的 可控的运行态给 Java 的调试工作 给 Java 调试接口带来了极大的优势和便利 通过 JPDA 这个标准 我们可以从虚拟机中得到我们所需要的信息 完成我们所希望的 *** 作 更好地开发我们的程序
结束语
lishixinzhi/Article/program/Java/JSP/201311/19143
添加断点测试可以直接在要测试的代码处,双击鼠标左键,出现一个蓝色小点,说明添加断点成功;
接下来是测试,在代码页面点击鼠标右键,选择debug ->debug as myeclipse/eclipse application。
以debug方式运行java程序后,可以执行以下 *** 作:
(F5)单步执行程序,遇到方法时进入;
(F6)单步执行程序,遇到方法时跳过;
(F7)单步执行程序,从当前方法跳出;
(F8)直接执行程序。遇到断点时暂停。
另外,在debug时,会有很多有用信息显示在debug框里,如堆栈信息,需要自己实践;在程序界面里,鼠标移到变量上时会有当前变量的属性值。
可看下参考资料(有图说明):>
用RuntimegetRuntime()exec()方法可以在java程序里运行外部程序。
1 exec(String command)
2 exec(String command, String envp[], File dir)
3 exec(String cmd, String envp[])
4 exec(String cmdarray[])
5 exec(String cmdarray[], String envp[])
6 exec(String cmdarray[], String envp[], File dir)
一般的应用程序可以直接使用第一版本,当有环境变量传递的时候使用后面的版本。其中2和6版本可以传递一个目录,标识当前目录,因为有些程序是使用相对目录的,所以就要使用这个版本。
实例:
Process process = RuntimegetRuntime()exec("\\pexe");
processwaitfor();
在上面的程序中,第一行的“\\pexe”是要执行的程序名,RuntimegetRuntime()返回当前应用程序的Runtime对象,该对象的exec()方法指示Java虚拟机创建一个子进程执行指定的可执行程序,并返回与该子进程对应的Process对象实例。通过Process可以控制该子进程的执行或获取该子进程的信息。第二条语句的目的等待子进程完成再往下执行。
java调试一般使用tomcat的debug模式
你可以用debug模式启动你的记事本程序 , 然后在一些关键的地方打上断点
这样当你运行到该处的时候 , 程序就会暂停执行 , 并且可以看到停止时刻各个变量的值
实验报告最好是以源码加断点处截图的方式进行撰写
不要用VJ++,不好。
刚开始用纯jdk,过一般时间用EditPlus等这样的工具,以后推荐使用Eclipse,因为是开源,也就是免费的。
JDK
Borland 的JBuilder
JBuilder,JDeveloper,VisualAge for Java
jcreater
常见的十五种Java开发工具的特点
1、JDK (Java Development Kit)Java开发工具集
从初学者角度来看,采用JDK开发Java程序能够很快理解程序中各部分代码之间的关系,
有利于理解Java面向对象的设计思想。JDK的另一个显著特点是随着Java (J2EE、J2SE
以及J2ME)版本的升级而升级。但它的缺点也是非常明显的就是从事大规模企业级Java
应用开发非常困难,不能进行复杂的Java软件开发,也不利于团体协同开发。
2、Java Workshop
3、NetBeans 与Sun Java Studio 5
NetBeans是开放源码的Java集成开发环境(IDE),适用于各种客户机和Web应用。
Sun Java Studio是Sun公司最新发布的商用全功能Java IDE,支持Solaris、Linux和Win
dows平台,适于创建和部署2层Java Web应用和n层J2EE应用的企业开发人员使用。
NetBeans是业界第一款支持创新型Java开发的开放源码IDE。开发人员可以利用业界
强大的开发工具来构建桌面、Web或移动应用。同时,通过NetBeans和开放的API的模块
化结构,第三方能够非常轻松地扩展或集成NetBeans平台。
NetBeans351主要针对一般Java软件的开发者,而Java One Studio5则主要针对企
业做网络服务等应用的开发者。Sun不久还将推出Project Rave,其目标是帮助企业的开
发者进行软件开发。NetBeans 351版本与其他开发工具相比,最大区别在于不仅能够
开发各种台式机上的应用,而且可以用来开发网络服务方面的应用,可以开发基于J2ME
的移动设备上的应用等。在NetBeans 351基础上,Sun开发出了Java
One Studio5,为用户提供了一个更加先进的企业编程环境。在新的Java
One Studio5里有一个应用框架,开发者可以利用这些模块快速开发自己在网络服务方面
的各种应用程序。
4、Borland 的JBuilder
Jbuilder进入了Java集成开发环境的王国,它满足很多方面的应用,尤其是对于服
务器方以及EJB开发者们来说。下面简单介绍一下Jbuilder的特点:
1)Jbuilder支持最新的Java技术,包括Applets、JSP/Servlets、JavaBean以及EJB
(Enterprise JavaBeans)的应用。
2)用户可以自动地生成基于后端数据库表的EJB Java类,Jbuilder同时还简化了EJ
B的自动部署功能此外它还支持CORBA,相应的向导程序有助于用户全面地管理IDL(分布
应用程序所必需的接口定义语言Interface Definition Language)和控制远程对象。
3)Jbuilder支持各种应用服务器。Jbuilder与Inprise Application Server紧密集
成,同时支持WebLogic Server,支持EJB 11和EJB 20,可以快速开发J2EE的电子商务
应用。
4)Jbuilder能用Servlet和JSP开发和调试动态Web 应用。
5)利用Jbuilder可创建(没有专有代码和标记)纯Java2应用。由于Jbuilder是用纯J
ava语言编写的,其代码不含任何专属代码和标记,它支持最新的Java标准。
6)Jbuilder拥有专业化的图形调试介面,支持远程调试和多线程调试,调试器支持
各种JDK版本,包括J2ME/J2SE/J2EE。
JBuilder环境开发程序方便,它是纯的Java 开发环境,适合企业的J2EE开发;缺点
是往往一开始人们难于把握整个程序各部分之间的关系,对机器的硬件要求较高,比较
吃内存,这时运行速度显得较慢。
5、Oracle 的JDeveloper
Oracle9i JDeveloper(定为90版,最新为10g)为构建具有J2EE功能,XML和Web
services的复杂的,多层的Java应用程序提供了一个完全集成的开发环境。它为运用Ora
cle9i数据库和应用服务器的开发人员提供特殊的功能和增强性能,除此以外,它也有资
格成为用于多种用途Java开发的一个强大的工具。
Oracle9i JDeveloper的主要特点如下:
① 具有UML(Unified Modeling Language,一体化建模语言)建模功能。可以将业
务对象及e-business应用模型化。
② 配备有高速Java调试器(Debuger)、内置Profiling工具、提高代码质量的工具
“CodeCoach”等。
③ 支持SOAP(Simple Object Access Protocol)“简单对象访问协议”、UDDI(U
niversal Description, Discovery and Integration)“统一描述、发现和集成协议”
、WSDL(Web Services Description Language)“WEB服务描述语言”等Web服务标准。
JDeveloper 不仅仅是很好的 Java 编程工具,而且是 Oracle Web 服务的延伸,支
持 Apache SOAP,以及 9iAS ,可扩充的环境和 XML 和 WSDL 语言紧密相关。Oracle9i
Jdeveloper完全利用Java编写,能够与以前的Oracle服务器软件以及其他厂商支持J2EE
的应用服务器产品相兼容,而且在设计时着重针对Oracle9i,能够无缝化跨平台之间的
应用开发,提供了业界第一个完整的、集成了J2EE和XML的开发环境,允许开发者快速开
发可以通过Web、无线设备及语音界面访问的Web服务和交易应用,以往只能通过将传统J
ava编程技巧与最新模块化方式结合到一个单一集成的开发环境中之后才能完成J2EE应用
开发生命周期管理的事实,从根本上得到改变。缺点就是对于初学者来说,较复杂,也
比较难。
6、IBM的Visual Age for Java
Visual Age for Java是一个非常成熟的开发工具,它的特性以于IT开发者和业余的
Java编程人员来说都是非常用有用的。它提供对可视化编程的广泛支持,支持利用CICS
连接遗传大型机应用,支持EJB的开发应用,支持与Websphere的集成开发,方便的bean
创建和良好的快速应用开发(RAD)支持和无文件式的文件处理。
IBM为建设Web站点所推出的WebSphere Studio Advanced Edition及其包含的Visual
Age for Java Professional Edition软件已全面转向以Java为中心,这样,Java开发人
员对WebSphere全套工具的感觉或许会好了许多。Studio所提供的工具有:Web站点管理
、快速开发 JDBC页向导程序、HTML编辑器和HTML语法检查等。这确实是个不错的HTML站
点页面编辑环境。Studio和VisualAge集成度很高,菜单中提供了在两种软件包之间快速
移动代码的选项。这就让使用Studio的Web页面设计人员和使用VisualAge的Java程序员
可以相互交换文件、协同工作。
Visual Age for Java支持团队开发,内置的代码库可以自动地根据用户做出改动而
修改程序代码,这样就可以很方便地将目前代码和早期版本做出比较。与Visual Age紧
密结合的Websphere Studio本身并不提供源代码和版本管理的支持,它只是包含了一个
内置文件锁定系统,当编辑项目的时候可以防止其他人对这些文件的错误修改,软件还支
持诸如Microsoft Visual SourceSafe这样的第三方源代码控制系统。Visual Age for
Java完全面向对象的程序设计思想使得开发程序非常快速、高效。你可以不编写任何代
码就可以设计出一个典型的应用程序框架。Visual Age for Java作为IBM电子商务解决
方案其中产品之一,可以无缝地与其他IBM产品,如WebSphere、DB2融合, 迅速完成从设
计、开发到部署应用的整个过程。
Visual Age for Java独特的管理文件方式使其集成外部工具非常困难,你无法让Vis
ual Age for Java与其他工具一起联合开发应用。
7、BEA 的 WebLogic Workshop
BEA WebLogic Workshop是一个统一、简化、可扩展的开发环境,使所有的开发人员
都能在 BEA WebLogic Enterprise Platform之上构建基于标准的企业级应用,从而提高
了开发部门的生产力水平,加快了价值的实现。
WebLogic Workshop除了提供便捷的Web服务之外,它能够用于创建更多种类的应用
。作为整个BEA WebLogic Platform的开发环境。不管是创建门户应用、编写工作流、还
是创建Web应用,Workshop 81都可以帮助开发人员更快更好地完成。
WebLogic Workshop的主要特点如下:
① 使 J2EE 开发切实可行,提高开发效率
BEA WebLogic Workshop 使开发人员远离 J2EE 内在的复杂性,集中精力专注业务
逻辑,无须 *** 心单调乏味的基础结构代码。这种创新意味着,已被企业验证的 J2EE 的
强大功能,最终被大多数不熟悉 Java 和 J2EE 的应用开发人员所掌握,从而使 IT 部
门的工作效率提高一个数量级。
可视化设计器以及直观的概念,如事件、属性和控件等,实现了基于事件的开发。W
orkshop 简化的程序设计模型,使开发人员不必掌握复杂的 J2EE API 和面向对象的程
序设计原理。所有开发人员,包括 J2EE 专家和具有可视化和过程化语言技能的应用开
发人员在内,都可以共同工作在 BEA WebLogic Enterprise Platform 之上。Workshop
的可视化开发环境,创建带有代码注释的标准 Java 文件,用来说明由运行时框架实施
的企业级需求。J2EE 和其他高级开发人员,借助功能强大的代码编辑功能,可以访问
Java 源代码,从而弥补了可视化设计器的不足。
② 构建企业级应用
通过在可伸缩、安全可靠的企业级架构上实施各种应用,BEA WebLogic
Workshop 大大降低了开发风险。而且,所有应用的创建都使用标准的 J2EE 组件,既保
护了您的技术投资,又保持了最大的灵活性。
BEA WebLogic Workshop 运行框架,是统一整个架构的汇聚层,使单一、简化的程序设
计模型扩展到所有的 BEA WebLogic Enterprise Platform 应用类型。通过解释设计时
创建的注释代码,运行时框架可以实现必要的 J2EE 组件,并且提取出与 J2EE 应用开
发有关的所有底层细节。
③ 降低 IT 复杂性
BEA WebLogic Workshop 提供各种 Java 控件,使得与 IT 资源的连接更轻而易举
。另外,在构建任何 BEA WebLogic Platform 的应用中,Java 控件不仅可扩展而且完
全相同。这种强大、有效的方法能够:降低 IT 技术的复杂性,优化信息的可用性,推
动包含"最佳业务方案"的可重用服务的开发,使开发人员能以更低的成本、更短的时间
实现更大的产出。
利用 BEA WebLogic Workshop,任何开发人员都能以最大的生产效率,构建各种
Web 服务、Web 应用、门户和集成项目。BEA WebLogic Workshop是BEA的产品战略核心
,它帮助客户接触和利用面向服务架构(SOA)的强大功能。BEA Weblogic Workshop
81极大简化了当前实际企业集成环境中企业级应用和服务的构建,并成为全面支持关键
企业级应用(如异步、真正松耦合和粗粒度消息传送等)的自然选择。它的缺点就是过于
复杂,对于初学者来说,理解起来较为困难。
8、WebGain 的Visual Cafe for Java
Visual Cafe 是只能在Symantec公司的Java虚拟机、Netscape公司的Java虚拟机和M
icrosoft虚拟机上工作的调试器。这对于开发者来讲是一个重要的特性,因为用户开发的
Java代码中的许多软件bug就可能中会在某种特定的虚拟机上起作用。
在修改后进行编译基继续进行调试时,Visual Cafe会自动将文件存盘,使用Visual
Cafe创建的原生应用具有许多特点。除了明显的速度提高之外,Symantec使类库的二进制
方式比正常的JDK小Visual Cafe为所指定的关系自动生成或更新必要的Java代码。利用V
isual Cafe,用户可以从一个标准对象数据库中集合完整的Java应用程序和Applet,而
不必再编写源代码。Visual Cafe还提供了一个扩充的源代码开发工具集。
Visual Cafe综合了Java软件的可视化源程序开发工具,它允许开发人员在可视化视
图和源视图之间进行有效地转换。在可视化视图中进行的修改立即反映在源代码中。对
源代码的改变自动更新可视化视图。
Visual Cafe具有许多源文件方面的特性,如全局检索和替换。绝大多数Java开发工
具的文献的问题在于简单地挨个介绍开发工具的每部分组件,但用户在开应用时还需要
一个面向任务的手册,利用这个手册你可以不必知道工具每一部分的特定功能就可以开
始创建自己的应用。Visual Cafe提供了非常全面的用户指南,它对最开始的安装到创建
第一个Java应用和Applet都提供了全面的帮助,Visual Cafe将自动生成所指明关系的必
要Java代码。Visual Cafe可以在Windows 95和Windows NT平台下运行,Symantec公司为
Java开发工作提供一个在Macintosh *** 作系统下可以运行的RAD工具。Visual Cafe编译器
速度很快,在国际化支持方面比较突出;缺点就是对于初学者来说,较复杂,也比较难
。
9、Macromedia的JRUN
Macromedia公司的JRun是一个具有最广阔适用性的Java引擎,用于开发及实施由Jav
a Servlets和JavaServer Pages编写的服务器端Java应用。JRun是第一个完全支持JSP
10 规格书的商业化产品,全球有超过80,000名开发人员使用JRun在他们已有的Web服务
器上添加服务器端Java的功能。其中Web服务器包括了Microsoft IIS,Netscape
Enterprise Server,Apache等。
JRun是开发实施服务器端Java的先进引擎。如果我们希望在我们的Web应用中添加服
务器端Java功能,那么JRun将成为我们的正确选择。
JRun目前有3个版本,它是第一个支持Java Server Pages(JSP)规格书10的商业化
产品。JSP是一种强大的服务器端技术,它是用于创建复杂Web应用的一整套快速应用开
发系统。JRun可以使我们开始开发并测试Java应用。它最多接受5个并发的连接并且包括
全部Java Servlet API,支持JavaServer Pages(JSP),支持所有主要的Web
servers和计算机平台。 JRun Pro能够在生产环境下承受大访问量的负载,帮助我们实
施应用、服务或Web站点(包括内联网)。JRun Pro 支持无限量并发式连接运行多个Jav
a虚拟机,包括多个并发的Java虚拟机(JVM)。提供一个远程管理applet以及一个远程
可再分布式的管理applet。JRun Pro Unlimited包括了所有JRun Pro的功能,除次以外
,还可以运行无限量的,并发的JVM。
JRun依靠其内置的JRun Web Server可以单独运行。使用服务器端Java,用户可以开
发出复杂的商业应用系统。最重要的一点是,由于servlets的平台独立性,以及更加简
单的开发、更快速的实施、更经济的维护成本,它是CGI(Common Gateway
Interface)或Perl scripts的极佳的替代产品。缺点就是对于初学者来说,较复杂,也
比较难。
10、JCreator
JCreator 是一个Java程序开发工具,也是一个Java集成开发环境(IDE)。无论你
是要开发Java应用程序或者网页上的Applet元件都难不倒它。在功能上与Sun公司所公布
的JDK等文字模式开发工具相较之下来得容易,还允许使用者自订义 *** 作窗口界面及无限
Undo/Redo等功能。
JCreator为用户提供了相当强大的功能,例如项目管理功能,项目模板功能,可个
性化设置语法高亮属性、行数、类浏览器、标签文档、多功能编绎器,向导功能以及完
全可自定义的用户界面。通过JCreator,我们不用激活主文档而直接编绎或运行我们的J
AVA程序。
JCreator能自动找到包含主函数的文件或包含Applet的Html文件,然后它会运行适
当的工具。在JCreator中,我们可以通过一个批处理同时编绎多个项目。JCreator的设
计接近Windows界面风格,用户对它的界面比较熟悉。其最大特点是与我们机器中所装的
JDK完美结合,是其它任何一款IDE所不能比拟的。它是一种初学者很容易上手的java开
发工具,缺点是只能进行简单的程序开发,不能进行企业J2EE的开发应用。
11、Eclipse
Eclipse是一种可扩展的开放源代码IDE。2001年11月,IBM公司捐出价值4,000万美
元的源代码组建了Eclipse联盟,并由该联盟负责这种工具的后续开发。集成开发环境(I
DE)经常将其应用范围限定在“开发、构建和调试”的周期之中。为了帮助集成开发环境
(IDE)克服目前的局限性,业界厂商合作创建了Eclipse平台。Eclipse允许在同一IDE中
集成来自不同供应商的工具,并实现了工具之间的互 *** 作性,从而显著改变了项目工作
流程,使开发者可以专注在实际的嵌入式目标上。
Eclipse框架的这种灵活性来源于其扩展点。它们是在XML中定义的已知接口,并充
当插件的耦合点。扩展点的范围包括从用在常规表述过滤器中的简单字符串,到一个Jav
a类的描述。任何Eclipse插件定义的扩展点都能够被其它插件使用,反之,任何Eclipse
插件也可以遵从其它插件定义的扩展点。除了解由扩展点定义的接口外,插件不知道它
们通过扩展点提供的服务将如何被使用。
利用Eclipse,我们可以将高级设计(也许是采用UML)与低级开发工具(如应用调试器
等)结合在一起。如果这些互相补充的独立工具采用Eclipse扩展点彼此连接,那么当我
们用调试器逐一检查应用时,UML对话框可以突出显示我们正在关注的器件。事实上,由
于Eclipse并不了解开发语言,所以无论Java语言调试器、C/C++调试器还是汇编调试器
都是有效的,并可以在相同的框架内同时瞄准不同的进程或节点。
Eclipse的最大特点是它能接受由Java开发者自己编写的开放源代码插件,这类似于
微软公司的Visual Studio和Sun微系统公司的NetBeans平台。Eclipse为工具开发商提供
了更好的灵活性,使他们能更好地控制自己的软件技术。Eclipse联盟已经宣布将在2004
年中期发布其30版软件。这是一款非常受欢迎的java开发工具,这国内的用户越来越多
,实际上实用它java开发人员是最多的。缺点就是较复杂,对初学者来说,理解起来比
较困难。
13、Ant
Another Neat Tool(Ant)是一种基于Java的build工具。理论上来说,它有些类似于
(Unix)C中的make ,但没有make的缺陷。因为Ant的原作者在多种(硬件)平台上开发软
件时,无法忍受这些工具的限制和不便。类似于make的工具本质上是基于shell(语言)
的:他们计算依赖关系,然后执行命令(这些命令与你在命令行敲的命令没太大区别)
。这就意味着你可以很容易地通过使用OS特有的或编写新的(命令)程序扩展该工具;
然而,这也意味着你将自己限制在了特定的OS,或特定的OS类型上,如Unix。Ant就不同
了。与基于shell命令的扩展模式不同,Ant用Java的类来扩展。(用户)不必编写shell
命令,配置文件是基于XML的,通过调用target树,就可执行各种task。每个task由实现
了一个实现了特定Task接口的对象来运行。
Ant支持一些可选task,一个可选task一般需要额外的库才能工作。可选task与Ant
的内置task分开,单独打包。这个可选包可以从你下载Ant的同一个地方下载。ANT本身
就是这样一个流程脚本引擎,用于自动化调用程序完成项目的编译,打包,测试等。除
了基于JAVA是平台无关的外,脚本的格式是基于XML的,比make脚本来说还要好维护一些
。Ant是Apache提供给Java开发人员的构建工具,它可以在Windows OS和Unix OS下运行
,它不仅开放源码并且还是一个非常好用的工具。Ant是Apache Jakarta中一个很好用的
Java开发工具,Ant配置文件采用XML文档编写,所以Java程序员对其语法相当熟悉,Ant
是专用于Java项目平台,能够用纯Java来开发,它能够运行于Java安装的平台,即体现
了它的跨平台功能。它的缺点显示执行结果只能是DOS字符界面,不能进行复杂的java程
序开发。
14、IntelliJ
Intellij IDEA是一款综合的Java 编程环境,被许多开发人员和行业专家誉为市场
上最好的IDE。它提供了一系列最实用的的工具组合:智能编码辅助和自动控制,支持J2
EE,Ant,JUnit和CVS集成,非平行的编码检查和创新的GUI设计器。IDEA把Java开发人
员从一些耗时的常规工作中解放出来,显著地提高了开发效率。具有运行更快速,生成
更好的代码;持续的重新设计和日常编码变得更加简易,与其它工具的完美集成;很高
的性价比等特点。在40版本中支持Generics,BEA WebLogic集成,改良的CVS集成以及G
UI设计器。
IntelliJ IDEA能尽可能地促进程序员的编程速度。它包括了很多辅助的功能,并且
与Java结合得相当好。不同的工具窗口围绕在主编程窗口周围,当鼠标点到时即可打开
,无用时也可轻松关闭,使用户得到了最大化的有效屏幕范围。以技术为导向的IDEA集
成了调试器,支持本地和远程的调试,即使我们需要修改一些设置上的东西使我们的工
作顺利进展。另外,它还提供了通常的监视,分步调试以及手动设置断点功能,在这种
断点模式下,我们可以自动地在断点之外设置现场访问,甚至可以浏览不同的变量的值
。IDE支持多重的JVM设置,几个编译程序和Ant建造系统,并且,它使得设置多重的自定
义的类途径变得简单。
IntelliJ Idea是一个相对较新的Java IDE。它是Java开发环境中最为有用的一个。
高度优化的IntelleJ Idea使普通任务变得相当容易,Idea支持很多整合功能,更重要的
使它们设计的好容易使用。Idea支持XML中的代码实现,Idea同时还会校正XML,Idea支
持JSP的结构。作用于普通Java代码的众多功能同样适用于JSP(比如整合功能),同时
支持JSP调试;支持EJB,尽管它不包括对个别应用服务器的特殊支持。Idea支持Ant建立
工具,不仅是运行目标它还支持编译与运行程序前后运行目标,另外也支持绑定键盘快
捷键。在编辑一个Ant建立XML文件时,Idea还对组成Ant工程的XML部分提供支持。Intel
liJ IDEA 被称为是最好的JAVA IDE开发平台,这套软件就是以其聪明的即时分析和方便
的 refactoring 功能深获大家所喜爱。缺点是较复杂,对初学者来说,理解起来比较困
难。
1 在Eclipse中,Window->Preferences->Java->Compiler,确保以下选项都勾选上:
2 在Eclipse中,Window->Preferences->Java->Installed JREs,选择Add,在JRE Home中选择JDK路径(因为只有JDK支持源码调试),并且给它合适的命名。退出保存后,选择JDK路径。
3 右键你的工程项目,Properties,Java Build Path->Libraries,找到JRE System Library,选择Edit。使用Alternate JRE中你创建的JDK。
4 应该就大功告成了 。
以上就是关于深入Java调试体系: 第1部分,JPDA体系概览全部的内容,包括:深入Java调试体系: 第1部分,JPDA体系概览、JAVA中如何添加断点调试、怎样在JAVA中调用应用程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)