﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Java Tools-随笔分类-Eclipse</title><link>http://www.blogjava.net/simie/category/23813.html</link><description /><language>zh-cn</language><lastBuildDate>Sun, 18 Nov 2007 06:37:00 GMT</lastBuildDate><pubDate>Sun, 18 Nov 2007 06:37:00 GMT</pubDate><ttl>60</ttl><item><title>汉化Eclipse的方法</title><link>http://www.blogjava.net/simie/archive/2007/11/18/161400.html</link><dc:creator>和田雨</dc:creator><author>和田雨</author><pubDate>Sun, 18 Nov 2007 06:33:00 GMT</pubDate><guid>http://www.blogjava.net/simie/archive/2007/11/18/161400.html</guid><wfw:comment>http://www.blogjava.net/simie/comments/161400.html</wfw:comment><comments>http://www.blogjava.net/simie/archive/2007/11/18/161400.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/simie/comments/commentRss/161400.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/simie/services/trackbacks/161400.html</trackback:ping><description><![CDATA[下载相应的语言包，解压之后。<br />
到Eclipse目录下建立一个 links文件夹，在文件夹下建立一个任意文件名的文件，例如link.txt.<br />
将语言包的路径写到这个文件中，格式为path=语言包路径，注意用'/'或者'\\'代替'\'.原因是Java由Unix血缘。
<img src ="http://www.blogjava.net/simie/aggbug/161400.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/simie/" target="_blank">和田雨</a> 2007-11-18 14:33 <a href="http://www.blogjava.net/simie/archive/2007/11/18/161400.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse插件之SQLExplorer</title><link>http://www.blogjava.net/simie/archive/2007/07/19/131336.html</link><dc:creator>和田雨</dc:creator><author>和田雨</author><pubDate>Thu, 19 Jul 2007 10:24:00 GMT</pubDate><guid>http://www.blogjava.net/simie/archive/2007/07/19/131336.html</guid><wfw:comment>http://www.blogjava.net/simie/comments/131336.html</wfw:comment><comments>http://www.blogjava.net/simie/archive/2007/07/19/131336.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/simie/comments/commentRss/131336.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/simie/services/trackbacks/131336.html</trackback:ping><description><![CDATA[本文介绍如何利用Eclipse插件SQLExplorer在Eclipse中连接各种数据库进行操作使用。
<p>　　Eclipse是目前非常流行的开发平台，开放扩展的架构让很多程序员找到了自己个性化的工作环境。</p>
<h1>安装</h1>
<p>JDK：1.5.0 从<a href="http://java.sun.com/">http://java.sun.com</a>上去下载安装<br>Eclipse：3.1.1 从<a href="http://www.eclipse.org/">http://www.eclipse.org</a> 上去下载解压<br>SQLExplorer 从<a href="http://eclipsesql.sourceforge.net/">http://eclipsesql.sourceforge.net/</a></p>
<h1>技巧</h1>
<p>　　Eclipse使用技巧之插件管理</p>
<p>　　提示：新下载的插件PlugIn一定不要都放在原始的Eclipse目录下去，一大堆，累死你：（</p>
<ol>
    <li>前提是你已经安装好了Eclipse工具了，比如安装在E:\OpenSource\Eclipse\目录下，以下这个目录以%ECLIPSE_HOME%来进行表示；
    <li>此时默认的插件是在%ECLIPSE_HOME%\plugins目录中的；
    <li>在%ECLIPSE_HOME%下建立一个PlugInsNew的目录； </li>
</ol>
<p>　　比如：E:\OpenSource\Eclipse\PlugInsNew\</p>
<ol>
    <li>你下载了个新的插件，比如叫做：XYZ </li>
</ol>
<p>　　那么就在%ECLIPSE_HOME%\PlugInsNew\目录下建立XYZ目录，目录里面是eclipse目录，eclipse目录包含有features与plugins两个子目录；结构如下图所示：</p>
<p align=center><img height=410 src="http://dev2dev.bea.com.cn/images/image060126001.jpg" width=220 border=0></p>
<ol>
    <li>把下载的新插件的文件放在以下相应目录中
    <p>%ECLIPSE_HOME%\PlugInsNew\XYZ\eclipse\features<br>%ECLIPSE_HOME%\PlugInsNew\ XYZ\eclipse\plugins</p>
    <li>建立相关的.link的文件
    <p>然后在%ECLIPSE_HOME%\links目录里建立一个XYZ.link的文件<br>内容如是：path=E:/OpenSource/Eclipse/PlugInsNew/XYZ就一行这样的路径指示而已。<br>这样，如果你下载了多个插件就可以如法炮制建立多个Link文件，想加载哪个插件就把哪个插件的Link文件放到%ECLIPSE_HOME%\links的目录中即可，使用与管理都很方便，建议千万不要放在默认的安装目录中；<br>如果你的%ECLIPSE_HOME%与此不同，请修改XYZ.link文件里的路径</p>
    <li>删除，关闭Eclipse
    <p>删除%ECLIPSE_HOME%\links\XYZ.link文件即可<br>删除%ECLIPSE_HOME%\PlugInsNew\XYZ整个目录及文件</p>
    <li>重新启动Eclipse即可 </li>
</ol>
<h1>使用</h1>
<p>　　SQLExplorer插件安装方法采用上一节的《Eclipse使用技巧之插件管理》<br>　　重新启动Eclipse后，可以在菜单Window =&gt; Show View =&gt; Other =&gt; 可以看到多了SQLExplorer<br>展开SQLExplorer有七项内容，分别为：</p>
<ol>
    <li>Aliases 别名，用来标识数据库连接串的
    <li>Connection Info 连接信息，用来显示连接数据库时的相关信息，如，数据库产品名称、版本、JDBC驱动程序的名称、版本、用户名、连接串、是否自动提交等等。
    <li>Connnections 显示活动的连接情况
    <li>Database Structure View 显示数据库结构
    <li>Drivers 配置驱动程序用
    <li>SQL History 执行SQL的历史记录
    <li>SQL Results 执行SQL的结果集 </li>
