<?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-study-文章分类-JAVA相关</title><link>http://www.blogjava.net/xixidabao/category/10247.html</link><description>GROW WITH JAVA</description><language>zh-cn</language><lastBuildDate>Fri, 28 Sep 2007 06:05:55 GMT</lastBuildDate><pubDate>Fri, 28 Sep 2007 06:05:55 GMT</pubDate><ttl>60</ttl><item><title>ERP的过去、现在与未来</title><link>http://www.blogjava.net/xixidabao/articles/148962.html</link><dc:creator>JAVA之路</dc:creator><author>JAVA之路</author><pubDate>Fri, 28 Sep 2007 01:42:00 GMT</pubDate><guid>http://www.blogjava.net/xixidabao/articles/148962.html</guid><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 一、概述&nbsp;企业信息化建设在我们国家已经走到了相当被重视的阶段，而ERP又是企业信息化建设的重要解决方案，所以下面我们来谈谈ERP的过去、现在与未来。&nbsp;&nbsp;众所周知，ERP是Enterprise Resource Planning的缩写，即企业资源计划，它是由最初的MRP（物料需求计划）、MRP-II (制造资源计划)逐渐发展而来的。90年代初...&nbsp;&nbsp;<a href='http://www.blogjava.net/xixidabao/articles/148962.html'>阅读全文</a><img src ="http://www.blogjava.net/xixidabao/aggbug/148962.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xixidabao/" target="_blank">JAVA之路</a> 2007-09-28 09:42 <a href="http://www.blogjava.net/xixidabao/articles/148962.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ERP介绍</title><link>http://www.blogjava.net/xixidabao/articles/147537.html</link><dc:creator>JAVA之路</dc:creator><author>JAVA之路</author><pubDate>Sun, 23 Sep 2007 04:25:00 GMT</pubDate><guid>http://www.blogjava.net/xixidabao/articles/147537.html</guid><description><![CDATA[<div class="sysBr500 text" align="left"><font size="2"><strong><font size="3"><font size="4">ERP介绍</font><br />
</font></strong>ERP（企业资源管理计划）——Enterprise Resources Plannig，是在先进的企业管理思想的基础上，应用信息技术实现对整个企业资源的一体化管理。ERP是一种可以提供跨地区、跨部门、甚至跨公司整合实时信息的企业管理信息系统。它在企业资源最优化配置的前提下，整合企业内部主要或所有的经营活动，包括财务会计、管理会计、生产计划及管理、物料管理、销售与分销等主要功能模块，以达到效率化经营的目标。<br />
ERP自90年代后期从美国传入，为我国的企业体制改革注入的新的活力，ERP已成为大型现代企业管理中不可或缺的有力管理工具，是企业现代化和信息化程度的重要标志。ERP项目是一个企业管理系统工程，而不是一般意义上的企业管理信息系统工程或者是企业信息化建设工程，这是因为整个管理系统不但基于ERP、系统工程和信息技术等现代科学技术的思想、原理和方法，而且还从本质上充分地体现了企业应用ERP与开展企业管理创新、推进企业管理现代化和提高企业竞争力的必然关系。<br />
1、销售：销售部门接客户采购计划，根据客户要求，查看是否有库存，有——即给客户发货；无——即下生产任务给生产部门，要求安排生产；待成品机器完工后，即可给客户发货。<br />
2、生产：生产部门接销售部任务，向生产车间下达生产任务，可依据库存，向采购部门请购有关零部件。完工后，入库供销售部发货。<br />
3、采购：采购部门依据所接请购任务和库存情况，向材料供应商采购料品。<br />
4、库存：仓库根据零部件的安全库存量向采购部门请购零部件。依据生产车间的生产领单给车间发料。</font></div>
<div class="sysBr500 text" align="left"><font size="2">5、财务：进行成本计算。</font></div>
<div class="sysBr500 text" align="left"><font size="2">经常有学生问我什么是ERP,简单地讲ERP就是企业资源计划系统.ERP是由美国著名的计算机技术咨询和评估集团Garter Group 公司提出的一整套企业管理系统体系标准，是指建立在信息技术基础上，以提高企业资源效能为系统思想，为企业提供业务集成运行中的资源管理方案。<br />
什么是ERP,ERP的科学定义是:ERP ─Enterprise Resource Planning 企业资源计划系统,是指建立在信息技术基础上,以系统化的管理思想,为企业决策层及员工提供决策运行手段的管理平台。<br />
ERP 不仅仅是一个软件,更重要的是一个管理思想,它实现了企业内部资源和企业相关的外<br />
部资源的整合。通过软件把企业的人、财、物、产、供、销及相应的物流、信息流、资金流、管理流、增值流等紧密地集成起来,实现资源优化和共享,这就是ERP。<br />
了解什么是erp后,我们再年看看中国企业ERP的历史在中国,企业信息化和ERP 应用已经风风雨雨渡过了二十多年,从1981 年沈阳第一机床厂从德国工程师协会引进了第一套MRP Ⅱ软件的时候,没有几个人知道什么是erp.两十几年来,ERP 在中国的应用与推广经历了从起步、索到逐渐成熟的风雨历程。早在1986 以前,绝大多数的中国企业都不知道什么是ERP ,大约在1985 年到1990 年的时候,许多管理专家、学者包括中国的企业家就开始研究国际上先进的管理模式是什么样的,应该如何来帮助中国企业提高管理竞争力,这期间诞生了一些ERP 应用的试点企业。到了90 年代,全球许多著名的ERP 厂商纷纷涌进中国市场,有更多<br />
的企业试用或购买了ERP 产品。但令我们失望的是,ERP 在中国企业的成功率并不是很高,这样的结果对中国企业打击很大,以致到现在还有很多的企业心有余悸,不敢上马ERP 应用。</font> </div>
<p class="sysBr500 text" align="left"><font size="2">伴随着WTO 的加入以及企业信息化的飞速进展，ERP 在中国也进入广泛普及阶段，越来越多的人知道了什么是erp.erp应用更加务实、业务范围更加广泛、涉及的业务深度逐渐加强的ERP 正为广大的中国企业所期盼。<br />
然而，目前国内的ERP 应用并不尽如人意，就整体而言，我国在应用ERP 上呈现出不平衡的发展趋势。各个企业差距较大，能够真正成功地全面实施ERP 管理系统的企业并不是很多。其原因在于：一、ERP业界对广大中国企业缺乏深入的理解，同时ERP成熟标准在我国缺乏深入实践，从而导致企业ERP 选型错乱，实施风险失控。二、一些软件厂商肆无忌惮地吹捧自己的产品，使得ERP 市场鱼目混珠，更直接导致了客户对ERP 产品的怀疑。<br />
一、落后的企业管理水平将严重制约ERP 的运用<br />
ERP 的发展是管理思想和计算机技术的结合体，从ERP 的产生历程来看，ERP 的成熟完全符合理论、实践、再理论到实践的过程。在20 多年的发展中，经过不断的实践管理理论的应用和创新，其系统内涵和基本模型已经十分清晰。而ERP的成熟不能只看这个软件本身的管理思想是多么的流行，更主要的是看ERP本身蕴涵的管理理论是不是在实际中已经得到了运用，在发达国家的成功运用证明了其思想是成功的。<br />
在我国，企业管理水平长期落后于信息化要求。很多企业存在基础数据不全，信息失真的问题。同时，大量企业尚未建立现代企业制度，企业内部对利用信息技术进行管理创新的动力不足，采用信息技术处于被动状态，普遍存在着信息管理机构不健全，信息管理制度不完善，执行力度不到位，现场管理不严格、不规范，信息设备利用率低等问题。这些问题的存在，将严重制约ERP 在我国的运用。<br />
二、企业纵向管理的不成熟将严重影响ERP 的运用<br />
ERP的运用为企业提高管理水平提供了更为广阔的空间。ERP应用具有范围扩展性，并逐渐形成针对行业的解决方案，来满足不同行业业务的特殊需求。而这一切成为现实的前提是，管理视角和管理高度的全面集成。尤其是，ERP 中财务系统应能实时收到来自所有业务过程、分析系统和交叉功能子系统的触发信息，并执行监控功能，敏捷做出快速决策。只有这样，才能使ERP 能更加综合的为企业运行进行支持和诊断。本文章什么是erp严禁抄袭.而我国企业目前在销售、采购、生产、财务等各环节严重脱节，是很常见的现象，尤其是成长较快的企业，脱节更为严重。如采购和生产之间的不协调经常造成停工待料；有时财务和销售环节的衔接不良，造成应收账款不能收清等现象。造成这种情况的原因在于，企业缺乏整体考虑，尤其体现在不能集成&#8220;三流&#8221;（资金流、物流、信息流），进而造成计划与控制不能统一，各部门业务不能协调等。这是ERP 在我国发展面临的第二个考验。<br />
三、ERP 软件生存周期的缺陷将严重制约ERP 的运用<br />
ERP 是综合应用了C/S 或者B/S 体系、关系数据库结构、面向对象技术、图形用户界面、第四代语言（4GL）、网络通讯等信息产业成果，以现代管理思想为灵魂的软件产品。ERP 成熟的产品应该具备实现数据完全按逻辑集成、提供业务流程模型、具有开发接口、可实现<br />
客户化配置等功能。技术和应用的完美结合应该是ERP成熟的一个表现，但是，我国ERP 软件目前存在的以下三个方面的问题将严重影响ERP 软件的生存周期，进而制约ERP 的运用。</font></p>
<img src ="http://www.blogjava.net/xixidabao/aggbug/147537.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xixidabao/" target="_blank">JAVA之路</a> 2007-09-23 12:25 <a href="http://www.blogjava.net/xixidabao/articles/147537.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ERP知识</title><link>http://www.blogjava.net/xixidabao/articles/147330.html</link><dc:creator>JAVA之路</dc:creator><author>JAVA之路</author><pubDate>Sat, 22 Sep 2007 02:44:00 GMT</pubDate><guid>http://www.blogjava.net/xixidabao/articles/147330.html</guid><description><![CDATA[<a href="http://www.amteam.org/" target="_blank">www.amteam.org</a> <br />
<a href="http://www.e-works.com.cn/" target="_blank">www.e-works.com.cn</a> <br />
其他还有很多,但是国内我认为这两个就足够了,资料也很全,前者还相对较权威. <br />
其他的网站我认为都是抄袭.(ERP行业咨询实施12年经验) <br />
<br />
ERP（企业资源计划）是一种企业管理的思想，强调对企业的内部甚至外部的资源进行优化配置、提高利用效率。 <br />
一个由 Gartner Group 开发的概念，描述下一代制造商业系统和制造资源计划（MRP II）软件。它将包含客户/服务架构，使用图形用户接口，应用开放系统制作。除了已有的标准功能，它还包括其它特性，如品质、过程运作管理、以及调整报告等。特别是，ERP采用的基础技术将同时给用户软件和硬件两方面的独立性从而更加容易升级。ERP的关键在于所有用户能够裁剪其应用，因而具有天然的易用性。 <br />
Gartner Group提出ERP具备的功能标准应包括四个方面: <br />
1.超越MRPⅡ范围的集成功能 <br />
包括质量管理;试验室管理;流程作业管理;配方管理;产品数据管理;维护管理;管制报告和仓库管理。 <br />
2.支持混合方式的制造环境 <br />
包括既可支持离散又可支持流程的制造环境;按照面向对象的业务模型组合业务过程的能力和国际范围内的应用。 <br />
3.支持能动的监控能力,提高业务绩效 <br />
包括在整个企业内采用控制和工程方法;模拟功能;决策支持和用于生产及分析的图形能力。 <br />
4.支持开放的客户机/服务器计算环境 <br />
包括客户机/服务器体系结构;图形用户界面(GUI);计算机辅助设计工程(CASE),面向对象技术;使用SQL对关系数据库查询;内部集成的工程系统、商业系统、数据采集和外部集成 (EDI)。 <br />
ERP是对MRPⅡ的超越,从本质上看,ERP仍然是以MRPⅡ为核心,但在功能和技术上却超越了传统的MRPⅡ,它是以顾客驱动的、基于时间的、面向整个供应链管理的企业资源计划。 <br />
<br />
一、ERP系统的管理思想 <br />
<br />
ERP的核心管理思想就是实现对整个供应链的有效管理，主要体现在以下三个方面： <br />
1、体现对整个供应链资源进行管理的思想 <br />
在知识经济时代仅靠自己企业的资源不可能有效地参与市场竞争，还必须把经营过程中的有关各方如供应商、制造工厂、分销网络、客户等纳入一个紧密的供应链中，才能有效地安排企业的产、供、销活动，满足企业利用全社会一切市场资源快速高效地进行生产经营的需求，以期进一步提高效率和在市场上获得竞争优势。换句话说，现代企业竞争不是单一企业与单一企业间的竞争，而是一个企业供应链与另一个企业供应链之间的竞争。ERP系统实现了对整个企业供应链的管理，适应了企业在知识经济时代市场竞争的需要。 <br />
2、体现精益生产、同步工程和敏捷制造的思想 <br />
ERP系统支持对混合型生产方式的管理，其管理思想表现在两个方面：其一是&#8220;精益生产LP（Lean Production）&#8221;的思想，它是由美国麻省理工学院（MIT）提出的一种企业经营战略体系。即企业按大批量生产方式组织生产时，把客户、销售代理商、供应商、协作单位纳入生产体系，企业同其销售代理、客户和供应商的关系，已不再简单地是业务往来关系，而是利益共享的合作伙伴关系，这种合作伙伴关系组成了一个企业的供应链，这即是精益生产的核心思想。其二是&#8220;敏捷制造（Agile Manufacturing）&#8221;的思想。当市场发生变化，企业遇有特定的市场和产品需求时，企业的基本合作伙伴不一定能满足新产品开发生产的要求，这时，企业会组织一个由特定的供应商和销售渠道组成的短期或一次性供应链，形成&#8220;虚拟工厂&#8221;，把供应和协作单位看成是企业的一个组成部分，运用&#8220;同步工程（SE）&#8221;，组织生产，用最短的时间将新产品打入市场，时刻保持产品的高质量、多样化和灵活性，这即是&#8220;敏捷制造&#8221;的核心思想。 <br />
3、体现事先计划与事中控制的思想 <br />
ERP系统中的计划体系主要包括：主生产计划、物料需求计划、能力计划、采购计划、销售执行计划、利润计划、财务预算和人力资源计划等，而且这些计划功能与价值控制功能已完全集成到整个供应链系统中。 <br />
另一方面，ERP系统通过定义事务处理（Transaction）相关的会计核算科目与核算方式，以便在事务处理发生的同时自动生成会计核算分录，保证了资金流与物流的同步记录和数据的一致性。从而实现了根据财务资金现状，可以追溯资金的来龙去脉，并进一步追溯所发生的相关业务活动，改变了资金信息滞后于物料信息的状况，便于实现事中控制和实时做出决策。 <br />
此外，计划、事务处理、控制与决策功能都在整个供应链的业务处理流程中实现，要求在每个流程业务处理过程中最大限度地发挥每个人的工作潜能与责任心，流程与流程之间则强调人与人之间的合作精神，以便在有机组织中充分发挥每个的主观能动性与潜能。实现企业管理从&#8220;高耸式&#8221;组织结构向&#8220;扁平式&#8221;组织机构的转变，提高企业对市场动态变化的响应速度。 <br />
总之，借助IT技术的飞速发展与应用，ERP系统得以将很多先进的管理思想变成现实中可实施应用的计算机软件系统。 <br />
<br />
二、应用ERP与企业的关系 <br />
<br />
ERP是借用一种新的管理模式来改造原企业旧的管理模式，是先进的、行之有效的管理思想和方法。ERP软件在实际的推广应用中，其应用深度和广度都不到位，多数企业的效果不显著，没有引起企业决策者的震动和人们的广泛关注。 <br />
1．实施ERP是企业管理全方位的变革 <br />
企业领导层应该首先是受教育者，其次才是现代管理理论的贯彻者和实施者，规范企业管理及其有关环节，使之成为领导者、管理层及员工自觉的行动，使现代管理意识扎根于企业中，成为企业文化的一部分。国外企业实施ERP 似乎没有讨论的余地，全盘接受，自觉性强。其实，办企业这样做是天经地义的，而我们还要等待思想提高，观念更新，有时还要避开锋芒，迁就陈腐，互相推诿。如果我们不坚决向这些陋习告别，这场全方位的变革就会反复、甚至夭折。 <br />
2．企业管理班子要取得共识 <br />
要眼睛向内，练好内功，做好管理的基础工作，这是任何再好的应用软件和软件供应商都无法提供的，只能靠自己勤勤恳恳地耕耘。把ERP的实施称为"第一把手工程"，这说明了企业的决策者在ERP实施过程中的特殊作用。ERP是一个管理系统，牵动全局，没有第一把手的参与和授权，很难调动全局。 <br />
3．ERP的投入是一个系统工程 <br />
ERP的投入和产出与其他固定资产设备的投入和产出比较，并不那么直观、浅显和明了，投入不可能马上得到回报，见到效益。ERP的投入是一个系统工程，并不能立竿见影，它所贯彻的主要是管理思想，这是企业管理中的一条红线。它长期起作用、创效益，在不断深化中向管理要效益。 <br />
此外，实施ERP还要因地制宜，因企业而别，具体问题具体分析。首先，要根据企业的具体需求上相应的系统，而不是笼统地都上小型机，或者不顾企业的规模上 WindowsNT，这样长期运作，对企业危害性极大。其次，这种投入不是一劳永逸的，由于技术的发展很快，随着工作的深入，企业会越来越感到资源的紧缺，因此，每年应有相应的投入，才能保证系统健康地运转。 <br />
4．ERP的实施需要复合型人才 <br />
他们既要懂计算机技术，又要懂管理。当前高校对复合型人才的培养远远满足不了企业的需求。复合型人才的培养需要有一个过程和一定的时间，但企业领导者常把这样不多的人才当作一般管理者，没有把他们当作是企业来之不易的财富，是一支重要的队伍。这与长期忽视管理有关，这些复合型人才在企业中的地位远远不及市场开拓人员和产品开发者，而是"辅助"角色，不是政策倾斜对象，这种因素是造成人才流失的重要原因。另外，当企业上ERP时，这些复合型人才起到了先导作用，而一旦管理进入常规，他们似乎又成为多余的人，这已成为必然规律。在人才市场上，复合型人才最为活跃，那些有眼力的企业家都会下功夫挖掘人才，而这也不利于实施队伍的稳定。 <br />
总之，条件具备的企业要不失时机地上ERP管理系统，不能只搞纯理论研究、再研究，长时间地考察。要首先整理好内部管理基本数据，选定或开发适合自己企业的ERP软件，条件成熟了就上。 <br />
<br />
三、ERP的风险及其预防 <br />
<br />
企业的条件无论多优越，所做的准备无论多充分，实施的风险仍然存在。在ERP系统的实施周期中，各种影响因素随时都可能发生变化。如何有效地管理和控制风险是保证ERP系统实施成功的重要环节之一。 <br />
ERP项目的风险 <br />
通常人们在考虑失败的因素时，一般着重于对实施过程中众多因素的分析，而往往忽视项目启动前和实施完成后ERP系统潜在的风险。对于ERP项目而言，风险存在于项目的全过程，包括项目规划、项目预准备、实施过程和系统运行。归纳起来，ERP项目的风险主要有以下几方面： <br />
1. 缺乏规划或规划不合理； <br />
2. 项目预准备不充分，表现为硬件选型及ERP软件选择错误； <br />
3. 实施过程控制不严格，阶段成果未达标； <br />
4. 设计流程缺乏有效的控制环节； <br />
5. 实施效果未做评估或评估不合理； <br />
6. 系统安全设计不完善，存在系统被非法入侵的隐患； <br />
7. 灾难防范措施不当或不完整，容易造成系统崩溃。 <br />
<br />
1．战略规划 <br />
企业是否存在一个五年的IT系统规划？随着社会的信息化，IT系统对于企业不仅是工具，更是技术手段。ERP作为IT系统的重要组成部分，服务于企业的长期规划，是长期规划的手段和保证。ERP的目标源于IT系统规划，是评价ERP系统成败的基本标准，应依据IT系统规划，明确ERP 系统的实施范围和实施内容。 <br />
2．项目预准备 <br />
确定硬件及网络方案、选择ERP系统和评估咨询合作伙伴是该阶段的三项主要任务，也是ERP系统实施的三大要素。硬件及网络方案直接影响系统的性能、运行的可靠性和稳定性；ERP系统功能的强弱决定企业需求的满足程度；咨询合作伙伴的工作能力和经验决定实施过程的质量及实施成效。 <br />
3．项目实施控制 <br />
在ERP系统实施中，通常采用项目管理技术对实施过程进行控制和管理。有效的实施控制表现在科学的实施计划、明确的阶段成果和严格的成果审核。不仅如此，有效的控制还表现在积极的协调和通畅的信息传递渠道。实施ERP 的组织机构包括：指导委员会、项目经理、外部咨询顾问、IT部门、职能部门的实施小组和职能部门的最终用户。部门之间协调和交流得好坏决定实施过程的工作质量和工作效率。目前，在企业缺乏合适的项目经理的条件下，这一风险尤其明显和严重。 <br />
4．业务流程控制 <br />
企业业务流程重组是在项目实施的设计阶段完成的。流程中的控制和监督环节保证ERP在正式运行后，各项业务处于有效的控制之中，避免企业遭受人为损失。设计控制环节时，要兼顾控制和效率。过多的控制环节和业务流程冗余势必降低工作效率。而控制环节不足又会有业务失控的风险。 <br />
5．项目实施效果 <br />
虽然项目评估是ERP实施过程的最后一个环节。但这并不意味着项目评估不重要。相反，项目评估的结果是ERP实施效果的直接反映。正确地评价实施成果，离不开清晰的实施目标、客观的评价标准和科学的评价方法。目前普遍存在着忽视项目评估的问题。忽视项目评估将带来实施小组不关心实施成果这一隐患。这正是ERP项目的巨大风险所在。 <br />
6．系统安全管理 <br />
系统安全包括：操作系统授权、网络设备权限、应用系统功能权限、数据访问权限、病毒的预防、非法入侵的监督、数据更改的追踪、数据的安全备份与存档、主机房的安全管理规章、系统管理员的监督，等等。目前，企业中熟练掌握计算机技术的人员较少，计算机接入Internet的也不多。因此，在实施ERP系统时，普遍存在着不重视系统安全的现象。诸如：用户不注意口令保密、超级用户授权多人等。缺乏安全意识的直接后果是系统在安全设计上存在着漏洞和缺陷。近年来，不断有报章披露银行或企业计算机系统被非法入侵的消息，这给企业敲响了警钟。 <br />
7．意外事故或灾难 <br />
水灾、火灾、地震等不可抗拒的自然灾害会给ERP系统带来毁灭性的打击。企业正式启用ERP系统后，这种破坏将直接造成业务交易的中断，给企业带来不可估量的损失。未雨绸缪的策略和应对措施是降低这一风险的良方。如建立远程备份和恢复机制；在计算机系统不能正常工作的情况下，恢复手工处理业务的步骤和措施。 <br />
<br />
四、ERP应用成功的标志 <br />
<br />
ERP应用是否成功，原则地说，可以从以下几个方面加以衡量： <br />
1． 系统运行集成化： <br />
这是ERP应用成功在技术解决方案方面最基本的表现。ERP系统是对企业物流、资金流、信息流进行一体化管理的软件系统，其核心管理思想就是实现对&#8220;供应链（Supply Chain）&#8221;的管理。软件的应用将跨越多个部门甚至多个企业。为了达到预期设定的应用目标，最基本的要求是系统能够运行起来，实现集成化应用，建立企业决策完善的数据体系和信息共享机制。 <br />
一般来说，如果ERP系统仅在财务部门应用，只能实现财务管理规范化、改善应收帐款和资金管理；仅在销售部门应用，只能加强和改善营销管理；仅在库存管理部门应用，只能帮助掌握存货信息；仅在生产部门应用只能辅助制定生产计划和物资需求计划。只有集成一体化运行起来，才有可能达到： <br />
降低库存，提高资金利用率和控制经营风险； <br />
控制产品生产成本，缩短产品生产周期； <br />
提高产品质量和合格率； <br />
减少财务坏帐、呆帐金额等。 <br />
这些目标能否真正达到，还要取决于企业业务流程重组的实施效果。 <br />
2． 业务流程合理化： <br />
这是ERP应用成功在改善管理效率方面的体现。ERP应用成功的前提是必须对企业实施业务流程重组，因此，ERP应用成功也即意味着企业业务处理流程趋于合理化，并实现了ERP应用的以下几个最终目标： <br />
企业竞争力得到大幅度提升； <br />
企业面对市场的响应速度大大加快； <br />
客户满意度显著改善。 <br />
3． 绩效监控动态化： <br />
ERP的应用，将为企业提供丰富的管理信息。如何用好这些信息并在企业管理和决策过程中真正起到作用，是衡量ERP应用成功的另一个标志。在ERP系统完全投入实际运行后，企业应根据管理需要，利用ERP系统提供的信息资源设计出一套动态监控管理绩效变化的报表体系，以期即时反馈和纠正管理中存在的问题。这项工作，一般是在ERP系统实施完成后由企业设计完成。企业如未能利用ERP系统提供的信息资源建立起自己的绩效监控系统，将意味着ERP系统应用没有完全成功。 <br />
4． 管理改善持续化： <br />
随着ERP系统的应用和企业业务流程的合理化，企业管理水平将会明显提高。为了衡量企业管理水平的改善程度，可以依据管理咨询公司提供的企业管理评价指标体系对企业管理水平进行综合评价。评价过程本身并不是目的，为企业建立一个可以不断进行自我评价和不断改善管理的机制，才是真正目的。这也是ERP应用成功的一个经常不被人们重视的标志
<img src ="http://www.blogjava.net/xixidabao/aggbug/147330.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xixidabao/" target="_blank">JAVA之路</a> 2007-09-22 10:44 <a href="http://www.blogjava.net/xixidabao/articles/147330.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>图解MyEclipse炮制（EJB）SessionBean全过程 </title><link>http://www.blogjava.net/xixidabao/articles/85212.html</link><dc:creator>JAVA之路</dc:creator><author>JAVA之路</author><pubDate>Sun, 03 Dec 2006 11:45:00 GMT</pubDate><guid>http://www.blogjava.net/xixidabao/articles/85212.html</guid><description><![CDATA[
		<p>说起EJB开发工具中的豪杰，估计大家都会一致认为非JBuilder莫属，事实上我也这么认为。但是最近发现MyEclipse也不错。虽然没有像JB那样强大的“EJB Desiner视图”支持，但是借助XDoclet的多才多艺与灵活高效，也使得MyEclipse在JB面前毫不逊色。</p>
		<p>想必阅读这个文章的朋友都已经具备丰富的开发经验，有自己动手、发现、解决问题的能力，所以Eclipse和MyEclipse的安装配置等细节我就不提了，让我们从MyEclipse下的Weblogic配置开始吧。看图作文：</p>
		<p>（图1：Weblogic配置）</p>
		<p>
				<a href="http://blog.csdn.net/images/blog_csdn_net/wingtrace/102616/r_01weblogic_config.GIF">
						<img alt="01weblogic_config" src="http://blog.csdn.net/images/blog_csdn_net/wingtrace/102616/r_01weblogic_config.GIF" />
				</a>
		</p>
		<p>根据自己的实际情况配置上图的诸多参数，最后别忘了点击“Apply”和“OK”按钮，后面的类似操作也都别忘了。</p>
		<p>
				<br />（图2：新建一个EJB工程）</p>
		<p>
				<img alt="" src="http://blog.csdn.net/images/blog_csdn_net/wingtrace/102616/r_02new_project.GIF" />
		</p>
		<p>
		</p>
		<p>
		</p>
		<p>选择一个“J2EE – EJB Project”再Next。</p>
		<p>
				<br />（图3：新建一个EJB工程续）</p>
		<p>
				<img alt="" src="http://blog.csdn.net/images/blog_csdn_net/wingtrace/102616/r_03new_project2.GIF" />
		</p>
		<p>注意：因为目前的Xdoclet版本只支持J2EE 1.3，所以为了可以利用Xdoclet来自动生成EJB各接口的代码和配置描述文件，这里应该选择J2EE 1.3 规范级别。</p>
		<p>
				<br />（图4：新建一个EJB工程完毕）</p>
		<p>
				<img alt="" src="http://blog.csdn.net/images/blog_csdn_net/wingtrace/102616/r_04new_project_created.GIF" />
		</p>
		<p>工程创建好了，可以看到初始的目录结构。</p>
		<p>
				<br />（图5：新建一个SessionBean Module）</p>
		<p>
				<img alt="" src="http://blog.csdn.net/images/blog_csdn_net/wingtrace/102616/r_05new_sessionbean.GIF" />
		</p>
		<p>开始创建我们的第一个SessionBean吧。“J2EE – EJB – Session Bean”，就这么简单。</p>
		<p>
				<br />（图6：创建期参数）</p>
		<p>
				<img alt="" src="http://blog.csdn.net/images/blog_csdn_net/wingtrace/102616/r_06new_sessionbean2.GIF" />
		</p>
		<p>这个图片上红框表示的都是需要特别注意的地方，讲解如下：<br />1. 为适应Xdoclet的惯用法，EJB 组件的Bean类所在的包名应该以“.ejb”结尾，Bean类名应该以“Bean”或“EJB”结尾，这里我用的是“Bean”。<br />2. 如果这个Bean类不经扩展而直接使用，那么就应该实现一个“ejbCreate”方法。如果扩展后再使用的话，那么可以放到子类里面再实现。</p>
		<p>
				<br />（图7：SessionBean创建完毕）</p>
		<p>
				<a>
						<img alt="" src="http://blog.csdn.net/images/blog_csdn_net/wingtrace/102616/r_07new_sessionbean_src1.GIF" />
				</a>
		</p>
		<p>初始的SessionBean代码创建好了，左边“Package Explorer”里可以看到当前的目录结构，右边的代码窗口里面可以看到Xdoclet自动生成的代码，里面有一些为进一步生成各种接口代码以及部署描述文档所用的Xdoclet标记，这里的标记很浅显，大家顾名思义一看就明白了，如果要改变部署后的JNDI名称以符合项目的具体规约要求，那么可以在图中红框标示的地方修改。</p>
		<p>
				<br />（图8：开始Xdoclet配置）</p>
		<p>
				<img alt="" src="http://blog.csdn.net/images/blog_csdn_net/wingtrace/102616/r_08xdoclet1.GIF" />
		</p>
		<p>OK，现在开始最重要也最复杂的一步：Xdoclet配置。实际上Jbuilder的代码自动生成的幕后功臣也是Xdoclet，只不过Borland把它封装得严严实实，对于开发者来说就透明化了，这样做的好处是傻瓜化，降低了配置的难度，坏处很明显――损失了Xdoclet所著称的灵活性。<br />MyEclipse提供了许多标准的Xdoclet模板，我们直接拿来再根据实际情况自定义屈指可数的几个参数就可以使用了。</p>
		<p>
				<br />（图9：）</p>
		<p>
				<a href="http://blog.csdn.net/images/blog_csdn_net/wingtrace/102616/r_09xdoclet2.GIF">
						<img alt="" src="http://blog.csdn.net/images/blog_csdn_net/wingtrace/102616/r_09xdoclet2.GIF" />
				</a>
		</p>
		<p>添加一个“Standard EJB”配置</p>
		<p>
				<br />（图10：Remove不需要的项目）</p>
		<p>
				<img alt="" src="http://blog.csdn.net/images/blog_csdn_net/wingtrace/102616/r_10xdoclet3.GIF" />
		</p>
		<p>把我们当前工程中用不到的东西通通删掉，例如dao,dataobject,entitybmp,entitycmp,entitypk,valueobject,utilobject。得到图12所示的配置。</p>
		<p>
				<br />（图11：）</p>
		<p>
				<img alt="" src="http://blog.csdn.net/images/blog_csdn_net/wingtrace/102616/r_11xdoclet4.GIF" />
		</p>
		<p>
		</p>
		<p>（图12：）</p>
		<p>
				<img alt="" src="http://blog.csdn.net/images/blog_csdn_net/wingtrace/102616/r_12xdoclet5.GIF" />
		</p>
		<p>添加一个weblogic的部署描述选项，接着还要根据实际需要配置它。</p>
		<p>
				<br />（图13：）</p>
		<p>
				<img alt="" src="http://blog.csdn.net/images/blog_csdn_net/wingtrace/102616/r_13xdoclet6.GIF" />
		</p>
		<p>配置Createtables，设置为AlterOrCreate，以便以后加入其它EJB组件时共享一个部署描述文件。</p>
		<p>
				<br />（图14：）</p>
		<p>
				<img alt="" src="http://blog.csdn.net/images/blog_csdn_net/wingtrace/102616/r_14xdoclet7.GIF" />
		</p>
		<p>配置destDir，就是weblogic-ejb-jar.xml文件所在的目录。</p>
		<p>
				<br />（图15：）</p>
		<p>
				<img alt="" src="http://blog.csdn.net/images/blog_csdn_net/wingtrace/102616/r_15xdoclet7_2.GIF" />
		</p>
		<p>配置Version，根据实际的weblogic版本去两个版本号即可，我用的版本是811，这里设为8.1。</p>
		<p>
				<br />（图16：）</p>
		<p>
				<img alt="" src="http://blog.csdn.net/images/blog_csdn_net/wingtrace/102616/r_16xdoclet8.GIF" />
		</p>
		<p>选择使用动态Xdoclet配置文件还是静态Xdoclet配置文件，这里使用缺省的“动态”方式即可。</p>
		<p>
				<br />（图17：）</p>
		<p>
				<img alt="" src="http://blog.csdn.net/images/blog_csdn_net/wingtrace/102616/r_17xdoclet9.GIF" />
		</p>
		<p>OK，Xdoclet配置好之后就可以根据它的配置文件批量生成我们所期望的代码和文档了。</p>
		<p>
				<br />（图18：）</p>
		<p>
				<img alt="" src="http://blog.csdn.net/images/blog_csdn_net/wingtrace/102616/r_18xdoclet_SUCCESS.GIF" />
		</p>
		<p>Xdoclet执行过程。</p>
		<p>
				<br />（图19：）</p>
		<p>
				<a href="http://blog.csdn.net/images/blog_csdn_net/wingtrace/102616/r_19xdoclet_files_built.GIF">
						<img alt="" src="http://blog.csdn.net/images/blog_csdn_net/wingtrace/102616/r_19xdoclet_files_built.GIF" />
				</a>
		</p>
		<p>Finished，看看红色选框里的文件，怎么样？果然不负众望吧？这里包括远程接口、本地接口、远程Home接口、本地Home接口、ejb-jar.xml、weblogic-ejb-jar.xml等文件。</p>
		<p>
				<br />（图20：）</p>
		<p>
				<img alt="" src="http://blog.csdn.net/images/blog_csdn_net/wingtrace/102616/r_20coding1.GIF" />
		</p>
		<p>这里是远程接口。看图中的高亮部分，顾名思义，用你自己的商务方法替换Xdoclet模板生成的示例商务方法。</p>
		<p>
				<br />（图21：）</p>
		<p>
				<img alt="" src="http://blog.csdn.net/images/blog_csdn_net/wingtrace/102616/r_21coding2.GIF" />
		</p>
		<p>这里是Bean类。同样是将示例方法替换成实际的商务方法。</p>
		<p>
				<br />（图22：）</p>
		<p>
				<a href="http://blog.csdn.net/images/blog_csdn_net/wingtrace/102616/r_22coding_finished.GIF">
						<img alt="" src="http://blog.csdn.net/images/blog_csdn_net/wingtrace/102616/r_22coding_finished.GIF" />
				</a>
		</p>
		<p>代码都写好了，文件也都整理好了，嗯，该部署了。</p>
		<p>
				<br />（图23：）</p>
		<p>
				<img alt="" src="http://blog.csdn.net/images/blog_csdn_net/wingtrace/102616/r_23deploy1.GIF" />
		</p>
		<p>部署过程很简单。看图，在“Project”选项中选择我们的“Hello”工程，再点击“Add”按钮添加一个部署方案。</p>
		<p>
				<br />（图24：）</p>
		<p>
				<img alt="" src="http://blog.csdn.net/images/blog_csdn_net/wingtrace/102616/r_24deploy2.GIF" />
		</p>
		<p>部署到在文章初始就配置好的Weblogic8服务器，使用jar包方式。</p>
		<p>
				<br />（图25：）</p>
		<p>
				<img alt="" src="http://blog.csdn.net/images/blog_csdn_net/wingtrace/102616/r_25deploy_success.GIF" />
		</p>
		<p>配置完毕，该启动Weblogic看看效果了。 ：）btw，整理使用的是离线部署（或者叫做“冷部署”）方式，也就是说在部署过程中Weblogic没有启动，这时候如果EJB组件包含部署期可发现的错误那么在这一阶段将不能得到报告，当然我们也可以使用在线部署（“热部署”？）方式以即时得到部署期可能的异常，easy，自己尝试吧。</p>
		<p>
				<br />（图26：）</p>
		<p>
				<img alt="" src="http://blog.csdn.net/images/blog_csdn_net/wingtrace/102616/r_26test_client1.GIF" />
		</p>
		<p>部署好之后该干什么呢？看着屏幕发呆？呵呵。。还是先写个Client测试一下你的EJB组件是不是能够正常运行吧。如图，包名和类名除符合基本的JAVA规范之外都没有硬性的规定，只是习惯上将类名的后缀设为“TestClient”。</p>
		<p>
				<br />（图27：）</p>
		<p>
				<img alt="" src="http://blog.csdn.net/images/blog_csdn_net/wingtrace/102616/r_27test_client_imp_wllib.GIF" />
		</p>
		<p>因为要用到Weblogic的初始上下文工厂（WLInitialContextFactory），所以我们应该导入Weblogic的函数库，就是WL_HOME/server/lib/weblogic.jar了。当然这一步也未必就要放在这里做，反正在测试程序运行之前就可以。</p>
		<p>
				<br />（图28：）</p>
		<p>
				<img alt="" src="http://blog.csdn.net/images/blog_csdn_net/wingtrace/102616/r_28test_client_code.GIF" />
		</p>
		<p>该编写我们的测试客户端的实际代码了，看图，就那么二三十行经典代码，很简单吧？</p>
		<p>
				<br />（图29：）</p>
		<p>
				<img alt="" src="http://blog.csdn.net/images/blog_csdn_net/wingtrace/102616/r_29start_server.GIF" />
		</p>
		<p>叫上Weblogic，一起开动咯～</p>
		<p>
				<br />（图30：）</p>
		<p>
				<img alt="" src="http://blog.csdn.net/images/blog_csdn_net/wingtrace/102616/r_30start_server_ok.GIF" />
		</p>
		<p>Weblogic启动成功，启动过程中会自动载入我们刚才冷部署的EJB组件，这次没有报告任何异常，说明我们的EJB组件是正确无误的。</p>
		<p>
				<br />（图31：）</p>
		<p>
				<img alt="" src="http://blog.csdn.net/images/blog_csdn_net/wingtrace/102616/r_31execute_client_console.GIF" />
		</p>
		<p>执行我们的测试客户端，得到预期的输出。</p>
		<p>
				<br />（图32：）</p>
		<p>
				<img alt="" src="http://blog.csdn.net/images/blog_csdn_net/wingtrace/102616/r_32execute_server_console.GIF" />
		</p>
		<p>然后观察Weblogic的控制台，同样也是我们所期望的反馈，yeah，收工，吃饭去了。</p>
		<p>
				<br />有问题请大家回帖共同探讨。<br />希望还有机会下次跟大家讨论EntityBean的开发，<br />再下次是MessageDrivenBean，以及综合实例。：）</p>
		<p>参考文献：《MyEclipse Application Developer Guide》。</p>
		<br />
		<br />
		<p id="TBPingURL">Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=310359</p>
