﻿<?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-A life of continued exploration is a life worth living.-随笔分类-SUN Tech</title><link>http://www.blogjava.net/wqnashqu/category/24621.html</link><description>工作日志……
&lt;!-- SiteSearch Google --&gt;
&lt;form method="get" action="http://www.google.com/custom" target="_top"&gt;
&lt;table border="0" bgcolor="#ffffff"&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;

&lt;/td&gt;
&lt;td nowrap="nowrap"&gt;
&lt;input type="hidden" name="domains" value="codesearch.google.com;www.blogjava.net;www.ibm.com"&gt;&lt;/input&gt;
&lt;label for="sbi" style="display: none"&gt;输入您的搜索字词&lt;/label&gt;
&lt;input type="text" name="q" size="26" maxlength="255" value="" id="sbi"&gt;&lt;/input&gt;
&lt;label for="sbb" style="display: none"&gt;提交搜索表单&lt;/label&gt;
&lt;input type="submit" name="sa" value="Google 搜索" id="sbb"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td nowrap="nowrap"&gt;
&lt;table&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;input type="radio" name="sitesearch" value="" checked id="ss0"&gt;&lt;/input&gt;
&lt;label for="ss0" title="搜索网络"&gt;&lt;font size="-1" color="#000000"&gt;Web&lt;/font&gt;&lt;/label&gt;&lt;/td&gt;
&lt;td&gt;
&lt;input type="radio" name="sitesearch" value="codesearch.google.com" id="ss1"&gt;&lt;/input&gt;
&lt;label for="ss1" title="搜索 codesearch.google.com"&gt;&lt;font size="-1" color="#000000"&gt;codesearch.google.com&lt;/font&gt;&lt;/label&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;input type="radio" name="sitesearch" value="www.blogjava.net" id="ss2"&gt;&lt;/input&gt;
&lt;label for="ss2" title="搜索 www.blogjava.net"&gt;&lt;font size="-1" color="#000000"&gt;www.blogjava.net&lt;/font&gt;&lt;/label&gt;&lt;/td&gt;
&lt;td&gt;
&lt;input type="radio" name="sitesearch" value="www.ibm.com" id="ss3"&gt;&lt;/input&gt;
&lt;label for="ss3" title="搜索 www.ibm.com"&gt;&lt;font size="-1" color="#000000"&gt;www.ibm.com&lt;/font&gt;&lt;/label&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;input type="hidden" name="client" value="pub-5842524610105352"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="GB2312"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="GB2312"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;LH:45;LW:166;L:http://www.blogjava.net/images/logo.gif;S:http://www.blogjava.net/wqnashqu;FORID:1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="zh_CN"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;!-- SiteSearch Google --&gt;</description><language>zh-cn</language><lastBuildDate>Fri, 03 Aug 2007 17:06:43 GMT</lastBuildDate><pubDate>Fri, 03 Aug 2007 17:06:43 GMT</pubDate><ttl>60</ttl><item><title>焦点关注</title><link>http://www.blogjava.net/wqnashqu/archive/2007/05/31/121095.html</link><dc:creator>曲强 Nicky</dc:creator><author>曲强 Nicky</author><pubDate>Thu, 31 May 2007 03:03:00 GMT</pubDate><guid>http://www.blogjava.net/wqnashqu/archive/2007/05/31/121095.html</guid><wfw:comment>http://www.blogjava.net/wqnashqu/comments/121095.html</wfw:comment><comments>http://www.blogjava.net/wqnashqu/archive/2007/05/31/121095.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wqnashqu/comments/commentRss/121095.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wqnashqu/services/trackbacks/121095.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 好长时间没写随笔了^^，主要是因为这几天很忙,ibm的、学校的、还有sun的插件大赛，但是这段时间自己确一直在学习，在继续关注技术的进展，随着这篇关注焦点，在之后的几天里，我会继续写一些，IBM SOA、SOAP、RBD、EGL还有我们HotJava的 SmallWorld等内容。<br>JavaFX当前是备受SUN推崇和重点推广的项目之一，也是Java技术继续演化的内容之一。&nbsp;&nbsp;<a href='http://www.blogjava.net/wqnashqu/archive/2007/05/31/121095.html'>阅读全文</a><img src ="http://www.blogjava.net/wqnashqu/aggbug/121095.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wqnashqu/" target="_blank">曲强 Nicky</a> 2007-05-31 11:03 <a href="http://www.blogjava.net/wqnashqu/archive/2007/05/31/121095.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>F3(转http://blogs.sun.com/chrisoliver/entry/f3)</title><link>http://www.blogjava.net/wqnashqu/archive/2007/05/07/115768.html</link><dc:creator>曲强 Nicky</dc:creator><author>曲强 Nicky</author><pubDate>Mon, 07 May 2007 14:30:00 GMT</pubDate><guid>http://www.blogjava.net/wqnashqu/archive/2007/05/07/115768.html</guid><wfw:comment>http://www.blogjava.net/wqnashqu/comments/115768.html</wfw:comment><comments>http://www.blogjava.net/wqnashqu/archive/2007/05/07/115768.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wqnashqu/comments/commentRss/115768.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wqnashqu/services/trackbacks/115768.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 据说极有可能迅速取代目前流行的SWING和SWT技术。&nbsp;&nbsp;<a href='http://www.blogjava.net/wqnashqu/archive/2007/05/07/115768.html'>阅读全文</a><img src ="http://www.blogjava.net/wqnashqu/aggbug/115768.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wqnashqu/" target="_blank">曲强 Nicky</a> 2007-05-07 22:30 <a href="http://www.blogjava.net/wqnashqu/archive/2007/05/07/115768.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Temple of Sun Contest(official rules)__I think it's really a simple contest for 5000$ huge prize!</title><link>http://www.blogjava.net/wqnashqu/archive/2007/04/24/113120.html</link><dc:creator>曲强 Nicky</dc:creator><author>曲强 Nicky</author><pubDate>Tue, 24 Apr 2007 03:00:00 GMT</pubDate><guid>http://www.blogjava.net/wqnashqu/archive/2007/04/24/113120.html</guid><wfw:comment>http://www.blogjava.net/wqnashqu/comments/113120.html</wfw:comment><comments>http://www.blogjava.net/wqnashqu/archive/2007/04/24/113120.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/wqnashqu/comments/commentRss/113120.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wqnashqu/services/trackbacks/113120.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Sun has rolled out the Temple of Sun Contest with a US$5,000 cash prize. This is a great vehicle to promote Sun Studio on campus.&nbsp;&nbsp;<a href='http://www.blogjava.net/wqnashqu/archive/2007/04/24/113120.html'>阅读全文</a><img src ="http://www.blogjava.net/wqnashqu/aggbug/113120.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wqnashqu/" target="_blank">曲强 Nicky</a> 2007-04-24 11:00 <a href="http://www.blogjava.net/wqnashqu/archive/2007/04/24/113120.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Sun device detection tool</title><link>http://www.blogjava.net/wqnashqu/archive/2007/04/14/110717.html</link><dc:creator>曲强 Nicky</dc:creator><author>曲强 Nicky</author><pubDate>Sat, 14 Apr 2007 15:52:00 GMT</pubDate><guid>http://www.blogjava.net/wqnashqu/archive/2007/04/14/110717.html</guid><wfw:comment>http://www.blogjava.net/wqnashqu/comments/110717.html</wfw:comment><comments>http://www.blogjava.net/wqnashqu/archive/2007/04/14/110717.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wqnashqu/comments/commentRss/110717.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wqnashqu/services/trackbacks/110717.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: By the way,there is a tool,Sun Device Detection Tool ,which is based on jnlp protocol, can tell us in just a few minutes whether the Solaris OS supports the devices that are detected in our x86 system, in advance.&nbsp;&nbsp;<a href='http://www.blogjava.net/wqnashqu/archive/2007/04/14/110717.html'>阅读全文</a><img src ="http://www.blogjava.net/wqnashqu/aggbug/110717.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wqnashqu/" target="_blank">曲强 Nicky</a> 2007-04-14 23:52 <a href="http://www.blogjava.net/wqnashqu/archive/2007/04/14/110717.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Yestoday Test</title><link>http://www.blogjava.net/wqnashqu/archive/2007/03/17/104393.html</link><dc:creator>曲强 Nicky</dc:creator><author>曲强 Nicky</author><pubDate>Fri, 16 Mar 2007 23:36:00 GMT</pubDate><guid>http://www.blogjava.net/wqnashqu/archive/2007/03/17/104393.html</guid><wfw:comment>http://www.blogjava.net/wqnashqu/comments/104393.html</wfw:comment><comments>http://www.blogjava.net/wqnashqu/archive/2007/03/17/104393.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wqnashqu/comments/commentRss/104393.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wqnashqu/services/trackbacks/104393.html</trackback:ping><description><![CDATA[Yestoday night,CA coordinator emailed and phoned me for Sunstudio running and test the ping-home function,I m sorry that I really didn't know what's this really mean under Unix,I am not sure,maybe about to edit the file of host,but I just ping -s localhost,well,maybe another ip destination.more awful,I cannot run the #./SUNWspro/bin/f95, #./SUNWspro/bin/cc, #./SUNWspro/bin/CC...I have sent the first test result,and continue to learn more about it,but I m really sorry.<br><!--***************************************************-->
<p>&nbsp;</p>
<br>
<p>&nbsp;</p>
<br>
<script type="text/javascript"><!--
google_ad_client = "pub-5842524610105352";
google_ad_width =" 234;
google_ad_height" =" 60;
google_ad_format" =" "234x60_as";
google_ad_type" =" "text_image";
google_ad_channel" =" "";
google_color_border" =" "ffffff";
google_color_bg" =" "ffffff";
google_color_link" =" "0000ff";
google_color_text" =" "000000";
google_color_url" =" "008000";
//--">
</script>
<script type="text/javascript"
&#160; src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>  <img src ="http://www.blogjava.net/wqnashqu/aggbug/104393.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wqnashqu/" target="_blank">曲强 Nicky</a> 2007-03-17 07:36 <a href="http://www.blogjava.net/wqnashqu/archive/2007/03/17/104393.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>OpenSolaris&amp;&amp;my Tech-talk</title><link>http://www.blogjava.net/wqnashqu/archive/2007/03/12/103244.html</link><dc:creator>曲强 Nicky</dc:creator><author>曲强 Nicky</author><pubDate>Mon, 12 Mar 2007 03:01:00 GMT</pubDate><guid>http://www.blogjava.net/wqnashqu/archive/2007/03/12/103244.html</guid><wfw:comment>http://www.blogjava.net/wqnashqu/comments/103244.html</wfw:comment><comments>http://www.blogjava.net/wqnashqu/archive/2007/03/12/103244.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wqnashqu/comments/commentRss/103244.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wqnashqu/services/trackbacks/103244.html</trackback:ping><description><![CDATA[Maybe,u are tied of Windows and come to thinking of trying Linux,so many good Operation Systems,like,Suse Redhat ...or Novell have all enterprise u might need,as well,support communities.well,it's true enough--Solaris is also available and as a OpenSolaris form with AMD and Intel friends,with a pretty community going &amp;&amp; more and more third-party supporting.U may download the Solaris form www.opentech.org.cn, www.opensolaris.org, ...Sun.<br>I very like OpenSolaris not only its security,its creative,convinient...whereas,its all:).The Java Desktop is cool and we may also use click to operate,well,I like the terminal more.Now I use Solaris as a developer desktop,it integrates the Netbeans to develop Java which is also a excellent enviroment to develop others after u plug in,Sun Studio,a platform to develop C/C++ &amp;&amp;fortan,with sun compiler,efficient.If u think Solaris is too big and Enterprise-heavy,u will make a mistake,Solaris is very small but excellent perform,:),U can try urself.<br>yestoday i make a techtalk about Sun openSolaris and Java,C/C++ development under it in my campus(DaLian University of Technology).To my surprise There were more students from the&nbsp; disrelated computer science Department,more,even more girls.I saw a Linux teachers attending,I was very pleased,cos of Solaris is sure to attract the fancy of the Linux users,at least,It's better in my...our's eyes.:),as following I attach some of pics of my tech-talking to share with u.<br>&nbsp;  <img style="width: 280px; height: 210px;" alt="" src="http://www.blogjava.net/images/blogjava_net/wqnashqu/s1.jpg">&nbsp;  <img style="width: 280px; height: 210px;" alt="" src="http://www.blogjava.net/images/blogjava_net/wqnashqu/s2.jpg">    <img src ="http://www.blogjava.net/wqnashqu/aggbug/103244.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wqnashqu/" target="_blank">曲强 Nicky</a> 2007-03-12 11:01 <a href="http://www.blogjava.net/wqnashqu/archive/2007/03/12/103244.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Support for Scripting Languages</title><link>http://www.blogjava.net/wqnashqu/archive/2007/03/07/102476.html</link><dc:creator>曲强 Nicky</dc:creator><author>曲强 Nicky</author><pubDate>Wed, 07 Mar 2007 13:49:00 GMT</pubDate><guid>http://www.blogjava.net/wqnashqu/archive/2007/03/07/102476.html</guid><wfw:comment>http://www.blogjava.net/wqnashqu/comments/102476.html</wfw:comment><comments>http://www.blogjava.net/wqnashqu/archive/2007/03/07/102476.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wqnashqu/comments/commentRss/102476.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wqnashqu/services/trackbacks/102476.html</trackback:ping><description><![CDATA[<p>
Most developers have heard of, and possibly used, scripting languages
such as Ruby, JavaScript, and Python. These dynamic languages are
enjoying a resurgence in popularity, largely because of their
flexibility and simplicity, and the productivity gains they promise. </p>
<p>Java 6 comes with built-in <a href="http://www.devx.com/Java/Article/33206/0" target="new">support for scripting languages</a>.
You can embed scripts in various scripting languages into your Java
applications, passing parameters, evaluating expressions, and
retrieving results. And you can do it all pretty seamlessly.</p>
<p>First of all, you obtain a new <span class="pf">ScriptEngine</span> object from a <span class="pf">ScriptEngineManager</span>, as shown here:<br></p>
<p>ScriptEngineManager manager = new ScriptEngineManager();<code><br></code></p>
<p>
<code>ScriptEngine engine = manager.getEngineByName("js");</code>
</p>
<p>Each scripting language has its own unique identifier. The "js" here means you're dealing with JavaScript.</p>
<p>Now you can start having some fun. Interacting with a script is easy
and intuitive. You can assign scripting variables using the <span class="pf">put()</span> method and evaluate the script using the <span class="pf">eval()</span>
method,. which returns the most recently evaluated expression processed
by the script. And that pretty much covers the essentials. Here's an
example that puts it all together:</p>
<p>engine.put("cost", 1000);<br>String decision = (String) engine.eval(<br>"if ( cost &gt;= 100){ " +<br>"decision = 'Ask the boss'; " +<br>"} else {" +<br>"decision = 'Buy it'; " +<br>"}");<br>assert ("Ask the boss".equals(decision));<br></p>
<p>You can do more than just pass variables to your scripts— you can
also invoke Java classes from within your scripts. Using the
importPackage() function enables you to import Java packages, as shown
here:
</p>
<pre>				<code>
<br>        engine.eval("importPackage(java.util); " +<br>                    "today = new Date(); " +<br>                    "print('Today is ' + today);");<br></code>
</pre>
<p>Another cool feature is the <span class="pf">Invocable</span>
interface, which lets you invoke a function by name within a script.
This lets you write libraries in scripting languages, which you can use
by calling key functions from your Java application. You just pass the
name of the function you want to call, an array of Objects for the
parameters, and you're done! Here's an example:</p>
<pre>				<code>
<br>        engine.eval("function calculateInsurancePremium(age) {...}");<br>        Invocable invocable = (Invocable) engine;<br>        Object result  = invocable.invokeFunction("calculateInsurancePremium",<br>                                     new Object[] {37});<br></code>
</pre>
<p>You actually can do a fair bit more than what I've shown here. For
example, you can pass a Reader object to the eval() method, which makes
it easy to store scripts in external files, or bind several Java
objects to JavaScript variables using a Map-like Binding object. You
can also compile some scripting languages to speed up processing. But
you probably get the idea that the integration with Java is smooth and
well thought-out.</p><img src ="http://www.blogjava.net/wqnashqu/aggbug/102476.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wqnashqu/" target="_blank">曲强 Nicky</a> 2007-03-07 21:49 <a href="http://www.blogjava.net/wqnashqu/archive/2007/03/07/102476.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java6 MUstang新特性总结（摘录）</title><link>http://www.blogjava.net/wqnashqu/archive/2007/02/08/98695.html</link><dc:creator>曲强 Nicky</dc:creator><author>曲强 Nicky</author><pubDate>Thu, 08 Feb 2007 03:18:00 GMT</pubDate><guid>http://www.blogjava.net/wqnashqu/archive/2007/02/08/98695.html</guid><wfw:comment>http://www.blogjava.net/wqnashqu/comments/98695.html</wfw:comment><comments>http://www.blogjava.net/wqnashqu/archive/2007/02/08/98695.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wqnashqu/comments/commentRss/98695.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wqnashqu/services/trackbacks/98695.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Java SE 6.0（代号Mustang，野马）已经发布，详情请见野马奔腾而出，Java SE 6 正式版发布，它给我们带来了哪些新的特性了。&nbsp;&nbsp;&nbsp; 首先，我们看看JDK 6.0包含了大量的JSR，分为四组，分别为：&nbsp;&nbsp;&nbsp; 在简化开发方面：199: Compiler API...&nbsp;&nbsp;<a href='http://www.blogjava.net/wqnashqu/archive/2007/02/08/98695.html'>阅读全文</a><img src ="http://www.blogjava.net/wqnashqu/aggbug/98695.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wqnashqu/" target="_blank">曲强 Nicky</a> 2007-02-08 11:18 <a href="http://www.blogjava.net/wqnashqu/archive/2007/02/08/98695.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>NB“升级”</title><link>http://www.blogjava.net/wqnashqu/archive/2007/01/30/96802.html</link><dc:creator>曲强 Nicky</dc:creator><author>曲强 Nicky</author><pubDate>Tue, 30 Jan 2007 15:01:00 GMT</pubDate><guid>http://www.blogjava.net/wqnashqu/archive/2007/01/30/96802.html</guid><wfw:comment>http://www.blogjava.net/wqnashqu/comments/96802.html</wfw:comment><comments>http://www.blogjava.net/wqnashqu/archive/2007/01/30/96802.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wqnashqu/comments/commentRss/96802.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wqnashqu/services/trackbacks/96802.html</trackback:ping><description><![CDATA[<p>前几天好不容易下到了JDK6mustang，今天恰好有时间升级了一下Netbeans默认的JDK版本。这里简单的说明一下升级的方法。如果我
们不修改Netbeans的属性，需要在JavaPlatform
manager中加入另一版本的类库。新建工程后如果要修改类库，还需要修改项目的类库属性，现在通过修改默认的JDK类库，便可方便很多，更不需要重新
安装NB。</p>
<p>我的NB装在D盘中，可以在该路径找到文件D:\Netbeans-5.5\etc\Netbeans.conf，我们将原有的默认类库netbeans_jdkhome="D:\Java\jdk1.5.0_07"修改为
netbeans_jdkhome="D:\Java\jdk1.6.0"便轻松的完成了升级，当然在tools-〉JavaPlatform
manager〉中当然也可以将我们惯用的D:\Java\jdk1.5.0_07加入为可选用类库。</p><img src ="http://www.blogjava.net/wqnashqu/aggbug/96802.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wqnashqu/" target="_blank">曲强 Nicky</a> 2007-01-30 23:01 <a href="http://www.blogjava.net/wqnashqu/archive/2007/01/30/96802.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Visual Web Pack (Netbeans可视化化Web开发)</title><link>http://www.blogjava.net/wqnashqu/archive/2006/12/04/85327.html</link><dc:creator>曲强 Nicky</dc:creator><author>曲强 Nicky</author><pubDate>Mon, 04 Dec 2006 05:07:00 GMT</pubDate><guid>http://www.blogjava.net/wqnashqu/archive/2006/12/04/85327.html</guid><wfw:comment>http://www.blogjava.net/wqnashqu/comments/85327.html</wfw:comment><comments>http://www.blogjava.net/wqnashqu/archive/2006/12/04/85327.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/wqnashqu/comments/commentRss/85327.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wqnashqu/services/trackbacks/85327.html</trackback:ping><description><![CDATA[<div id="articleText413f5055010006hb" class="sysBr500 text" align="left">
<div>今天在sun的网站上转了一圈，等了好几天的Visual Web
Pack终于出来了.</div>
<div>先介绍一下</div>
<div>
<strong>Creates a new Visual Web Pack project</strong>
containing an empty web application. This project enables you to
use Visual Web Pack features like the <em>Visual Designer</em> to
drag and drop JSF components, visual and dialog box support for
<em>binding components</em> to data providers, and generation of Java
code and Web XML files. The project uses the <strong>IDE-generated build
script</strong> to build, run, and debug your project.</div>
<div>
<strong>创建一个可视化页面工程包</strong>
包含一个空白页面应用程序.这个工程能让你使用可视化开发包的各种属性，诸如用可视化设计工具拖放JSF(java
server
face)组件,可视化的对话框支持将组件数据源（或者数据提供者）绑定在一起，并且生成java代码和xml页面文件。这一工程由<strong>集成开发环境（IDE）生成的构建脚本</strong>来构造，执行和调试你的项目。</div>
<div>(翻译的不好请见谅)</div>
<div>还支持ajax，呵~~呵~~~。</div>
<div>最终装好的效果图:</div>
<div>
<a href="http://album.sina.com.cn/pic/413f505502000edj" target="_blank">
<img src="http://album.sina.com.cn/pic/413f505502000edj" border="0">
</a>
</div>
<div>全面支持拖放，呵呵，上次装了一个java studio
creator结果运行死慢死慢的，这一次把这一功能转移到了netbeans挺好用，速度也不错，我这台笔记本都能挺过来，台式机估计没什么问题。</div>
<div>安装时要注意的地方:</div>
<div>1.netbeans必须为5.5正式版本，beta版本的检测不到。<a href="http://www.netbeans.org/index.html" target="_blank">点击</a>进入netbeans首页</div>
<div>2.下载JDK 5_60或者以后的版本我用的是JDK
5_09版本，安装的时候最好不要把原来的卸载，有时候老程序不认新的JDK。<a href="http://java.sun.com/javase/downloads/index.jsp" target="_blank">点击</a>进入JDK下载页面</div>
<div>点击<a href="http://www.netbeans.org/products/visualweb/" target="_blank">这里</a>进入<strong>Visual Web Pack</strong>
的下载页面。</div>
</div><img src ="http://www.blogjava.net/wqnashqu/aggbug/85327.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wqnashqu/" target="_blank">曲强 Nicky</a> 2006-12-04 13:07 <a href="http://www.blogjava.net/wqnashqu/archive/2006/12/04/85327.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Sun studio 11 </title><link>http://www.blogjava.net/wqnashqu/archive/2006/11/17/81871.html</link><dc:creator>曲强 Nicky</dc:creator><author>曲强 Nicky</author><pubDate>Fri, 17 Nov 2006 15:22:00 GMT</pubDate><guid>http://www.blogjava.net/wqnashqu/archive/2006/11/17/81871.html</guid><wfw:comment>http://www.blogjava.net/wqnashqu/comments/81871.html</wfw:comment><comments>http://www.blogjava.net/wqnashqu/archive/2006/11/17/81871.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wqnashqu/comments/commentRss/81871.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wqnashqu/services/trackbacks/81871.html</trackback:ping><description><![CDATA[&nbsp;&nbsp; Sun Microsystems公司宣布，其免费提供的适用于<a href="http://www.sun.com/solaris/">Solaris</a>和Linux
操作系统的开发工具――Sun Studio
11软件，再次就标准性能评测公司(SPEC)提出的新的基准性能标准创立了破记录的性能记录。此外，Sun还发布了Sun Studio
Express项目，采用C、C++和Fortan等编程语言的开发者可以通过该项目预览Sun
Studio未来版本准备提供的新特性。在过去的6个月内，对Sun Studio 11软件的注册下载次数已超过50,000次，Sun
Studio Express项目的创立响应了业界对Sun Studio 11软件的极大兴趣和迅速采用的需求。 <br><br>
Sun在基于AMD Opteron和UltraSPARC&#174;处理器的系统上，采用Sun Studio 11和Solaris
10软件，创立了四大基准性能测试中的三项性能测试(SPECint2006、SPECfp2006和SPECint_rate2006)的最高记录，确
立了Sun在标准性能方面的领导地位。采用Sun Studio 11软件所具有的先进性能，如自平行技术(Auto-Parallelism
Technology)，基于AMD Opteron处理器的Sun Fire
X4200服务器，其性能超越了基于Intel处理器的竞争对手的系统，如HP ProLiant DL380 G4服务器和HP ProLiant
DL385服务器。Sun还公布了其旗舰产品Sun Fire
E25K服务器的优异性能，兑现了它曾对高端商务计算领域做出的承诺。据IDC公司2006年第二季度全球服务器市场季度报告得知，Sun的高端系统针对
Sun Studio软件做了优化，这帮助Sun成为了这一季度内取得市场份额增长的唯一的服务器厂商。 <br><br>
所创立的SPEC
CPU2006基准性能的测试记录是2006年8月24日发布的。这一记录是上个最高记录的4倍。该基准性能测试针对了各种各样的负载，得到了实际应用中
更好的适用性结果。这一新的基准性能测试在各种计算密集的负载上测试了计算机处理器、内存架构和编译器的性能，这些负载应用包括有，蛋白质排序、MPEG
-4编码、XML处理、流体动力学、结构性力学和语音识别等。 <br><br>
&#8220;Sun Studio软件继续显示了在帮助开发商最大化其应用程序性能的能力上的领导地位，&#8221;Sun公司开发工具高级总监Don
Kretsch说，&#8220;6个月内50,000次下载，使采用Sun Studio
11软件的企业开源开发者们获得了诸多好处：减少了开发时间，提高了便携性，还改善了他们所开发的应用程序的性能。&#8221; <br><br>
Sun Studio
11软件为开发者带来的最大好处之一就是各个组件之间的集成性非常好，这些组件包括有：编译器优化组件、多线程警示调试器、性能分析工具和一个基于
NetBeans的集成开发环境(IDE)。这些工具组件还可以在其他的编译器上工作，这就使开发者们可以很容易地将Sun
Studio工具与他们现有的开发环境混和在一起使用。新发布的Sun Studio Express项目对正在研发中的Sun
Studio未来版本的主要特性将定期予以提供。包括针对Linux的编译器优化组件在内的最新的一些性能在最近于旧金山举行的2006
LinuxWorld上做了演示。此外，新的Data Race Detection
Tool(数据族探查工具)对现有的多线程库、多线程工具和编译器优化等特性是一个重要的补充，可使多线程应用的开发变得更加简化和容易。 <br><br>
开发者可从网站<a href="http://developers.sun.com/sunstudio">http://developers.sun.com/sunstudio</a>下载免费的、无限制的Sun Studio软件。<br><br>
<div class="headerpadding">技术规格</div>
<div class="pad5x10">
<ul>
    <li><specification><strong>产品系统要求</strong>:</specification>
    <p>SPARC 平台</p>
    <ul>
        <li>内存：至少为 512 MB 内存；建议使用 1 GB</li>
        <li>磁盘空间：1.7 GB</li>
        <li>安装光盘</li>
    </ul>
    <p>x86/x64 平台</p>
    <ul>
        <li>内存：至少为 512 MB 内存；建议使用 1 GB</li>
        <li>磁盘空间 (Solaris OS)：1.1 GB</li>
        <li>磁盘空间 (Linux OS)：0.6 GB</li>
        <li>安装光盘</li>
    </ul>
    <table border="0" cellpadding="0" cellspacing="0" width="100%">
        <tbody>
            <tr>
                <td class="onepx"><img src="http://catalog.sun.com/images/a.gif" alt="" border="0" height="8" width="1"></td>
            </tr>
        </tbody>
    </table>
    </li>
    <li><specification><strong>支持的操作系统：</strong>:</specification>
    <p>Solaris OS</p>
    <p>Solaris 8、9 和 10 操作系统整个 Solaris 软件组、整个 Solaris 软件组加 OEM 支持或者开发人员 Solaris 软件组</p>
    <p>Linux OS</p>
    <ul>
        <li>Sun Java Desktop System，版本 3</li>
        <li>SUSE Linux Enterprise Server 9</li>
        <li>Red Hat Enterprise Linux 4</li>
    </ul>
    <table border="0" cellpadding="0" cellspacing="0" width="100%">
        <tbody>
            <tr>
                <td class="onepx"><img src="http://catalog.sun.com/images/a.gif" alt="" border="0" height="8" width="1"></td>
            </tr>
        </tbody>
    </table>
    </li>
    <li><specification><strong>许可要求：</strong>:</specification>
    <p>免许可费的运行时库 (.so) 分发</p>
    <table border="0" cellpadding="0" cellspacing="0" width="100%">
        <tbody>
            <tr>
                <td class="onepx"><img src="http://catalog.sun.com/images/a.gif" alt="" border="0" height="8" width="1"></td>
            </tr>
        </tbody>
    </table>
    </li>
    <li><specification><strong>使用限制：</strong>:</specification>
    <p>您应承诺软件不会被设计、许可或计划用于任何核设施的设计、修建、操作或维护。</p>
    <table border="0" cellpadding="0" cellspacing="0" width="100%">
        <tbody>
            <tr>
                <td class="onepx"><img src="http://catalog.sun.com/images/a.gif" alt="" border="0" height="8" width="1"></td>
            </tr>
        </tbody>
    </table>
    </li>
    <li><specification><strong>支持的相关标准：</strong>:</specification>
    <p>C：</p>
    <ul>
        <li>ISO/IEC 9899:1999，编程语言 - C ("C99")</li>
        <li>ISO/IEC 9899:1996，C</li>
        <li>FIPS 160 标准。</li>
        <li>K&amp;R C</li>
        <li>OpenMP C API Version 2.5</li>
    </ul>
    <p>C++：</p>
    <ul>
        <li>ISO/IEC 14992:2003 C++ 标准</li>
        <li>OpenMP C++ API 2.5 版</li>
    </ul>
    <p>Fortran：</p>
    <ul>
        <li>ANSI X3.198-1992 Fortran 90</li>
        <li>ISO 1539:1991 Fortran</li>
        <li>ISO/IEC 1539-1:1997 Fortran 95</li>
        <li>OpenMP Fortran API 2.5 版</li>
    </ul>
    <table border="0" cellpadding="0" cellspacing="0" width="100%">
        <tbody>
            <tr>
                <td class="onepx"><img src="http://catalog.sun.com/images/a.gif" alt="" border="0" height="8" width="1"></td>
            </tr>
        </tbody>
    </table>
    </li>
    <li><specification><strong>第三方兼容应用程序：</strong>:</specification>
    <p>GNU Compiler Collection（Linux 平台）</p>
    <table border="0" cellpadding="0" cellspacing="0" width="100%">
        <tbody>
            <tr>
                <td class="onepx"><img src="http://catalog.sun.com/images/a.gif" alt="" border="0" height="8" width="1"></td>
            </tr>
        </tbody>
    </table>
    </li>
    <li><specification><strong>升级计划：</strong>:</specification>
    <p>源和目标级与以前版本的兼容性以及 GNU C/C++ 兼容性功能，简化升级和采用。</p>
    </li>