</ol>
<p>　　下面会分别介绍这七项内容的具体使用：<br>如下图所示：</p>
<p align=center><img height=414 src="http://dev2dev.bea.com.cn/images/image060126002.jpg" width=296 border=0></p>
<p>　　菜单Window =&gt; Preferences =&gt; SQLExplorer<br>右边的项目中，可以设置预览表结果集时返回的行数、SQL集的返回行数、是否自动提交、还是关闭SQL编辑窗口后提交和写SQL时是否自动完成表和列名。</p>
<p align=center><img height=471 src="http://dev2dev.bea.com.cn/images/image060126004.jpg" width=553 border=0></p>
<p>　　菜单Window =&gt; Preferences =&gt; SQLExplorer =&gt; SQL Editor<br>右边的项目中，可以设置SQL编辑器里的字体属性、文本属性</p>
<p align=center><img height=471 src="http://dev2dev.bea.com.cn/images/image060126006.jpg" width=553 border=0></p>
<p>　　菜单Window =&gt; Show View =&gt; Other =&gt; SQLExplorer 把里面的七项内容全部显示出来，你也可以自己进行定制一下它</p>
<p>　　开始进行配置驱动程序，打开Drivers</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126007.jpg" width=553 border=0></p>
<p>　　默认加载成功插件后，只有JDBC ODBC Bridge是打勾可用的，其它都是打红Ｘ不可用的，想想就知道为什么了吧（^_^）</p>
<p>　　没有想出来，接下来看看吧<br>右键JDBC ODBC Bridge，在弹出的菜单中点击Change the selected Driver菜单</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126008.jpg" width=553 border=0></p>
<p>　　可以在弹出的修改驱动程序中看到如下信息，在Driver Class Name显示的是<br>sun.jdbc.odbc.JdbcOdbcDriver<br>因为从JDK1.2开始，在JDK里自动带有这个驱动程序了，所以显示为可用了：）</p>
<p align=center><img height=461 src="http://dev2dev.bea.com.cn/images/image060126010.jpg" width=553 border=0></p>
<p>　　接下来我们开始配置MySQL和Oracle的驱动程序：<br>右键MMMySQL Driver，在弹出的菜单中点击Change the selected Driver菜单</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126011.jpg" width=553 border=0></p>
<p>　　在弹出的修改驱动程序中看到，在Driver Class Name显示的是org.gjt.mm.mysql.Driver<br>点击Extra Class Path =&gt; Add =&gt; 选择你的MySQL所在的路径，加入它</p>
<p align=center><img height=461 src="http://dev2dev.bea.com.cn/images/image060126013.jpg" width=553 border=0></p>
<p>　　加入驱动程序如下所示：</p>
<p align=center><img height=461 src="http://dev2dev.bea.com.cn/images/image060126015.jpg" width=553 border=0></p>
<p>　　单击List Drivers按钮，在Driver Class Name的右下框中可以看到三个驱动类名，选择你需要的一个，OK之即可。</p>
<p align=center><img height=461 src="http://dev2dev.bea.com.cn/images/image060126017.jpg" width=553 border=0></p>
<p>　　可以看到这下MMMySQL Driver也为打勾可以使用的状态了。</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126018.jpg" width=553 border=0></p>
<p>　　以同样的方法配置Oracle Thin Driver驱动程序</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126019.jpg" width=553 border=0></p>
<p>　　默认驱动名称，添加驱动程序：</p>
<p align=center><img height=461 src="http://dev2dev.bea.com.cn/images/image060126021.jpg" width=553 border=0></p>
<p>　　可以看到两个驱动程序的名称</p>
<p align=center><img height=461 src="http://dev2dev.bea.com.cn/images/image060126023.jpg" width=553 border=0></p>
<p>　　配置好驱动程序后，可以开始创建连接了，切换到Aliases别名视图<br>点击创建图标，如下：</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126024.jpg" width=553 border=0></p>
<p>　　选择MMMySQL Driver</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126025.jpg" width=553 border=0></p>
<p>　　填入别名的名称、JDBC连接串URL、用户名、密码</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126026.jpg" width=553 border=0></p>
<p>　　确定后，在Aliases别名视图里出现刚建立的连接</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126027.jpg" width=553 border=0></p>
<p>　　右键刚建立的数据库连接别名，在弹出的菜单选择Open&#8230;打开之。</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126028.jpg" width=553 border=0></p>
<p>　　会弹出一个连接的确认框，你可以更改用户名与密码，也可以设置是否自动提交。</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126029.jpg" width=553 border=0></p>
<p>　　确定后，会自动切换到Database Structure View视图上，MySQL数据库，则可以看到Database</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126030.jpg" width=553 border=0></p>
<p>　　再打开它，可以看到数据库名，Table表及表的个数与名称了。</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126031.jpg" width=553 border=0></p>
<p>　　选中其中的表userpwd，这个表是自己建立的，可以看到以下显示列、索引、主键、外键、结果集预览、行数共六个信息内容。</p>
<p>　　以下显示表的列信息</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126032.jpg" width=553 border=0></p>
<p>　　以下显示索引信息</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126033.jpg" width=553 border=0></p>
<p>　　以下显示主键信息</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126034.jpg" width=553 border=0></p>
<p>　　　　以下显示外键信息</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126035.jpg" width=553 border=0></p>
<p>　　以下显示结果集预览的内容</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126036.jpg" width=553 border=0></p>
<p>　　以下显示的是记录行数信息</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126037.jpg" width=553 border=0></p>
<p>　　切换到Connection Info连接信息的视图，可以看到连接数据库时的相关信息，<br>如，数据库产品名称MySQL、版本4.1.0a-nt<br>JDBC驱动程序的名称MySQL-AB JDBC Driver、版本mysql-connector-java-3.0.16-ga<br>用户名test@localhost、连接串jdbc:mysql://localhost:3306/test、自动提交模式为是等等。</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126038.jpg" width=553 border=0></p>
<p>　　显示默认的事务状态</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126039.jpg" width=553 border=0></p>
<p>　　切换到Connnections视图，显示当前数据库活动的连接情况，有一个活动的连接。</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126040.jpg" width=553 border=0></p>
<p>　　右上角，可以打开Open New Connection图标来打开一个新的连接，比如连接到相同的数据库，但是却是不同的用户</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126041.jpg" width=553 border=0></p>
<p>　　右上角，单击New SQL Editor图标，创建一个新的SQL编辑器，来写你的SQL语句</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126042.jpg" width=553 border=0></p>
<p>　　在打开的SQL编辑器中，你可以开始写SQL语句了，如下：</p>
<p align=center><img height=140 src="http://dev2dev.bea.com.cn/images/image060126043.jpg" width=553 border=0><br>按Ctrl + F9 或者点击Exceute SQL图标，执行所输入的语句<br><img height=140 src="http://dev2dev.bea.com.cn/images/image060126044.jpg" width=553 border=0><br>这样可以在SQL Results视图中看到如下执行的结果信息<br><img height=462 src="http://dev2dev.bea.com.cn/images/image060126045.jpg" width=553 border=0></p>
<p>　　　　切换到SQL History 执行SQL的历史记录的视图，可以看到你执行过的语句列表</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126046.jpg" width=553 border=0></p>
<p>　　再写一个不同的语句，演示结果集与SQL历史记录</p>
<p align=center><img height=140 src="http://dev2dev.bea.com.cn/images/image060126047.jpg" width=553 border=0><br>执行后，记录是显示在最后的执行结果是在后面，依次递增的，即1、2、3、最后一个是你最后执行的结果信息内容显示的地方，不要弄错了。<br><img height=462 src="http://dev2dev.bea.com.cn/images/image060126048.jpg" width=553 border=0></p>
<p>　　这样在SQL History里就再增加上了一条执行语句的记录了</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126049.jpg" width=553 border=0></p>
<p>　　同样增加一个Oracle的连接测试</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126050.jpg" width=553 border=0></p>
<p>　　Oracle数据库，在Database Structure View视图里显示有Database、Monitor、Security、Instance四项内容</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126051.jpg" width=553 border=0><br>在SQL编辑器中，选择Oracle的链接，再输入查询语句测试一下<br><img height=140 src="http://dev2dev.bea.com.cn/images/image060126052.jpg" width=553 border=0></p>
<p>　　可以在结果集里得到如果内容，在第4个标签栏里了</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126053.jpg" width=553 border=0><br>再更改一下SQL语句<br><img height=140 src="http://dev2dev.bea.com.cn/images/image060126054.jpg" width=553 border=0></p>
<p>　　得到如下内容，在第4个标签栏里了</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126055.jpg" width=553 border=0></p>
<p>　　SQL历史记录里可以看到执行过的四条信息了</p>
<p align=center><img height=462 src="http://dev2dev.bea.com.cn/images/image060126056.jpg" width=553 border=0></p>
<p>　　这个插件的使用应当不是很容易的，其它的应用技巧与方法继续中。</p>
<!--文章其他信息-->
<img src ="http://www.blogjava.net/simie/aggbug/131336.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/simie/" target="_blank">和田雨</a> 2007-07-19 18:24 <a href="http://www.blogjava.net/simie/archive/2007/07/19/131336.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用Eclipse Callisto分析应用程序</title><link>http://www.blogjava.net/simie/archive/2007/07/09/129104.html</link><dc:creator>和田雨</dc:creator><author>和田雨</author><pubDate>Mon, 09 Jul 2007 09:56:00 GMT</pubDate><guid>http://www.blogjava.net/simie/archive/2007/07/09/129104.html</guid><wfw:comment>http://www.blogjava.net/simie/comments/129104.html</wfw:comment><comments>http://www.blogjava.net/simie/archive/2007/07/09/129104.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/simie/comments/commentRss/129104.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/simie/services/trackbacks/129104.html</trackback:ping><description><![CDATA[Eclipse（Eclipse 3.2）的最新版本带有<a href="http://www.eclipse.org/callisto" target=_blank><u><font color=#0000ff>Callisto</font></u></a>，一套丰富的针对Eclipse 3.2的可选插件。Callisto包括一个功能强大的分析工具，此工具称为Eclipse<a href="http://www.eclipse.org/tptp" target=_blank><u><font color=#0000ff>测试与性能工具平台</font></u></a>，简称TPTP。TPTP提供了一套功能全面的开源性能－测试和分析工具，包括集成的<a href="http://www.onjava.com/pub/a/onjava/2006/08/16/profiling-with-eclipse-callisto.html##" target=_blank><u><font color=#0000ff>应用程序</font></u></a>监控、测试、跟踪和分析功能，以及静态代码分析工具。对于在各类Java应用程序中找出和识别性能问题，分析工具的价值是不可估计的。在本文中，我们将探讨如何使用TPTP来保证获得高质量和高性能的代码（甚至是在单元和集成测试中）。
<h3>安装TPTP</h3>
<p>　　安装TPTP最容易的方式是使用Remote Update站点（参见图1）。打开Remote Update窗口（Help -&gt; Software Updates -&gt; Find and Install），然后选择Callisto Discovery Site。Eclipse将建议安装Callisto插件集。TPTP工具列在&#8220;Testing and Performance&#8221;下面。最容易也是最耗时的选择，就是安装所有建议的插件。即使不安装整个Callisto工具集，您仍然需要安装一些其他TPTP需要的组件，例如"Charting and Reporting"、"Enabling Features"和"<a href="http://www.onjava.com/pub/a/onjava/2006/08/16/profiling-with-eclipse-callisto.html##" target=_blank><u><font color=#0000ff>Data</font></u></a> Tool Performance"。</p>
<p align=center><img height=454 alt="使用Eclipse Callisto分析应用程序图-1" src="http://dev2dev.bea.com.cn/images/image061122001.gif" width=435 border=0></p>
<p>　　 <em>图 1.从远程站点安装TPTP</em></p>
<h3>分析Java应用程序</h3>
<p>　　测试与性能工具平台基本上是一套分析工具。分析应用程序通常涉及到观察应用程序在压力之下的处理方式。这样做的一种常见方式是对已部署的应用程序运行一组负载测试，然后使用分析工具来记录应用程序的行为。接着，可以对结果进行研究来调查任何性能问题。这些事情通常是在项目结束时进行的，因为此时应用程序几乎已经准备好进入生产阶段了。</p>
<p>　　TPTP非常适合这类任务。一个典型的用例是使用像JMeter这样的工具来运行负载测试，然后使用TPTP归纳工具记录和分析性能统计数据。</p>
<p>　　然而，这并非使用TPTP分析应用程序的唯一方式。通常，越早进行测试，后面遇到的问题就越少。借助TPTP，您可以在很多上下文中分析代码，包括JUnit测试用例、<a href="http://www.onjava.com/pub/a/onjava/2006/08/16/profiling-with-eclipse-callisto.html#" target=_blank><u><font color=#0000ff>Java 应用程序</font></u></a>和web应用程序。而且它很好地集成到了Eclipse IDE中。所以，没有理由不在早期开始初步性能测试和分析工作。</p>
<p>　　TPTP让您可以测试应用程序行为的几个方面，包括内存使用（创建了多少对象，这些对象的大小如何）、执行统计数据（应用程序在哪些地方所花的时间较多）和测试覆盖（测试期间执行代码的确切数量）。每个方面均可提供有关应用程序性能的独立信息。</p>
<p>　　不管怎么说，内存泄漏可能而且的确存在于Java中。创建（并保存）不必要的对象会增加对内存的需求，并加重垃圾收集器的工作负担，这都会损害应用程序的性能。而且，如果运行应用程序的服务器的持续正常运行时间很长，累积下来的内存泄漏可能最终导致应用程序崩溃或服务器停止运行。这些都是留心应用程序内存泄漏情况的充分理由。</p>
<p>　　根据80-20经验法则，80%的性能问题出现在20%的代码中。或者，换句话说，只要把精力集中在应用程序中执行最经常的部分上，就可以花费相对较少的气力使性能有实质性的提高。在这种情况下，执行统计数据就可以派上用场了。</p>
<p>　　除此以外，TPTP还提供一些基本的测试覆盖数据。尽管这些统计数据不如Cobertura或Clover这样的专用工具提供的完整，您仍然可以通过它们快速了解性能测试正在有效地测试哪些方法。</p>
<p>　　在本文中，我讨论的测试种类同样是没有经过优化的。优化涉及到使用像缓冲这样的技术对应用程序性能进行微调。这是一项对技术要求很高的操作，最好留到项目的最后完成。</p>
<p>　　这里所讨论的这种初步性能测试和分析仅仅包括，确保应用程序从一开始就正确执行，以及没有编码错误或糟糕的编码实践会在后面的阶段中对性能产生不利的影响。事实上，修复内存泄漏和避免不必要的对象创建并不是优化——这只不过是调试，而且同样应该尽可能早地完成。</p>
<p>　　让我们通过使用一些单元测试来分析一个类的方式开始。可以分析常规的单元或集成测试，或者编写针对性更强的面向性能的测试。通常，您应该尝试分析与生产代码最接近的代码。许多人使用模拟对象来代替DAO对象进行单元测试，使用这项功能强大的技术可以加速开发生命周期。如果使用这类方法，一定要使用这些测试来运行分析工具，它可以揭示有关内存使用和测试覆盖的有用信息。然而，性能测试的价值是有限的，因为对于与数据库相关的应用程序来说，其性能往往是由数据库的性能所决定的，所以在这个上下文中，应该进行所有重要的性能测试。简而言之，不要忘了分析基于实际数据库而运行的集成测试。</p>
<p>　　出于本文的需要，我们将对以下类进行测试，这个类代表了一个到库目录的简单接口。</p>
<pre class=code>interface Catalog {
List&lt;Book&gt; findBooksByAuthor(String name);
List&lt;Book&gt; findAllBooks();
}
</pre>
<p>　　基本的单元测试如下：</p>
<pre class=code>public class CatalogTest extends TestCase {
...
public Catalog getCatalog() {
...
}
public void testFindBooksByAuthor() {
List&lt;Book&gt; books = getCatalog().findBooksByAuthor("Lewis");
}
public void testLoadFindBooksByAuthor() {
for(int i = 0; i &lt; 10; i++) {
List&lt;Book&gt; books
= getCatalog().findBooksByAuthor("Lewis");
}
}
public void testFindAll() {
List&lt;Book&gt; books = getCatalog().findAllBooks();
}
}
</pre>
<p>　　您需要做的第一件事情就是建立一个分析。在Eclipse主菜单中选择"Run -&gt; Profile"，这将打开一个向导，您可以在其中配置不同种类的测试分析，如图2所示。</p>
<p align=center><img height=320 alt="使用Eclipse Callisto分析应用程序图-2" src="http://dev2dev.bea.com.cn/images/image061122002.gif" width=480 border=0></p>
<p>　　<em>图 2. 创建一个TPTP分析</em></p>
<p>　　在这个例子中，我们感兴趣的是JUnit测试分析。双击这一项；向导应该为每个单元测试类创建新的项。TPTP相当灵活，您可以在此屏幕中配置各个选项。例如，在Test选项卡上，可以单独分析单元测试类，也可以按照项目或软件包对它们进行分组。在Arguments选项卡上，可以指定运行时参数，而在Environment选项卡上可以定义环境变量。在Destination选项卡中，可以指定一个外部文件，用于保存分析数据以供以后使用。但是，最有用的是Monitor选项卡（参见图3），可以在上面指定要记录和研究的性能相关数据：</p>
<ul type=disc>
    <li><em>Basic Memory Analysis（基本内存分析）：</em>这个选项用于记录内存使用的统计数据，包括对象实例的数量和已经使用的全部内存。
    <li><em>Execution Time Analysis（执行时间分析）：</em>这个选项用于记录性能数据——即应用程序分别在每个方法上所花的时间长短。
    <li><em>Method Code Coverage（方法代码覆盖）：</em>这个选项用于通知在测试期间执行了哪些类和方法。</li>
