﻿<?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-ywjr-随笔分类-java</title><link>http://www.blogjava.net/ywjr/category/43329.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 02 Mar 2011 21:46:15 GMT</lastBuildDate><pubDate>Wed, 02 Mar 2011 21:46:15 GMT</pubDate><ttl>60</ttl><item><title>Java静态检测工具的简单介绍</title><link>http://www.blogjava.net/ywjr/archive/2011/03/01/345426.html</link><dc:creator>河马虎</dc:creator><author>河马虎</author><pubDate>Tue, 01 Mar 2011 09:12:00 GMT</pubDate><guid>http://www.blogjava.net/ywjr/archive/2011/03/01/345426.html</guid><wfw:comment>http://www.blogjava.net/ywjr/comments/345426.html</wfw:comment><comments>http://www.blogjava.net/ywjr/archive/2011/03/01/345426.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywjr/comments/commentRss/345426.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywjr/services/trackbacks/345426.html</trackback:ping><description><![CDATA[<br />
转自<br />
http://qa.taobao.com/?p=9015<br />
<br />
<strong>静态检查</strong>:静态测试包括代码检查、静态结构分析、代码质量度量等。它可以由人<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 工进行，充分发挥人的逻辑思维优势，也可以借助软件工具自动进行。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 代码检查代码检查包括代码走查、桌面检查、代码审查等，主要检查代码和<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 设计的一致性， 代码对标准的遵循、可读性，代码的逻辑表达的正确性，代<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 码结构的合理性等方面；可以发现违背程序编写标准的问题，程序中不安全、<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 不明确和模糊的部分，找出程序中不可移植部分、违背程序编程风格的问题，<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 包括变量检查、命名和类型审查、程序逻辑审查、程序语法检查和程序结构<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 检查等内容。&#8221;。看了一系列的静态代码扫描或者叫静态代码分析工具后，<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 总结对工具的看法：静态代码扫描工具，和编译器的某些功能其实是很相似的，<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 他们也需要词法分析，语法分析，语意分析...但和编译器不一样的是他们可<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 以自定义各种各样的复杂的规则去对代码进行分析。<strong></strong><br />
<br />
<strong>静态检测工具</strong><strong>:</strong><br />
<ol>
    <li>PMD </li>
</ol>
<pre>     1)PMD是一个代码检查工具，它用于分析 Java 源代码，找出潜在的 问题：
1)潜在的bug：空的try/catch/finally/switch语句
2)未使用的代码：未使用的局部变量、参数、私有方法等
3)可选的代码：String/StringBuffer的滥用
4)复杂的表达式：不必须的if语句、可以使用while循环完成的for循环
5)重复的代码：拷贝/粘贴代码意味着拷贝/粘贴bugs
2)PMD特点：
1)与其他分析工具不同的是，PMD通过静态分析获知代码错误。也就是说，在
不运行Java程序的情况下报告错误。
2)PMD附带了许多可以直接使用的规则，利用这些规则可以找出Java源程序的许
多问题
3)用户还可以自己定义规则，检查Java代码是否符合某些特定的编码规范。
3)同时，PMD已经与JDeveloper、Eclipse、jEdit、JBuilder、<a href="http://bluej.org/index.html">BlueJ</a>、
CodeGuide、NetBeans、Sun JavaStudio Enterprise/Creator、
IntelliJ IDEA、TextPad、Maven、Ant、Gel、JCreator以及Emacs
集成在一起。
4)PMD规则是可以定制的: 可用的规则并不仅限于内置规则。您可以添加新规则：
可以通过编写 Java 代码并重新编译 PDM，或者更简单些，编写 XPath 表
达式，它会针对每个 Java 类的抽象语法树进行处理。
5)只使用PDM内置规则，PMD 也可以找到你代码中的一些真正问题。某些问题可能
很小，但有些问题则可能很大。PMD 不可能找到每个 bug，你仍然需要做单元测
试和接受测试，在查找已知 bug 时，即使是 PMD 也无法替代一个好的调试器。
但是，PMD 确实可以帮助你发现未知的问题。
</pre>
<ol>
    <li>FindBugs </li>
