??xml version="1.0" encoding="utf-8" standalone="yes"?>国产精品蜜芽在线观看,亚洲免费福利视频,综合久久伊人http://www.aygfsteel.com/qixiangnj/category/22116.html<strong>生命不息Q拼搏不止?lt;/strong>zh-cnSun, 30 Sep 2007 16:11:48 GMTSun, 30 Sep 2007 16:11:48 GMT60- 【翻译】比较NetBeans 6.0 M10和IntelliJ IDEA 7.0 M1http://www.aygfsteel.com/qixiangnj/archive/2007/09/30/149972.htmlThomasThomasSun, 30 Sep 2007 10:44:00 GMThttp://www.aygfsteel.com/qixiangnj/archive/2007/09/30/149972.htmlhttp://www.aygfsteel.com/qixiangnj/comments/149972.htmlhttp://www.aygfsteel.com/qixiangnj/archive/2007/09/30/149972.html#Feedback1http://www.aygfsteel.com/qixiangnj/comments/commentRss/149972.htmlhttp://www.aygfsteel.com/qixiangnj/services/trackbacks/149972.html
——IntelliJ IDEA使用手记
原文作? Ryan de Laplante • Filed
本文作? Thomas Qi
【译者按】前不久QNetBeans 6.0 M10一发布Q就引vq泛x。在Java IDE市场Q除了老牌劲旅Eclipse之外Q还有另外一个很受欢q的产品——IntelliJ IDEAQ它的重构特性,备受推崇。最新版本的IntelliJ IDEA 7.0 M1Q已于近日发布?br />
本文作者是一位忠实的NetBeans用户。他从一个IDEA新手的角度,对NetBeans 6.0 M10和IntelliJ IDEA 7.0 M1作了一个较全面的比较?br />
最q,我看到很多有关Java IDE IntelliJ IDEA的讨论。我只是听说q一些它好的地方Qƈ且对它与NetBeans 6.0QbetaQ比较v来,I竟如何Q很好奇?br />
我反复听到的一些有关IDEA的观点,主要是关于它的代码编辑器、重构能力以及性能的。众所周知Q在 重构斚wQIDEA领先于其他的IDE工具。所以,关于它的重构能力Q我没有q多xQ取而代之的是,把一些我个h认ؓ在NetBeans里很有用以及有待改进的地方与之比较?br />
我下载的是IntelliJ IDEA 7.0 M1Qdev buildQ和NetBeans 6.0 M10Q用的是JDK 1.6.0Q运行是在Ubuntu Linux 7.04上。这是我W一ơ尝试IDEA?br />
首先使我震惊的是IDEA启动、待用的快速?br />
几天后,当我再次使用的时候,q种印象不再那么深刻Q因为它好像p了更多的旉。或许,W一ơ用IDEA的时候,Java虚拟机已l蝲入了Q而第二次没有载入Q另外,W二ơ启动的时候,IDEAq检查了那些在第一ơ用时创徏的项目文件?br />
IDEA在启动、可用上p?5U,而NetBeans 6.0则花费了30U。因为我每天只启动一ơIDEQ所以蝲入时间对于我来说Q不是一个大问题?br />
接着Q我在IDEA里新Z一个web目?br />
我真的不喜欢那个g包含?5个步骤的目向导Q它问我各种各样的问题,例如Q源文g攑֜哪个目录Q编译文件放在哪个目录?资源文g攑֜哪个目录Q如此等{。我必须阅读大量文字才能做出军_。我更喜ƢNetBeans 6.0的新建项目向对{每个步骤,它不只问我一个问题,q且为我作了大量的默认设|。我喜欢q些默认讄Q例如\径)的一致性?br />
然而,我认为,IDEA很灵z,以适应L的目录结构,q点很强大。当你需要用在别的IDE工具或者文本编辑器里写的代码的时候,q很有用。NetBeansh“新徏Z现有源代码的Java目”的功能,我没有去试Q不知道它有多灵zR?br />
IDEAh“导入Eclipse目”?#8220;导入Jbuilder目”的功能。NetBeans 6的帮助文仉说可以通过更新中心来添?#8220;导入Eclipse目”?#8220;导入Jbuilder目”的功能模块,更新中心已经更名为插件管理器Q但是我没有看到q些插gQ或许它们会在正式版本中出现Q?br />
在IDEA里新建完一个web目Q我双击web.xml文g?br />
接下来看到的Q我震惊,我看C——原始XML文gQ!Q我q看Cejb-jar.xml、sun-web.xml、persistence.xml以及别的部v描述文gQ这些竟焉是原始XML文gQ?br />
我不敢相信,IDEA竟然没有NetBeans、Jdeveloper、WebSphere Studio以及别的IDE工具都有的可视化部v描述文g~辑器!一些开发者或许认为编辑这些部|描q文件很单,其q有代码提示。呵呵,那是因ؓ你用的不是IDEAQ否则你该发问了Q既然有JSF和StrutsD文g的可视化~辑器,那ؓ什么没有别的部|描q文件可视化~辑器呢Q?br />
接下来,我想试的是“臭名昭著?#8221;代码~辑器?br />
打开web.xml文gQ我开始输入一些可用的元素名称Q我对代码提C的瞬时响应能力Q印象深刅R它只有一个短暂的延迟Q代码提C打开Q大概只p了半U,g我的手指q在按住CTRL+SPACE的时候,代码提示已l打开了?br />
接着Q我新徏了一个JavacLӞ用于试验更多代码时的提示情况。我再次被代码提C的快速所震撼Q?br />
我发玎ͼ在IDEA里,无论我按住或者单M么,都会有一个瞬时的响应。非常棒Q我以前认ؓQIDEA用户说Eclipse和NetBeans很慢很慢Q显得过于夸张。但是,如果我习惯了IDEA的这U性能Q对别的IDE工具Q我x也会说同L话。然而,我不认ؓ你可以说NetBeans 6不再那么慢了?br />
NetBeans 6的一个主要的新特性就是完全重写了代码~辑器。新的代码编辑器使用了JDK 6.0的编译程序APIQ用于访问抽象语法树QAbstract Syntax TreeQ。它反应相当快,对代码编辑器里的每个l微之处都给予及时响应?br />
我尝试了NetBeans 6.0的代码提C功能,同样印象深刻。我看到一些IDEA的用户在说NetBeans 6.0q是很慢Q但我自己感觉不出来。与NetBeans 5.5相比QNetBeans 6.0的代码编辑器有了显著的改q?br />
之前我说q,我将不再谈论重构。我食言了?br />
我想谈谈NetBeans 6.0的新的重构引擎——Jackpot?br />
Jackpot是一个语a无关的用于重构的APIQ它除了允许Ҏ?java源文Ӟ例如XML或者JSF文gQ进行重构,q允许对非Java元素q行重构。这使得当前的重构工作更加安全ƈ且易于用。事实上QJackpot是一个综合的、用于生成便于理解和l护的代码的框架。你可以把它作ؓ实现q些特征的一个替代或者基Q重构支持、高U搜索和览、质量审查、复杂编辑Q务的自动化(cM宏命令)Q等{?br />
Jackpotq提供了用于~写重构规则的查询语a。你会发玎ͼNetBeans 6里面的重构规则实际上是Jackpot脚本。我怿有一天,Sun或者别的社Z创徏出匹配IDEA重构能力的Jackpot脚本?br />
现在回到IDEAQ这是我喜欢的一些其他特性:
当新Z个JSF目Ӟ我可以选择Sun的参考实现或者Apache的MyFaces。我通常选择Sun的参考实玎ͼ但是需要用到某些应用服务器的时候,你必M用MyFaces。我认ؓ一些JSF的组件库q是依赖于MyFaces?br />
内置了对Spring和Hibernate的支持。我敢打赌,NetBeans默认没有提供q些内置支持Q是因ؓSun正在推动Java EE。是有几个关于Spring和Hibernate的插Ӟ但是我不定它们是否好用Q我也从没有看到有h在用或者谈论它们?br />
IDEA支持q样一些应用服务器QTomcat、Geronimo、WebLogic、WebSphere、Jboss、Glassfish/Sun App Server。NetBeans也支持这些,但是使用Geronimo和WebSphere时出C异常?br />
IDEA支持使用目录展开格式来部|web应用。我不认为NetBeans也支持这个?br />
IDEA内置了很多代码分析功能,例如Q代码度量、测试覆盖、相当于checkstyle和findbugsQ等{。NetBeans有一些插件用来实现这L功能Q但是我怀疑在NetBeans 6里它们是否还能正常工作,q且它们不是内置的?br />
不好的地方,要想在IDEA里用性能分析器,你需要再多花500元。NetBeans则内|了一个强大的性能分析器?br />
我看到有开发者抱怨说Q包?0000?0000个文件的目Q在NetBeans里运行很慢。我不知道他们用的是NetBeans 5.5q是6.0Q但是在6.0里,性能问题是被最优先考虑的。M10是NetBeans 6的最后一个里E碑版本。目前功能基本完成了Q从现在?1月䆾最l版发布Q主要的工作是修复bug和改q性能?br />
我承认,我没有对IDEA做一个详的调查Q我只是_略地研I了一下,但是Ҏ兛_的热炚w题都有所涉及?br />
Z完全体验IDEAQ我需要花Ҏ周的旉来学习它的快捷键、重构特性。喜爱IDEA的h会说Q一旦你学会了它Q你不再对别的IDE工具感兴。如果我必须使用IDEA来工作,我想q也不错。我虽没有用Java开发过百万个项目,可是使用NetBeans我ƈ没有觉得受到什么限制。NetBeans有我需要的所有功能ƈ且我不觉得它慢?br />
我想Q我不会马上换用IDEA——至在NetBeans 6.0最l版发布之前?br />
Q原文地址Qhttp://www.ryandelaplante.com/rdelaplante/entry/a_comparison_of_netbeans_6Q?br />

]]> - 动态代理在Java中的单应?/title>http://www.aygfsteel.com/qixiangnj/archive/2007/02/04/97888.htmlThomasThomasSun, 04 Feb 2007 13:43:00 GMThttp://www.aygfsteel.com/qixiangnj/archive/2007/02/04/97888.htmlhttp://www.aygfsteel.com/qixiangnj/comments/97888.htmlhttp://www.aygfsteel.com/qixiangnj/archive/2007/02/04/97888.html#Feedback1http://www.aygfsteel.com/qixiangnj/comments/commentRss/97888.htmlhttp://www.aygfsteel.com/qixiangnj/services/trackbacks/97888.html
package com.cleversoft.demos.dynamicproxy;


public interface Subject
{
public void request();
}
2. com.cleversoft.demos.dynamicproxy.RealSubject.java:
package com.cleversoft.demos.dynamicproxy;


public class RealSubject implements Subject
{

public RealSubject()
{
}


public void request()
{
System.out.println("From real subject.");
}
}
3. com.cleversoft.demos.dynamicproxy.DynamicSubject.java:
动态代理类需要实现InvocationHandler接口Q即需要实现invoke()Ҏ?br>
package com.cleversoft.demos.dynamicproxy;

import java.lang.reflect.Method;
import java.lang.reflect.InvocationHandler;


public class DynamicSubject implements InvocationHandler
{

private Object _obj;


public DynamicSubject()
{
}


public DynamicSubject(Object obj)
{
this._obj = obj;
}

public Object invoke(Object proxy, Method method, Object[] args)

throws Throwable
{
System.out.println("before calling " + method);
method.invoke(_obj, args);
System.out.println("after calling " + method);
return null;

}

}
4. com.cleversoft.demos.dynamicproxy.Client.java:
package com.cleversoft.demos.dynamicproxy;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;


public class Client
{

static public void main(String[] args) throws Throwable
{
RealSubject rs = new RealSubject(); // 指定被代理类
InvocationHandler ih = new DynamicSubject(rs); // 初始化代理类
Class cls = rs.getClass();

Subject subject = (Subject) Proxy.newProxyInstance(
cls.getClassLoader(), cls.getInterfaces(), ih);
subject.request();
}
}
参考资料:
1. 《Java与模式?br>2. http://dev.csdn.net/Develop/article/28/61250.shtm 
]]> - 当前目开发中使用的一个Ant脚本http://www.aygfsteel.com/qixiangnj/archive/2006/12/21/89311.htmlThomasThomasThu, 21 Dec 2006 08:32:00 GMThttp://www.aygfsteel.com/qixiangnj/archive/2006/12/21/89311.htmlhttp://www.aygfsteel.com/qixiangnj/comments/89311.htmlhttp://www.aygfsteel.com/qixiangnj/archive/2006/12/21/89311.html#Feedback0http://www.aygfsteel.com/qixiangnj/comments/commentRss/89311.htmlhttp://www.aygfsteel.com/qixiangnj/services/trackbacks/89311.html
<project name="cTrace" default="runie" basedir=".">
<!-- Name of project and version -->
<property name="proj.name" value="cTrace" />
<property name="proj.version" value="1.0" />