</ul>
<p align=center><img height=276 alt="使用Eclipse Callisto分析应用程序图-3" src="http://dev2dev.bea.com.cn/images/image061122003.gif" width=450 border=0></p>
<p>　　 <em>图 3: 在Monitor选项卡上定义要记录数据的类型。</em></p>
<p>　　您可以直接从这个窗口运行分析工具，也可以使用位于要分析的测试类上的上下文菜单，方法是选择Profile As菜单项（参见图4）。</p>
<p align=center><img height=547 alt="使用Eclipse Callisto分析应用程序图-4" src="http://dev2dev.bea.com.cn/images/image061122004.gif" width=450 border=0></p>
<p>　　<em>图 4:可以使用上下文菜单运行TPTP分析工具。</em></p>
<p>　　运行分析工具可能要花上一段时间，这取决于测试用例的大小。完成之后，Eclipse将显示一个Profiling Monitor视图，可以在其中显示每种类型分析的结果的详细信息（参见图5）。</p>
<p>　　<br clear=all></p>
<p align=center><img height=267 alt="使用Eclipse Callisto分析应用程序图-5" src="http://dev2dev.bea.com.cn/images/image061122005.gif" width=450 border=0></p>
<p>　　<em>图 5: 分析结果</em></p>
<p>　　Memory Statistics视图显示了应用程序创建的对象的数量。结果可以按照软件包来组织（以树视图的形式），或者显示为类或实例的一个列表。这些<a href="http://www.onjava.com/pub/a/onjava/2006/08/16/profiling-with-eclipse-callisto.html?page=3#" target=_blank><u><font color=#0000ff>数据</font></u></a>可以让您了解每种类型创建了多少个对象；应该对创建的对象（特别是高级对象，例如域对象）不正常的高数量持怀疑态度。</p>
<p>　　用于检测内存泄漏的另一个有用工具是Object References视图。为了获得这些数据，您需要激活引用收集。启动分析之后，点击monitoring项，然后在上下文菜单中选择Collect Object References（参见图6）。接下来，通过上下文菜单（Open with -&gt; Object References）打开Object References视图。您将获得一个类的列表，它带有对每个类的引用的次数。这可以为可能的内存泄漏提供一些线索。</p>
<p align=center><img height=580 alt="使用Eclipse Callisto分析应用程序图-6" src="http://dev2dev.bea.com.cn/images/image061122006.gif" width=400 border=0></p>
<p>　　<em>图 6: 激活引用收集</em></p>
<p>　　如图7所示，从Execution Statistics视图可以清楚地了解到<a href="http://www.onjava.com/pub/a/onjava/2006/08/16/profiling-with-eclipse-callisto.html?page=3#" target=_blank><u><font color=#0000ff>应用程序</font></u></a>执行到了哪里。"organization by"软件包可以帮助您找出执行时间最长的类和方法。点击一个方法将打开Method Invocation Details视图，它将显示有关方法被调用次数、调用地点以及它本身调用了哪些其他方法的更详细信息。尽管与一些可以向下发掘到源代码本身的商业工具相比，这个视图与源代码视图的集成度没有那么高，但是它还是可以给出一些重要线索，帮助您找出执行错误的方法。</p>
<p align=center><img height=342 alt="使用Eclipse Callisto分析应用程序图-7" src="http://dev2dev.bea.com.cn/images/image061122007.gif" width=450 border=0></p>
<p>　　<em>图 7: Execution Statistics视图</em></p>
<p>　　Coverage Statistics视图（参见图8）提供的信息是关于，您刚刚运行的测试用例使用了（因此至少在某种程度上测试了）哪些方法。覆盖统计数据是一项优秀的功能，尽管它们提供的信息的详细程度还无法与像Cobertura、Clover和jcoverage这样的专业覆盖工具相提并论（它们可以提供行精度的覆盖数据，以及行和分支覆盖的统计数据）。尽管如此，它也有自身的优点，那就是可以提供<a href="http://www.onjava.com/pub/a/onjava/2006/08/16/profiling-with-eclipse-callisto.html?page=4#" target=_blank><u><font color=#0000ff>实时的</font></u></a>覆盖结果，而目前，只有商业的代码覆盖工具，例如Clover和jcoverage，才能提供行级别的覆盖报告和完整的IDE集成。</p>
<p align=center><img height=341 alt="使用Eclipse Callisto分析应用程序图-8" src="http://dev2dev.bea.com.cn/images/image061122008.gif" width=450 border=0></p>
<p>　　<em>图 8: Coverage Statistics视图</em></p>
<h3>静态分析工具</h3>
<p>　　在TPTP工具箱中，另一件有趣的工具就是<a href="http://en.wikipedia.org/wiki/Static_code_analysis" target=_blank><u><font color=#0000ff>静态分析</font></u></a>工具。<a href="http://www.onjava.com/pub/a/onjava/2006/08/16/profiling-with-eclipse-callisto.html?page=4#" target=_blank><u><font color=#0000ff>Java</font></u></a>静态分析工具，例如<a href="http://pmd.sourceforge.net/" target=_blank><u><font color=#0000ff>PMD</font></u></a>，允许通过基于一组代码预定义规则和最佳实践检查来检查代码，从而自动验证代码质量。现在，TPTP也包含一个静态分析工具。除了提供它自己的一组静态分析规则之外，这个工具还可以提供一个一致的接口，其他工具厂商可以在这个接口中集成他们自己的规则。</p>
<p>　　要对代码进行静态分析，需要创建分析配置。在Java视图或Analysis图标中，使用上下文菜单打开Analysis窗口，它现在应该出现在工具栏上（参见图9）。分析配置决定了要分析的代码（Scope）和应该遵循的规则（Rules）。有71条规则可供选择，例如"Avoid casting primitive types to lower precision"和"Always provide a break at the end of every case statement"。您还可以使用预定义的规则，例如"Java Quick Code Review"（在这里，71条规则中只有19条适用）。</p>
<p align=center><img height=330 alt="使用Eclipse Callisto分析应用程序图-9" src="http://dev2dev.bea.com.cn/images/image061122009.gif" width=450 border=0></p>
<p>　　<em>图 9:建立静态分析规则</em></p>
<p>　　要分析代码，使用工具栏中的Analysis图标。分析不是实时完成的，就像一些其他的类似工具一样，例如Checkstyle。然而，给出的结果很清晰（参见图10）：错误在源代码视图中标出，并且按照错误类型，以树视图的形式在Analysis Results视图中列出。"Quick Fix"是一项优雅的特性，它出现在错误类型的上下文菜单中，而且如果可能，它可以自动为您纠正问题。</p>
<p align=center><img height=330 alt="使用Eclipse Callisto分析应用程序图-10" src="http://dev2dev.bea.com.cn/images/image061122010.gif" width=400 border=0></p>
<p>　　<em>图 10: 静态代码分析结果</em></p>
<h3>结束语</h3>
<p>　　Eclipse测试与性能工具平台是Eclipse IDE工具箱中极具价值的部分。它支持的性能测试的范围很宽，这有助于从第一个单元测试开始，就确保获得高质量和高性能的代码。</p>
<p>　　TPTP无疑还比不上一些可用的商业工具，例如OptimizeIt和JProbe，后者的报告和分析功能要更加完善，而且表示通常更加精练。然而，商业的分析工具往往非常昂贵，而且很难在最严峻的环境中来验证它们的使用情况。尽管TPTP还相对较为不成熟，它仍然可算作一款功能强大的产品，毋庸置疑，它可以提供对于许多项目来说不可或缺的有价值的分析<a href="http://www.onjava.com/pub/a/onjava/2006/08/16/profiling-with-eclipse-callisto.html?page=4#" target=_blank><u><font color=#0000ff>数据</font></u></a>。</p>
<h3>参考资料</h3>
<ul type=disc>
    <li><a href="http://www.eclipse.org/" target=_blank><u><font color=#800080>Eclipse网站</font></u></a>
    <li><a href="http://www.eclipse.org/callisto" target=_blank><u><font color=#0000ff>Callisto网站</font></u></a>
    <li><a href="http://www.eclipse.org/tptp" target=_blank><u><font color=#0000ff>TPTP网站</font></u></a></li>