</ul>
</div>
<br> <img src ="http://www.blogjava.net/wqnashqu/aggbug/81871.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wqnashqu/" target="_blank">曲强 Nicky</a> 2006-11-17 23:22 <a href="http://www.blogjava.net/wqnashqu/archive/2006/11/17/81871.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javaMe开源实录</title><link>http://www.blogjava.net/wqnashqu/archive/2006/11/15/81354.html</link><dc:creator>曲强 Nicky</dc:creator><author>曲强 Nicky</author><pubDate>Wed, 15 Nov 2006 11:46:00 GMT</pubDate><guid>http://www.blogjava.net/wqnashqu/archive/2006/11/15/81354.html</guid><wfw:comment>http://www.blogjava.net/wqnashqu/comments/81354.html</wfw:comment><comments>http://www.blogjava.net/wqnashqu/archive/2006/11/15/81354.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/wqnashqu/comments/commentRss/81354.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wqnashqu/services/trackbacks/81354.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 今天翻译了一篇实录，先发到自己的blog上吧，呵呵开放Java平台（MicroEdition，微型版）源码：对话Sun公司移动&amp;嵌入式平台高级主管香农.林奇在2006年5月的JavaOne会议上，Sun微系统公司宣布即将开放Java技术的源码。目前，Sun已经计划开放大部分Java平台的源码，包括在2006年末之前开放MicroEdition (Java ME)和Java平...&nbsp;&nbsp;<a href='http://www.blogjava.net/wqnashqu/archive/2006/11/15/81354.html'>阅读全文</a><img src ="http://www.blogjava.net/wqnashqu/aggbug/81354.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wqnashqu/" target="_blank">曲强 Nicky</a> 2006-11-15 19:46 <a href="http://www.blogjava.net/wqnashqu/archive/2006/11/15/81354.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ZFS－全球最先进的文档系统 (转)</title><link>http://www.blogjava.net/wqnashqu/archive/2006/10/30/77987.html</link><dc:creator>曲强 Nicky</dc:creator><author>曲强 Nicky</author><pubDate>Mon, 30 Oct 2006 02:19:00 GMT</pubDate><guid>http://www.blogjava.net/wqnashqu/archive/2006/10/30/77987.html</guid><wfw:comment>http://www.blogjava.net/wqnashqu/comments/77987.html</wfw:comment><comments>http://www.blogjava.net/wqnashqu/archive/2006/10/30/77987.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wqnashqu/comments/commentRss/77987.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wqnashqu/services/trackbacks/77987.html</trackback:ping><description><![CDATA[<div align="center">
<p align="center">
<strong>Sun发布Solaris ZFS－全球最先进的文档系统</strong>
<strong>
</strong>
<br>
Solaris 10 OS最新升级版包括Solaris ZFS 1.0文档系统<br>
提供了端到端的数据完整性，重新定义缩放能力，大大降低数据管理成本</p>
</div>
<p>
</p>
<hr align="center" width="80%">
<p>
(2006年5月25日讯)　Sun Microsystems公司发布了一个具有革命性的新的文档系统Solaris ZFS
1.0，它提供了多项突破性的功能，包括公共管理任务的自动化、保护数据免受非法行为的侵害，以及提供实际上无限的缩放能力。Solaris ZFS
1.0将作为我们这个星球上最先进的操作系统Solaris 10
OS的下一个商业版本的一个组成部分在今年6月份对外正式提供。此外，Solaris 10 OS的最新版本Solaris 10
6/06将先进的前摄性自愈技术和联网技术，与对PostgreSQL开源数据库的全面支持结合起来，进一步强化了Solaris 10
OS作为宿主高性能的关键数据库解决方案的首选平台的地位。<br><br>
作为世界上最先进的文档系统，Solaris ZFS可以自动检测和修改细小的数据错误或遭遇意外侵害的数据，以提供信息的完整性。Solaris
ZFS还因为不需要卷宗管理器而大大简化了数据的管理，而卷宗管理器是今天数据管理事务中最耗时、最费钱的部分。例如，今天，一项典型的系统管理任务可能
需要40多分钟来完成，但是采用Solaris
ZFS，仅仅需要几秒钟的时间，且没有系统宕机的危险，从而大大降低了数据管理的成本费用。此外，Solaris
ZFS还是世界上第一个128位的文档系统，这使系统具有了实际上无限的数据容量。Solaris
ZFS提供的先进的缩放能力和管理能力，使它成为许许多多传统UNIX?文档系统的理想替代品。 <br><br>
Solaris是宿主高性能数据库的杰出平台。最近，Oracle指名Solaris 10
OS作为其开源64位开发和部署环境的理想平台。现在，Sun还将开源PostgreSQL数据库集成在Solaris 10
OS的最新版本内，对PostgreSQL数据库提供全面支持。Sun与PostgreSQL社团开展合作，让他们采用Solaris 10
OS提供的各种先进技术，如前摄性自愈技术、Solaris分区特性和Solaris动态跟踪能力(DTrace)等。 </p>
<p>
&#8220;面对不断增长的依顺性要求，今天的数据量每9～12个月就要翻番，但今天的文档系统还植根在上世纪70年代的技术之中，&#8221;Sun公司主管系统软件部的
副总裁Tom Goguen说，&#8220;Solaris
ZFS从设计之初就是要迎接今天数据管理的挑战，它的预期寿命是20～30年。这一128位的文档系统所能存储的自愈数据是今天已有文档系统的160亿
倍，同时还大大简化了卷宗的管理。Solaris ZFS将是今年内发布的最重要的创新技术之一。&#8221;<br><br>
Solaris
10是我们这个星球上最先进的操作系统，它可在650多款SPARC和x64/x86平台上运行，获得来自独立软件厂商的2,200多种应用程序的支持。
其无与伦比的功能性和硬件平台的支持，加上它所提供的行业唯一的应用兼容性保证，加快了Solaris 10
OS在全球的应用步伐，目前Solaris 10 OS的注册许可数已超过450万。<br><br><strong>具有革命性的新的文档系统技术</strong><br><br>
Solaris ZFS   1.0具有任何其他商用文档系统技术所无法匹敌的优异性能。客户可以从Solaris   ZFS技术中享用到先进的数据完整性技术、使用和管理的简易性、难以置信的高性能，以及实际上无限的缩放能力。 </p>
<ul>
    <li>
    <strong>端到端的数据完整性</strong>――
    基于校验和与事务性写入复制(copy-on-write)机制的突破性的结合，Solaris
    ZFS可提供满足CIO和系统管理员要求的数据准确性。Solaris
    ZFS拥有先进的错误检测机制，能识别被损坏的数据，并将之在运行中修改过来。例如，镜像的一侧被意外地重写，ZFS可以对之检测、修补和恢复，且完全不
    干扰服务的进行。 </li>
    <li>
    <strong>简化的管理</strong>――Solaris
    ZFS提供了一种基于共享的架构模式，使所有的共享数据和功能纳入虚拟内存管理。Solaris
    ZFS文档系统可以自动地增长或收缩，而无需占据额外存储空间的卷宗管理器。Solaris
    ZFS还提供了在任何时间点上对文档系统进行瞬间快照的能力，这就大大节约了一般系统管理员手工恢复文档所花费的时间和资源。 </li>
    <li>
    <strong>性能的巨大提升</strong>――Solaris
    ZFS的架构设计有助于提高速度。写入复制的设计可将随意写入转变为快速连续写入。其输入/输出(I/O)带宽在有数据存储时可自动加大。无论工作量如
    何，多种字区尺寸会自动做出最佳配合。智能化的预取感式读取可加快运行速度。而且，它的高级的、可扩展的I/O子系统设计采用了记分板式的流水线操作和依
    赖性时序安排，同样提供了极大的性能提升。 </li>
    <li>
    <strong>无限的数据容量</strong>――Solaris   ZFS是世界上第一个128位文档系统，具有实际上无限的数据容量。<br></li>