</ol>
<pre>     1)FindBugs是一个开源的静态代码分析工具，基于LGPL开源协议，无需
运行就能对代码进行分析的工具。不注重style及format，注重检测真正
的bug及潜在的性能问题&nbsp;，尤其注意了尽可能抑制误检测(false positives)
的发生。以bytecode（*.class、*.jar）为对象进行检查。除了单独动作，还可
以用作Eclipse 的plug-in，以及嵌入Ant作为task之一 进行利用。
2)findbugs自带检测器的介绍:&nbsp; findbugs自带60余种Bad practice，80余种
Correntness，1种Internationalization，12种Malicious code
vulnerability，27种Multithreaded correntness，23种Performance，
43种Dodgy。
3)Findbugs的一些特点：
1)FindBugs主要着眼于寻找代码中的缺陷，这就与其他类似工具有些区别了，
直接操作类文件（class文件）而不是源代码。
2)FindBugs可以通过命令行、各种构建工具（如Ant、Maven等）、独立的
Swing GUI或是以Eclipse和NetBeans IDE插件的方式来运行。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
3)FindBugs输出结果既可以是XML的，也可以是文本形式的。
4)开发者可以通过多种方式来使用FindBugs，最常见的是在新编写模块的代码
分析以及对现有代码进行更大范围的分析。&nbsp;&nbsp;&nbsp;
5)不注重style及format，注重检测真正的bug及潜在的性能问题，
尤其注意了尽可能抑制误检测(false positives)的发生。&nbsp;&nbsp; &nbsp;
4)FindBugs可检测的bug pattern举例:
检测java programing中容易陷入的bug pattern，equals() 实现时的一般规约违反
Null pointer的参照 ，Method的返回值的check遗漏 ，初始化前field的访问，
Multi-thread的正确性， 同期化处理的矛盾， 无条件的wait()，&nbsp;&nbsp;Code的脆弱性 ，
可以变更的静态object ，内部数列参照的return等
</pre>
<ol>
    <li>Checkstyle </li>
</ol>
<pre>     1)定义： Checkstyle是一款检查Java程序源代码样式的工具。
2)特点：
1)它可以有效的帮助我们检视代码以便更好的遵循代码编写标准，特
别适用于小组开发时彼此间的样式规范和统一。
2)Checkstyle提供了高可配置性，以便适用于各种代码规范，所以
除了使用它提供的几种常见标准之外，你也可以定制自己的标准。
3)Checkstyle提供了支持大多数常见IDE的插件，大部分插件中就含有
最新的Checkstyle，就不用费心再部署一份了。
4)Checkstyle可以检查代码的很多方面，从传统观点看，它主要是用来
检查代码层面的，自从第三版以后，它的内部架构作了重大改变，很多
其它意图的检测加了进来，现在Checkstyle可以检查像类设计的问题，
重复代码，如锁的双重检查的bug模式。
3)CheckStyle的主要流程是：
1)对Java文件进行词法语法分析，生成语法树。
2)载入配置文件（checkstyle-metadata.xml以及自定义的配置文件）
register check事件。
3)按照深度优先遍历对语法树进行解析，按照注册的事件，在到达某些节点
( AST ) 时进行style检查（AST，A child-Sibling Tree，是语法
树中的某个节点，其类型在TokenTypes类中定义。）
4)我们所说的自定义Style的检查，就是在第二步设定的。
这里牵涉到一个叫<em>com.puppycrawl.tools.checkstyle.api.Check </em>的类，
我们通常需要重载其中的两个函数： <em>public int[] getDefaultTokens()</em>
<em>        </em>和<em>public void visitToken(DetailAST ast)</em>. 这两个函数的含义为，
在遍历语法树的过程中，每当到达<em>getDefaultTokens</em>函数所返回的AST类型，
程序就进入<em>visitToken</em>进行具体的检查和分析，即，真正的分析检查过程是在
<em>visitToken</em>中实现的。
</pre>
<ol>
    <li>Hammurapi </li>
</ol>
<pre>     1)定义： Hammurapi它是一个开源的代码审查/评审(review)工具。它可以帮助改进
Java代码的质量。它可以基于一套设计规范来分析代码库。当它碰到违反规
范的地方，会在报告中标识。就像Checkstyle一样，它与Ant无缝集成并且
由基于XML配置文件来驱动。
2)特点：
1)Hammurapi是用来强制代码设计规范的。
2)Hammurapi是一个遵循设计的工具，提供了自动而且一致的方式来实现设计规范，
因此使代码评审更加有效而轻松。
3)Hammurapi如何工作：
&nbsp;        Hammurapi这样的代码分析工具都带有语言分析器。语言分析器是一种输入
语言代码并输出抽象语法树的工具。这个树上的节点代表语言标识。例如，考
虑一下简单的算术表达式：3+4. 语言分析器会解析他成为一个如图5所示的语
法树。在这个树中，节点+代表操作符标识。节点3和4是操作数标识Hammurapi
使用ANTLR（另一个语言识别工具）作为语言分析器。然而ANTLR API是相当底层的。
为改善可用性，Hammurapi使用另一个API，基于ANTLR 的JSEL（Java源程序
工程类库），来访问抽象语法树。 一旦树构建完成，一种树遍历算法就被用来访
问树中每一个节点。每次访问到一个节点，一种回调机制（Visitor模式）被用来
提示相应的检查器。在这些回调方法中，检查器收集相关的信息来确定是否有违反
规范的地方存在。　　
</pre>
<ol>
    <li>Lint4j </li>