</ul>
<!--文章其他信息-->
<div class=dot001><u><font color=#0000ff><img height=1 alt="" src="http://dev2dev.bea.com.cn/images/_.gif" width="100%"></font></u></div>
<table cellSpacing=0 cellPadding=3 width="100%" border=0>
    <tbody>
        <tr vAlign=bottom>
            <td colSpan=2 height=20>&nbsp;<span class=h2b>作者简介</span></td>
        </tr>
        <tr>
            <td vAlign=top align=middle width=0></td>
            <td><a href="http://www.onjava.com/pub/au/2429" target=_blank><u><font color=#0000ff>John Ferguson Smart</font></u></a> 从1991年起涉足IT行业，从1999年起开始参与J2EE开发。</td>
        </tr>
    </tbody>
</table>
<img src ="http://www.blogjava.net/simie/aggbug/129104.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/simie/" target="_blank">和田雨</a> 2007-07-09 17:56 <a href="http://www.blogjava.net/simie/archive/2007/07/09/129104.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse 的历史、现状和未来</title><link>http://www.blogjava.net/simie/archive/2007/07/08/128851.html</link><dc:creator>和田雨</dc:creator><author>和田雨</author><pubDate>Sun, 08 Jul 2007 02:03:00 GMT</pubDate><guid>http://www.blogjava.net/simie/archive/2007/07/08/128851.html</guid><wfw:comment>http://www.blogjava.net/simie/comments/128851.html</wfw:comment><comments>http://www.blogjava.net/simie/archive/2007/07/08/128851.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/simie/comments/commentRss/128851.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/simie/services/trackbacks/128851.html</trackback:ping><description><![CDATA[<blockquote>2001 年 11 月，IBM 向开源社区捐献了 Eclipse 代码，自此 Eclipse 在开发者社区得到飞速发展。2006 年 1月19日，Eclipse 国际高峰论坛也首次登陆中国，在清华大学信息科学技术大楼举行。在这次 Eclipse 大会上 developerWorks 编辑团队与 IBM 的 Eclipse 策略经理 John Kellerman 进行了座谈，聆听了他对 Eclipse 历史的追溯、对 Eclipse 架构的分析、对 Eclipse 现状分析、对未来发展的展望。</blockquote><!--start RESERVED FOR FUTURE USE INCLUDE FILES--><!-- include java script once we verify teams wants to use this and it will work on dbcs and cyrillic characters --><!--end RESERVED FOR FUTURE USE INCLUDE FILES-->
<p><img height=122 alt="John Kellerman，IBM 软件部 Rational 产品总经理" src="http://www.ibm.com/developerworks/cn/opensource/os-ecl-john/John01_1.jpg" width=90 align=left border=0>John Kellerman，IBM 软件部 Rational 产品总经理，与 1984 年加入 IBM, 一直从事应用开发工作。2000 年初，John 开始加入了 Eclipse 项目，现在任职 IBM Eclipse 策略部总经理。他现在的主要工作是在 Eclipse 基金会、Eclipse 社区中代表 IBM 的利益，与 Eclipse 成员公司合作。</p>
<p><strong>developerWorks:</strong> IBM 开发工具的发展经历了从最初的 Visual Age到今天基于 Eclipse 3.0 的产品, 可以说是非常大的飞跃，您可否给我们谈一下这其中的历史？</p>
<p><strong>John: </strong>我在加入 Eclipse 项目之前，是 IBM Visual Age for SmallTalk 的产品经理。Eclipse 起源的一个非常重要的原因是，当时IBM 面临着一些挑战需要去解决，即 IBM 开发工具 Visual Age for Java 和 WebSphere Studio 很难集成到一起，而且底层的技术比较脆弱，因此进一步发展非常艰难，无法满足业界应用开发的需求。 <br>因此，1998 年，我们开始了下一代开发工具技术探索之路，成立了一个项目开发小组，经过两年的发展，2000年，我们决定给新一代开发工具项目命名为 Eclipse，Eclipse 叫法当时只是内部使用的名称。这时候的商业目标就是希望 Eclipse 项目能够吸引开发人员，能发展起一个强大而又充满活力的商业合作伙伴（独立软件供应商）社区。同时我们意识到需要用它来对抗 Microsoft Visual Studio 的发展，因此从商业目标考虑，通过开源的方式我们最有机会达到目的。此外，IBM 推出了 Eclipse 试用计划，允许 IBM 以外的开发人员使用 Eclipse。结果证明我们的决策非常正确，Eclipse 从此在开发社区广为流传。Eclipse 也就成为这个项目的正式名称。</p>
<p>我们认为开源 Eclipse 不能只是简单地贡献出源码，创建一个开源项目然后放在开源许可证下；我们需要建立起多家公司的合作关系，否则就不足信服，不是真正的开源项目，而只是 IBM 的一个项目。因此在 2000 年到 2001 年之间，我做的主要工作就是去拜访一些公司，与他们谈论 Eclipse,邀请他们加入 Eclipse 项目。 您可以想象，这是非常有趣的谈话，最终，我们与 8 家公司达成了一致，其中包括一些 IBM 的竞争对手 WebGain、Borland, 还有一些盟友如 Rational（Rational 当时还没有被 IBM 收购）。</p>
<p>2001 年 12 月，IBM 向世界宣布了两件事，第一件是创建开源项目，既 IBM 捐赠价值 4 千万美元的源码给开源社区；另外一件事是成立 Eclipse 协会（Eclipse Consortium）,这个协会由一些成员公司组成，主要任务是支持并促进 Eclipse 开源项目。</p>
<p>从此，我们看到了 Eclipse 本身、会员、插件（plug-in）和 Eclipse 社区飞速成长。2003 年，我们意识到这种会员模式很难进一步扩展，有些事务操作起来很困难，比如无法筹集赠款、无法成立合法理事会，这主要是因为 Eclipse 协会不是一个法律上的实体；此外，尽管 Eclipse 成功有目共睹，但仍然有些业界成员没有加入，他们认为是 Eclipse 的真正领导者是 IBM。因此我们认识到创建一个独立于 IBM 的 Eclipse 将会对 Eclipse 的发展非常有利, 于是 IBM 与其他成员公司合作起草了管理条例，准备成立 Eclipse 基金会（Eclipse Foundation）。2004 年初，Eclipse 基金会正式成立。 </p>
<p><strong>developerWorks:</strong> Eclipse 由一个很小的核心和核心之上的大量插件组成，这种插件式架构给当时的开发社区带来耳目一新的冲击。您能给我们介绍一下 Eclipse 插件架构吗？</p>
<p><strong>John:</strong> 对于 Eclipse 插件架构，一个很好的比喻是 Web 浏览器，它也有插件，Eclipse 插件和浏览器相似，都是要解决扩展性问题。对于一个 Web 浏览器，如果你想既能浏览多媒体动画，又想浏览 PDF 文件，那么你就需要两个不同的插件，才能保证两种内容都能在 Web 浏览器中显示。 Eclipse 也一样，通过它的插件模式我们可以安装不同的插件来进行 HTML 的编辑、数据库的设计、Java 开发、C++ 开发等等，所有这些开发工作完全在一个 Eclipse 安装平台上进行。而且 Eclipse 模型所能做的远超过了这些，理解 Eclipse 插件的关键是首先要理解 Eclipse 扩展点，正是这个扩展点帮您在 Eclipse 中添加新功能。例如，如果希望在菜单中添加一项，就是通过 Eclipse 扩展点实现的。</p>
<p>所以当 Eclipse 插件实现了一个扩展点，就创建了一个扩展，此外，扩展还可以创建自己的扩展点。这种插件模式的扩展和扩展点是递归的，而且被证明是非常灵活的。记得当我们着手对 Eclipse 开发进行区域性调查时，最初的决定之一是："We will eat our own dog food"（编者注：谚语，指一个公司在日常运行中使用自己的产品），即 Eclipse 团队要使用 Eclipse 进行 Eclipse 的开发。事实上，Eclipse 本身是一个核心的运行时绑定了一些在插件之上构建的插件，换句话说，Eclipse 本身就是一系列的插件。这样随着使用 Eclipse 构建 Eclipse 的经验累积，这种插件模式就变得日臻成熟。</p>
<p><strong>developerWorks:</strong> IBM 对 Eclipse 已经投入了非常多的资源，IBM 在 Eclipse 的将来会扮演什么角色呢？</p>
<p><strong>John:</strong> 目前 Eclipse 项目有 100 多个，IBM 参与了其中超过一半的项目，有 3 个主管在主持 Eclipse 相关的工作。2005 年我们还赞助了一些 Eclipse 创新基金和 Eclipse 奖学金。IBM 承诺在未来的几年内会一如既往地参与 Eclipse 研究，我们将会看到 IBM 研发出新项目，而在某些 Eclipse 项目上减少参与，这要看 IBM 的商业目标。最近我们提议了一个项目叫 Beacon, 是关于 Eclipse 流程框架的。我们将捐献一些 Rational Unified Process (RUP) 技术，基本上这个提议是要提供流程方面的内容。IBM 现在与一家叫做 Zend 的公司合作，希望在 Eclipse 上开发出用于 PHP 的开发工具。从商业方面看 IBM, 您会发现 Eclipse 是 Rational 软件开发平台的基础。此外由于 Eclipse 的插件模式、扩展性、集成性，我们为Rational, WebSphere, Lotus 和 Tivoli 构建了统一的平台。</p>
<p><strong>developerWorks:</strong> 目前 IBM 的五大旗舰品牌都有基于 Eclipse 的产品, 这对 IBM 有什么好处？</p>
<p><strong>John:</strong> 我们的目标是创建集成统一平台，我们有基于 Eclipse 构建的 DB2, Rational, WebSphere 等工具，这样客户就可以共同使用这些工具，有统一的界面风格，使用起来非常方便。对 IBM 自身来说，各个开发部门就可以关注于软件的核心性能开发，而不必要浪费资源做一些重新实现的工作，从而 DB2 开发部门就专注于数据库开发、WebSphere 专注应用服务器的开发、Rational 专注于建模、源代码管理，至于其他方面的辅助开发对于 Eclipse 来说是共同的。</p>
<p><strong>developerWorks:</strong> Eclipse 是一个开源 IDE, 那如何通过 Eclipse 创造商业利益呢？</p>
<p><strong>John:</strong> 对于 IBM, 在 Eclipse 技术开发方面与上百家公司合作，因为 IBM 看到了 Eclipse 作为通用的、开放的、标准的技术基础，其价值日益成长。当然，这种基础技术是不会带来创收的，没有人可以使用 Eclipse 技术来赚钱，但这并不重要，就像 Borland, Sybase 等公司都在花费钱做同样的构建工作，当然我们在这方面还有合作，但是我们还专注于将我们的核心功能组件构建在 Eclipse 平台上，例如，IBM 的 Rational Application Developer, 它是使用 Eclipse 作为基础，然后在这基础上添加了建模插件、Web 开发插件，还有其它更有价值的插件，这些插件我们是收费的。这就是使用 Eclipse 进行商业创收的模式之一。<br>此外，人们还可以直接为 Eclipse 构建插件，然后出售这些插件来赚钱，因为插件可以使用商业许可证发行。事实上我们建立 Eclipse 公共许可证，就是为了让 Eclipse 能很好的被商业采用，从而可以用它来赚钱，Eclipse 的所有成员公司基本都是商业软件提供商。目前全球有上百万开发人员在使用 Eclipse, 因此中国开发人员完全可以构建有价值的插件和工具，然后进行销售。同时 IBM 有一个合作伙伴计划，帮助合作伙伴宣传在 IBM 基于 Eclipse 的产品之上构建的应用。</p>
<p><strong>developerWorks:</strong> 富客户端平台(RCP)目前是比较流行的应用开发模式，请谈一下 Eclipse 是如何支持富客户端的？</p>
<p><strong>John:</strong> 在 Eclipse 的早期，有些用户试图除了将 Eclipse用于开发工具基础平台外，还用作更普遍的商业应用基础。他们认为一个 IDE 就是一个特殊的富客户端应用。这就是开放源码开发的魅力所在，当这些用户试着用 Eclipse 作为通用富客户端时，他们就把这些想法建议反馈给 Eclipse 开发小组。就这样 Eclipse 经过了 2.0 到 2.1 的发展，不断收到来自社区的建议和反馈，终于到了一个通用化的阶段。在3.0 版发行时，我们觉得时机成熟，于是正式声明将 Eclipse 作为通用的富客户端和 IDE。</p>
<p>其实最早的反馈是来自我们的 Lotus 开发小组，他们在 Eclipse 3.0 之前就意识到可以使用 Eclipse 来提供他们 Workplace 客户端的富客户端版本。从 Eclipse 3.0 到 3.1 再到 3.2, 我们看到富客户端平台应用的快速增长，同时也收到越来越多反馈帮我们完善提高。</p>
<p>我最欣赏的 RCP 应用之一是在EclipseCon 2005 上的一个演示，演示的是美国国家航空航天管理局(NASA)的一个项目，当时 NASA 在加利福尼亚州有个实验室叫 Jet Propulsion Laboratory (JPL)，负责火星探测计划，他们的管理用户界面就是一个 Eclipse RCP 应用，通过这个应用，加利福尼亚州的工作人员就可以控制在火星上运行的火星车。在演示过程中，有人问为什么使用 Eclipse, 回答是，使用 Eclipse 这门技术，他们不用担心，而且还节省了不少纳税人的钱，因为他们只需要集中资源开发控制火星车的应用就可以了。</p>
<p><strong>developerWorks:</strong> Eclipse 现在非常热门，您认为从微软的开发平台转到 Eclipse 上容易吗？</p>
<p><strong>John:</strong> 这个问题可以从两方面来说明，一是软件提供商从 Visual Studio 移到 Eclipse 上，另一方面是微软平台上开发的程序的移植。</p>
<p>Eclipse 提供了不同的集成方法，可以是非常轻量级的集成，即只是简单的调用和返回。Eclipse可以处理 ActiveX 控件，这样 Word, Excel 就可以在 Eclipse 里打开，这是另一种集成模式。有些供应商选择把他们的工具封装在 Java 层，即保留 C/C++ 工具，封装在 Java 里与 Eclipse 进行通信。如果软件供应商希望将工具构建成 Eclipse 插件，那么我们通常建议在 Eclipse 中用 Java 重新实现，因为几乎所有的微软工具都是 C/C++ 工具。因此工具的迁移可以分三步走：轻量级集成、重量级集成和重新实现。</p>
<p>如果要迁移程序，Eclipse 提供了一些设施。但难易程度取决于程序是用什么工具开发的，因为最重要的部分是（版本控制系统的）代码库本身，如果代码库同时支持 Visual Studio 和 Eclipse, 那就容易的多。此外有一些公司提供了迁移系统，在 Eclipse 网站的社区部分中可以查看这些公司列表。</p>
<p><strong>developerWorks:</strong> 对个体开发人员，他们如何能够参与 Eclipse 项目？</p>
<p><strong>John:</strong> Eclipse 是完全开放的，任何人都可以参与，参与的最简单方法是关注它的新闻组，选择一个感兴趣的技术领域，然后下载代码，自己做些实验，并在新闻组上回答一些问题，这样随着技术的提高，就可以向 Bugzilla 提交 bug 和修复包，或去修复其他 bug。如果得到项目工作组的认可，便可以承担项目的一些义务，成为项目开发组的真正成员。此外还可以写一些文章发送到 Eclipse 组织，参加本地的 Eclipse 用户组等等方式。</p>
<p>如果有兴趣成立一个 Eclipse 开源项目，Eclipse 上有一个文档"Eclipse Development Process",描述了如何操作。</p>
<p><strong>developerWorks:</strong> 最后请给我们谈谈 Eclipse 下个版本的情况？</p>
<p><strong>John:</strong> Eclipse 3.2 计划于今年 6 月面世，名称是 Callisto, 选择 Callisto 作为名称是按社区要求的，因为这次目标是同时发布 10 个主要的 Eclipse 项目，以支持成员公司生态系统需求，他们将要把 Eclipse 框架集成到各自的软件产品中。</p>
<p><strong>developerWorks:</strong> 感谢您接受我们的采访。</p>
<img src ="http://www.blogjava.net/simie/aggbug/128851.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/simie/" target="_blank">和田雨</a> 2007-07-08 10:03 <a href="http://www.blogjava.net/simie/archive/2007/07/08/128851.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Sysdeo/SQLI Eclipse Tomcat Launcher plugin</title><link>http://www.blogjava.net/simie/archive/2007/07/05/128390.html</link><dc:creator>和田雨</dc:creator><author>和田雨</author><pubDate>Thu, 05 Jul 2007 08:28:00 GMT</pubDate><guid>http://www.blogjava.net/simie/archive/2007/07/05/128390.html</guid><wfw:comment>http://www.blogjava.net/simie/comments/128390.html</wfw:comment><comments>http://www.blogjava.net/simie/archive/2007/07/05/128390.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/simie/comments/commentRss/128390.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/simie/services/trackbacks/128390.html</trackback:ping><description><![CDATA[<h2>Sysdeo/SQLI Eclipse Tomcat Launcher plugin</h2>
<p><strong>在Eclipse方面使用Ｔｏｍｃａｔ的插件</strong></p>
<table cellSpacing=0 cellPadding=0 width="45%" border=0>
    <tbody>
        <tr>
            <td>
            <table cellSpacing=0 cellPadding=5 width="100%" border=1>
                <tbody>
                    <tr>
                        <td bgColor=#eeeeff>
                        <ul>
                            <li><span class=toc><a class=toc href="http://www.eclipsetotale.com/tomcatPlugin.html#A1"><u><font color=#800080>Plugin features</font></u></a> </span>
                            <li><span class=toc><a class=toc href="http://www.eclipsetotale.com/tomcatPlugin.html#A2"><u><font color=#800080>Support and contributions</font></u></a></span>
                            <li><a href="http://www.eclipsetotale.com/tomcatPlugin.html#A3"><u><font color=#800080>Download</font></u></a>
                            <li><a href="http://www.eclipsetotale.com/tomcatPlugin.html#A4"><u><font color=#800080>Installation</font></u></a>
                            <li><a href="http://www.eclipsetotale.com/tomcatPlugin.html#A5"><u><font color=#800080>Documentation</font></u></a>
                            <li><a href="http://www.eclipsetotale.com/tomcatPlugin.html#A6"><u><font color=#800080>Troubleshooting</font></u></a> </li>
                        </ul>
                        </td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<h3>&nbsp;</h3>