<!-- Global properties for this build -->
<property name="src.java.dir" value="src" />
<property name="lib.dir" value="lib" />
<property name="build.dir" value="bin" />
<property name="dist.dir" value="dist" />
<!-- ================================ -->
<property name="main.class" value="com" />
<property name="dest.dir" value="C:\Inetpub\wwwroot\aes\cTrace\reports" />
<property name="run.class" value="com.aesclever.ctrace.packetview.PacketViewApplet" />
<property name="ie.dir" value="C:\Program Files\Internet Explorer" />
<!-- ================================ -->

<!-- Classpath declaration -->
<path id="project.classpath">
<fileset dir="${lib.dir}">
<include name="**/*.jar" />
<include name="**/*.zip" />
</fileset>
</path>

<!-- Useful shortcuts -->
<patternset id="meta.files">
<include name="**/*.xml" />
<include name="**/*.properties" />
</patternset>

<!-- Clean up -->
<target name="clean">
<delete dir="${build.dir}" />
<mkdir dir="${build.dir}" />
<delete dir="${dist.dir}" />
<mkdir dir="${dist.dir}" />
</target>

<!-- Compile Java source -->
<target name="compile" depends="clean">
<mkdir dir="${build.dir}" />
<javac srcdir="${src.java.dir}" destdir="${build.dir}" nowarn="on">
<classpath refid="project.classpath" />
</javac>
</target>