</ol>
<pre>     1)定义:Lint4J是一个针对Java的源代码分析工具，它可以对Java源码和字节
码进行静态分析，判断其中是否存在死锁、性能问题或者伸缩性问题。
它可以集成到任何IDE种或构建系统
2)特点：
1)检测代码语法规则
2)潜在的bug
3)检测编码模式对代码可读性及大小的影响
4)检测是否违反EJB规范
</pre>
<ol>
    <li>Sonar </li>
</ol>
<pre>     1)定义：代码质量管理工具Sonar提供了设计与架构度量。Sonar 2.0引入了
针对Java应用的设计分析、架构与面向对象的度量，Sonar 2.1可以
检测到未使用的方法以及对不建议使用方法的调用。是一个集成了
CheckStyle,PMD,Findbugs的代码校验规则 ,重复代码发现，
代码测试覆盖率， 代码注释率，及所有的检测率变化追踪的完美
代码质量检查工具。它包含了代码质量检测的七个方面，如下图
2)特点：
&nbsp;       1)代码覆盖：通过单元测试，将会显示哪行代码被选中。
2)改善编码规则。
3)搜寻编码规则：按照名字，插件，激活级别和类别进行查询。
4)项目搜寻：按照项目的名字进行查询。
5)对比数据：比较同一张表中的任何测量的趋势。
6)单元测试
3)Sonar2.1：
Sonar还基于Squid引入了一个全新的规则引擎、Sonar解析器既可以处
理源代码，也可以处理字节码，解析器带有内建的规则，可以检测未使用
的私有与保护方法以及客户端对不建议使用的方法的调用。
Squid通过分析应用源代码、Java API和外部程序库
的字节码来决定哪些方法、类和属性是不建议使用的。
Sonar 2.1的<a title="新特性" href="http://www.sonarsource.org/sonar-2-1-in-screenshots/">新特性</a>：
1)一个全新的&#8220;<a href="http://docs.codehaus.org/display/SONAR/Managing+libraries">Libraries</a>&#8221;页面，显示了项目中所有的程序库和依赖，该特性要求使用
<a href="http://maven.apache.org/">Maven</a>来构建项目。
一旦在Sonar站点的主页上选择了一个项目，该服务就会以
可视化的树形结构展示出项目依赖。此外，还有一个可选的
动态过滤器，可以根据名称过滤程序库以便在应用的依赖间导航。
2)用于搜索程序库使用情况的&#8220;Dependencies&#8221;页面。比如说，可以
搜索到使用了第三方框架如Commons Logging 1.1的所有项目。
3)可以使用各种<a title="插件" href="http://docs.codehaus.org/display/SONAR/Sonar+Plugin+Library">插件</a>扩展Sonar的功能。现在有一个全新的
&#8220;System Info&#8221;页面显示了系统属性、已装插件和Java虚拟机内存
统计信息。该页面还给出了关于Sonar配置和数据库统计的详细信息。
4)一个用于管理已装插件和系统信息的管理控制台。
最新版的Sonar为这些插件引入了一个测试框架和一个客户化的Maven
生命周期管理工具。它还带有一个用于集成项目事件的
Web Service并在项目的size widget中增加了一个新的度量模块。
</pre>
<ol>
    <li>JDepend </li>