<h3>&nbsp;</h3>
<h3><a name=A1></a>Plugin features</h3>
<ul>
    <li>
    <p>Starting and stopping Tomcat 4.x, 5.x and 6.x</p>
    <li>
    <p>Registering Tomcat process to Eclipse debugger </p>
    <li>
    <p>Creating a WAR project (wizard can update server.xml file) </p>
    <li>
    <p>Adding Java Projects to Tomcat classpath </p>
    <li>
    <p>Setting Tomcat JVM parameters, classpath and bootclasspath </p>
    <li>
    <p>Exporting a Tomcat project to a WAR File </p>
    <li>
    <p>Capability to use a custom Tomcat classloader to load classes in several java projects at the same classloader level than classes in a Tomcat project, see <a href="http://www.eclipsetotale.com/tomcatPlugin/readmeDevLoader.html"><u><font color=#0000ff>readmeDevLoader.html</font></u></a> (Thanks Martin Kahr) </p>
    </li>
</ul>
<h3>&nbsp;</h3>
<h3><a name=A2></a>Support and contributions</h3>
<p>Contact <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#112;&#108;&#117;&#103;&#105;&#110;&#116;&#111;&#109;&#99;&#97;&#116;&#64;&#115;&#121;&#115;&#100;&#101;&#111;&#46;&#102;&#114;"><u><font color=#0000ff>plugintomcat@sysdeo.fr</font></u></a> </p>
<h3>&nbsp;</h3>
<h3><a name=A3></a>Download</h3>
<p>This plugin is free and open-source<br></p>
<table class=tomcatPluginTable>
    <tbody>
        <tr>
            <th>Version</th>
            <th>File</th>
            <th>Date</th>
            <th>Comment</th>
        </tr>
        <tr>
            <td vAlign=top>
            <p>3.2.1</p>
            </td>
            <td vAlign=top>
            <div class=object-right><a href="http://www.eclipsetotale.com/tomcatPlugin/tomcatPluginV321.zip"><u><font color=#800080>tomcatPluginV321.zip</font></u></a> </div>
            </td>
            <td vAlign=top>
            <p>10 May 2007</p>
            </td>
            <td vAlign=top>
            <div class=object-right><a href="http://www.eclipsetotale.com/tomcatPlugin/releaseNotesV321.txt"><u><font color=#0000ff>releaseNotesV321.txt</font></u></a> </div>
            <p>Works with Eclipse 3.1, 3.2 and 3.3M7<br>Fix a problem with HTTPS</p>
            </td>
        </tr>
        <tr bgColor=#cccccc>
            <td vAlign=top>
            <p>3.2</p>
            </td>
            <td vAlign=top>
            <div class=object-right><a href="http://www.eclipsetotale.com/tomcatPlugin/tomcatPluginV32.zip"><u><font color=#0000ff>tomcatPluginV32.zip</font></u></a> </div>
            </td>
            <td vAlign=top>
            <p>13 April 2007</p>
            </td>
            <td vAlign=top>
            <div class=object-right><a href="http://www.eclipsetotale.com/tomcatPlugin/releaseNotesV32.txt"><u><font color=#0000ff>releaseNotesV32.txt</font></u></a> </div>
            <p>Works with Eclipse 3.1, 3.2 and 3.3M6<br>Tomcat 6 support added </p>
            </td>
        </tr>
        <tr bgColor=#cccccc>
            <td vAlign=top>
            <p>3.2 beta3 </p>
            </td>
            <td vAlign=top>
            <div class=object-right><a href="http://www.eclipsetotale.com/tomcatPlugin/tomcatPluginV32beta3.zip"><u><font color=#0000ff>tomcatPluginV32beta3.zip</font></u></a> </div>
            </td>
            <td vAlign=top>
            <p>20 November 2006 </p>
            </td>
            <td vAlign=top>
            <div class=object-right><a href="http://www.eclipsetotale.com/tomcatPlugin/releaseNotesV32beta3.txt"><u><font color=#0000ff>releaseNotesV32beta3.txt</font></u></a> </div>
            <p>Works with Eclipse 3.2 and Eclipse 3.1<br>Tomcat 6 support added </p>
            </td>
        </tr>
        <tr bgColor=#cccccc>
            <td vAlign=top>
            <p>3.2 beta2 </p>
            </td>
            <td vAlign=top>
            <div class=object-right><a href="http://www.eclipsetotale.com/tomcatPlugin/tomcatPluginV32beta2.zip"><u><font color=#0000ff>tomcatPluginV32beta2.zip</font></u></a> </div>
            </td>
            <td vAlign=top>
            <p>25 October 2006 </p>
            </td>
            <td vAlign=top>
            <div class=object-right><a href="http://www.eclipsetotale.com/tomcatPlugin/releaseNotesV32beta2.txt"><u><font color=#0000ff>releaseNotesV32beta2.txt</font></u></a> </div>
            <p>Works with Eclipse 3.2 and Eclipse 3.1<br>Tomcat 6 support added </p>
            </td>
        </tr>
        <tr>
            <td vAlign=top>
            <p>3.1</p>
            </td>
            <td vAlign=top>
            <div class=object-right><a href="http://www.eclipsetotale.com/tomcatPlugin/tomcatPluginV31.zip"><u><font color=#0000ff>tomcatPluginV31.zip</font></u></a> </div>
            </td>
            <td vAlign=top>
            <p>15 September 2005 </p>
            </td>
            <td vAlign=top>
            <div class=object-right><a href="http://www.eclipsetotale.com/tomcatPlugin/releaseNotesV31.txt"><u><font color=#0000ff>releaseNotesV31.txt</font></u></a> </div>
            <p>Works with Eclipse 3.0 and Eclipse 3.1 (fix a problem with Eclipse 3.1M6) </p>
            </td>
        </tr>
        <tr>
            <td vAlign=top>
            <p>3.0 </p>
            </td>
            <td vAlign=top>
            <div class=object-right><a href="http://www.eclipsetotale.com/tomcatPlugin/tomcatPluginV3.zip"><u><font color=#0000ff>tomcatPluginV3.zip</font></u></a> </div>
            </td>
            <td vAlign=top>
            <p>27 July 2004 </p>
            </td>
            <td vAlign=top>
            <div class=object-right><a href="http://www.eclipsetotale.com/tomcatPlugin/releaseNotesV3.txt"><u><font color=#0000ff>releaseNotesV3.txt</font></u></a> </div>
            <p>Works with Eclipse 3.0 and Eclipse 2.1 </p>
            </td>
        </tr>
        <tr bgColor=#cccccc>
            <td vAlign=top>
            <p>2.2.1</p>
            </td>
            <td vAlign=top>
            <div class=object-right><a href="http://www.eclipsetotale.com/tomcatPlugin/tomcatPluginV221.zip"><u><font color=#0000ff>tomcatPluginV221.zip</font></u></a> </div>
            </td>
            <td vAlign=top>
            <p>1er August 2003 </p>
            </td>
            <td vAlign=top>
            <div class=object-right><a href="http://www.eclipsetotale.com/tomcatPlugin/releaseNotesV221.txt"><u><font color=#0000ff>releaseNotesV211beta.txt</font></u></a> </div>
            <p>Works with Eclipse 2.1 and Eclipse 3.0 M2 </p>
            </td>
        </tr>
    </tbody>