</ul>
Solaris 10 OS是Solaris Enterprise System的组成部分。Solaris Enterprise
System还包括Sun Java Enterprise System (Java ES)、Sun N1 System
Manager软件和Sun Studio Software
Developer工具，这些软件都可免费提供用于开发和部署。正是具有这么多软件，使Solaris Enterprise
System成为今天可采用的唯一的综合性开放架构的软件平台。欲了解更多的相关信息或得到相关新闻稿件，请访问http:
//www.sun.com/aboutsun/media/presskits/networkcomputing06q2。
<p><strong>Sun</strong><strong>公司简介</strong><strong></strong><br><br>
一个独具特色的理念――&#8220;网络就是计算机&#8221;，指引着Sun各项技术的发展，为全球各个重要的市场增添活力。Sun共享创新和创建社团的思想体系处于新
一代网络计算－参与时代－的最前沿。Sun的足迹遍及全球100多个国家和地区，其互联网的网址为http://www.sun.com。Sun公司的中
文网址为<a href="http://www.sun.com.cn/">http://www.sun.com.cn</a>。</p>
<p>ZFS是第一个128位的文件系统，同时ZFS又被Sun
Microsystems称作史上最后一个文件系统。因为这个文件系统含有多项创新技术，不仅成功地解决现有文件系统的问题和陋习，而且前瞻性地考量了未
来对存储空间的需求，单个文件系统可以达到256 quadrillion（264） Zettabytes（221）。
ZFS不仅符合POSIX文件系统的标准，而且提供了许多高级功能比如：Quota(配额)，Reservation(预留),
Compression(压缩)，
Snapshot(快照)，Clone（克隆）等。如果你还在坚持使用现有32位或者64位的文件系统，如果你还在&#8220;痛并不快乐着&#8221;地用着各式各样的
Volume Manager，那就很值得看看这里列出的使用ZFS的十条理由。<br><br>1. 再也不需要fsck, scandisk<br><br>
不管你是在用Linux，UNIX还是Windows，相信大家都有过类似的体会：当系统意外断电或者非法关机，系统重起后发现文件系统有
inconsistent的问题，这时 候就需要fsck或者scandisk
来修复，这段时间是非常耗时而且最后不一定能够修复成功。更糟糕的是，如果这是一台服务器需要做fsck的时候，只能offline（下线），而且现有应
用往往都是大硬盘，相应fsck修
复时间也很长，这对许多使用该服务器的用户来说几乎不能忍受的。而使用ZFS后大家可以彻底抛弃fsck这种工具，因为ZFS是一个基于COW（Copy
on
Write）机制的文件系统。COW是不会对硬盘上现有的文件进行重写，保证所有硬盘上的文件都是有效的。所以不会有这种inconsistent的概
念，自然就不需要这种工具了。<br><br>2. 管理简单<br><br>　　ZFS作为一个全新的文件系统，全面抛弃传统File System
+ Volume Manager + Storage的架构，所有的存储设备是通过ZFS Pool进行管理，只要把各种存储设备加 入同一个ZFS
Pool，大家就可以轻松的在这个ZFS Pool管理配置文件系统。大家再也不用牢记各种专业概念，各种命令newfs,
metinit及各种Volume Manager的用法。在ZFS中我们只需要两个命令，zpool(针 对ZFS
Pool管理)和zfs(针对ZFS文件系统的管理)，就可以轻松管理128位的文件系统。举个例子，我们经常会遇到系统数据增长过
快，现有存储容量不够，需要添加硬盘，如果依照传统的Volume Manager管理方式，那我
们需要预先要考虑很多现有因素，还要预先根据应用计算出需要配置的各种参数。在ZFS情况下，我们的系统管理员可以彻底解放，再也不需要这种人为的复杂
考虑和计算，我们可以把这些交给ZFS，因为ZFS Pool会自动调节，动态适应需求。我们只需一个简单的命令为 这个ZFS
Pool加入新的硬盘就可以了：<br><br>zpool add zfs_pool mirror c4t0d0 c5t0d0<br><br>　　基于这个动态调节的ZFS Pool之上的所有的文件系统就可以立即使用到这个新的硬盘，并且会自动的选择最优化的参数。<br><br>　　而且ZFS同时也提供图形化的管理界面，下面是一个ZFS图形化管理的一个截屏：<br><br>[attachment=2119]<br><br>3. 没有任何容量限制<br><br>
ZFS（Zettabyte File
System）文件系统就如其名字所预示，可以提供真正的海量存储，在现实中几乎不可能遇到容量问题。在现有的64位kernel（内
核）下，它可以容纳达到16 Exabytes(264)大小的单个文件，可以使用264个存储设备，可以创建264个文件系统。<br><br>4. 完全保证 数据 的正确和完整<br><br>
由于ZFS所有的数据操作都是基 于Transaction（事务），一组相应的操作会被ZFS解
析为一个事务操作，事务的操作就代表着一组操作要么一起失败，要么一起成功。而且如前所说，ZFS对 所有的操作是基于COW（Copy on
Write）， 从而保证设备上的数 据始终都是有效的，再也不会因为系统崩溃或者意外掉电导致数据文件的inconsistent。<br><br>
还有一种潜在威胁 数据的可能是来自于硬件设备的问题，比如磁
盘，RAID卡的硬件问题或者驱动bug。现有文件系统通常遇到这个问题，往往只是简单的把错误数据直接交给上层应用，通常我们把这个问题称作
Silent Data Corruption。而在ZFS中，对所有数据不管是用户数据还是文件系统自身的metadata数
据都进行256位的Checksum（校 验），当ZFS在提交数据时会进行校验，彻底杜绝这种Silent Data Corruption情况。<br><br>5. 提供优异 性能和扩展性<br><br>　　和传统File System + Volume Manager + Storage架构不同，ZFS则是直接基于存储设备提供所有的功能，因此有自己独有的创新特性，性能自然非比寻常。<br><br>&nbsp; * Dynamic Striping vs. Static Striping <br><br>
由于ZFS是基于COW和一个全局动态的ZFS Pool，任何一次写 操作，都是对一块新数据块（Block）的一次写操作。ZFS从ZFS
Pool中动态挑选出一个最优的设备，并且以一个transaction（事
务）线性写入，充分有效地利用了现有设备的带宽，我们把这个特性称为Dynamic Striping。而相对应的Static
Striping则是传统文件系统所使用的方式，Static Striping需要管理员预先对这组Stripe进行正确地计算人为
设置，而且如果加入新的设备则需要再次人为的计算和设置，更为严重的是如果人为计算错误，则会直接影响系统的性能。而在使用Dynamic
Striping这种特性之后，我们根本不需要人为介入，ZFS会自动调整，智能的为你 提供最佳的设备，最快的操作方式。<br><br>&nbsp; * 支持多种 大小的数据块（Multiple Block Size） <br><br>　　ZFS支持多种大小的数据块定义，从512字节到1M字节。和传统文件系统往往都是固定大小数据块不同，ZFS则是可以动态的根据不同 大小的文件进行计算，动态的选择最佳的数据块。<br><br>
因为不同大小数据
块，直接影响到实际使用硬盘容量和读取速度。如果使用较小的数据块，存储文件所导致的碎片则较少，读写小文件更快一些，但是会导致需要创建更多的
metadata，读写大文件则会更费时。如果使用较大的数据块，使用的metadata较少，更利于读写大文件，但是会导致更多的碎片。ZFS根据实际
调查现有文件使 用的情况，分析出一个选择数据块大小的算法，动态的根据实际文件大小确定最佳的数据块。所以ZFS是
非常智能的，在不需要系统管理员介入，就可以得到一个自我调优的结果。当然ZFS也支持用户对单个文件或者整个文件系统
所使用的数据块大小的自定义设置。<br><br>&nbsp; * 智能预读取（Intelligent Prefetch） <br><br>　　多数的操作系
统都 有这种将数据预先读取的功能，而ZFS则是建立在文件系统上直接提供的一种更加智能的数据预读取功能。它不仅可以智能地识别出多种读取模式， 进
行提前读取数据，而且可以对每个读取数据流进行这种预读取智能识别，这个对许多流媒体提供者来说是件非常好的事情。<br><br>　　在扩展性上，和现有文件系统多是基于一个受限的静态模型不同，ZFS是采用ZFS Pool这个动态概念，它的metadata也是动态，并且读写操作都是可并行的，并且具有优先级概念，所以即使在大数据量，多设备的情况下仍可以保证性能的线性增长。<br><br>6. 自我修复功能<br><br>&nbsp; * ZFS Mirror 和 RAID-Z <br><br>
传统的硬盘Mirror及RAID 4，RAID 5阵列方式都会遇到前面提到过的问题：Silent Data
Corruption。如果发生了某块硬盘物理问题导致数据错误，现有的Mirror，包括RAID 4，RAID
5阵列会默默地把这个错误数据提交给上层应用。如果这个错误发生在Metadata中，则会直接导致系统的Panic。
而且还有一种更为严重的情况是：在RAID 4和RAID
5阵列中，如果系统正在计算Parity数值，并再次写入新数据和新Parity值的时候发生断电，那么整个阵列的所有存储的数据都毫无意义了。<br><br>
在ZFS中则提出了相对应的ZFS
Mirror和RAID-Z方式，它在负责读取数据的时候会自动和256位校验码进行校验，会主动发现这种Silent Data
Corruption，然后通过相应的Mirror硬
盘或者通过RAID-Z阵列中其他硬盘得到正确的数据返回给上层应用，并且同时自动修复原硬盘的Data Corruption 。<br><br>&nbsp; * Fault Manager<br><br>
在Solaris 10中，包含 一个ZFS诊断引擎和Solaris的 Fault Manager（这也是Solaris 10的
另一个新特性）交互，可以实时地诊断分析并且报告ZFS Pool和存储设备的错误，用户可以通过Fault
Manager及时得到一个非常友善的消息。这个诊断引擎虽然不会采取主动的行为去修复或者解决
问题，但是会在消息中提示系统管理员可采取的动作。类似下面一个ZFS报错消息，其中REC-ACTION就是建议采取的动作：<br><br>SUNW-MSG-ID: ZFS-8000-D3, TYPE: Fault, VER: 1, SEVERITY: Major<br><br>EVENT-TIME: Fri Mar 10 11:09:06 MST 2006<br><br>PLATFORM: SUNW,Ultra-60, CSN: -, HOSTNAME: neo<br><br>SOURCE: zfs-diagnosis, REV: 1.0<br><br>EVENT-ID: b55ee13b-cd74-4dff-8aff-ad575c372ef8<br><br>DESC: A ZFS device failed. Refer to <a href="http://sun.com/msg/ZFS-8000-D3" target="_blank">http://sun.com/msg/ZFS-8000-D3</a> for more information.<br><br>AUTO-RESPONSE: No automated response will occur.<br><br>IMPACT: Fault tolerance of the pool maybe compromised.<br><br>REC-ACTION: Run &#8217;zpool status -x&#8217; and replace the bad device.<br><br>7. 安全<br><br>　　在安全上，ZFS支持类似NT风格NFSv4版的ACL（读取控制列表）。而且前面所提到的256位验证码，用户可选择多种验证方式，包括SHA-256验证算法，从而在物理存储单元级别上保证数据的安全性。<br><br>8. 超强功能<br><br>
ZFS作为&#8220;最后一个文件系统&#8221;，涵盖了基本的文件系统和Volume管理的功能，同时
一并提供许多企业级别的超强功能：Quota(配额)，Reservation(预留), Compression(压 缩)，
Snapshot(快照)，Clone（克隆）。并且速度非常快。有了这个文件系统，大家再也不需要任何Volume Manager了。<br><br>9. 兼容性<br><br>
ZFS是一个完全兼容POSIX规范的文件系统，所以处于上层的应用程序是完全不受影响。ZFS也提供一个Emulated
Volume模块，可以把任何一个ZFS文件系统作为普通的块设备使用。同时ZFS也可以使用基于Volume
Manager构建的Volume作为存储设备单 元。这样在不需要修改应用程序，不修改已有文件系统下，给了大家最大的自由度去获得ZFS提供的各
种特性。<br><br>10. 开源<br><br>　　ZFS是Sun Microsystems公 司作为OpenSolaris的一个开源项目运作并且完全免费使用，点击这里(<a href="http://www.opensolaris.org/os/community/zfs/source/" target="_blank">http://www.opensolaris.org/os/community/zfs/source/</a>) 可以直接浏览到ZFS的代码。 这就代表着我们不仅同时可以享受商业公司的高质量，也可以获得开源模式的优点。<br><br>
虽然目前只有Solaris支持该文件系统，但是这种开源的模式必定会促进更多基于ZFS的应用。现在已经有国外开发者正在将ZFS移植到Linux和
Mac OS上来。如果想要体验一下ZFS，由于目前它和Solaris 10绑定在一起，所以需要下载最新版的Solaris 10 6/06 (<a href="http://www.sun.com/software/solaris/get.jsp" target="_blank">http://www.sun.com/software/solaris/get.jsp</a>)。<br><br>参考:<br><br>Solaris ZFS Administration Guide: <a href="http://docs.sun.com/app/docs/doc/819-5461?l=zh&amp;q=ZFS" target="_blank">http://docs.sun.com/app/docs/doc/819-5461?l=zh&amp;q=ZFS</a><br><br>Solaris 10 Zone FAQ: <a href="http://www.sun.com/software/solaris/faqs/zfs.xml" target="_blank">http://www.sun.com/software/solaris/faqs/zfs.xml</a><br><br>Automatic Performance Tuning in the Zettabyte File System: <a href="http://tesla.hpl.hp.com/self-manage03/Finals/henson-self-tune.pdf" target="_blank">http://tesla.hpl.hp.com/self-manage03/Finals/henson-self-tune.pdf</a></p>
<br><br> <img src ="http://www.blogjava.net/wqnashqu/aggbug/77987.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wqnashqu/" target="_blank">曲强 Nicky</a> 2006-10-30 10:19 <a href="http://www.blogjava.net/wqnashqu/archive/2006/10/30/77987.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Solaris10 下挂载U盘</title><link>http://www.blogjava.net/wqnashqu/archive/2006/10/22/76595.html</link><dc:creator>曲强 Nicky</dc:creator><author>曲强 Nicky</author><pubDate>Sun, 22 Oct 2006 00:50:00 GMT</pubDate><guid>http://www.blogjava.net/wqnashqu/archive/2006/10/22/76595.html</guid><wfw:comment>http://www.blogjava.net/wqnashqu/comments/76595.html</wfw:comment><comments>http://www.blogjava.net/wqnashqu/archive/2006/10/22/76595.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wqnashqu/comments/commentRss/76595.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wqnashqu/services/trackbacks/76595.html</trackback:ping><description><![CDATA[		<span style="font-size: 13px;">&nbsp;<font size="3"> vold存在于进程之中，我们可以通过ps
-ef命令进行查询，它的存在使得插上U盘后，系统可以自动识别设备。<br>&nbsp; 如果无法自动识别，我们可以尝试重新启动vold，操作方法如下：pkill
-HUP vold 这个时候插上U盘，是否U盘灯亮了？<br>&nbsp; 如果还不亮，请执行rmformat命令，这个东西类似Windows中的检查硬件改变操作，它可以自动查出刚刚插上的U盘（极个别品牌U盘例外，依照以往经验&#8230;&#8230;爱国者的U盘最容易被识别）。<br>&nbsp;&nbsp;
系统识别了U盘，接下来我们就要mount一下了，具体操作是：mount -F pcfs -o ro /dev/dsk/</font><font color="#ff3300" size="3">c2t0d0p0</font><font size="3">:c /mnt，不过你的U盘是不是c2t0d0p0这个设备，我这里可是说不好，你自己试验一下吧 用mount查一下就OK了。<br><br></font></span>
<font class="f14" id="zoom" size="3">1、直接插上u盘，然后ls -l /dev/usb,看是否发现usb设备。</font>
<font size="3">
<span style="font-size: 13px;">不过今天用 ls -l |grep usb 自动就识别咯。（Netac朗科）</span>
</font>
<font class="f14" id="zoom" size="3">
2、在/etc/dsk里查询到usb对应的设备名称（ls -l /dev/dsk)
3、直接mount -F pcfs /dev/dsk/c1t0d0s0 /mnt
然后就可以了。
进/mnt目录。ls就可以查看到u盘里的内容了。</font>
<br>
<br># rmformat<br>姝ｅ湪鏌ユ壘璁惧...<br>&nbsp;&nbsp;&nbsp;&nbsp; 1. Logical Node: /dev/rdsk/c3t0d0s2<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Physical Node: /pci@0,0/pci1028,182@1d,2/storage@1/disk@0,0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Connected Device: Netac&nbsp;&nbsp;&nbsp; OnlyDisk&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.21<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Device Type: Removable<br>&nbsp;&nbsp;&nbsp;&nbsp; 2. Logical Node: /dev/rdsk/c3t0d0p0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Physical Node: /pci@0,0/pci1028,182@1d,2/storage@1/disk@0,0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Connected Device: Netac&nbsp;&nbsp;&nbsp; OnlyDisk&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.21<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Device Type: Removable<br># mount -f pcfs /dev/dsk/c3t0d0s2:c /usb<br>mount: No such device or address<br># mount -f pcfs /dev/rdsk/c3t0d0p0:c /usb<br>mount: Block device required<br># mount -f pcfs /dev/rdsk/c3t0d0s2 /usb<br>mount: Block device required<br># mount -f pcfs /dev/rdsk/c3t0d0s2:c /usb<br>mount: Block device required<br># mount -f pcfs /dev/dsk/c3t0d0p0:c /usb<br><span style="font-size: 13px;"></span><br>卸载 #umount /usb<br>&nbsp;&nbsp;&nbsp;&nbsp; #eject /dev/rdsk/c3t0d0p0<br><br><br><br>今天还发现，（朗科）u盘 在用户注销重新登陆时，可以自动挂载<br> <img src ="http://www.blogjava.net/wqnashqu/aggbug/76595.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wqnashqu/" target="_blank">曲强 Nicky</a> 2006-10-22 08:50 <a href="http://www.blogjava.net/wqnashqu/archive/2006/10/22/76595.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Solaris10</title><link>http://www.blogjava.net/wqnashqu/archive/2006/10/20/76285.html</link><dc:creator>曲强 Nicky</dc:creator><author>曲强 Nicky</author><pubDate>Fri, 20 Oct 2006 00:09:00 GMT</pubDate><guid>http://www.blogjava.net/wqnashqu/archive/2006/10/20/76285.html</guid><wfw:comment>http://www.blogjava.net/wqnashqu/comments/76285.html</wfw:comment><comments>http://www.blogjava.net/wqnashqu/archive/2006/10/20/76285.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wqnashqu/comments/commentRss/76285.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wqnashqu/services/trackbacks/76285.html</trackback:ping><description><![CDATA[&nbsp;&nbsp; 昨天在自己的笔记本（DellD610）上安装了Solaris10操作系统，分区情况如下,c0d0/c/d/e/f+(2.9G)，c盘放的Xp系统，D盘还是原来windows下的软件。f盘装的则是Solaris操作系统。首先，在安装过程中，Solaris给我的印象很好，因为似乎显卡它已经识别了，所以显示的很清楚，java的风格我本人也是比较喜欢的。<br>&nbsp;&nbsp; 其它的软件安装：<span class="content"> 网站：sun软件包最主要的网站是<a href="http://www.sunfreeware.com/" target="_blank">http://www.sunfreeware.com</a>,其次是各开源网站如<a href="http://mirror.vmmatrix.net/" target="_blank">http://mirror.vmmatrix.net</a> ，还有其他一些（如apache 的网站 <a href="http://www.apache.org/" target="_blank">www.apache.org</a>）。如果不知道某个软件的下载地址，可以在 <a href="http://www.google.com/" target="_blank">www.google.com</a>里搜索。</span><span class="content">安装包下载到本地磁盘，必须把这些包存放到运行
solaris10的机器上。Wget似乎是一个很受欢迎的下载工具，情况也是如此。不巧的是，solaris10本身不带wget这个工具，所以初始安
装的系统还不能使用这个便利。有的网友先把文件下载到windows，然后用ssh secure file
transfer把它传输到solaris
10的某个目录。<br>1、wget下载。例如下载apache到当前目录的命令为：wget <a href="ftp://ftp.sunfreeware.com/pub/freeware/intel/10/apache-2.2.0-sol10-x86-local.gz" target="_blank">ftp://ftp.sunfreeware.com/pub/freeware/intel/10/apache-2.2.0-sol10-x86-local.gz</a> 。<br>下载完成后，用命令# ls -al查看当前目录是否有刚才现在的文件存在。<br> &nbsp;  2、用ssh secure file transfer传送。这个比较简单，不再多说。<br>当然，我也认为使用挂载也是完全可以的。<br>&nbsp;&nbsp;&nbsp; </span><span class="content">  Solaris10 安装软件包的方法主要有三种：solaris包、二进制源码、安装脚本。接下来分别介绍这几种安装方法。<br></span><span class="content">&nbsp;&nbsp;&nbsp; 1、solaris 10包。Solaris包的文件格式大致是*-local.gz
,如apache的包文件apache-2.2.0-sol10-x86-local.gz。在安装一个包之前，我们应当先查看系统中是否已经安装了该软
件包；通过运行包管理工具pkginfo来了解系统中已安装的包。运行 # pkginfo
可能有较长的输出，以至于需要多屏才能显示完整，为方便阅读，最好在后面加一管道（# pkginfo |
more）。如果所需的包没有安装到系统，执行下面两个命令来安装（此处以包wget为例）：# gzip &#8211;d wget-1.10.2-sol10-x86-local.gz &nbsp; //把包解开，解开后原压缩包自动删除，当前目录下生成文件wget-1.10.2-sol10-x86-local。<br># pkgadd &#8211;d wget-1.10.2-sol10-x86-local  //执行后会有交互命令，请根据具体的环境做出选择.在回答了包管理管理器若干问题之后，一个软件包就安装到系统上，再运行包管理命令 # pkginfo &#8211;l | grep
&lt;包名&gt;查看详细的安装信息。从这个过程我们可以知道，安装solaris包确实是很容易的事情，但笔者认为，在安装过程中，它会把解开后的
文件复制到不同的目录（位置），究竟都复制了那些文件到那些目录，并不是一个容易弄清楚的。<br> &nbsp;
2、二进制源码。二进制源码是通用的linux/unix软件包安装方法，也是管理员最爱的安装手段。相对于solaris包而言，二进制源码包的数量远
远大于前者（有很多GNU软件并不提供solaris
包），这也是选择二进制源码安装的原因，当然，用二进制源码安装，使得整个操作更具灵活性。在这里我们以web服务器apache的安装为例。<br># gzip &#8211;d httpd-2.2.0.tar.gz &nbsp;  <br># tar xvf httpd-2.2.0.tar<br># cd httpd-2.2.0 &nbsp;  &nbsp;  &nbsp;   <br># ./configure &#8211;prefix=/usr/local/apache2 &#8211;enable-so  //配置操作，具体的选项可以通过执行命令# ./configure &#8211;help查看。此处指定了安装apache的路径及模块的加载方式<br># make &nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp; //配置过程顺利完成后，才可以继续这个编译过程。<br># make install &nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp; //同样需要等到编译操作(make)完成再进行安装，这一步是把文件及目录复制到指定的安装目录。<br>
&nbsp;
这个例子是通用的linux/unix软件安装步骤，但不要认为所以的二进制源码都是这样的安装操作（请注意：这只是一般情况），一个好的习惯就是：在把
下载的源码包文件解压成目录后，打开里面的文件README或INSTALL文本文件，就可能看到安装软件包的方法，至于更多细节，可以登录该软件的发布
网站查询相关文档。在执行配置操作时，如果不指定安装路径的话，在安装结束以后，文件会分散到系统目录的各个角落（比如执行脚本会复制到
/usr/sbin，配置文件可能会在目录/etc中找到，等等），为了方便管理维护，强烈建议配置时指定安装目录。<br>&nbsp;&nbsp; 3、安装脚本。大型的软件为了方便用户的安装，往往提供一个安装脚本，比如sybase、oracle等。这种安装方法本身很简单，只需执行这个安装脚本而
已，接着安装程序会跟用户交互，比如指定安装路径等。不过，有些软件在执行安装前，需要配置环境变量诸如此类的预处理，以满足软件安装的特殊需求。就拿数
据库服务器oracle 10g为例，在执行安装脚本前，就必须配置环境变量和更改内核参数以及添加用户等预处理操作。<br>&nbsp;&nbsp;&nbsp; </span><span class="content">软件包的卸载。Solaris包：执行命令 # pkgrm &lt;package name&gt;。二进制源码：直接删除安装目录。<br>脚本方式安装：卸载脚本或直接删除安装目录。</span> <img src ="http://www.blogjava.net/wqnashqu/aggbug/76285.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wqnashqu/" target="_blank">曲强 Nicky</a> 2006-10-20 08:09 <a href="http://www.blogjava.net/wqnashqu/archive/2006/10/20/76285.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Sun 培训体会</title><link>http://www.blogjava.net/wqnashqu/archive/2006/08/05/61930.html</link><dc:creator>曲强 Nicky</dc:creator><author>曲强 Nicky</author><pubDate>Sat, 05 Aug 2006 06:36:00 GMT</pubDate><guid>http://www.blogjava.net/wqnashqu/archive/2006/08/05/61930.html</guid><wfw:comment>http://www.blogjava.net/wqnashqu/comments/61930.html</wfw:comment><comments>http://www.blogjava.net/wqnashqu/archive/2006/08/05/61930.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wqnashqu/comments/commentRss/61930.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wqnashqu/services/trackbacks/61930.html</trackback:ping><description><![CDATA[前几天参加了SUN在大连的暑期免费培训，主要是介绍了Netbeans集成开发环境和jdk1.5、1.6的一些新的特性。原来很少使用netbeans 来作程序，即使它是sun的产品。主要是因为4.1以前的版本过于garbage.但是参加完这次培训之后，对其很有信心。这次培训之后，我对sun的了解更加进了一步。这次培训的老师是李涛老师和叶亮老师，这两位老师我还是很佩服的。虽然sun的中国研究院，没有微软的那么大的名气，但是我感觉这个团体还是一个很令人敬佩和挑战创新的团体。我们无法想象没有IDE的java编程，虽然在原来的文章中我更鼓励初学者使用文本编辑工具。<br>&nbsp;&nbsp;&nbsp; 对于J2EE的框架理念我感觉这次没有进行深入的介绍，或与也是我感觉比较遗憾的一点了。<br>下面给大家介绍一点JDK1.5种新引入的泛型：<br><br><br>以下代码摘自java.util包的List接口和Iterator接口的定义:<br><br>public interface List&lt;E&gt; {<br>&nbsp; void add(E x);<br>&nbsp; Iterator&lt;E&gt; iterator();<br>}<br>public interface Iterator&lt;E&gt; {<br>&nbsp; E next();<br>&nbsp; boolean hasNext();<br>}<br><br>类型参数<br><br>与尖括号有关的一些东西是JDK 5引入的新东西, 它们是List和Iterator接口的形式的类型参数(简称类型形参)声明.<br>而在对泛型声明List进行调用时(例如: List&lt;Integer&gt;), 所有出现的类型形参(如 <br>E)的地方, 都会被实际的类型参数(简称类型实参, 如 Integer)所替换掉.<br><br>虽然与C++中的模板机制在形式上很想像, 但必需注意, Java中的泛型声明决不会在调用时被展成多份副本: 不论是在源码级, 二进制级, 还是在磁盘或内存中, 都不会被展开!<br><br>泛型声明只会也只需编译一次, 并生成一个类文件(class文件), 这一点跟普通的类或接口完全一样.<br><br>类型参数其实跟方法或构造器中所用的通常参数相类似. 一个方法中可以声明它用以处理的形式的值参数, 相似地, 泛型声明也有其形式的类型参数; 当方法被调用时, 实际参数会替换形式参数, 然后执行方法体, 同样, 当泛型声明被调用时, 实际的类型参数会替换掉形式的类型参数.<br><br>关于命名约定的备注: 推荐使用精炼而简明(如, 单个字符)的方式为形式的类型参数命名. 最好避免使用小写字符, 以便与普通的类或接口的参数相区分开来. 许多宣传品类型使用 E 表示其元素的类型形参.<br><br><br><br><br>先看以下两行代码是否合法:<br>List&lt;String&gt; ls = new ArrayList&lt;String&gt;(); // 1<br>List&lt;Object&gt; lo = ls; // 2<br>第一行没问题, 关键在第二行代码, 大多数人会认为, 一个String的List自然更是一个Object的List, 因此, 第2行没问题.<br><br>好, 接着看以下代码:<br>lo.add(new Object()); // 3<br>String s = ls.get(0); // 4: 试图将一个Object赋给一个String!<br><br>可见, 通过别名lo, 我们能对ls, 一个String的列表, 进行数据操作(特别是插入一个Object), 从而导致ls不仅仅是容纳了String对象! 这是Java编译器不容许的! 编译时, 第2行会报告一个编译错误的.<br><br>通常, 若Foo是Bar的一个子类型(子类或子接口), G是某个泛型声明, 则G&lt;Foo&gt;并不是G&lt;Bar&gt;的一个子类型. <br><br>这一点往往是最难以理解的, 因为它和通常的直观相左. 在直观的理解中, 我们实际上假定了集合是不会变动的, 但java语言中则非如此.<br><br><br><br><br>假定要输出一个集合中的所有元素. 以下分别是旧版本及新版本(JDK 1.5)中的写法:<br><br>void printCollection(Collection c) {<br>&nbsp; Iterator i = c.iterator();<br>&nbsp; for( k = 0; k &lt; c.size(); k++) {<br>&nbsp;&nbsp;&nbsp; System.out.println( i.next() );<br>}}<br><br>void printCollection(Collection&lt;Object&gt; c) {<br>&nbsp; for(Object e : c) {<br>&nbsp;&nbsp;&nbsp; System.out.println(e);<br>}}<br><br>问题在于, 新版本反而不如旧版本更有用些. 因为旧版本能使用各种类型的集合作为参数, 但新版本则只能使用Collection&lt;Object&gt;. 而正如上节看到的, Collection&lt;Object&gt;并不是其它各种集合的超类型(父类型).<br><br>所有集合的超类型应该写作: Collection&lt;?&gt;, 读作: collection of unknown(未知集合), 即一个集合, 其元素类型可以与任何类型相匹配. 因此称这种类型为通配类型.<br><br>正确实现上述旧版本的代码可以这么写:<br>void printCollection(Collection&lt;?&gt; c) {<br>&nbsp; for(Object e : c) {<br>&nbsp;&nbsp;&nbsp; System.out.println(e);<br>}}<br><br>这时, 可以用任意类型的集合来调用此方法. 注意在方法体中, 仍然从 c 中读入元素并赋给了Object, 这是没有错误的, 因此不论类型实参是何种集合, 它的元素都是object. 然而, 如果任意给它增加一个object则是不安全的:<br><br>Collection&lt;?&gt; c = new ArrayList&lt;String&gt;();<br>c.add(new Object()); // 编译时的错误<br><br>由于我们不知道c的元素类型是什么, 所以不能给它增加一个object. 方法add()接受一个类型E的参数, 而E与集合的元素类型相同. 当类型实参是?时, 它表示未知的类型, 我们传递给add的参数必须是这个未知类型的子类型. 不幸的是, 既然类型未知, 也就无法决定其子类型, 于是什么也不能作为其参数. 唯一的例外是null, 因为null是所有类型的一个成员.<br><br>另一方面, 如果给了一个List&lt;?&gt;, 我们可以调用get()方法并使用其返回的元素. 虽然返回的元素类型是未知类型, 但它总归是一个object, 因此将get()返回的元素赋给一个Object类型的变量, 或将其传递给一个可接受Object的参数都是安全的.<br><br> <img src ="http://www.blogjava.net/wqnashqu/aggbug/61930.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wqnashqu/" target="_blank">曲强 Nicky</a> 2006-08-05 14:36 <a href="http://www.blogjava.net/wqnashqu/archive/2006/08/05/61930.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>修改netbeans的外观</title><link>http://www.blogjava.net/wqnashqu/archive/2006/07/22/59562.html</link><dc:creator>曲强 Nicky</dc:creator><author>曲强 Nicky</author><pubDate>Sat, 22 Jul 2006 09:24:00 GMT</pubDate><guid>http://www.blogjava.net/wqnashqu/archive/2006/07/22/59562.html</guid><wfw:comment>http://www.blogjava.net/wqnashqu/comments/59562.html</wfw:comment><comments>http://www.blogjava.net/wqnashqu/archive/2006/07/22/59562.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wqnashqu/comments/commentRss/59562.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wqnashqu/services/trackbacks/59562.html</trackback:ping><description><![CDATA[<p>只对5以上的版本有效，官方网站上有的，不过很多人没看到罢了</p>
<p>
<!-- Begin Content Area -->
</p>
<h1>Spicing Up Your NetBeans IDE 5.0 With Substance</h1>
<p>&nbsp;</p>
<div class="articledate" style="margin-left: 0px;">Contributed by
<script language="JavaScript" type="text/javascript" _base_href="http://dev.csdn.net/"><!--
var user =" "&#114;&#117;&#116;&#104;&#46;&#107;&#117;&#115;&#116;&#101;&#114;&#101;&#114;";
var" domain =" "&#115;&#117;&#110;&#46;&#99;&#111;&#109;";
var" at =" "&#x40;";
document.write('<a" href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;' + user + at + domain + '" href_cetemp="&#109;&#97;&#105;&#108;&#116;&#111;&#58;' + user + at + domain + '">Ruth Kusterer</a>');
//--></script><a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#114;&#117;&#116;&#104;&#46;&#107;&#117;&#115;&#116;&#101;&#114;&#101;&#114;&#64;&#115;&#117;&#110;&#46;&#99;&#111;&#109;" _base_href="http://dev.csdn.net/">Ruth Kusterer</a><a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#114;&#117;&#116;&#104;&#46;&#107;&#117;&#115;&#116;&#101;&#114;&#101;&#114;&#64;&#115;&#117;&#110;&#46;&#99;&#111;&#109;" _base_href="http://dev.csdn.net/">Ruth Kusterer</a><noscript></noscript></div>
<p>&nbsp;</p>
<p>This tech tip shows you how you can spice up your NetBeans IDE 5.0's
look and feel with color themes, custom button-shapes and watermarks
(wallpapers) using <a href="http://weblogs.java.net/blog/kirillcool/" _base_href="http://dev.csdn.net/">Kirill</a>'s <a href="https://substance.dev.java.net/" _base_href="http://dev.csdn.net/">Substance</a> plug-in. To use Substance with IDE 4.1 or any other Swing-based application, refer to <a href="http://www.netbeans.org/kb/41/substance-look-and-feel.html" _base_href="http://dev.csdn.net/">Spicing Up Your Swing GUI With Substance</a>. </p>
<p>
</p>
<table _base_href="http://dev.csdn.net/" width="500">
    <tbody _base_href="http://dev.csdn.net/">
        <tr _base_href="http://dev.csdn.net/">
            <td _base_href="http://dev.csdn.net/">
            <a href="http://www.netbeans.org/images/screenshots/4.1/netbeans-beyonce.png" _base_href="http://dev.csdn.net/">
            <img alt="IDE with beyonce watermark" src="http://www.netbeans.org/images/screenshots/4.1/netbeans-beyonce_thumb.png" _base_href="http://dev.csdn.net/" align="right" border="0" height="150" width="200">
            </a>
            </td>
            <td _base_href="http://dev.csdn.net/">
            <ul>
                <li>
                <a href="http://www.netbeans.org/kb/50/substance-look-and-feel.html#preparations" _base_href="http://dev.csdn.net/">Preparations</a>
                </li>
                <li>
                <a href="http://www.netbeans.org/kb/50/substance-look-and-feel.html#themes" _base_href="http://dev.csdn.net/">Getting to Know Different Themes</a>
                </li>
                <li>
                <a href="http://www.netbeans.org/kb/50/substance-look-and-feel.html#creating" _base_href="http://dev.csdn.net/">Creating Your Own Look and Feel</a>
                </li>
                <li>
                <a href="http://www.netbeans.org/kb/50/substance-look-and-feel.html#competition" _base_href="http://dev.csdn.net/">Competition!</a>
                </li>
                <li>
                <a href="http://www.netbeans.org/kb/50/substance-look-and-feel.html#links" _base_href="http://dev.csdn.net/">Related Links</a>
                </li>
            </ul>
            </td>
        </tr>
    </tbody>
</table>
<h2>
<a name="preparations" _base_href="http://dev.csdn.net/">Preparations</a>
</h2>
<ul>
    <li>The Substance Look and Feel NBM works with JDK 5.0+ in NetBeans IDE 5.0 (development version). </li>
    <li>If
    you want to integrate a watermark into your Swing application, you need
    a suitable (wide) wallpaper image file. Download this <a href="http://www.netbeans.org/images/articles/look-and-feel/aquamarine.jpg" _base_href="http://dev.csdn.net/">aquamarine JPG</a> from <a href="http://www.digitalblasphemy.com/" _base_href="http://dev.csdn.net/">digitalblasphemy</a> as a sample. </li>
    <li>For some features, you need to know how to access your operating system's commandline </li>
</ul>
<p>To install the <tt>substance-netbeans</tt> plugin into NetBeans IDE 5.0, </p>
<ol>
    <li>
    <a href="https://substance-netbeans.dev.java.net/servlets/ProjectDocumentList" _base_href="http://dev.csdn.net/">download substance-netbeans.nbm</a> from Kirill's project page and save the NBM file to your home directory. For this tutorial, I am using version 2.1_02. </li>
    <li>To plug the module in, open NetBeans IDE, and choose <strong>Tools &gt; Update Center</strong> from the menu. In the Update Wizard window, check the box next to <strong>Install Manually Downloaded Modules (.nbm files)</strong>, and then click the <strong>Next</strong> button. </li>
    <li>In the next screen, click the <strong>Add</strong> Button and select the substance-netbeans NBM file you just downloaded, then click <strong>OK</strong>. The NBM file shows up in the list of modules to install. Click the <strong>Next</strong> button. </li>
    <li>Make sure the NBM is visible in the field labelled Include to Install, then click the <strong>Next</strong> button. If a license agreement comes up, click <strong>Accept</strong> and then <strong>Next</strong> to proceed. </li>
    <li>A screen with the download progress bar appears. Again click the <strong>Next</strong> button. </li>
    <li>Check the <strong>Include</strong>
    box next to the line saying "NetBeans-Substance". If you are asked
    whether you really want to install an unsigned module, click <strong>Yes</strong> to proceed. </li>
    <li>Click the <strong>Finish</strong> button. If you are told that the IDE must be restarted, check the box saying <strong>Restart the IDE</strong> and then click the <strong>OK</strong> button. </li>
    <li>After the IDE has restarted, look into the <strong>View</strong> menu: If you see four new menu items, Button Shapes, Colors, Themes, and Watermarks, the plugin was installed successfully. </li>
</ol>
<p>
<a href="http://www.netbeans.org/kb/50/substance-look-and-feel.html#creating" _base_href="http://dev.csdn.net/">http://www.netbeans.org/kb/50/substance-look-and-feel.html#creating</a>
</p>
按着步骤作就行了，先要下载一个.nbm的插件。 <img src ="http://www.blogjava.net/wqnashqu/aggbug/59562.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wqnashqu/" target="_blank">曲强 Nicky</a> 2006-07-22 17:24 <a href="http://www.blogjava.net/wqnashqu/archive/2006/07/22/59562.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>