<img src ="http://www.blogjava.net/xixidabao/aggbug/85212.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xixidabao/" target="_blank">JAVA之路</a> 2006-12-03 19:45 <a href="http://www.blogjava.net/xixidabao/articles/85212.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MyEclipse+Weblogic开发EJB</title><link>http://www.blogjava.net/xixidabao/articles/85211.html</link><dc:creator>JAVA之路</dc:creator><author>JAVA之路</author><pubDate>Sun, 03 Dec 2006 11:33:00 GMT</pubDate><guid>http://www.blogjava.net/xixidabao/articles/85211.html</guid><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: MyEclipse+Weblogic										开发										EJB																																																																				 																														编写人：邬文俊					...&nbsp;&nbsp;<a href='http://www.blogjava.net/xixidabao/articles/85211.html'>阅读全文</a><img src ="http://www.blogjava.net/xixidabao/aggbug/85211.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xixidabao/" target="_blank">JAVA之路</a> 2006-12-03 19:33 <a href="http://www.blogjava.net/xixidabao/articles/85211.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在 Java 应用程序中访问USB设备</title><link>http://www.blogjava.net/xixidabao/articles/69017.html</link><dc:creator>JAVA之路</dc:creator><author>JAVA之路</author><pubDate>Mon, 11 Sep 2006 12:13:00 GMT</pubDate><guid>http://www.blogjava.net/xixidabao/articles/69017.html</guid><description><![CDATA[
		<table cellspacing="0" cellpadding="0" width="760" align="center" border="0">
				<tbody>
						<tr>
								<td class="title" valign="center" align="middle" height="56">
										<b>
												<font color="#ff0000" size="3">在 Java 应用程序中访问USB设备<br /><!-- #EndEditable --></font>
										</b>
								</td>
						</tr>
						<tr>
								<td class="formtitle" align="middle" height="40">
										<!-- #BeginEditable "2" -->作者: 羽斌 <br /><!-- #EndEditable --></td>
						</tr>
				</tbody>
		</table>
		<table height="65" cellspacing="0" cellpadding="0" width="760" align="center" border="0">
				<tbody>
						<tr>
								<td class="content" height="65">
										<!-- #BeginEditable "3" -->
										<table width="100%" align="center">
												<tbody>
														<tr>
																<td class="content">
																		<p>Java 平台一直都以其平台无关性自豪。虽然这种无关性有许多好处，但是它也使得编写与硬件交互的 Java 应用程序的过程变得相当复杂。在本文中，研究科学家蒋清野讨论了两个项目，它们通过提供使Java 应用程序可以使用 USB 设备的 API 而使这个过程变得更容易。虽然这两个项目仍然处于萌芽状态，但是它们都显示了良好的前景，并已经成为一些实用应用程序的基础。 </p>
																		<p>通用串行总线(Universal Serial Bus USB)规范的第一个版本发表于 1996年 1月。因为它的低成本、高数据传输率、使用容易和灵活性，USB 在计算机行业里获得了广泛接受。今天，许多周边设备和装置都是通过 USB 接口连接到计算机上的。目前，大多数一般用途的操作系统都提供了对 USB 设备的支持，并且用 C 或者 C++ 可以相对容易地开发访问这些外设的应用程序。不过，Java 编程语言在设计上对硬件访问提供的支持很少，所以编写与 USB 设备交互的应用程序是相当困难的。 </p>
																		<p>IBM 的 Dan Streetman 最早开始了在 Java 语言中提供对 USB 设备的访问的努力。2001年，他的项目通过 Java 规范请求(Java Specification Request，JSR)过程被接受为 Java 语言的候选扩展标准。这个项目现在称为 JSR-80 并且指定了官方包 javax.usb。同时，在 2000年 6月，Mojo Jojo 和 David Brownell 在 SourceForge 开始了 jUSB 项目。这两个项目都开发出了 Linux 开发人员可以使用的包，尽管它们都还很不完善。这两个项目也都开始试图向其他操作系统上的 Java 应用程序提供对 USB 设备的访问，尽管它们都还没有开发出可以使用的包(参阅 参考资料 中有关本文中讨论的这两个项目及其他项目的资料)。</p>
																		<p>在本文中，将对 jUSB 和 JSR-80 项目作一个简要介绍，不过，我们首先要看一下 USB 协议的具体细节，这样您就可以理解这两个项目是如何与 USB 设备交互的。我们还将提供代码片段以展示如何用这两个项目的 API 访问 USB 设备。 USB 介绍</p>
																		<p>1994年，一个由四个行业伙伴(Compaq、Intel、Microsoft 和 NEC)组成的联盟开始制定 USB 协议。该协议最初的目的是将 PC 与电话相连并提供容易扩展和重新配置的 I/O 接口。1996年 1月，发表了 USB 规范的第一个版本，1998年 9月发表了后续版本(版本 1.1)。这个规范允许 127台设备同时连接到一起，总的通信带宽限制为 12 Mbps。后来，又有三个成员(Hewlett-Packard、Lucent 和 Philips)加入了这个联盟。2000年 4月，发表了 USB 规范的 2.0版本，它支持高达 480 Mbps 的传输率。今天，USB 在高速(视频、图像、储存)和全速(音频、宽带、麦克风)数据传输应用中起了关键作用。它还使各种低速设备(键盘、鼠标、游戏外设、虚拟现实外设)连接到 PC 上。</p>
																		<p>USB 协议有严格的层次结构。在所有 USB 系统中，只有一个主设备，到主计算机的的 USB 接口称为主控器(host controller)。主控器有两个标准??开放主控器接口(Compaq 的 Open Host Controller Interface，OHCI)和通用主控器接口(Intel 的 Universal Host Controller Interface，UHCI)。这两个标准提供了同样的能力，并可用于所有的 USB 设备，UHCI 的硬件实现更简单一些，但是需要更复杂的设备驱动程序(因而 CPU 的负荷更大一些)。</p>
																		<p>USB 物理互连是分层的星形拓朴，最多有七层。一个 hub 是每个星形的中心，USB 主机被认为是 root hub。每一段连线都是 hub 与 USB 设备的点对点连接，后者可以是为系统提供更多附加点的另一个 hub，也可以是一个提供功能的某种设备。主机使用主/从协议与 USB 设备通信。这种方式解决了包冲突的问题，但是同时也阻止了附加的设备彼此建立直接通信。</p>
																		<p>所有传输的数据都是由主控器发起的。数据从主机流向设备称为下行(downstream)或者输出(out)传输，数据从设备流向主机称为上 行(upstream)或者输入(in)传输。数据传输发生在主机和 USB 设备上特定的端点(endpoint) 之间，主机与端点之间的数据链接称为管道(pipe)。 一个给定的 USB 设备可以有许多个端点，主机与设备之间数据管道的数量与该设备上端点的数量相同。一个管道可以是单向或者是双向的，一个管道中的数据流与所有其他管道中的数据流无关。</p>
																		<p>USB 网络中的通信可以使用下面四种数据传输类型中的任意一种：</p>
																		<p>控制传输： 这些是一些短的数据包，用于设备控制和配置，特别是在设备附加到主机上时。 </p>
																		<p>批量传输： 这些是数量相对大的数据包。像扫描仪或者 SCSI 适配器这样的设备使用这种传输类型。 </p>
																		<p>中断传输： 这些是定期轮询的数据包。主控器会以特定的间隔自动发出一个中断。 </p>
																		<p>等时传输： 这些是实时的数据流，它们对带宽的要求高于可靠性要求。音频和视频设备一般使用这种传输类型。 </p>
																		<p>像串行端口一样，计算机上每一个 USB 端口都由 USB 控制器指定了一个惟一的标识数字(端口 ID)。当 USB 设备附加到 USB 端口上时，就将这个 惟一端口 ID 分配给这台设备，并且 USB 控制器会读取设备描述符。设备描述符包括适用于该设备的全局信息、以及设备的配置信息。配置定义了一台 USB 设备的功能和 I/O 行为。一台 USB 设备可以有一个或者多个配置，这由它们相应的配置描述符所描述。每一个配置都有一个或者多个接口，它可以视为一个物理通信渠道 ；每一个接口有零个或者多个端点，它可以是数据提供者或者数据消费者，或者同时具有这两种身份。接口由接口描述符描述，端点由端点描述符描述。并且一台 USB 设备可能还有字符串描述符以提供像厂商名、设备名或者序列号这样的附加信息。</p>
																		<p>正如您所看到的，像 USB 这样的协议为使用 Java 这种强调平台和硬件无关性的语言的开发人员提出了挑战。现在让我们看两个试图解决这个问题的项目。</p>
																		<p>
																				<span class="f14">
																						<b>jUSB API</b>
																				</span>
																		</p>
																		<p>
																				<span class="f14">jUSB 项目是由 Mojo Jojo 和 David Brownell 于 2000年 6月创立的。其目标是提供一组免费的、在 Linux 平台上访问 USB 设备的 Java API。这个 API 是按照 Lesser GPL (LGPL)条款发表的，这意味着您可以在专有和免费软件项目中使用它。这个 API 提供了对多个物理 USB 设备的多线程访问，并支持本机和远程设备。具有多个接口的设备可以同时被多个应用程序(或者设备驱动程序)所访问，其中每一个应用程序(或者设备驱动程序)都占据一个不同的接口。该 API 支持控制传输、批量传输和中断传输，不支持等时传输，因为等时传输用于媒体数据(如音频和视频)，JMF API 已经在其他标准设备驱动程序上对此提供了很好的支持(参阅 参考资料)。当前，该 API 可以在具有 Linux 2.4 核心或者以前的 2.2.18 核心的 GNU/Linux 版本上工作。因此可支持大多数最新的版本，例如，该 API 可以在没有任何补丁或者升级的 Red Hat 7.2 和 9.0 上工作。</span>
																		</p>
																		<p>
																				<span class="f14">jUSB API 包括以下包：<br />　<br />·usb.core: 这个包是 jUSB API 的核心部分。它使得 Java 应用程序可以从 USB 主机访问 USB 设备。<br />·usb.linux: 这个包包含 usb.core.Host 对象的 Linux 实现、bootstrapping 支持和其他可以提升 Linux USB 支持的类。这个实现通过虚拟 USB 文件系统(usbdevfs)访问 USB 设备。<br />·usb.windows: 这个包包含 usb.core.Host 对象的 Windows 实现、bootstrapping 支持和其他可以提升 Windows USB 支持的类。这个实现仍然处于非常初级的阶段。<br />·usb.remote: 这个包是 usb.core API 的远程版本。它包括一个 RMI proxy 和一个 daemon 应用程序，它让 Java 应用程序可以访问远程计算机上的 USB 设备。<br />·usb.util: 这个包提供了一些有用的实用程序，可以将 firmware下载到 USB 设备上、将 USB 系统的内容转储到 XML 中、以及将只有 bulk I/O 的 USB 设备工具转换成一个套接字(socket)。<br />·usb.devices: 这个可选包收集了用 jUSB API 访问不同 USB 设备的 Java 代码，包括柯达数码相机和 Rio 500 MP3 播放器。这些 API 经过特别编写以简化访问特定 USB 设备的过程，并且不能用于访问其他设备。这些 API 是在 usb.core API 之上构建的，它们可以工作在所有支持 jUSB 的操作系统上。<br />·usb.view: 这个可选包提供了基于 Swing 的 USB 树简单浏览器。它是一个展示 jUSB API 应用的很好的示例程序。</span>
																		</p>
																		<p>
																				<span class="f14">尽管 usb.core.Host 对象的实现对于不同的操作系统是不同的，但是 Java 程序员只需要理解 usb.core 包就可以用 jUSB API 开始应用程序的开发。表 1 列出了 usb.core 的接口和类，Java 程序员应该熟悉它们：</span>
																		</p>
																		<p>
																				<span class="f14">表 1. jUSB 中的接口和类</span>
																		</p>
																		<span class="f14">
																				<table class="content" cellspacing="0" cellpadding="2" width="90%" align="center" border="1">
																						<tbody>
																								<tr>
																										<td>接口</td>
																										<td>说明</td>
																								</tr>
																								<tr>
																										<td>Bus</td>
																										<td>将一组 USB 设备连接到 Host 上</td>
																								</tr>
																								<tr>
																										<td>Host</td>
																										<td>表示具有一个或者多个 Bus 的 USB 控制器</td>
																								</tr>
																						</tbody>
																				</table>
																				<br />
																				<table class="content" cellspacing="0" cellpadding="2" width="90%" align="center" border="1">
																						<tbody>
																								<tr>
																										<td width="17%">类</td>
																										<td width="83%">说明</td>
																								</tr>
																								<tr>
																										<td width="17%">Configuration</td>
																										<td width="83%">提供对设备所支持的 USB 配置的访问，以及对与该配置关联的接口的访问</td>
																								</tr>
																								<tr>
																										<td width="17%">Descriptor</td>
																										<td width="83%">具有 USB 类型的描述符的实体的基类</td>
																								</tr>
																								<tr>
																										<td width="17%">Device</td>
																										<td width="83%">提供对 USB 设备的访问</td>
																								</tr>
																								<tr>
																										<td width="17%">DeviceDescriptor</td>
																										<td width="83%">提供对 USB 设备描述符的访问</td>
																								</tr>
																								<tr>
																										<td width="17%">EndPoint</td>
																										<td width="83%">提供对 USB 端点描述符的访问、在给定设备配置中构造设备数据输入或者输出</td>
																								</tr>
																								<tr>
																										<td width="17%">HostFactory</td>
																										<td width="83%">包含 bootstrapping 方法</td>
																								</tr>
																								<tr>
																										<td width="17%">Hub</td>
																										<td width="83%">提供对 USB hub 描述符以及一些 hub 操作的访问</td>
																								</tr>
																								<tr>
																										<td width="17%">Interface</td>
																										<td width="83%">描述一组端点，并与一个特定设备配置相关联</td>
																								</tr>
																								<tr>
																										<td width="17%">PortIdentifier</td>
																										<td width="83%">为 USB 设备提供稳定的字符串标识符，以便在操作和故障诊断时使用</td>
																								</tr>
																						</tbody>
																				</table>
																		</span>
																		<p>
																				<span class="f14">
																						<br />用 jUSB API 访问一台 USB 设备的正常过程如下：<br /></span>
																				<span class="f14">
																						<br />·通过从 HostFactory 得到 USB Host 进行 Bootstrap。<br />·从 Host 访问 USB Bus，然后从这个 Bus 访问 USB root hub(即 USB Device)。<br />·得到 hub 上可用的 USB 端口数量，遍历所有端口以找到正确的 Device。<br />·访问附加到特定端口上的 USB Device。可以用一台 Device 的 PortIdentifier 直接从 Host 访问它，也可以通过从 root hub 开始遍历 USB Bus 找到它。<br />·用 ControlMessage 与该 Device 直接交互，或者从该 Device 的当前 Configuration 中要求一个 Interface，并与该 Interface 上可用的 Endpoint 进行 I/O 。</span>
																		</p>
																		<p>
																				<span class="f14">清单 1 展示了如何用 jUSB API 获得 USB 系统中的内容。这个程序编写为只是查看 root hub 上可用的 USB 设备，但是很容易将它改为遍历整个 USB 树。这里的逻辑对应于上述步骤 1 到步骤 4。</span>
																		</p>
																		<p>
																				<span class="f14">清单 1. 用 jUSB API 获得 USB 系统的内容</span>
																		</p>
																		<span class="f14">
																				<table class="content" bordercolor="#ffcc66" width="90%" align="center" bgcolor="#dadacf" border="1">
																						<tbody>
																								<tr>
																										<td>import usb.core.*;<br /><br />public class ListUSB<br />{<br />　public static void main(String[] args)<br />　{<br />　　try<br />　　{<br />　　　// Bootstrap by getting the USB Host from the HostFactory.<br />　　　Host host = HostFactory.getHost();<br /><br />　　　// Obtain a list of the USB buses available on the Host.<br />　　　Bus[] bus = host.getBusses();<br />　　　int total_bus = bus.length;<br /><br />　　　// Traverse through all the USB buses.<br />　　　for (int i=0; i&lt;total_bus; i++)<br />　　　{<br />　　　　// Access the root hub on the USB bus and obtain the<br />　　　　// number of USB ports available on the root hub.<br />　　　　Device root = bus[i].getRootHub();<br />　　　　int total_port = root.getNumPorts();<br /><br />　　　　// Traverse through all the USB ports available on the<br />　　　　// root hub. It should be mentioned that the numbering<br />　　　　// starts from 1, not 0.<br />　　　　for (int j=1; j&lt;=total_port; j++)<br />　　　　{<br />　　　　　// Obtain the Device connected to the port.<br />　　　　　Device device = root.getChild(j);<br />　　　　　if (device != null)<br />　　　　　{<br />　　　　　　// USB device available, do something here.<br />　　　　　}<br />　　　　}<br />　　　}<br />　　} catch (Exception e)<br />　　{<br />　　　System.out.println(e.getMessage());<br />　　}<br />　}</td>
																								</tr>
																						</tbody>
																				</table>
																		</span>
																		<br />
																		<p>
																				<span class="f14">清单 2 展示了在应用程序成功地找到了 Device 的条件下，如何与 Interface 和 EndPoint 进行批量 I/O。 这个代码段也可以修改为执行控制或者中断 I/O。它对应于上述步骤 5。</span>
																		</p>
																		<p>
																				<span class="f14">清单 2. 用 jUSB API 执行批量 I/O</span>
																				<span class="f14">
																						<table class="content" bordercolor="#ffcc66" width="90%" align="center" bgcolor="#dadacf" border="1">
																								<tbody>
																										<tr>
																												<td>if (device != null)<br />{<br />　// Obtain the current Configuration of the device and the number of<br />　// Interfaces available under the current Configuration.<br />　Configuration config = device.getConfiguration();<br />　int total_interface = config.getNumInterfaces();<br /><br />　// Traverse through the Interfaces<br />　for (int k=0; k&lt;total_interface; k++)<br />　{<br />　　// Access the currently Interface and obtain the number of<br />　　// endpoints available on the Interface.<br />　　Interface itf = config.getInterface(k, 0);<br />　　int total_ep = itf.getNumEndpoints();<br /><br />　　// Traverse through all the endpoints.<br />　　for (int l=0; l&lt;total_ep; l++)<br />　　{<br />　　　// Access the endpoint, and obtain its I/O type.<br />　　　Endpoint ep = itf.getEndpoint(l);<br />　　　String io_type = ep.getType();<br />　　　boolean input = ep.isInput();<br /><br />　　　// If the endpoint is an input endpoint, obtain its<br />　　　// InputStream and read in data.<br />　　　if (input)<br />　　　{<br />　　　　InputStream in;<br />　　　　in = ep.getInputStream();<br />　　　　// Read in data here<br />　　　　in.close();<br />　　　}<br />　　　// If the Endpoint is and output Endpoint, obtain its<br />　　　// OutputStream and write out data.<br />　　　else<br />　　　{<br />　　　　OutputStream out;<br />　　　　out = ep.getOutputStream();<br />　　　　// Write out data here.<br />　　　　out.close();<br />　　　}<br />　　}<br />　}<br />}</td>
																										</tr>
																								</tbody>
																						</table>
																				</span>
																		</p>
																		<p>
																				<span class="f14">jUSB 项目在 2000年 6月到 2001年 2月期间非常活跃。该 API 的最新的版本 0.4.4发表于 2001年 2月 14日。从那以后只提出了很少的改进，原因可能是 IBM 小组成功地成为了 Java 语言的候选扩展标准。不过，基于 jUSB 已经开发出一些第三方应用程序，包括 JPhoto 项目(这是一个用 jUSB 连接到数码照相机的应用程序)和 jSyncManager 项目(这是一个用 jUSB 与使用 Palm 操作系统的 PDA 同步的应用程序)。</span>
																		</p>
																		<p>
																				<span class="f14">
																						<b>JSR-80 API (javax.usb)</b>
																				</span>
																		</p>
																		<p>
																				<span class="f14">正如前面提到的，JSR-80 项目是由 IBM 的 Dan Streetman 于 1999年创立的。2001年，这个项目通过 Java 规范请求(JSR)过程被接受为 Java 语言的候选扩展标准。这个项目现在称为 JSR-80 并且被正式分派了 Java 包 javax.usb。这个项目使用 Common Public License 的许可证形式，并通过 Java Community Process 进行开发。这个项目的目标是为 Java 平台开发一个 USB 接口，可以从任何 Java 应用程序中完全访问 USB 系统。JSR-80 API 支持 USB 规范所定义的全部四种传输类型。目前，该 API 的 Linux 实现可以在支持 2.4 核心的大多数最新 GNU/Linux 版本上工作，如 Red Hat 7.2 和 9.0。</span>
																		</p>
																		<p>
																				<span class="f14">JSR-80 项目包括三个包：javax-usb (javax.usb API)、javax-usb-ri (操作系统无关的基准实现的公共部分)以及 javax-usb-ri-linux (Linux 平台的基准实现，它将公共基准实现链接到 Linux USB 堆栈)。所有这三个部分都是构成 Linux 平台上 java.usb API 完整功能所必需的。在该项目的电子邮件列表中可以看到有人正在致力于将这个 API 移植到其他操作系统上(主要是 Microsoft Windows)，但是还没有可以工作的版本发表。</span>
																		</p>
																		<p>
																				<span class="f14">尽管 JSR-80 API 的操作系统无关的实现在不同的操作系统上是不同的，但是 Java 程序员只需要理解 javax.usb 包就可以开始开发应用程序了。表 2 列出了 javax.usb 中的接口和类， Java 程序员应该熟悉它们：</span>
																		</p>
																		<p>
																				<span class="f14">表 2. JSR-80 API 中的接口和类</span>
																				<span class="f14">
																						<table class="content" cellspacing="0" cellpadding="2" width="90%" align="center" border="1">
																								<tbody>
																										<tr>
																												<td width="25%">接口</td>
																												<td width="75%">说明</td>
																										</tr>
																										<tr>
																												<td width="25%">UsbConfiguration</td>
																												<td width="75%">表示 USB 设备的配置</td>
																										</tr>
																										<tr>
																												<td width="25%">UsbConfigurationDescriptor</td>
																												<td width="75%">USB 配置描述符的接口</td>
																										</tr>
																										<tr>
																												<td width="25%">UsbDevice</td>
																												<td width="75%">USB 设备的接口</td>
																										</tr>
																										<tr>
																												<td width="25%">UsbDeviceDescriptor</td>
																												<td width="75%">USB 设备描述符的接口</td>
																										</tr>
																										<tr>
																												<td width="25%">UsbEndpoint</td>
																												<td width="75%">USB 端点的接口</td>
																										</tr>
																										<tr>
																												<td width="25%">UsbEndpointDescriptor</td>
																												<td width="75%">USB 端点描述符的接口</td>
																										</tr>
																										<tr>
																												<td width="25%">UsbHub</td>
																												<td width="75%">USB hub 的接口</td>
																										</tr>
																										<tr>
																												<td width="25%">UsbInterface</td>
																												<td width="75%">USB 接口的接口</td>
																										</tr>
																										<tr>
																												<td width="25%">UsbInterfaceDescriptor</td>
																												<td width="75%">USB 接口描述符的接口</td>
																										</tr>
																										<tr>
																												<td width="25%">UsbPipe</td>
																												<td width="75%">USB 管道的接口</td>
																										</tr>
																										<tr>
																												<td width="25%">UsbPort</td>
																												<td width="75%">USB 端口的接口</td>
																										</tr>
																										<tr>
																												<td width="25%">UsbServices</td>
																												<td width="75%">javax.usb 实现的接口</td>
																										</tr>
																								</tbody>
																						</table>
																						<br />
																						<table class="content" cellspacing="0" cellpadding="2" width="90%" align="center" border="1">
																								<tbody>
																										<tr>
																												<td width="25%">类</td>
																												<td width="75%">说明</td>
																										</tr>
																										<tr>
																												<td width="25%">UsbHostManager</td>
																												<td width="75%">javax.usb 的入口点</td>
																										</tr>
																								</tbody>
																						</table>
																				</span>
																		</p>
																		<p>
																				<span class="f14">用 JSR-80 API 访问 USB 设备的正常过程如下：<br /><br />·通过从 UsbHostManager 得到相应的 UsbServices 进行 Bootstrap。<br />·通过 UsbServices 访问 root hub。在应用程序中 root hub 就是一个 UsbHub。<br />·获得连接到 root hub 的 UsbDevices 清单。遍历所有低级 hub 以找到正确的 UsbDevice。<br />·用控制消息(UsbControlIrp)与 UsbDevice 直接交互，或者从 UsbDevice 的相应 UsbConfiguration 中要求一个 UsbInterface 并与该 UsbInterface 上可用的 UsbEndpoint 进行 I/O。<br />·如果一个 UsbEndpoint 用于进行 I/O，那么打开与它关联的 UsbPipe。通过这个 UsbPipe 可以同步或者异步提交上行数据(从 USB 设备到主计算机)和下行数据(从主计算机到 USB 设备)。<br />·当应用程序不再需要访问该 UsbDevice 时，关闭这个 UsbPipe 并释放相应的 UsbInterface。<br /><br />在清单 3 中，我们用 JSR-80 API 获得 USB 系统的内容。这个程序递归地遍历 USB 系统上的所有 USB hub 并找出连接到主机计算机上的所有 USB 设备。这段代码对应于上述步骤 1 到步骤 3。</span>
																		</p>
																		<p>
																				<span class="f14">清单 3. 用 JSR-80 API 获得 USB 系统的内容</span>
																		</p>
																		<span class="f14">
																				<table class="content" bordercolor="#ffcc66" width="90%" align="center" bgcolor="#dadacf" border="1">
																						<tbody>
																								<tr>
																										<td>import javax.usb.*;<br />import java.util.List;<br /><br />public class TraverseUSB<br />{<br />　public static void main(String argv[])<br />　{<br />　　try<br />　　{<br />　　　// Access the system USB services, and access to the root<br />　　　// hub. Then traverse through the root hub.<br />　　　UsbServices services = UsbHostManager.getUsbServices();<br />　　　UsbHub rootHub = services.getRootUsbHub();<br />　　　traverse(rootHub);<br />　　} catch (Exception e) {}<br />　}<br /><br />　public static void traverse(UsbDevice device)<br />　{<br />　　if (device.isUsbHub())<br />　　{<br />　　　// This is a USB Hub, traverse through the hub.<br />　　　List attachedDevices = ((UsbHub) device).getAttachedUsbDevices();<br />　　　for (int i=0; i&lt;attachedDevices.size(); i++)<br />　　　{<br />　　　　traverse((UsbDevice) attachedDevices.get(i));<br />　　　}<br />　　}<br />　　else<br />　　{<br />　　　// This is a USB function, not a hub.<br />　　　// Do something.<br />　　}<br />　}<br />}</td>
																								</tr>
																						</tbody>
																				</table>
																		</span>
																		<p>
																				<span class="f14">清单 4 展示了在应用程序成功地找到 Device 后，如何与 Interface 和 EndPoint 进行 I/O。这段代码还可以修改为进行所有四种数据传输类型的 I/O。它对应于上述步骤 4 到步骤 6。</span>
																		</p>
																		<p>
																				<span class="f14">清单 4. 用 JSR-80 API 进行 I/O</span>
																		</p>
																		<span class="f14">
																				<table class="content" bordercolor="#ffcc66" width="90%" align="center" bgcolor="#dadacf" border="1">
																						<tbody>
																								<tr>
																										<td>public static void testIO(UsbDevice device)<br />{<br />　try<br />　{<br />　　// Access to the active configuration of the USB device, obtain<br />　　// all the interfaces available in that configuration.<br />　　UsbConfiguration config = device.getActiveUsbConfiguration();<br />　　List totalInterfaces = config.getUsbInterfaces();<br /><br />　　// Traverse through all the interfaces, and access the endpoints<br />　　// available to that interface for I/O.<br />　　for (int i=0; i&lt;totalInterfaces.size(); i++)<br />　　{<br />　　　UsbInterface interf = (UsbInterface) totalInterfaces.get(i);<br />　　　interf.claim();<br />　　　List totalEndpoints = interf.getUsbEndpoints();<br />　　　for (int j=0; j&lt;totalEndpoints.size(); j++)<br />　　　{<br />　　　　// Access the particular endpoint, determine the direction<br />　　　　// of its data flow, and type of data transfer, and open the<br />　　　　// data pipe for I/O.<br />　　　　UsbEndpoint ep = (UsbEndpoint) totalEndpoints.get(i);<br />　　　　int direction = ep.getDirection();<br />　　　　int type = ep.getType();<br />　　　　UsbPipe pipe = ep.getUsbPipe();<br />　　　　pipe.open();<br />　　　　// Perform I/O through the USB pipe here.<br />　　　　pipe.close();<br />　　　}<br />　　　interf.release();<br />　　}<br />　} catch (Exception e) {}<br />}</td>
																								</tr>
																						</tbody>
																				</table>
																		</span>
																		<p>
																				<span class="f14">JSR-80 项目从一开始就非常活跃。2003年 2月发表了 javax.usb API、RI 和 RI 的 0.10.0 版本。看起来这一版本会提交给 JSR-80 委员会做最终批准。预计正式成为 Java 语言的扩展标准后，其他操作系统上的实现会很快出现。Linux 开发者团体看来对 JSR-80 项目的兴趣比 jUSB 项目更大，使用 Linux 平台的 javax.usb API 的项目数量在不断地增加。</span>
																		</p>
																		<p>
																				<span class="f14">
																						<b>结束语</b>
																				</span>
																		</p>
																		<p>
																				<span class="f14">jUSB API 和 JSR-80 API 都为应用程序提供了从运行 Linux 操作系统的计算机中访问 USB 设备的能力。JSR-80 API 提供了比 jUSB API 更多的功能，很有可能成为 Java 语言的扩展标准。目前，只有 Linux 开发人员可以利用 jUSB 和 JSR-80 API 的功能。不过，有人正在积极地将这两种 API 移植到其他操作系统上。Java 开发人员应该在不久就可以在其他操作系统上访问 USB 设备。从现在起就熟悉这些 API，当这些项目可以在多个平台上发挥作用时，您就可以在自己的应用程序中加入 USB 功能了。</span>
																		</p>
																</td>
														</tr>
												</tbody>
										</table>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.blogjava.net/xixidabao/aggbug/69017.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xixidabao/" target="_blank">JAVA之路</a> 2006-09-11 20:13 <a href="http://www.blogjava.net/xixidabao/articles/69017.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用Java实现几种常见的排序算法</title><link>http://www.blogjava.net/xixidabao/articles/69015.html</link><dc:creator>JAVA之路</dc:creator><author>JAVA之路</author><pubDate>Mon, 11 Sep 2006 11:40:00 GMT</pubDate><guid>http://www.blogjava.net/xixidabao/articles/69015.html</guid><description><![CDATA[
		<table cellspacing="0" cellpadding="0" width="760" align="center" border="0">
				<tbody>
						<tr>
								<td class="title" valign="center" align="middle" height="56">
										<b>
												<font color="#ff0000" size="3">用Java实现几种常见的排序算法<br /><!-- #EndEditable --></font>
										</b>
								</td>
						</tr>
						<tr>
								<td class="formtitle" align="middle" height="40">
										<!-- #BeginEditable "2" -->&lt;转载&gt; 作者：treeroot <br /><!-- #EndEditable --></td>
						</tr>
				</tbody>
		</table>
		<table height="65" cellspacing="0" cellpadding="0" width="760" align="center" border="0">
				<tbody>
						<tr>
								<td class="content" height="65">
										<!-- #BeginEditable "3" -->
										<table width="760" align="center">
												<tbody>
														<tr>
																<td class="content" align="left" width="724">
																		<p style="TEXT-ALIGN: left">用Java语言实现的各种排序，包括插入排序、冒泡排序、选择排序、Shell排序、快速排序、归并排序、堆排序、SortUtil等。</p>
																		<p style="TEXT-ALIGN: left" clear="both">
																				<strong>插入排序：</strong>
																		</p>
																		<p class="code" style="TEXT-ALIGN: left">package org.rut.util.algorithm.support;<br /><br />import org.rut.util.algorithm.SortUtil;<br />/**<br /> * @author treeroot<br /> * @since 2006-2-2<br /> * @version 1.0<br /> */<br />public class InsertSort implements SortUtil.Sort{<br /><br />    /* (non-Javadoc)<br />     * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])<br />     */<br />    public void sort(int[] data) {<br />        int temp;<br />        for(int i=1;i&lt;data.length;i++){<br />            for(int j=i;(j&gt;0)&amp;&amp;(data[j]&lt;data[j-1]);j--){<br />                SortUtil.swap(data,j,j-1);<br />            }<br />        }        <br />    }<br /><br />}</p>
																		<p style="TEXT-ALIGN: left">
																				<strong>冒泡排序：</strong>
																		</p>
																		<p class="code" style="TEXT-ALIGN: left">package org.rut.util.algorithm.support;<br /><br />import org.rut.util.algorithm.SortUtil;<br /><br />/**<br /> * @author treeroot<br /> * @since 2006-2-2<br /> * @version 1.0<br /> */<br />public class BubbleSort implements SortUtil.Sort{<br /><br />    /* (non-Javadoc)<br />     * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])<br />     */<br />    public void sort(int[] data) {<br />        int temp;<br />        for(int i=0;i&lt;data.length;i++){<br />            for(int j=data.length-1;j&gt;i;j--){<br />                if(data[j]&lt;data[j-1]){<br />                    SortUtil.swap(data,j,j-1);<br />                }<br />            }<br />        }<br />    }<br /><br />}</p>
																		<p style="TEXT-ALIGN: left">
																				<strong>选择排序：</strong>
																		</p>
																		<p class="code" style="TEXT-ALIGN: left">package org.rut.util.algorithm.support;<br /><br />import org.rut.util.algorithm.SortUtil;<br /><br />/**<br /> * @author treeroot<br /> * @since 2006-2-2<br /> * @version 1.0<br /> */<br />public class SelectionSort implements SortUtil.Sort {<br /><br />    /*<br />     * (non-Javadoc)<br />     * <br />     * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])<br />     */<br />    public void sort(int[] data) {<br />        int temp;<br />        for (int i = 0; i &lt; data.length; i++) {<br />            int lowIndex = i;<br />            for (int j = data.length - 1; j &gt; i; j--) {<br />                if (data[j] &lt; data[lowIndex]) {<br />                    lowIndex = j;<br />                }<br />            }<br />            SortUtil.swap(data,i,lowIndex);<br />        }<br />    }<br /><br />}</p>
																		<p style="TEXT-ALIGN: left">
																				<strong>Shell排序：</strong>
																		</p>
																		<p class="code" style="TEXT-ALIGN: left">package org.rut.util.algorithm.support;<br /><br />import org.rut.util.algorithm.SortUtil;<br /><br />/**<br /> * @author treeroot<br /> * @since 2006-2-2<br /> * @version 1.0<br /> */<br />public class ShellSort implements SortUtil.Sort{<br /><br />    /* (non-Javadoc)<br />     * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])<br />     */<br />    public void sort(int[] data) {<br />        for(int i=data.length/2;i&gt;2;i/=2){<br />            for(int j=0;j&lt;i;j++){<br />                insertSort(data,j,i);<br />            }<br />        }<br />        insertSort(data,0,1);<br />    }<br /><br />    /**<br />     * @param data<br />     * @param j<br />     * @param i<br />     */<br />    private void insertSort(int[] data, int start, int inc) {<br />        int temp;<br />        for(int i=start+inc;i&lt;data.length;i+=inc){<br />            for(int j=i;(j&gt;=inc)&amp;&amp;(data[j]&lt;data[j-inc]);j-=inc){<br />                SortUtil.swap(data,j,j-inc);<br />            }<br />        }<br />    }<br /><br />}</p>
																		<p style="TEXT-ALIGN: left">
																				<strong>快速排序：</strong>
																		</p>
																		<p class="code" style="TEXT-ALIGN: left">package org.rut.util.algorithm.support;<br /><br />import org.rut.util.algorithm.SortUtil;<br /><br />/**<br /> * @author treeroot<br /> * @since 2006-2-2<br /> * @version 1.0<br /> */<br />public class QuickSort implements SortUtil.Sort{<br /><br />    /* (non-Javadoc)<br />     * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])<br />     */<br />    public void sort(int[] data) {<br />        quickSort(data,0,data.length-1);        <br />    }<br />    private void quickSort(int[] data,int i,int j){<br />        int pivotIndex=(i+j)/2;<br />        //swap<br />        SortUtil.swap(data,pivotIndex,j);<br />        <br />        int k=partition(data,i-1,j,data[j]);<br />        SortUtil.swap(data,k,j);<br />        if((k-i)&gt;1) quickSort(data,i,k-1);<br />        if((j-k)&gt;1) quickSort(data,k+1,j);<br />        <br />    }<br />    /**<br />     * @param data<br />     * @param i<br />     * @param j<br />     * @return<br />     */<br />    private int partition(int[] data, int l, int r,int pivot) {<br />        do{<br />           while(data[++l]&lt;pivot);<br />           while((r!=0)&amp;&amp;data[--r]&gt;pivot);<br />           SortUtil.swap(data,l,r);<br />        }<br />        while(l&lt;r);<br />        SortUtil.swap(data,l,r);        <br />        return l;<br />    }<br /><br />}</p>
																		<p style="TEXT-ALIGN: left">
																				<strong>改进后的快速排序：</strong>
																		</p>
																		<p class="code" style="TEXT-ALIGN: left">package org.rut.util.algorithm.support;<br /><br />import org.rut.util.algorithm.SortUtil;<br /><br />/**<br /> * @author treeroot<br /> * @since 2006-2-2<br /> * @version 1.0<br /> */<br />public class ImprovedQuickSort implements SortUtil.Sort {<br /><br />    private static int MAX_STACK_SIZE=4096;<br />    private static int THRESHOLD=10;<br />    /* (non-Javadoc)<br />     * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])<br />     */<br />    public void sort(int[] data) {<br />        int[] stack=new int[MAX_STACK_SIZE];<br />        <br />        int top=-1;<br />        int pivot;<br />        int pivotIndex,l,r;<br />        <br />        stack[++top]=0;<br />        stack[++top]=data.length-1;<br />        <br />        while(top&gt;0){<br />            int j=stack[top--];<br />            int i=stack[top--];<br />            <br />            pivotIndex=(i+j)/2;<br />            pivot=data[pivotIndex];<br />            <br />            SortUtil.swap(data,pivotIndex,j);<br />            <br />            //partition<br />            l=i-1;<br />            r=j;<br />            do{<br />                while(data[++l]&lt;pivot);<br />                while((r!=0)&amp;&amp;(data[--r]&gt;pivot));<br />                SortUtil.swap(data,l,r);<br />            }<br />            while(l&lt;r);<br />            SortUtil.swap(data,l,r);<br />            SortUtil.swap(data,l,j);<br />            <br />            if((l-i)&gt;THRESHOLD){<br />                stack[++top]=i;<br />                stack[++top]=l-1;<br />            }<br />            if((j-l)&gt;THRESHOLD){<br />                stack[++top]=l+1;<br />                stack[++top]=j;<br />            }<br />            <br />        }<br />        //new InsertSort().sort(data);<br />        insertSort(data);<br />    }<br />    /**<br />     * @param data<br />     */<br />    private void insertSort(int[] data) {<br />        int temp;<br />        for(int i=1;i&lt;data.length;i++){<br />            for(int j=i;(j&gt;0)&amp;&amp;(data[j]&lt;data[j-1]);j--){<br />                SortUtil.swap(data,j,j-1);<br />            }<br />        }       <br />    }<br /><br />}</p>
																		<p style="TEXT-ALIGN: left">
																				<strong>归并排序：</strong>
																		</p>
																		<p class="code" style="TEXT-ALIGN: left">package org.rut.util.algorithm.support;<br /><br />import org.rut.util.algorithm.SortUtil;<br /><br />/**<br /> * @author treeroot<br /> * @since 2006-2-2<br /> * @version 1.0<br /> */<br />public class MergeSort implements SortUtil.Sort{<br /><br />    /* (non-Javadoc)<br />     * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])<br />     */<br />    public void sort(int[] data) {<br />        int[] temp=new int[data.length];<br />        mergeSort(data,temp,0,data.length-1);<br />    }<br />    <br />    private void mergeSort(int[] data,int[] temp,int l,int r){<br />        int mid=(l+r)/2;<br />        if(l==r) return ;<br />        mergeSort(data,temp,l,mid);<br />        mergeSort(data,temp,mid+1,r);<br />        for(int i=l;i&lt;=r;i++){<br />            temp[i]=data[i];<br />        }<br />        int i1=l;<br />        int i2=mid+1;<br />        for(int cur=l;cur&lt;=r;cur++){<br />            if(i1==mid+1)<br />                data[cur]=temp[i2++];<br />            else if(i2&gt;r)<br />                data[cur]=temp[i1++];<br />            else if(temp[i1]&lt;temp[i2])<br />                data[cur]=temp[i1++];<br />            else<br />                data[cur]=temp[i2++];            <br />        }<br />    }<br /><br />}</p>
																		<p style="TEXT-ALIGN: left">
																				<strong>改进后的归并排序:</strong>
																		</p>
																		<p class="code" style="TEXT-ALIGN: left">package org.rut.util.algorithm.support;<br /><br />import org.rut.util.algorithm.SortUtil;<br /><br />/**<br /> * @author treeroot<br /> * @since 2006-2-2<br /> * @version 1.0<br /> */<br />public class ImprovedMergeSort implements SortUtil.Sort {<br /><br />    private static final int THRESHOLD = 10;<br /><br />    /*<br />     * (non-Javadoc)<br />     * <br />     * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])<br />     */<br />    public void sort(int[] data) {<br />        int[] temp=new int[data.length];<br />        mergeSort(data,temp,0,data.length-1);<br />    }<br /><br />    private void mergeSort(int[] data, int[] temp, int l, int r) {<br />        int i, j, k;<br />        int mid = (l + r) / 2;<br />        if (l == r)<br />            return;<br />        if ((mid - l) &gt;= THRESHOLD)<br />            mergeSort(data, temp, l, mid);<br />        else<br />            insertSort(data, l, mid - l + 1);<br />        if ((r - mid) &gt; THRESHOLD)<br />            mergeSort(data, temp, mid + 1, r);<br />        else<br />            insertSort(data, mid + 1, r - mid);<br /><br />        for (i = l; i &lt;= mid; i++) {<br />            temp[i] = data[i];<br />        }<br />        for (j = 1; j &lt;= r - mid; j++) {<br />            temp[r - j + 1] = data[j + mid];<br />        }<br />        int a = temp[l];<br />        int b = temp[r];<br />        for (i = l, j = r, k = l; k &lt;= r; k++) {<br />            if (a &lt; b) {<br />                data[k] = temp[i++];<br />                a = temp[i];<br />            } else {<br />                data[k] = temp[j--];<br />                b = temp[j];<br />            }<br />        }<br />    }<br /><br />    /**<br />     * @param data<br />     * @param l<br />     * @param i<br />     */<br />    private void insertSort(int[] data, int start, int len) {<br />        for(int i=start+1;i&lt;start+len;i++){<br />            for(int j=i;(j&gt;start) &amp;&amp; data[j]&lt;data[j-1];j--){<br />                SortUtil.swap(data,j,j-1);<br />            }<br />        }<br />    }</p>
																		<p style="TEXT-ALIGN: left">}</p>
																		<p style="TEXT-ALIGN: left">
																				<strong>堆排序：</strong>
																		</p>
																		<p class="code" style="TEXT-ALIGN: left">package org.rut.util.algorithm.support;<br /><br />import org.rut.util.algorithm.SortUtil;<br /><br />/**<br /> * @author treeroot<br /> * @since 2006-2-2<br /> * @version 1.0<br /> */<br />public class HeapSort implements SortUtil.Sort{<br /><br />    /* (non-Javadoc)<br />     * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])<br />     */<br />    public void sort(int[] data) {<br />        MaxHeap h=new MaxHeap();<br />        h.init(data);<br />        for(int i=0;i&lt;data.length;i++)<br />            h.remove();<br />        System.arraycopy(h.queue,1,data,0,data.length);<br />    }<br /><br />     private static class MaxHeap{         <br />        <br />        void init(int[] data){<br />            this.queue=new int[data.length+1];<br />            for(int i=0;i&lt;data.length;i++){<br />                queue[++size]=data[i];<br />                fixUp(size);<br />            }<br />        }<br />         <br />        private int size=0;<br /><br />        private int[] queue;<br />                <br />        public int get() {<br />            return queue[1];<br />        }<br /><br />        public void remove() {<br />            SortUtil.swap(queue,1,size--);<br />            fixDown(1);<br />        }<br />        //fixdown<br />        private void fixDown(int k) {<br />            int j;<br />            while ((j = k &lt;&lt; 1) &lt;= size) {<br />                if (j &lt; size &amp;&amp; queue[j]&lt;queue[j+1])<br />                    j++; <br />                if (queue[k]&gt;queue[j]) //不用交换<br />                    break;<br />                SortUtil.swap(queue,j,k);<br />                k = j;<br />            }<br />        }<br />        private void fixUp(int k) {<br />            while (k &gt; 1) {<br />                int j = k &gt;&gt; 1;<br />                if (queue[j]&gt;queue[k])<br />                    break;<br />                SortUtil.swap(queue,j,k);<br />                k = j;<br />            }<br />        }<br /><br />    }<br /><br />}</p>
																		<p style="TEXT-ALIGN: left">
																				<strong>SortUtil：</strong>
																		</p>
																		<p class="code" style="TEXT-ALIGN: left">package org.rut.util.algorithm;<br /><br />import org.rut.util.algorithm.support.BubbleSort;<br />import org.rut.util.algorithm.support.HeapSort;<br />import org.rut.util.algorithm.support.ImprovedMergeSort;<br />import org.rut.util.algorithm.support.ImprovedQuickSort;<br />import org.rut.util.algorithm.support.InsertSort;<br />import org.rut.util.algorithm.support.MergeSort;<br />import org.rut.util.algorithm.support.QuickSort;<br />import org.rut.util.algorithm.support.SelectionSort;<br />import org.rut.util.algorithm.support.ShellSort;<br /><br />/**<br /> * @author treeroot<br /> * @since 2006-2-2<br /> * @version 1.0<br /> */<br />public class SortUtil {<br />    public final static int INSERT = 1;<br />    public final static int BUBBLE = 2;<br />    public final static int SELECTION = 3;<br />    public final static int SHELL = 4;<br />    public final static int QUICK = 5;<br />    public final static int IMPROVED_QUICK = 6;<br />    public final static int MERGE = 7;<br />    public final static int IMPROVED_MERGE = 8;<br />    public final static int HEAP = 9;<br /><br />    public static void sort(int[] data) {<br />        sort(data, IMPROVED_QUICK);<br />    }<br />    private static String[] name={<br />            "insert", "bubble", "selection", "shell", "quick", "improved_quick", "merge", "improved_merge", "heap"<br />    };<br />    <br />    private static Sort[] impl=new Sort[]{<br />            new InsertSort(),<br />            new BubbleSort(),<br />            new SelectionSort(),<br />            new ShellSort(),<br />            new QuickSort(),<br />            new ImprovedQuickSort(),<br />            new MergeSort(),<br />            new ImprovedMergeSort(),<br />            new HeapSort()<br />    };<br /><br />    public static String toString(int algorithm){<br />        return name[algorithm-1];<br />    }<br />    <br />    public static void sort(int[] data, int algorithm) {<br />        impl[algorithm-1].sort(data);<br />    }<br /><br />    public static interface Sort {<br />        public void sort(int[] data);<br />    }<br /><br />    public static void swap(int[] data, int i, int j) {<br />        int temp = data[i];<br />        data[i] = data[j];<br />        data[j] = temp;<br />    }<br />}</p>
																</td>
														</tr>
												</tbody>
										</table>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.blogjava.net/xixidabao/aggbug/69015.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xixidabao/" target="_blank">JAVA之路</a> 2006-09-11 19:40 <a href="http://www.blogjava.net/xixidabao/articles/69015.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>应用开发中的技巧2则</title><link>http://www.blogjava.net/xixidabao/articles/68402.html</link><dc:creator>JAVA之路</dc:creator><author>JAVA之路</author><pubDate>Thu, 07 Sep 2006 16:56:00 GMT</pubDate><guid>http://www.blogjava.net/xixidabao/articles/68402.html</guid><description><![CDATA[
		<table width="100%">
				<tbody>
						<tr>
								<td valign="bottom">
										<table cellspacing="2" cellpadding="0" width="100%" border="0">
												<tbody>
														<tr>
																<td valign="top" width="1%">
																		<p align="left"> </p>
																		<p align="left"> </p>
																</td>
																<td valign="top" width="77%">
																		<div>
																				<div class="navbar" align="center">
																				</div>
																		</div>
																		<div>
																				<table dir="ltr" width="100%" summary="Chapter Number" border="0" abbr="ChapNum">
																						<colgroup width="100%">
																								<col id="1" />
																						</colgroup>
																						<tbody>
																								<tr>
																										<td class="ChapNumber" align="right">
																												<div align="left">
																														<p class="title" align="center">应用开发中的技巧2则</p>
																														<p align="center">作者：洪建</p>
																														<p class="normal">2000年毕业以来，从事SUN Solaris平台的J2EE保险行业的应用开发已经有三年多的时间了。在这些年的开发实践中，积累了一些自己认为对工作有帮助的技巧和方法，希望给其他的同行也有所帮助。</p>
																														<p>
																																<b>一、对JAVA源文件、类、帮助文档的管理</b>
																														</p>
																														<p class="normal">在一个实际的应用开发中，都需要编写大量的JavaBeans等等一些JAVA类。尤其在一个项目中会有大量的共用类供其他开发人员使用，那么很好地管理这些类，方便其他开发人员的查找相关帮助和项目中各成员的相互学习，有必要采用一种简单、行之有效的方法达到该目的。</p>
																														<p class="normal">
																																<b>1、JAVA源文件的组织</b>
																														</p>
																														<p class="normal">现有两个package：</p>
																														<pre>package com.j2ee.crm.util;
package com.j2ee.crm.basicinfo;
</pre>
																														<p class="normal">那么我们可以在work工作目录分别建立以下文件夹： 
</p>
																														<p class="normal">
																																<img src="http://gceclub.sun.com.cn/staticcontent/html/2004-03-05/image002.jpg" border="0" />
																														</p>
																														<p class="normal">将相应的JAVA源文件分别置于basicinfo和util文件夹下即可。那么我们可以把所有的JAVA源文件放在com文件下相应的子文件夹下。 
</p>
																														<p class="normal">
																																<b>2、JAVA源文件的编译</b>
																														</p>
																														<p class="normal">先书写一个文本文件filelist.txt保存在work目录下，其内容为：</p>
																														<pre>./com/j2ee/crm/basicinfo/UserInfo.java
./com/j2ee/crm/basicinfo/UserInfoList.java
./com/j2ee/crm/basicinfo/UserInfoDAO.java
./com/j2ee/crm/util/Utility.java
./com/j2ee/crm/util/DbException.java
./com/j2ee/crm/util/DbConnection.java
</pre>
																														<p class="normal">然后在work目录下建立一个classes文件夹，用来存储class文件。</p>
																														<p class="normal">在命令行方式下进入到work目录，用以下命令编译即可：</p>
																														<pre>work&gt;javac -d ./classes @filelist.txt
</pre>
																														<p class="normal">如果编译通过的话，将形成以下的文件夹和类文件：</p>
																														<p class="normal">
																																<img src="http://gceclub.sun.com.cn/staticcontent/html/2004-03-05/image004.jpg" border="0" />
																														</p>
																														<p class="normal">那么我们可以把所有的CLASS类文件都放在classes文件夹下相应的子文件夹下。</p>
																														<p class="normal">
																																<b>3、生成帮助文档</b>
																														</p>
																														<p class="normal">先书写一个文本文件package.txt保存在work目录下，其内容为：</p>
																														<pre>com.j2ee.crm.basicinfo
com.j2ee.crm.util
</pre>
																														<p class="normal">然后在work目录下建立一个docs文件夹，用来存储javadoc帮助文件。</p>
																														<p class="normal">在命令行方式下进入到work目录，用以下命令编译即可：</p>
																														<pre>work&gt; javadoc -d ./docs @package.txt
</pre>
																														<p class="normal">他将形成以下的文件夹和html类型的帮助文档：</p>
																														<p class="normal">
																																<img src="http://gceclub.sun.com.cn/staticcontent/html/2004-03-05/image006.jpg" border="0" />
																														</p>
																														<p class="normal">那么我们可以把所有的html帮助文件都放在docs文件夹下相应的子文件夹下。</p>
																														<p class="normal">
																																<b>4、使用java2html工具</b>
																														</p>
																														<p class="normal">利用java2html工具可以方便地生成类似于javadoc类型的java源码浏览html页面。可以先到http://www.java2html.com网站下载一个Java2HTML.zip文件，解压后将j2h.jar文件的路径添加到classpath环境变量中。</p>
																														<p class="normal">然后在work目录下建立一个codeSource文件。</p>
																														<p class="normal">在命令行方式下进入到work目录，用以下命令即可：</p>
																														<pre>work&gt; java j2h -js ./ -n 名称 -nh -nf -d ./codeSource
</pre>
																														<p class="normal">他将形成以下的文件夹和html类型的JAVA源代码html查看页面：</p>
																														<p class="normal">
																																<img src="http://gceclub.sun.com.cn/staticcontent/html/2004-03-05/image008.jpg" border="0" />
																														</p>
																														<p class="normal">
																																<b>5、总结</b>
																														</p>
																														<p class="normal">通过这些简单的方法和步骤，我们可以分门别类地把java源文件、class类文件、javadoc帮助文档和java源代码html浏览页面组织在work工作目录下不同的子文件夹下，结构清晰、有利于工作的展开和开发人员之间的交流。</p>
																												</div>
																										</td>
																								</tr>
																						</tbody>
																				</table>
																		</div>
																</td>
														</tr>
												</tbody>
										</table>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.blogjava.net/xixidabao/aggbug/68402.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xixidabao/" target="_blank">JAVA之路</a> 2006-09-08 00:56 <a href="http://www.blogjava.net/xixidabao/articles/68402.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Win32下Swt-Designer4.1.1与MyEclipse4.0的破解方法及注册机</title><link>http://www.blogjava.net/xixidabao/articles/67387.html</link><dc:creator>JAVA之路</dc:creator><author>JAVA之路</author><pubDate>Sun, 03 Sep 2006 04:02:00 GMT</pubDate><guid>http://www.blogjava.net/xixidabao/articles/67387.html</guid><description><![CDATA[
		<div class="postTitle">
				<a class="postTitle2" id="viewpost1_TitleUrl" href="/gufen/archive/2005/09/27/14184.html">
						<font color="#4371a6">Win32下Swt-Designer4.1.1与MyEclipse4.0的破解方法及注册机</font>
				</a>
		</div>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">Win32</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">下</span>
				<span lang="EN-US">Swt-Designer<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /?><st1:chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">4.1.1</st1:chsdate></span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">破解</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">环境：</span>
				<span lang="EN-US">win32</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span>
				<span lang="EN-US">Eclipse3.1</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span>
				<span lang="EN-US">Designer_v<st1:chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">4.1.1</st1:chsdate></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">1．<span style="FONT: 7pt 'Times New Roman'">  </span></span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">首先去</span>
				<span lang="EN-US">
						<a href="http://www.swt-designer.com/">
								<font color="#4371a6">http://www.swt-designer.com/</font>
						</a>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">左边的</span>
				<span lang="EN-US">download</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">菜单点击进去后下载</span>
				<span lang="EN-US">Edition for Eclipse 3.1 &amp; 3.2</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，下载后的文件名为</span>
				<span lang="EN-US">Designer_v<st1:chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">4.1.1</st1:chsdate>_for_Eclipse3.1.zip<img height="283" alt="Snap2.gif" src="http://www.blogjava.net/images/blogjava_net/gufen/001.swt.myeclipse.crack/Snap2.gif" width="606" border="0" /><br /></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt">
				<span lang="EN-US">
						<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /?>
						<v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600">
								<v:stroke joinstyle="miter">
								</v:stroke>
								<v:formulas>
										<v:f eqn="if lineDrawn pixelLineWidth 0">
										</v:f>
										<v:f eqn="sum @0 1 0">
										</v:f>
										<v:f eqn="sum 0 0 @1">
										</v:f>
										<v:f eqn="prod @2 1 2">
										</v:f>
										<v:f eqn="prod @3 21600 pixelWidth">
										</v:f>
										<v:f eqn="prod @3 21600 pixelHeight">
										</v:f>
										<v:f eqn="sum @0 0 1">
										</v:f>
										<v:f eqn="prod @6 1 2">
										</v:f>
										<v:f eqn="prod @7 21600 pixelWidth">
										</v:f>
										<v:f eqn="sum @8 21600 0">
										</v:f>
										<v:f eqn="prod @7 21600 pixelHeight">
										</v:f>
										<v:f eqn="sum @10 21600 0">
										</v:f>
								</v:formulas>
								<v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f">
								</v:path>
								<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?>
								<o:lock aspectratio="t" v:ext="edit">
								</o:lock>
						</v:shapetype>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">2．<span style="FONT: 7pt 'Times New Roman'">  </span></span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">然后在我的网络硬盘中下载破解文件</span>
				<span lang="EN-US">: <a href="http://www.thefilehut.com/userfiles/gufen/forblog/swt.designer.pro.keygen.for.eclipse.3.1.rar"><font color="#4371a6">http://www.thefilehut.com/userfiles/gufen/forblog/swt.designer.pro.keygen.for.eclipse.3.1.rar</font></a></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">3．<span style="FONT: 7pt 'Times New Roman'">  </span></span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">解压后在</span>
				<span lang="EN-US">cmd</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">命令中敲入</span>
				<span lang="EN-US">swt.ui.bat</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，运行后出现以下界面，输入框中的内容，然后点击</span>
				<span lang="EN-US">Generate</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">产生序列号和激活码。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: 21pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
						<img height="241" alt="Snap3.gif" src="http://www.blogjava.net/images/blogjava_net/gufen/001.swt.myeclipse.crack/Snap3.gif" width="377" border="0" />
						<br />如果你所使用的环境和版本不是</span>
				<span lang="EN-US">win32</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span>
				<span lang="EN-US">Eclipse3.1</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span>
				<span lang="EN-US">Designer_v<st1:chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">4.1.1</st1:chsdate></span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，请参照</span>
				<span lang="EN-US">
						<a href="http://blog.chinaz.com/u1/530/archives/2005/1789.shtml">
								<font color="#4371a6">http://blog.chinaz.com/u1/530/archives/2005/1789.shtml</font>
						</a>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">来进行破解。这种情况下需要：</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 45pt; TEXT-INDENT: -9pt; mso-list: l2 level2 lfo2; tab-stops: list 45.0pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">a)<span style="FONT: 7pt 'Times New Roman'"></span></span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">将该目录下的</span>
				<span lang="EN-US">org.eclipse.swt.win32.win32.x86_<st1:chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">3.1.0</st1:chsdate>.jar</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span>
				<span lang="EN-US">swt-win32-3138.dll</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">删除</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 45pt; TEXT-INDENT: -9pt; mso-list: l2 level2 lfo2; tab-stops: list 45.0pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">b)</span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在</span>
				<span lang="EN-US">Eclipse</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">目录下找到</span>
				<span lang="EN-US">swt.jar</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">（名字视版本而定，</span>
				<span lang="EN-US">eclipse3.1</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">下是</span>
				<span lang="EN-US">org.eclipse.swt.win32.win32.x86_<st1:chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">3.1.0</st1:chsdate>.jar</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span>
				<span lang="EN-US">swt-win32-2135.dll</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">（名字视版本而定，</span>
				<span lang="EN-US">eclipse3.1</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">下是</span>
				<span lang="EN-US">swt-win32-3138.dll</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）</span>
				<span lang="EN-US">2</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">个文件，拷贝到</span>
				<span lang="EN-US">swt.ui.bat</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">所在的目录。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 45pt; TEXT-INDENT: -9pt; mso-list: l2 level2 lfo2; tab-stops: list 45.0pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">c)</span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">修改</span>
				<span lang="EN-US">swt.ui.bat,</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">如这样：</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: 21pt; mso-para-margin-left: 3.43gd">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">原来是</span>
				<span lang="EN-US">: start javaw -cp SWTDesigner_<st1:chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">2.0.0</st1:chsdate>_Keygen.jar;<span style="COLOR: red">org.eclipse.swt.win32.win32.x86_3.1.0.jar</span> swtdesigner.keygen.SWTUI</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: 21pt; mso-para-margin-left: 3.43gd">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">修改为</span>
				<span lang="EN-US">:start javaw -cp SWTDesigner_<st1:chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">2.0.0</st1:chsdate>_Keygen.jar;<span style="COLOR: red">swt.jar</span> swtdesigner.keygen.SWTUI</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: 21pt; mso-para-margin-left: 3.43gd">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">红色为修改的地方，然后运行后将</span>
				<span lang="EN-US">Version</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">填入你下载的</span>
				<span lang="EN-US">swt-designer</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">版本号即可产生注册码。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt">
				<span lang="EN-US">
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l1 level1 lfo3; tab-stops: list 21.0pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">4.<span style="FONT: 7pt 'Times New Roman'">         </span></span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">将下载的</span>
				<span lang="EN-US">Designer_v<st1:chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">4.1.1</st1:chsdate>_for_Eclipse3.1.zip</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">插件安装到</span>
				<span lang="EN-US">eclipse,</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">如果你不知道如何安装插件请在</span>
				<span lang="EN-US">google</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">里搜索这方面的文章，应该很多的。我也是这样走过来的。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">运行</span>
				<span lang="EN-US">eclipse,</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">打开</span>
				<span lang="EN-US">window-&gt;preferences…-&gt;</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">选择左边树形中的</span>
				<span lang="EN-US">designer(</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">如果没有这一项说明</span>
				<span lang="EN-US">swt-designer</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">插件没有安装成功</span>
				<span lang="EN-US">)</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。</span>
				<span lang="EN-US">-&gt;</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">点击右下的“</span>
				<span lang="EN-US">Registration and Activation</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">”</span>
				<span lang="EN-US">-&gt;</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">弹出“</span>
				<span lang="EN-US">Product Registration and Activation</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">”框，用默认直接点击</span>
				<span lang="EN-US">Next-&gt;</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这一步需要注意的是</span>
				<span lang="EN-US">Name</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">框中两个字符串之间要有个空格，他会认为一个是姓一个是名，否则</span>
				<span lang="EN-US">Next</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">按钮一直是灰的，其他随便填，</span>
				<span lang="EN-US">email</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">框中要合乎</span>
				<span lang="EN-US">email</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">格式就可以了</span>
				<span lang="EN-US">-&gt;</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">输入破解产生的序列号和激活码</span>
				<span lang="EN-US">-&gt;</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">显示“</span>
				<span lang="EN-US">Activation is complete. Thank you.</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">”表示破解成功</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">现在就可以免费使用</span>
				<span lang="EN-US">swt-designer</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">了</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">Win32</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">下</span>
				<span lang="EN-US">MyEclipse4.0</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">破解</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这个破解起来很简单，先去</span>
				<span lang="EN-US">http://www.myeclipseide.com</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">下载</span>
				<span lang="EN-US">Myeclipse4.0,</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">然后去</span>
				<span lang="EN-US">
						<a href="http://www.thefilehut.com/userfiles/gufen/forblog/MyEclipse-4.0.0-GA.Keygen.zip">
								<font color="#4371a6">http://www.thefilehut.com/userfiles/gufen/forblog/MyEclipse-4.0.0-GA.Keygen.zip</font>
						</a>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">下载破解。安装</span>
				<span lang="EN-US">Myeclipse,</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">之后解压破解文件后运行</span>
				<span lang="EN-US">keygen.bat</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，产生一个</span>
				<span lang="EN-US">key</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，之后在</span>
				<span lang="EN-US">Myeclipse</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">注册一下就可以了。<span lang="EN-US">Myeclipse我忘记什么地方注册了，好像装好<span lang="EN-US">Myeclipse后在preferences中的<span lang="EN-US">Myeclipse里点几下就会弹出来个框，把key copy过去确认就可以了。<br /><br />以上破解方法仅供个人学习，请支持正版。(形式？)</span></span></span></span>
		</p>
<img src ="http://www.blogjava.net/xixidabao/aggbug/67387.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xixidabao/" target="_blank">JAVA之路</a> 2006-09-03 12:02 <a href="http://www.blogjava.net/xixidabao/articles/67387.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JDK1.5新特性介绍</title><link>http://www.blogjava.net/xixidabao/articles/47236.html</link><dc:creator>JAVA之路</dc:creator><author>JAVA之路</author><pubDate>Sat, 20 May 2006 16:15:00 GMT</pubDate><guid>http://www.blogjava.net/xixidabao/articles/47236.html</guid><description><![CDATA[下面我们简单介绍一下这些新特性。<BR><BR>　　<STRONG>1.泛型(<a href="http://www.yesky.com/key/481/20481.html" class="bluekey" target="_blank">Generic</a>)</STRONG><BR><BR>　　C++通过模板技术可以指定集合的元素类型，而Java在1.5之前一直没有相对应的功能。一个集合可以放任何类型的对象，相应地从集合里面拿对象的时候我们也不得不对他们进行强制得<a href="http://www.yesky.com/key/2166/12166.html" class="bluekey" target="_blank">类型转换</a>。猛虎引入了泛型，它允许指定集合里元素的类型，这样你可以得到强类型在编译时刻进行类型检查的好处。<BR><BR>
<TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#e6e4dd border=1>
<TBODY>
<TR>
<TD>Collection&lt;String&gt;　c　=　new　ArrayList();<BR>c.add(new　Date());</TD></TR></TBODY></TABLE><BR>　　编译器会给出一个错误：<BR><BR>
<TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#e6e4dd border=1>
<TBODY>
<TR>
<TD>add(java.lang.String)　in　java.util.Collection&lt;java.lang.String&gt;　cannot　be　applied　to　(java.util.Date)</TD></TR></TBODY></TABLE><BR>　　<STRONG>2.For-Each循环</STRONG><BR><BR>　　For-Each循环得加入简化了集合的遍历。假设我们要遍历一个集合对其中的元素进行一些处理。典型的代码为：<BR><BR>
<TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#e6e4dd border=1>
<TBODY>
<TR>
<TD>void　processAll(Collection　c){<BR>　　　　for(Iterator　i=c.iterator();　i.hasNext();){<BR>　　　　　　　　MyClass　myObject　=　(MyClass)i.next();<BR>　　　　　　　　myObject.process();<BR>　　　　}<BR>}</TD></TR></TBODY></TABLE><BR>　　使用For-Each循环，我们可以把代码改写成：<BR><BR>
<TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#e6e4dd border=1>
<TBODY>
<TR>
<TD>void　processAll(Collection&lt;MyClass&gt;　c){<BR>　　　　for　(MyClass　　myObject　:c)<BR>　　　　　　　　myObject.process();<BR>}</TD></TR></TBODY></TABLE><BR>　　这段代码要比上面清晰许多，并且避免了<a href="http://www.yesky.com/key/1853/26853.html" class="bluekey" target="_blank">强制类型转换</a>。<BR><BR>

<BR><BR>　　自动装包/拆包大大方便了基本类型数据和它们包装类地使用。<BR><BR>　　自动装包：基本类型自动转为包装类.(int　&gt;&gt;　Integer)<BR><BR>　　自动拆包：包装类自动转为基本类型.(Integer　&gt;&gt;　int)<BR><BR>　　在JDK1.5之前，我们总是对集合不能存放基本类型而耿耿于怀，现在自动转换机制解决了我们的问题。<BR><BR>
<TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#e6e4dd border=1>
<TBODY>
<TR>
<TD>int　a　=　3;<BR>Collection　c　=　new　ArrayList();<BR>c.add(a);//自动转换成Integer.<BR><BR>Integer　b　=　new　Integer(2);<BR>c.add(b　+　2);</TD></TR></TBODY></TABLE><BR>　　这里Integer先自动转换为int进行加法运算，然后int再次转换为Integer.<BR><BR>　　<STRONG>4.枚举(Enums)</STRONG><BR><BR>　　JDK1.5加入了