</ol>
<pre>     1)JDepend一个开放源代码的可以用来评价Java程序质量的优秀工具，
它遍历Java class的文件目录，以Java包（package）为
单位，为每一个包/类自动生成 包的依赖程度，稳定性，可靠度等
的评价报告，根据这些报告，我们可以得到包或类之间的依赖关
系，并分析出包的稳定程度，抽象程度，是否存在循环依耐关系等 。
可以根据JDepend给出的报告数据，分析出我们的包是否是
可靠的，稳定的，健壮的包，是否符合面向对象的设计原则。
2)特点：
1)评价设计质量
2)翻转依赖性
3)支持并行开发和极限编程
4)独立的发布模块
5)识别package的循环依赖
3）Depend生成的Java包的质量评价报告主要包括：&nbsp;&nbsp;&nbsp;&nbsp;
1)Number of Classes and Interfaces：实现类与抽象接口的数目
2)Abstractness (A)：包的抽象度。指一个包内包含的抽象类或接口
占整个包中的类的比重。
3)Afferent Couplings (Ca)：向心耦合。依赖该包（包含的类）的外
部包（类）的数目（i.e. incoming dependencies），该数值越大，
说明该包的担当的职责越大，也就越稳定。
4)Efferent Couplings (Ce)：离心耦合。被该包依赖的外部包的数目
（i.e. outgoing dependencies），该数值越大， 说明该包越不独
立（因为依赖了别的包），也越不稳定。
5)Instability (I)：衡量一个包的不稳定程度。I=Ce/(Ce+Ca)。它的值处于
[0，1]之间。I=0时说明包是最稳定的，反之I=1则说明包极不稳定。
6)Distance from the Main Sequence (D)： 该指标主要用来评价包的抽象
程度与稳定程度的平衡关系，它可以用二维直线图 A + I = 1 来表示。
7)Package Dependency Cycles：包的循环依赖度。
8.&nbsp; IBM Checking Tool for Bugs Errors and Mistakes(简称BEAM)
1) 定义：是 IBM 开发的一个静态分析工具，可以用于分析并查找出 C, C++ 和 Java
代码中的一些不容易发现的潜在错误，从而达到提高代码质量的目的。同动态
分析工具和其它静态分析工具相比，它拥有一些可贵的特性。
2)特点：
1)对代码进行语法扫描，通过算法对代码进行检查分析
2)和一些 bug 模式进行比较，最终标明问题区域，输出分析结果
3)使用了额外的定理证明（theorem proving）技术来判断一个潜在的错误是否
是真正的错误，从而减轻了程序员判断错误真伪所需的工作量
&nbsp;<strong>9.&nbsp;</strong><strong>LDRA Testbed&nbsp; </strong>
1)定义：LDRA Testbed为应用软件的确认和验证提供强大的源代码测试和分析功能，
是独特的质量控制工具。 它有助于提高计算机软件必需的可靠性，健壮性和尽
可能的零缺陷，它的使用带来时间、成本和效率上真实的节省，这些都是无法衡
量其价值的。它是强大和完整的集成工具包，使先进的软件分析技术应用在开发生
命周期的关键阶段。
2)LDRA Testbed提供强大的分析功能，用于两个主要的测试领域，静态分析和动态分析。
1）静态分析： 分析代码，并且提供对代码结构的理解。
2）动态分析： 利用源代码的插装版本，使用测试数据执行，在运行时发现软件
缺陷
3) 使用LDRA testbed 的好处
软件开发和测试过程的成本效率分析工具
单元、集成和系统测试的理想工具&nbsp;
贯穿于软件开发的整个生命周期
LDRA Testbed应用于许多不同的领域&nbsp;
过程改进
软件测试
软件维护
LDRA Testbed的优点：
改进软件质量
定位软件缺陷
强制执行工业标准
减少维护费用40％以上
减少开发和测试成本75％以上
通过自动化过程提高员工动力
10.&nbsp; &nbsp;Yasca&nbsp;
1) 定义：yasca是一个开源静态代码分析工具插件框架,　集成流行的多语言静态分析工
具如findbugs/pmd/jlint/rats/cppcheck,由于插件本身多样故可支持java
c++等语言静态分析.Yasca是一个用来寻找安全漏洞，在程序的源代码中检测代
码质量、性能以及一致性的软件。它集成了其他开源项目，其中包括FindBugs
PMD ，JLint ， Cppcheck ，并扫描某些文件类型，以及自定义扫描书面的
Yasca 这是一个命令行工具，与报告中生成的HTML ， CSV格式， XML的，的
SQLite ，和其他格式。
</pre>
<br />
<img src ="http://www.blogjava.net/ywjr/aggbug/345426.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywjr/" target="_blank">河马虎</a> 2011-03-01 17:12 <a href="http://www.blogjava.net/ywjr/archive/2011/03/01/345426.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Servlet 工作原理解析</title><link>http://www.blogjava.net/ywjr/archive/2011/02/26/345224.html</link><dc:creator>河马虎</dc:creator><author>河马虎</author><pubDate>Sat, 26 Feb 2011 01:47:00 GMT</pubDate><guid>http://www.blogjava.net/ywjr/archive/2011/02/26/345224.html</guid><wfw:comment>http://www.blogjava.net/ywjr/comments/345224.html</wfw:comment><comments>http://www.blogjava.net/ywjr/archive/2011/02/26/345224.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywjr/comments/commentRss/345224.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywjr/services/trackbacks/345224.html</trackback:ping><description><![CDATA[Servlet 工作原理解析<br />
http://www.ibm.com/developerworks/cn/java/j-lo-servlet/<br />
<img src ="http://www.blogjava.net/ywjr/aggbug/345224.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywjr/" target="_blank">河马虎</a> 2011-02-26 09:47 <a href="http://www.blogjava.net/ywjr/archive/2011/02/26/345224.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA操作WORD  EXECEL  PDF等文档</title><link>http://www.blogjava.net/ywjr/archive/2011/01/07/342489.html</link><dc:creator>河马虎</dc:creator><author>河马虎</author><pubDate>Fri, 07 Jan 2011 02:47:00 GMT</pubDate><guid>http://www.blogjava.net/ywjr/archive/2011/01/07/342489.html</guid><wfw:comment>http://www.blogjava.net/ywjr/comments/342489.html</wfw:comment><comments>http://www.blogjava.net/ywjr/archive/2011/01/07/342489.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywjr/comments/commentRss/342489.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywjr/services/trackbacks/342489.html</trackback:ping><description><![CDATA[　<a href="http://danadler.com/jacob/">http://danadler.com/jacob/</a><br />
　　<a href="http://jakarta.apache.org/poi/">http://jakarta.apache.org/poi/</a><br />
　　<a href="http://www.onjava.com/pub/a/onjava/2003/01/22/poi.html">http://www.onjava.com/pub/a/onjava/2003/01/22/poi.html</a><br />
　　<a href="http://www.csdn.net/develop/article/15/15311.shtm">http://www.csdn.net/develop/article/15/15311.shtm</a><br />
　　<a href="http://forum.java.sun.com/thread.jsp?forum=40&amp;thread=382666&amp;tstart=0&amp;trange=15">http://forum.java.sun.com/thread.jsp?forum=40&amp;thread=382666&amp;tstart=0&amp;trange=15</a>
<p>　　Java Excel API 文档 </p>
<p>　　<a href="http://www.andykhan.com/jexcelapi/">http://www.andykhan.com/jexcelapi/</a> </p>
<img src ="http://www.blogjava.net/ywjr/aggbug/342489.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywjr/" target="_blank">河马虎</a> 2011-01-07 10:47 <a href="http://www.blogjava.net/ywjr/archive/2011/01/07/342489.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java 基础知识</title><link>http://www.blogjava.net/ywjr/archive/2010/10/20/335710.html</link><dc:creator>河马虎</dc:creator><author>河马虎</author><pubDate>Wed, 20 Oct 2010 09:35:00 GMT</pubDate><guid>http://www.blogjava.net/ywjr/archive/2010/10/20/335710.html</guid><wfw:comment>http://www.blogjava.net/ywjr/comments/335710.html</wfw:comment><comments>http://www.blogjava.net/ywjr/archive/2010/10/20/335710.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywjr/comments/commentRss/335710.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywjr/services/trackbacks/335710.html</trackback:ping><description><![CDATA[struts是一个很好的开源项目，它所涉及到的技术在这个页面基本列出。也是java的基本技术。<br />
<br />
http://struts.apache.org/primer.html
<img src ="http://www.blogjava.net/ywjr/aggbug/335710.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywjr/" target="_blank">河马虎</a> 2010-10-20 17:35 <a href="http://www.blogjava.net/ywjr/archive/2010/10/20/335710.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java jdk  &amp; java api 帮助文档（中文、英文版）</title><link>http://www.blogjava.net/ywjr/archive/2010/06/17/323680.html</link><dc:creator>河马虎</dc:creator><author>河马虎</author><pubDate>Thu, 17 Jun 2010 00:53:00 GMT</pubDate><guid>http://www.blogjava.net/ywjr/archive/2010/06/17/323680.html</guid><wfw:comment>http://www.blogjava.net/ywjr/comments/323680.html</wfw:comment><comments>http://www.blogjava.net/ywjr/archive/2010/06/17/323680.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywjr/comments/commentRss/323680.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywjr/services/trackbacks/323680.html</trackback:ping><description><![CDATA[<p>&nbsp; java api 帮助文档 chm 1.5 1.6 中文版英文版. 收藏 <br />
Sun 公司提供的Java API Docs是学习和使用Java语言中最经常使用的参考资料之一。但是长期以来此文档只有英文版，对于中国地区的Java开发者来说相当的不便。目前Sun 公司正在组织多方力量将此文档翻译成中文，并于2005年10月31日在Sun 中国技术社区（http://gceclub.sun.com.cn/）正式发布第一批中文版Java API文档（包括java.lang和java.util类库API 文档的中文版）。经过将近10个月的努力，目前我们已经将Java SE 5.0的全部API文档中文化。开发人员可以通过Sun 中国技术社区的网站在线浏览相关文档，也可以将全部文档下载到本地以方便检索和使用。 <br />
J2SE DK &amp; API下载<br />
-------------------------<br />
http://java.sun.com/j2se/1.3/download.html<br />
http://java.sun.com/j2se/1.4.2/download.html<br />
http://java.sun.com/javase/downloads/index_jdk5.jsp<br />
http://java.sun.com/javase/downloads/index.jsp<br />
J2EE DK &amp; API下载&nbsp; <br />
-------------------------<br />
http://java.sun.com/j2ee/1.3/index.jsp<br />
http://java.sun.com/j2ee/1.3/download.html<br />
http://java.sun.com/j2ee/1.4/index.jsp<br />
http://java.sun.com/j2ee/1.4/download.html<br />
http://java.sun.com/javaee/downloads/index.jsp<br />
JDK1.6API中文版（全）<br />
-------------------------<br />
* HTML 格式(在线英文) http://java.sun.com/javase/6/docs/<br />
* HTML 格式(在线中文) http://download.java.net/jdk/jdk-api-localizations/jdk-api-zh-cn/publish/1.6.0/html/zh_CN/api/index.html<br />
* zip 格式(中文) http://download.java.net/jdk/jdk-api-localizations/jdk-api-zh-cn/publish/1.6.0/html_zh_CN.zip<br />
* CHM 格式(中文)&nbsp; http://download.java.net/jdk/jdk-api-localizations/jdk-api-zh-cn/publish/1.6.0/chm/JDK_API_1_6_zh_CN.CHM</p>
<p>JDK1.5API中文版（全）<br />
-------------------------<br />
* HTML 格式(在线英文) http://java.sun.com/javase/5/docs/<br />
* HTML 格式(在线中文)&nbsp; http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/index.html<br />
* zip 格式(中文) http://gceclub.sun.com.cn/Java_Docs/html_zh_CN.zip<br />
* CHM 格式(中文) http://download.java.net/jdk/jdk-api-localizations/jdk-api-zh-cn/builds/JDK_API_1_5_zh_CN.CHM</p>
<p>相关网站<br />
-------------------------<br />
http://java.sun.com<br />
http://gceclub.sun.com.cn/<br />
http://developers.sun.com/downloads/<br />
http://java.sun.com/javaee/downloads/<br />
http://java.sun.com/javase/downloads/<br />
http://www.netbeans.info/downloads/ <br />
&nbsp; </p>
<p>本文来自CSDN博客，转载请标明出处：http://blog.csdn.net/zhsp1029/archive/2008/04/05/2253865.aspx</p>
<img src ="http://www.blogjava.net/ywjr/aggbug/323680.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywjr/" target="_blank">河马虎</a> 2010-06-17 08:53 <a href="http://www.blogjava.net/ywjr/archive/2010/06/17/323680.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java 类加载器</title><link>http://www.blogjava.net/ywjr/archive/2010/06/09/323180.html</link><dc:creator>河马虎</dc:creator><author>河马虎</author><pubDate>Wed, 09 Jun 2010 09:27:00 GMT</pubDate><guid>http://www.blogjava.net/ywjr/archive/2010/06/09/323180.html</guid><wfw:comment>http://www.blogjava.net/ywjr/comments/323180.html</wfw:comment><comments>http://www.blogjava.net/ywjr/archive/2010/06/09/323180.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywjr/comments/commentRss/323180.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywjr/services/trackbacks/323180.html</trackback:ping><description><![CDATA[类加载器（class loader）是 Java&#8482; 中的一个很重要的概念。类加载器负责加载 Java 类的字节代码到 Java 虚拟机中。<br />
<br />
http://www.ibm.com/developerworks/cn/java/j-lo-classloader/index.html<br />
<br />
<img src ="http://www.blogjava.net/ywjr/aggbug/323180.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywjr/" target="_blank">河马虎</a> 2010-06-09 17:27 <a href="http://www.blogjava.net/ywjr/archive/2010/06/09/323180.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解</title><link>http://www.blogjava.net/ywjr/archive/2010/06/02/322591.html</link><dc:creator>河马虎</dc:creator><author>河马虎</author><pubDate>Wed, 02 Jun 2010 09:03:00 GMT</pubDate><guid>http://www.blogjava.net/ywjr/archive/2010/06/02/322591.html</guid><wfw:comment>http://www.blogjava.net/ywjr/comments/322591.html</wfw:comment><comments>http://www.blogjava.net/ywjr/archive/2010/06/02/322591.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywjr/comments/commentRss/322591.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywjr/services/trackbacks/322591.html</trackback:ping><description><![CDATA[Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解<br />
http://bolo.blogjava.net/
 <img src ="http://www.blogjava.net/ywjr/aggbug/322591.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywjr/" target="_blank">河马虎</a> 2010-06-02 17:03 <a href="http://www.blogjava.net/ywjr/archive/2010/06/02/322591.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>依赖注入DI</title><link>http://www.blogjava.net/ywjr/archive/2010/05/27/322017.html</link><dc:creator>河马虎</dc:creator><author>河马虎</author><pubDate>Thu, 27 May 2010 05:32:00 GMT</pubDate><guid>http://www.blogjava.net/ywjr/archive/2010/05/27/322017.html</guid><wfw:comment>http://www.blogjava.net/ywjr/comments/322017.html</wfw:comment><comments>http://www.blogjava.net/ywjr/archive/2010/05/27/322017.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywjr/comments/commentRss/322017.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywjr/services/trackbacks/322017.html</trackback:ping><description><![CDATA[<span style="background-color: yellow"><span style="background-color: #ffffff"><a class="postTitle2" id="ctl04_TitleUrl" href="http://www.cnblogs.com/xingyukun/archive/2007/10/20/931331.html">什么是依赖注入<br />