</table>
<br>
<p>Tomcat 4.x patch for JSP debugging (Thanks to Johan Compagner)</p>
<table class=tomcatPluginTable>
    <tbody>
        <tr>
            <th>Tomcat Version</th>
            <th>File</th>
            <th>Date</th>
        </tr>
        <tr>
            <td vAlign=top>
            <p>4.1.24 </p>
            </td>
            <td vAlign=top>
            <div class=object-right><a href="http://www.eclipsetotale.com/tomcatPlugin/jasperDebugPatchV4.1.24.zip"><u><font color=#0000ff>jasperDebugPatchV4.1.24.zip</font></u></a> </div>
            </td>
            <td vAlign=top>
            <p>1 April 2003 </p>
            </td>
        </tr>
    </tbody>
</table>
<p>To install this patch, unzip the file in &lt;%TOMCAT_HOME%&gt;/classes for tomcat 4.0x, or in &lt;%TOMCAT_HOME%&gt;/common/classes for Tomcat 4.1.x<br></p>
<h3>&nbsp;</h3>
<h3><a name=A4></a>Installation</h3>
<ul>
    <li>
    <p>This plugin does not contain Tomcat.<br>(Download and install Tomcat before using this plugin).<br>This is a design choice not to include Tomcat in the plugin distribution, this way the same plugin version can works with any Tomcat version.<br></p>
    <li>
    <p>Download tomcatPluginVxxx.zip </p>
    <li>
    <p>Unzip it in your_Eclipse_Home/plugins </p>
    <li>
    <p>Plugin activation for Eclipse 3.x :<br>- launch eclipse once using this option : <strong>-clean</strong><br>- if Tomcat icons are not shown in toolbar : select menu 'Window&gt;Customize Perspective...&gt;Commands', and check 'Tomcat' in 'Available command groups'<br></p>
    <li>
    <p>Set Tomcat version and Tomcat home : Workbench -&gt; Preferences, select Tomcat and set Tomcat version and Tomcat home (Tomcat version and Tomcat home are the only required fields, other settings are there for advanced configuration). </p>
    <li>
    <p>This plugin launches Tomcat using the default JRE checked in Eclipe preferences window.<br>To set a JDK as default JRE for Eclipse open the preference window : Window -&gt; Preferences -&gt; Java -&gt; Installed JREs.<br>This JRE must be a JDK (This is a Tomcat prerequisite).<br></p>
    <li>
    <p>The plugin sets itself Tomcat classpath and bootclasspath. Use Preferences -&gt; Tomcat -&gt;JVM Settings, only if you need specific settings. </p>
    </li>