<!-- Copy metadata to build classpath -->
<target name="copymetafiles">
<copy todir="${build.dir}">
<fileset dir="${src.java.dir}">
<patternset refid="meta.files" />
</fileset>
</copy>
</target>

<!-- Create Jar file -->
<target name="dist" depends="compile, copymetafiles">
<jar destfile="${dist.dir}/${proj.name}.jar" basedir="${build.dir}">
<manifest>
<attribute name="Built-By" value="${user.name}" />
<attribute name="Main-Class" value="${main.class}" />
</manifest>
</jar>
<jar destfile="${dist.dir}/${proj.name}-src.jar" basedir="${src.java.dir}" />
</target>

<!-- Copy Jar file to destdir -->
<target name="copy" depends="dist">
<copy todir="${dest.dir}">
<fileset dir="${dist.dir}">
</fileset>
</copy>
</target>

<!-- Run IE -->
<target name="runie" depends="copy">
<exec executable="cmd.exe" dir="${ie.dir}">
<arg line="/c iexplore" />
</exec>
</target>

<!-- Run cTrace -->
<target name="run" depends="compile, copymetafiles" description="Build and run cTrace">
<java fork="true" classname="${run.class}" classpathref="project.classpath">
<classpath path="${build.dir}" />
</java>
</target>
</project>
]]>
վ֩ģ壺
ͨ|
|
|
|
|
|
Զ|
|
ɽ|
ʵ|
ͨ|
ϲ|
ϳ|
ƽ|
ˮ|
|
|
|
Ѱ|
ɽ|
|
Ԫ|
ƽ|
|
ˮ|
¡|
|
|
|
Ͻ|
|
|
̨ɽ|
|
|
ƽ|
|
|
|
|
|