http://blog.csdn.net/taijianyu/archive/2008/04/28/2338311.aspx<br />
<br />
<br />
深度理解依赖注入（Dependence Injection）</a><a class="postTitle2" id="ctl04_TitleUrl" href="http://www.cnblogs.com/xingyukun/archive/2007/10/20/931331.html"> <br />
http://www.cnblogs.com/xingyukun/archive/2007/10/20/931331.html</a></span><br />
<br />
Inversion of Control Containers and the Dependency Injection pattern<br />
http://www.martinfowler.com/articles/injection.html<br />
<br />
<a class="postTitle2" id="ctl04_TitleUrl" href="http://www.cnblogs.com/xingyukun/archive/2007/10/20/931331.html"><br />
<br />
</span></a>
<img src ="http://www.blogjava.net/ywjr/aggbug/322017.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywjr/" target="_blank">河马虎</a> 2010-05-27 13:32 <a href="http://www.blogjava.net/ywjr/archive/2010/05/27/322017.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>J2EE Patterns Catalog</title><link>http://www.blogjava.net/ywjr/archive/2010/04/26/319393.html</link><dc:creator>河马虎</dc:creator><author>河马虎</author><pubDate>Mon, 26 Apr 2010 07:31:00 GMT</pubDate><guid>http://www.blogjava.net/ywjr/archive/2010/04/26/319393.html</guid><wfw:comment>http://www.blogjava.net/ywjr/comments/319393.html</wfw:comment><comments>http://www.blogjava.net/ywjr/archive/2010/04/26/319393.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywjr/comments/commentRss/319393.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywjr/services/trackbacks/319393.html</trackback:ping><description><![CDATA[从J2EE蓝图模式分类<a href="http://java.sun.com/blueprints/patterns/catalog.html">http://java.sun.com/blueprints/patterns/catalog.html</a>中就可以很清楚的看到J2EE这样一个框架软件的架构与设计模式的关系
<img src ="http://www.blogjava.net/ywjr/aggbug/319393.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywjr/" target="_blank">河马虎</a> 2010-04-26 15:31 <a href="http://www.blogjava.net/ywjr/archive/2010/04/26/319393.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Robert Eckstein  blog</title><link>http://www.blogjava.net/ywjr/archive/2010/01/15/309654.html</link><dc:creator>河马虎</dc:creator><author>河马虎</author><pubDate>Fri, 15 Jan 2010 03:19:00 GMT</pubDate><guid>http://www.blogjava.net/ywjr/archive/2010/01/15/309654.html</guid><wfw:comment>http://www.blogjava.net/ywjr/comments/309654.html</wfw:comment><comments>http://www.blogjava.net/ywjr/archive/2010/01/15/309654.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywjr/comments/commentRss/309654.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywjr/services/trackbacks/309654.html</trackback:ping><description><![CDATA[<br />
Robert Eckstein&nbsp; blog&nbsp;(&nbsp; mvc)<br />
<br />
http://www.java.net/blog/105271
<img src ="http://www.blogjava.net/ywjr/aggbug/309654.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywjr/" target="_blank">河马虎</a> 2010-01-15 11:19 <a href="http://www.blogjava.net/ywjr/archive/2010/01/15/309654.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MVC   </title><link>http://www.blogjava.net/ywjr/archive/2010/01/14/309459.html</link><dc:creator>河马虎</dc:creator><author>河马虎</author><pubDate>Thu, 14 Jan 2010 07:04:00 GMT</pubDate><guid>http://www.blogjava.net/ywjr/archive/2010/01/14/309459.html</guid><wfw:comment>http://www.blogjava.net/ywjr/comments/309459.html</wfw:comment><comments>http://www.blogjava.net/ywjr/archive/2010/01/14/309459.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywjr/comments/commentRss/309459.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywjr/services/trackbacks/309459.html</trackback:ping><description><![CDATA[<li><strong>Model</strong> - The model represents <u>data and the rules</u> that govern access to and updates of this data. In enterprise software, a model often serves as a software approximation of a real-world process.
<li><strong>View</strong> - The view <u>renders the contents of a model</u>. It specifies exactly how the model data should be presented. If the model data changes, the view must update its presentation as needed. This can be achieved by using a <em>push model</em>, in which the view registers itself with the model for change notifications, or a <em>pull model</em>, in which the view is responsible for calling the model when it needs to retrieve the most current data.
<li><strong>Controller</strong> - The controller <u>translates the user's interactions with the view into actions</u> that the model will perform. In a stand-alone GUI client, user interactions could be button clicks or menu selections, whereas in an enterprise web application, they appear as <code>GET</code> and <code>POST</code> HTTP requests. Depending on the context, a controller may also select a new view -- for example, a web page of results -- to present back to the user. <br />
<br />
1&nbsp; &nbsp;MVC explain&nbsp; from Sun<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://java.sun.com/blueprints/patterns/MVC-detailed.html">http://java.sun.com/blueprints/patterns/MVC-detailed.html</a><br />
2&nbsp; Java SE Application Design With MVC<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://java.sun.com/developer/technicalArticles/javase/mvc/">http://java.sun.com/developer/technicalArticles/javase/mvc/</a><br />
3&nbsp; Applying MVC<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://www.javadude.com/articles/vaddmvc1/mvc1.htm">http://www.javadude.com/articles/vaddmvc1/mvc1.htm</a><br />
4&nbsp;&nbsp; good &nbsp;sample<br />
&nbsp;&nbsp; &nbsp;&nbsp; <a href="http://leepoint.net/notes-java/GUI/structure/40mvc.html">http://leepoint.net/notes-java/GUI/structure/40mvc.html</a></li>
<p>5&nbsp; MVC design<br />
&nbsp;&nbsp;&nbsp; <a href="http://javadude.com/articles/index.html">http://javadude.com/articles/index.html</a><br />
<br />
<br />
</p>
<img src ="http://www.blogjava.net/ywjr/aggbug/309459.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywjr/" target="_blank">河马虎</a> 2010-01-14 15:04 <a href="http://www.blogjava.net/ywjr/archive/2010/01/14/309459.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用JAVA实现捕获和发送网络数据包</title><link>http://www.blogjava.net/ywjr/archive/2009/10/27/299859.html</link><dc:creator>河马虎</dc:creator><author>河马虎</author><pubDate>Tue, 27 Oct 2009 00:35:00 GMT</pubDate><guid>http://www.blogjava.net/ywjr/archive/2009/10/27/299859.html</guid><wfw:comment>http://www.blogjava.net/ywjr/comments/299859.html</wfw:comment><comments>http://www.blogjava.net/ywjr/archive/2009/10/27/299859.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ywjr/comments/commentRss/299859.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ywjr/services/trackbacks/299859.html</trackback:ping><description><![CDATA[<p style="margin-left: 40px">Jpcap is a Java library for capturing and sending network packets.</p>
<p style="margin-left: 40px">Using Jpcap, you can develop&nbsp;applications to capture&nbsp;packets from a network interface and visualize/analyze them in Java. You can also develop Java applications to send arbitrary packets through a network interface.</p>
<p><br />
jpcap&nbsp;&nbsp; home page：<br />
http://netresearch.ics.uci.edu/kfujii/jpcap/doc/samples.html</p>
 <img src ="http://www.blogjava.net/ywjr/aggbug/299859.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ywjr/" target="_blank">河马虎</a> 2009-10-27 08:35 <a href="http://www.blogjava.net/ywjr/archive/2009/10/27/299859.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>