</ul>
<h3>&nbsp;</h3>
<h3><a name=A5></a>Documentation and tutorials</h3>
<p>Official documation (french) : <a href="http://www.eclipsetotale.com/articles/tomcat/tomcatPluginDocFR.html"><u><font color=#0000ff>http://www.eclipsetotale.com/articles/tomcat/tomcatPluginDocFR.html</font></u></a> </p>
<p>Tutorials (english) :<br></p>
<ul>
    <li>
    <p><a href="http://javaboutique.internet.com/tutorials/three/"><u><font color=#0000ff>The Power of Three - Eclipse, Tomcat, and Struts</font></u></a> </p>
    <li>
    <p><a href="http://www.keyboardsamurais.de/mt/archives/000053.html"><u><font color=#0000ff>Tomcat Tutorial: HelloWorld for Complete Fools</font></u></a> </p>
    </li>
</ul>
<h3>&nbsp;</h3>
<h3><a name=A6></a>Troubleshooting</h3>
<ul>
    <li>
    <p>In some case, despite it is correctly unzipped in Eclipse 3 'plugins' directory, the plugin is not loaded : run Eclipse with the -clean option to solve the problem. </p>
    <li>
    <p>ClassNotFound when using DevLoader and launching Tomcat 5.5.12 and above<br>Workaround : set context definition mode (Preferences-&gt;Tomcat) to 'Context files'.<br>Explanations :<br>This problem is due to a change in Tomcat 5.5.12 and above (see <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=37302"><u><font color=#0000ff>http://issues.apache.org/bugzilla/show_bug.cgi?id=37302</font></u></a> ,<br>We hope this bug will be fix but it seems that Tomcat developers don't care about it because it happens when a context containing its own loader is defined in server.xml file and since Tomcat 5 defining context in server.xml is not recommended)<br></p>
    <li>
    <p>ClassNotFoundException on javac/Main when accessing JSP : Tomcat is started with a JRE instead of a JDK. </p>
    <li>
    <p>If you have a problem with the plugin check eclipse log file (&lt;%Your_Workspace_dir%&gt;/.metadata/.log) </p>
    </li>
</ul>
<p>&nbsp; </p>
<p>If you have any problem with this plugin send an email to <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#112;&#108;&#117;&#103;&#105;&#110;&#116;&#111;&#109;&#99;&#97;&#116;&#64;&#115;&#121;&#115;&#100;&#101;&#111;&#46;&#102;&#114;"><u><font color=#0000ff>plugintomcat@sysdeo.fr</font></u></a> . <br>(Select this button : Preferences-&gt;Tomcat-&gt;JVM Settings-&gt;Dump configuration to .log file, and include in your email the corresponding lines of your .log file, it is in &lt;%Your_Workspace_dir%&gt;/.metadata)<br></p>
<img src ="http://www.blogjava.net/simie/aggbug/128390.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/simie/" target="_blank">和田雨</a> 2007-07-05 16:28 <a href="http://www.blogjava.net/simie/archive/2007/07/05/128390.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Log4E</title><link>http://www.blogjava.net/simie/archive/2007/07/05/128389.html</link><dc:creator>和田雨</dc:creator><author>和田雨</author><pubDate>Thu, 05 Jul 2007 08:26:00 GMT</pubDate><guid>http://www.blogjava.net/simie/archive/2007/07/05/128389.html</guid><wfw:comment>http://www.blogjava.net/simie/comments/128389.html</wfw:comment><comments>http://www.blogjava.net/simie/archive/2007/07/05/128389.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/simie/comments/commentRss/128389.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/simie/services/trackbacks/128389.html</trackback:ping><description><![CDATA[这个插件是用来方面的使用 log4j组件的，非常好用，推荐！<br><br>
<table width="100%">
    <tbody>
        <tr>
            <td style="PADDING-RIGHT: 15px" vAlign=top width="75%">Log4E is an <a class=external title=http://www.eclipse.org href="http://www.eclipse.org/" target=_blank>Eclipse</a> Plugin which helps you to use your logger easily in Java Projects.<br>The Plugin Log4E is not bound to any special logging framework. Thus you might be able to adapt to your own logger by defining your own templates using the preferences. It has active support for Log4j, Commons Logging and JDK 1.4 logging.<br><br>Use the context menu of a java file or the context menu of an editor and get to the submenu "Log4". Notice that the editor submenu provides additional tasks.<br><br>
            <td style="MARGIN-TOP: 0px; VERTICAL-ALIGN: top; PADDING-TOP: 0px" width="25%" border="0">
            <table style="PADDING-RIGHT: 15px; MARGIN-TOP: 0px; PADDING-LEFT: 15px; BORDER-BOTTOM-COLOR: #223366; VERTICAL-ALIGN: top; BORDER-LEFT: #223366 2px solid; BORDER-TOP-COLOR: #223366; PADDING-TOP: 0px; BORDER-RIGHT-COLOR: #223366; padding-botton: 10px" width="100%" border=0>
                <tbody>
                    <tr>
                        <td style="MARGIN-TOP: 0px; PADDING-LEFT: 15px; VERTICAL-ALIGN: top; PADDING-TOP: 0px">If you like this plugin, please rate it at<br>
                        <div style="TEXT-ALIGN: center">
                        <p><a class=external title="http://www.eclipse-plugins.info/eclipse/rating details plugin.jsp?plugin id=611" href="http://www.eclipse-plugins.info/eclipse/rating_details_plugin.jsp?plugin_id=611" target=_blank>Eclipse Plugins</a> </p>
                        <p>or</p>
                        <p><a class=external title="http://www.eclipseplugincentral.com/Web Links-index-req-viewlink-cid-194.html" href="http://www.eclipseplugincentral.com/Web_Links-index-req-viewlink-cid-194.html" target=_blank>Eclipse Plugin Central</a> </p>
                        </div>
                        </td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<p>
<h2><a name=Download>Download</a></h2>
<a class=internal title=Download href="http://log4e.jayefem.de/index.php/Download">Download the Plugin here</a>
<p><br>
<p>
<h2><a name=Overview>Overview</a></h2>
<p>The following tasks can be invoked either on project, sourcefolder, package, class or method level.
<p>
<h3><a name=Logger_Declaration><a class=internal title="Logger Declaration" href="http://log4e.jayefem.de/index.php/Logger_Declaration">Logger Declaration</a></a></h3>
<p>&#160;</p>
<ul>Inserting import statement and logger declaration of your favourite logger in your sourcecode automatically. <br>Kind of logger and imports are configurable in the <a class=internal title="Preferences:Imports and Declaration" href="http://log4e.jayefem.de/index.php/Preferences:Imports_and_Declaration">Preferences</a>. </ul>
    <p>
    <p>
    <h3><a name=Logger_Insertions><a class=internal title="Logger Insertions" href="http://log4e.jayefem.de/index.php/Logger_Insertions">Logger Insertions</a></a></h3>
    <p>&#160;</p>
    <ul>Automate insertions of logger statements at certain method entries: begin of method, exit of method (before every return statement and at the end of method) and in catch blocks.<br>Furthermore you can add a logger statement at any position you like supported by a wizard.<br>logger levels and much more is configurable in the <a class=internal title=Preferences:Positions href="http://log4e.jayefem.de/index.php/Preferences:Positions">Preferences:Positions</a> (Statements and Positions). </ul>
        <p>
        <h3><a name="Substitution_of_System_out's"><a class=internal title="Replacements of System out's" href="http://log4e.jayefem.de/index.php/Replacements_of_System_out%27s">Substitution of System out's</a></a></h3>
        <p>&#160;</p>
        <ul>Replacement of System out's, System.err's and e.printTrackTrace Statements.<br>Logger levels are configurable in the <a class=internal title=Preferences:Replacement href="http://log4e.jayefem.de/index.php/Preferences:Replacement">Preferences:Replacement</a>. </ul>
            <p>
            <p>
            <h3><a name=Logger_Modification><a class=internal title="Logger Modification" href="http://log4e.jayefem.de/index.php/Logger_Modification">Logger Modification</a></a></h3>
            <p>&#160;</p>
            <ul>
                <p><strong>Note that the modification task could delete a logger message under certain circumstances!</strong> Please read the <a class=internal title="Logger Modification:Algorithm" href="http://log4e.jayefem.de/index.php/Logger_Modification:Algorithm">Logger Modification:Algorithm</a> section before using it. </p>
                <p>Modification of already exisiting logger statements: Replacing logger message with standard information, surrounding log statements with isLevelEnabled() if clauses and more. </p>
            </ul>
            <p>
            <p>
            <p><br><br>
            <p>Don't hesitate to request for new features or help at <a class=external title=mailto:log4e@jayefem.de href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#108;&#111;&#103;&#52;&#101;&#64;&#106;&#97;&#121;&#101;&#102;&#101;&#109;&#46;&#100;&#101;" target=_blank>log4e@jayefem.de</a> </p>
<img src ="http://www.blogjava.net/simie/aggbug/128389.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/simie/" target="_blank">和田雨</a> 2007-07-05 16:26 <a href="http://www.blogjava.net/simie/archive/2007/07/05/128389.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MemoryManager plugin for Eclipse</title><link>http://www.blogjava.net/simie/archive/2007/07/05/128385.html</link><dc:creator>和田雨</dc:creator><author>和田雨</author><pubDate>Thu, 05 Jul 2007 08:18:00 GMT</pubDate><guid>http://www.blogjava.net/simie/archive/2007/07/05/128385.html</guid><wfw:comment>http://www.blogjava.net/simie/comments/128385.html</wfw:comment><comments>http://www.blogjava.net/simie/archive/2007/07/05/128385.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/simie/comments/commentRss/128385.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/simie/services/trackbacks/128385.html</trackback:ping><description><![CDATA[<font size=2><font face=Helvetica><strong>这个插件不错，可以监视JVM的内存使用情况，并且可以强制GC工作。<br><br><br>Current Version 1.0.0</strong>. <em>Released Feb 1st 2004</em></font></font>
<h3><font face=Arial size=-1>Description</font></h3>
<font face=Arial size=-1>Cloudgarden's MemoryManager is a small plugin for IBM's <a href="http://www.eclipse.org/" target=_blank><u><font color=#800080>Eclipse</font></u></a> Java </font><font face=Arial size=-1>I</font><font face=Arial size=-1>DE, which displays the current memory usage of Eclipse (letting you know when Eclipse is close to using up all it's memory allowance), and automatically invokes garbage collection when deemed necessary by a simple but effective algorithm (see below), thus preventing or reducing times of forced inactivity while the Eclipse JVM cleans up it's virtual memory space.</font><font size=-1><font face=Arial> <br></font></font>
<h3><img title="" height=87 alt="" src="http://cloudgarden.com/memorymanager/memoryManager1.PNG" width=280 align=left></h3>
<font size=-1><font face=Arial>The plugin takes up little screen real estate, and provides a visual and numerical display of the free, total and maximum memory allocations, as well as indicating when it forced a garbage collection (it also has a button to manually force garbage collection). In the screen shot, the green region represents the free memory, the red region the used memory (which is equal to the total memory minus the free memory) and the black region represents space for expansion. The blue lines indicate when a garbage-collection happened. Scrolling of the display can be paused and re-started, and past values can be stepped through as a simple tool for analysing memory usage by applications in the workbench. <br><br>The plugin is Open Source, (the source is <a href="http://cloudgarden.com/memorymanager/memorymanager100src.zip"><u><font color=#0000ff>here</font></u></a>) and should work on most platforms (it has been tested on Windows, Linux and Mac).<br><br><br><strong>Download</strong><br><br>The plugin is contained in <a href="http://cloudgarden.com/memorymanager/memorymanager100.zip"><u><font color=#800080>this file</font></u></a>. Simply extract and install in your eclipse folder, then start eclipse.<br><br><br><strong>Usage</strong><br><br>Show the plugin by choosing "Windows-&gt;Views-&gt;Other-&gt;MemoryManager-&gt;Memory" in the eclipse main menu. The plugin will immediately start displaying memory usage and collecting garbage when necessary. Note: If total usage is less than half of the maximum allowed space, the display will be scaled vertically by a factor of two (ie, the height of the display represents only half of the maximum memory), but once the total memory excedes half of the maximum, the height represents the maximum allowed memory usage.<br><br><br><strong>Requirements</strong><br><br>Eclipse version 2.1.2 or 3M6. If run under a 1.3 JVM, the maximum memory cannot be calculated (since there is no such method in the 1.3 API), and the display will have no black area.<br><strong><br><br>Garbage collection algorithm</strong><br><br>1) At startup, or immediately after garbage-collection, find the free memory.<br>2) Keep checking free memory every second or two.<br>3) When the free memory drops below 75% of the free memory after the last garbage collection (or at startup), do another garbage-collection.<br><br>That's it - simple, but apparently effective.<br></font></font>
<img src ="http://www.blogjava.net/simie/aggbug/128385.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/simie/" target="_blank">和田雨</a> 2007-07-05 16:18 <a href="http://www.blogjava.net/simie/archive/2007/07/05/128385.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>开发一个调试 JSP 的 Eclipse 插件</title><link>http://www.blogjava.net/simie/archive/2007/07/03/127887.html</link><dc:creator>和田雨</dc:creator><author>和田雨</author><pubDate>Tue, 03 Jul 2007 08:40:00 GMT</pubDate><guid>http://www.blogjava.net/simie/archive/2007/07/03/127887.html</guid><wfw:comment>http://www.blogjava.net/simie/comments/127887.html</wfw:comment><comments>http://www.blogjava.net/simie/archive/2007/07/03/127887.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/simie/comments/commentRss/127887.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/simie/services/trackbacks/127887.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本文通过开发一个JSP 编辑器插件的示例，介绍了 Eclipse 中设置 JSP 断点的方法，以及如何远程调试 JSP。作为基础知识，本文的前两部分描述了 JAVA Debug 和 JSR-45 的基本原理。<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/simie/archive/2007/07/03/127887.html'>阅读全文</a><img src ="http://www.blogjava.net/simie/aggbug/127887.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/simie/" target="_blank">和田雨</a> 2007-07-03 16:40 <a href="http://www.blogjava.net/simie/archive/2007/07/03/127887.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>