﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Java之旅-文章分类-Java</title><link>http://www.blogjava.net/hoocoral/category/18219.html</link><description>Record my Java-learning progress.</description><language>zh-cn</language><lastBuildDate>Fri, 22 Jul 2011 12:58:28 GMT</lastBuildDate><pubDate>Fri, 22 Jul 2011 12:58:28 GMT</pubDate><ttl>60</ttl><item><title>[转]JBoss deploy 出现 OutOfMemoryError : PermGen space</title><link>http://www.blogjava.net/hoocoral/articles/354841.html</link><dc:creator>胡昆栄</dc:creator><author>胡昆栄</author><pubDate>Fri, 22 Jul 2011 03:47:00 GMT</pubDate><guid>http://www.blogjava.net/hoocoral/articles/354841.html</guid><wfw:comment>http://www.blogjava.net/hoocoral/comments/354841.html</wfw:comment><comments>http://www.blogjava.net/hoocoral/articles/354841.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hoocoral/comments/commentRss/354841.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hoocoral/services/trackbacks/354841.html</trackback:ping><description><![CDATA[<span style="widows: 2; text-transform: none; text-indent: 0px; border-collapse: separate; font: medium Simsun; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"><span style="line-height: 20px; font-family: verdana, Arial, helvetica, sans-seriff; color: rgb(75,75,75); font-size: 13px" class="Apple-style-span"> 
<p style="box-sizing: border-box; font-size: 10pt">PermGen space的全称是Permanent Generation space,是指内存的永久保存区域OutOfMemoryError: PermGen space从表面上看就是内存益出，解决方法也一定是加大内存。说说为什么会内存益出：这一部分用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域，它和和存放Instance的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理，所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen space错误。这种错误常见在web服务器对JSP进行pre compile的时候。</p>
<p style="box-sizing: border-box; font-size: 10pt">改正方法，在 run.bat 中加入：-Xms256m -Xmx512m -XX:MaxNewSize=256m -XX:MaxPermSize=256m</p>
<p style="box-sizing: border-box; font-size: 10pt">因为项目中引用了很多的 jar 包，而这些 jar 包中的 class 信息会被 JBoss 的 class loader 加载到 PermGen space 区域，在 JVM 默认的情况下，该部分空间的大小只有 4M，在 jar 包非常多的情况下，显然是不够用的，所以通过 -XX:MaxPermSize=256m 指定最大值后即可解决问题。</p>
<p style="box-sizing: border-box; font-size: 10pt">另外，如果 heap 内存不足出现 java.lang.OutOfMemoryError: Java heap space 时，可以通过 -Xmx512m 指定最大 heap 内存来解决这样的问题。</p></span></span><img src ="http://www.blogjava.net/hoocoral/aggbug/354841.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hoocoral/" target="_blank">胡昆栄</a> 2011-07-22 11:47 <a href="http://www.blogjava.net/hoocoral/articles/354841.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]System.getProperty()</title><link>http://www.blogjava.net/hoocoral/articles/305486.html</link><dc:creator>胡昆栄</dc:creator><author>胡昆栄</author><pubDate>Thu, 10 Dec 2009 14:14:00 GMT</pubDate><guid>http://www.blogjava.net/hoocoral/articles/305486.html</guid><wfw:comment>http://www.blogjava.net/hoocoral/comments/305486.html</wfw:comment><comments>http://www.blogjava.net/hoocoral/articles/305486.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hoocoral/comments/commentRss/305486.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hoocoral/services/trackbacks/305486.html</trackback:ping><description><![CDATA[<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #008000">//</span><span style="color: #008000">java&nbsp;通过System.getProperties()获取系统参数</span><span style="color: #008000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;Properties&nbsp;props</span><span style="color: #000000">=</span><span style="color: #000000">System.getProperties();&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">系统属性</span><span style="color: #008000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Java的运行环境版本：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">java.version</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Java的运行环境供应商：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">java.vendor</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Java供应商的URL：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">java.vendor.url</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Java的安装路径：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">java.home</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Java的虚拟机规范版本：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">java.vm.specification.version</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Java的虚拟机规范供应商：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">java.vm.specification.vendor</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Java的虚拟机规范名称：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">java.vm.specification.name</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Java的虚拟机实现版本：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">java.vm.version</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Java的虚拟机实现供应商：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">java.vm.vendor</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Java的虚拟机实现名称：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">java.vm.name</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Java运行时环境规范版本：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">java.specification.version</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Java运行时环境规范供应商：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">java.specification.vender</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Java运行时环境规范名称：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">java.specification.name</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Java的类格式版本号：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">java.class.version</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Java的类路径：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">java.class.path</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">加载库时搜索的路径列表：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">java.library.path</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">默认的临时文件路径：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">java.io.tmpdir</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">一个或多个扩展目录的路径：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">java.ext.dirs</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">操作系统的名称：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">os.name</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">操作系统的构架：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">os.arch</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">操作系统的版本：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">os.version</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">文件分隔符：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">file.separator</span><span style="color: #000000">"</span><span style="color: #000000">));&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">在&nbsp;unix&nbsp;系统中是＂／＂</span><span style="color: #008000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">路径分隔符：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">path.separator</span><span style="color: #000000">"</span><span style="color: #000000">));&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">在&nbsp;unix&nbsp;系统中是＂:＂</span><span style="color: #008000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">行分隔符：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">line.separator</span><span style="color: #000000">"</span><span style="color: #000000">));&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">在&nbsp;unix&nbsp;系统中是＂/n＂</span><span style="color: #008000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">用户的账户名称：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">user.name</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">用户的主目录：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">user.home</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">用户的当前工作目录：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">user.dir</span><span style="color: #000000">"</span><span style="color: #000000">));</span></div>
<img src ="http://www.blogjava.net/hoocoral/aggbug/305486.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hoocoral/" target="_blank">胡昆栄</a> 2009-12-10 22:14 <a href="http://www.blogjava.net/hoocoral/articles/305486.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原创]Struts+Hibernate+Ajax简单例子</title><link>http://www.blogjava.net/hoocoral/articles/202035.html</link><dc:creator>胡昆栄</dc:creator><author>胡昆栄</author><pubDate>Wed, 21 May 2008 13:48:00 GMT</pubDate><guid>http://www.blogjava.net/hoocoral/articles/202035.html</guid><wfw:comment>http://www.blogjava.net/hoocoral/comments/202035.html</wfw:comment><comments>http://www.blogjava.net/hoocoral/articles/202035.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hoocoral/comments/commentRss/202035.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hoocoral/services/trackbacks/202035.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 最近几天，自己在研究Struts、Hibernate和Ajax的整合，对于Hibernate和Ajax对我来说还是比较新鲜的技术，也颇有兴趣，在这里把步骤简单整理一下：环境：JDK 1.5Eclipse 3.2MyEclipse 5.0 M1Tomcat 5.5.23MySQL 5.0.191. 在MySQL中建表：Create&nbsp;Database&...&nbsp;&nbsp;<a href='http://www.blogjava.net/hoocoral/articles/202035.html'>阅读全文</a><img src ="http://www.blogjava.net/hoocoral/aggbug/202035.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hoocoral/" target="_blank">胡昆栄</a> 2008-05-21 21:48 <a href="http://www.blogjava.net/hoocoral/articles/202035.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>RCP程序中无法打开Editor的可能原因</title><link>http://www.blogjava.net/hoocoral/articles/155992.html</link><dc:creator>胡昆栄</dc:creator><author>胡昆栄</author><pubDate>Thu, 25 Oct 2007 18:14:00 GMT</pubDate><guid>http://www.blogjava.net/hoocoral/articles/155992.html</guid><wfw:comment>http://www.blogjava.net/hoocoral/comments/155992.html</wfw:comment><comments>http://www.blogjava.net/hoocoral/articles/155992.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hoocoral/comments/commentRss/155992.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hoocoral/services/trackbacks/155992.html</trackback:ping><description><![CDATA[在写RCP程序时，要打开编辑器，但系统提示：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; color: #ff0000; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">无法打开编辑器，编辑器标识未知</span></div>
注意查看：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">extension<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000">point</span><span style="color: #0000ff">="org.eclipse.ui.editors"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">editor<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000">class</span><span style="color: #0000ff">="gamble.editors.InputEditor"</span><span style="color: #ff0000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;icon</span><span style="color: #0000ff">="icons/alt_window_32.gif"</span><span style="color: #ff0000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id</span><span style="color: #0000ff">="gamble.editors.InputEditor"</span><span style="color: #ff0000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name</span><span style="color: #0000ff">="输入信息"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">extension</span><span style="color: #0000ff">&gt;</span></div>
<br />
编辑器扩展时是否设置Editor的icon属性，如果没有设置，会出现上述错误。
 <img src ="http://www.blogjava.net/hoocoral/aggbug/155992.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hoocoral/" target="_blank">胡昆栄</a> 2007-10-26 02:14 <a href="http://www.blogjava.net/hoocoral/articles/155992.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>serializable 类 LoginWindow 未声明类型为 long 的静态终态</title><link>http://www.blogjava.net/hoocoral/articles/130757.html</link><dc:creator>胡昆栄</dc:creator><author>胡昆栄</author><pubDate>Tue, 17 Jul 2007 02:46:00 GMT</pubDate><guid>http://www.blogjava.net/hoocoral/articles/130757.html</guid><wfw:comment>http://www.blogjava.net/hoocoral/comments/130757.html</wfw:comment><comments>http://www.blogjava.net/hoocoral/articles/130757.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hoocoral/comments/commentRss/130757.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hoocoral/services/trackbacks/130757.html</trackback:ping><description><![CDATA[<span lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">The serializable class XXX does not declare a static final serialVersionUID field of type long <br></span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">－－可序列化的类</span><span lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"> CreateBPOVIEW </span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">未声明类型为</span><span lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"> long </span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的静态终态</span><span lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"> serialVersionUID </span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">字段</span><span lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"> <br><br>serialVersionUID</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">作用：<br></span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">序列化时为了保持版本的兼容性，即在版本升级时反序列化仍保持对象的唯一性。</span><span lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"> <br><br></span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">你可以随便写一个，在</span><span lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Eclipse</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中它替你生成一个，有两种生成方式：</span><span lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"> <br></span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一个是默认的</span><span lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">1L</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，比如：</span><span lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">private static final long serialVersionUID = 1L; <br></span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一个是根据类名、接口名、成员方法及属性等来生成一个</span><span lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">64</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">位的哈希字段，比如：</span><span lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">private static final long serialVersionUID = -8940196742313994740L;</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">之类的。</span><span lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"><br><br></span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">当你一个类实现了</span><span lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Serializable</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">接口，如果没有定义</span><span lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">serialVersionUID</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span><span lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Eclipse</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">会提供这个提示功能告诉你去定义之。</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在</span><span lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Eclipse</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中点击类中</span><span lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">warning</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的图标一下，</span><span lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Eclipse</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">就会自动给定两种生成的方式，如上面所述。如果不想定义它，在</span><span lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Eclipse</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的设置中也可以把它关掉的，设置如下：</span><span lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"><br>Window ==&gt; Preferences ==&gt; Java ==&gt; Compiler ==&gt; Error/Warnings ==&gt; Potential programming problems </span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">将</span><span lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Serializable class without serialVersionUID</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</span><span lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">warning</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">改成</span><span lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">ignore</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">即可。<br></span><span lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"><br></span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">如果你没有考虑到兼容性问题时，就把它关掉，不过有这个功能是好的，只要任何类别实现了</span><span lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Serializable</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这个接口的话，如果没有加入</span><span lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">serialVersionUID</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span><span lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Eclipse</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">都会给你</span><span lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">warning</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">提示，这个</span><span lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">serialVersionUID</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">为了让该类别</span><span lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Serializable</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">向后兼容。<br></span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><br>如果你的类</span><span lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Serialized</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">存到硬盘上面后，可是后来你却更改了类别的</span><span lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">field(</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">增加或减少或改名</span><span lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">)</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，当你</span><span lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Deserialize</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">时，就会出现</span><span lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Exception</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的，这样就会造成不兼容性的问题。</span><span lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"> <br></span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">但当</span><span lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">serialVersionUID</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">相同时，它就会将不一样的</span><span lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">field</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">以</span><span lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">type</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的预设值</span><span lang=EN-US style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Deserialize</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，这个可以避开不兼容性的问题。<br></span><br>关键字： <br>
<img src ="http://www.blogjava.net/hoocoral/aggbug/130757.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hoocoral/" target="_blank">胡昆栄</a> 2007-07-17 10:46 <a href="http://www.blogjava.net/hoocoral/articles/130757.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Sun与Java</title><link>http://www.blogjava.net/hoocoral/articles/90282.html</link><dc:creator>胡昆栄</dc:creator><author>胡昆栄</author><pubDate>Wed, 27 Dec 2006 05:20:00 GMT</pubDate><guid>http://www.blogjava.net/hoocoral/articles/90282.html</guid><wfw:comment>http://www.blogjava.net/hoocoral/comments/90282.html</wfw:comment><comments>http://www.blogjava.net/hoocoral/articles/90282.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hoocoral/comments/commentRss/90282.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hoocoral/services/trackbacks/90282.html</trackback:ping><description><![CDATA[
		<font size="2">Java从它的诞生到现在已经11年了。在这11年里，有无数的企业、组织和个人为Java贡献过自己的力量。这就象梁山一百单八将要按着自己的贡献和威望排名一样，谁为Java所做的工作越多，谁就对Java的未来发展方向越有发言权。</font>
		<p>
				<font size="2">　　自从Java成为国际标准后，支持它的企业也随着Java的成熟逐渐多了起来。</font>
		</p>
		<p>
				<font size="2">　　当然，人一多，就会带来另一个问题，谁说了算！作为Java的始作俑者Sun一直想将Java标准据为已有，而IBM凭着它在世界的影响对Java也是虎视眈眈。俗话说得好，三流的公司卖产品、二流的公司卖服务、一流的公司卖标准。当然，如果想做世界第一的IT企业，那就得标准、服务和产品一起卖。因此，以Sun、IBM为首的利益集团围绕着Java以及相关标准明争暗斗了11年，在这11年里，Java标准几度风雨、几度春秋。随着Java的全面开源，Java标准又面临着前所未有的挑战，未来的Java还会象它宣称的那样，一处编译、到处运行吗？到底谁能主导未来的Java呢？</font>
		</p>
		<p>
				<font size="2">　　<strong>Java刚一诞生就成待宰羔羊</strong></font>
		</p>
		<p>
				<font size="2">　　在1995年，Sun正式公布了Java，并且发布了JDK1.0。Java在外形上酷似C++，但它却有一颗形如Smalltalk般纯洁的面向对象之心。正因为如此，Java几乎在一夜之前就香浓世界，成为软件行业的新宠。虽然Java刚开始只是通过Applet为网站做一些动态的效果，但它的杀手锏，“一次编译、到处运行”使Java迅速成为各大企业及众多开发人员竞相追捧的对象。</font>
		</p>
		<p>
				<font size="2">　　正是因为Java的流行使众多有实力的企业垂涎三尺。一开始，Java的JVM是由Sun单独开发的。而在当时，开发工具的老大Borland却蠢蠢欲动。由于Borland以开发语言编译器著称，因此，在Java的早期，除了Sun的JVM，比较著名的还有Borland JVM。</font>
		</p>
		<p>
				<font size="2">　　这个世界上除了Sun，没有哪家公司象Borland一样和Java走得如此之近。在Java的早期，Borland几乎参与了Java的各种层次的设计，如JVM、JDK以及开发工具。甚至Sun和Borland曾经进行了一场关于JVM的军备竞赛。当初Sun设计一个JVM版本，Borland也跟着设计一个更快的JVM版本。就这样持续了有几个月时间。Borland负责这方面事务的就是Anders Hejlsberg，他的第一个成名作就是Delphi，因此，他也被称为Delphi之父。说起Anders Hejlsberg，也许大家不太熟悉，但要是提起C#之父，也许大家会很熟悉，对，他也是Anders Hejlsberg（在1996被微软用年薪300万美元、加盟奖金以及一个开发团队从Borland挖去的），因此，Anders Hejlsberg同时被称为Delphi / C#之父。这位天才以汇编语言编写了Borland JVM，从某种程度上，Borland JVM的效率要比Sun JVM高一些（如果你用过Visual J++就知道了）。但由于Borland后来专注于Java开发工具(JBuilder)的开发而放弃了和Sun的JVM争夺。</font>
		</p>
		<p>
				<font size="2">　　在Sun和Borland的JVM争夺战结束后，真是树欲静而风不止。自从Anders Hejlsberg到了微软后，立刻被比尔.盖茨派去负责微软的Java开发工具Visual J++的开发，至此，又要上演一场龙争虎斗。大家都知道，微软和Sun一直因为Java而互相攻击。但一开始，比尔. 盖茨是非常喜欢Java的，他曾经称赞Java是“到现在为止世界上最好的开发语言”，微软也很早就购买了Java许可证。但微软作为软件公司的老大，看到别人的孩子茁壮成长，自已心里却暗生嫉恨。于是在它自己的Visual J++中搞起了小动作。使用Visual J++开发Windows程序就象是享受一杯美酒。但Visual J++却破坏了Java的跨平台特性。微软和Sun也因此打了长达7年的官司，最后这场官司以喜剧收场。微软和Sun达到协议，微软停止Visual J++的开发，而双方都将为使用对方的专利付费。同时Visual J++也无疾而终（要不是这场官司，恐怕现在很多程序员还在使用Visual J++呢！）。在2004年，微软和Sun最终以16亿美元结束了十多年恩怨。这也正应了一句话“没有永远的朋友、也没有永远的敌人，只有永恒的利益”。</font>
		</p>
		<p>
				<font size="2">　　在Sun、Borland、微软之间围绕着Java的争斗最终以Sun重新获得Java的控制权而结束。但新的争斗又将开始。</font>
		</p>
		<p>
				<font size="2">　　<strong>Java标准成为众豪强竞相追逐的“梅花鹿”</strong></font>
		</p>
		<p>
				<font size="2">　　在经过数年的争斗后，Sun终于可以暂时控制JVM和JDK了，现在这两种技术也趋于一致了，但JVM和JDK只是Java体系的冰山一角。而对Java影响最大的莫过于众多的JSRs（Java Specification Requests）。</font>
		</p>
		<p>
				<font size="2">　　当Sun和Borland、微软的争斗告一段落后，Sun本以为可以高枕无忧了，但Sun却打错了算盘。在这之后，Sun受到的第一次挑逗就是IBM的Eclipse。在2001年，IBM设计了自己的Java开发工具Eclipse，这本来没什么，但Eclipse却与Borland的JBuilder有着本质的不同。JBuilder是百分之百基于Java的，而Eclipse虽然是Java开发工具，但它的图形接口既不是AWT，也不是SWING，而是IBM自己开发的SWT。SWT虽然速度快，但它却是独立于JDK之外的，也就说，它并不同JDK一起发布。因此，在程序发布时，必须带是SWT的运行库才可以。IBM官方称Eclipse的推出是为取代Sun的NetBeans，但稍微动一下脑子就不难看出，IBM的真正目的并不是NetBeans，而是想逐步取代Sun的JDK的部分，甚至全部。IBM推出SWT的目的就是想让开发人员除了标准的AWT和SWING外，还有另外一种选择，那就是SWT。也就是说，IBM想先通过JDK的图形库来分裂JDK，从而达到自己控制JDK的目的。</font>
		</p>
		<p>
				<font size="2">　　而另Sun尴尬的是IBM的举动并没有触犯什么法律或规约，SWT只是一个基于Java的类库而已。Sun更本无法向当年起诉微软一样来起诉IBM。IBM的初次挑衅取得了意想不到的收获。这下IBM更加得寸进尺了。</font>
		</p>
		<p>
				<font size="2">　　由于和Java相关的规范都是由JCP来管理的。每当提交一个新规范，必须由JCP的成员投票表决才能通过。因此，JCP就相当于Java世界的联合国。它和现实中的联合国是一样的，谁控制了联合国，谁就能充当世界警察，为所欲为。而JCP成员中最强大的当然是IBM了。一开始，IBM还是很规矩的，但后来，IBM发现，JCP一直都是由Sun来主导，而Sun的产品也是最早支持JCP标准的，如当JCP推出新的J2EE标准后，Sun的AppServer在半个月后就宣布支持新标准了。</font>
		</p>
		<p>
				<font size="2">　　这种结果是IBM所不能允许的，因为，在J2EE市场，IBM和Sun是竞争对手。这样，Sun的AppServer就永远领先IBM的WebSphere了。因此，IBM就想绕过JCP，自己确定新的标准。可能是因为IBM感觉自己势单力孤，最后把BEA也拉了进来。IBM和BEA都是J2EE市场的绞绞者，他们的市场份额之和超过了66%。</font>
		</p>
		<p>
				<font size="2">　　无论是微软，还是IBM。他们的强大都足以在一个领域中推行新的规范。IBM也正是看中了这一点，因此，在最近IBM和BEA提交的几个规范（如JSRs235，236和237）并没有长长支持列表。而其它的规范都有很长的支持列表。这充分说明了IBM和BEA打算绕过JCP而单独推出规范，而这些规范并未得到JCP大多数成员的支持。</font>
		</p>
		<p>
				<font size="2">　　如果说提交JSR规范只是小打小闹，那么IBM联合BEA发布的SDO(Service Data Object)规范将是一次大动作。在发布SDO的同时，IBM又向Apache基金会捐献一个支持SDO标准的Tuscany项目。这次发布并没有安排Sun、JBoss等Java中间件提供商参与。尽管SDO最终因进展缓慢而失败，但这将是以IBM为首的利益集团分裂JCP的开始。在SDO失败后不久、IBM和BEA又联手推出了SOA标准。这个标准除了IBM和BEA，并没有其它的SOA标准制定者。IBM和BEA制定SOA的目的就是想彻底绕过JCP而成为Java EE的事实标准。不管其他人如何评价IBM和BEA的这次联合，我相信Java标准已经开始分裂。而在业界举足轻重的企业，如IBM、BEA、Oracle、JBoss，甚至是微软，都会围绕着Java标准展开一场殊死搏斗。也许Java EE的未来将是一场血雨腥风！</font>
		</p>
		<p>
				<font size="2">　　<strong>Sun的回马枪：以GPL协议开源的Java</strong></font>
		</p>
		<p>
				<font size="2">　　IBM这个城府极深的家伙总在不断地算计别人。就在Sun和微软最终和解的2004年，IBM又不遗余力地“劝说”Sun将Java开源。而当时Sun还是站在开源的对立面。面对IBM给自己的一封公开信，Sun总裁麦克利表现出了极大的反弹，并公开表达了对这封信的反感和对开放的排斥。有趣的是，在两年之后，Sun的态度发生了180度的逆转，不仅将Java开源，而且是在GPL协议下开的源。GPL在开源协议中是最接近自由的协议，这下可给IBM一个措手不及。</font>
		</p>
		<p>
				<font size="2">　　在Sun公布这一消息之后，英特尔、RedHat都对此表示高度的赞许，而IBM的态度却让人捉摸不透。除了一份声明外，并没有其它的任何反应。</font>
		</p>
		<p>
				<font size="2">　　其实Sun这次开源也算是破罐子破摔了。在Java诞生的11年里，Java为Sun赢得了无数的声誉，但Java对于Sun来说就是叫好不叫座。而恰恰相反，Java却成就了BEA、JBoss、IBM等公司。可Sun除了为Java而付出的大量开发和维护费用外，几乎没得到没么好处。而这次开源，Sun干脆将Java开源到底，直接选用了最开放的GPL协议，反正Sun也没从Java得到什么，当然，也不怕失去什么。Sun的这个举动是几乎所有人都始料未及的。而最受刺激的就是IBM。在开源的当天，IBM发表声明建议Sun还是以Apache协议来开源Java。这说明，Sun这一举动给了IBM一个回马枪、打得IBM错不及防。</font>
		</p>
		<p>
				<font size="2">　　IBM一开始想让Sun在Apache等限制比较多的协议下开源，然后凭着IBM的影响力来控制Java在未来的发展方向。而这下Sun将IBM的计划完全打乱了，一但以GPL开源，就意味着任何人都可能自由地修改Java的代码，而IBM将很难控制局面。</font>
		</p>
		<p>
				<font size="2">　　Java的开源其实对于Sun是好处多多，起码它可以省下大笔的开发Java的费用，当然，还能赢得一个好名声。除此之外，还可以借助于开源社区的力量，对Java那臃肿的构架进行改进。Sun还发表声明说，在未来，还打算将Solaris、OpenOffice等软件以GPL协议进行开源。这将给Sun带来更大的发展机会。</font>
		</p>
		<p>
				<font size="2">　　而IBM和其它的软件公司也正在试图寻找开源赢利模式。IBM几次想控制Java都未能完全如愿，现在Java也以GPL协议开源了，看来，IBM要想进一步地控制Java的可能性已经不大了。而Java的开源也有不利的一面，这将表现在可能出现其它的Java版本，到那时，可能会在一定程度上破坏Java的“一处编译、到处运行”的特性。</font>
		</p>
		<p>
				<font size="2">　　总之，不管Java标准是分裂，还是统一，有一点永远不会变，那就是Java会一如既往地向前发展。但愿我们将来能看到一个崭新的Sun和Java。</font>
		</p>
<img src ="http://www.blogjava.net/hoocoral/aggbug/90282.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hoocoral/" target="_blank">胡昆栄</a> 2006-12-27 13:20 <a href="http://www.blogjava.net/hoocoral/articles/90282.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java环境配置大全</title><link>http://www.blogjava.net/hoocoral/articles/88823.html</link><dc:creator>胡昆栄</dc:creator><author>胡昆栄</author><pubDate>Tue, 19 Dec 2006 08:07:00 GMT</pubDate><guid>http://www.blogjava.net/hoocoral/articles/88823.html</guid><wfw:comment>http://www.blogjava.net/hoocoral/comments/88823.html</wfw:comment><comments>http://www.blogjava.net/hoocoral/articles/88823.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hoocoral/comments/commentRss/88823.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hoocoral/services/trackbacks/88823.html</trackback:ping><description><![CDATA[
		<span class="smalltxt">
				<span class="bold">Java环境配置大全 </span>
		</span>
		<span style="FONT-SIZE: 12px">
				<br />　　<br />　　安装JDK<br />　　<br />　　从<a href="http://java.sun.com/" target="_blank">http://Java.sun.com/</a>下载jdk-1_5_0_04-windows-i586-p.exe<br />　　<br />　　安装到指定路径，我选择D:\jdk1.5.0<br />　　<br />　　配置环境变量：<br />　　<br />　　Java_HOME: D:\jdk1.5.0<br />　　PATH: D:\jdk1.5.0\bin;<br />　　CLASSPATH: .;D:\jdk1.5.0\lib\tools.jar;<br />　　D:\jdk1.5.0\jre\lib\rt.jar;<br />　　<br />　　安装WTK<br />　　<br />　　从<a href="http://java.sun.com/" target="_blank">http://Java.sun.com/</a>下载j2me_wireless_toolkit-2_2-windows.exe<br />　　<br />　　安装到指定路径，我选择D:\WTK22<br />　　<br />　　安装Eclipse<br />　　<br />　　从<a href="http://www.eclipse.org/" target="_blank">http://www.eclipse.org/</a>下载eclipse-SDK-3.0.1-win32.zip和<br />　　<br />　　NLpack-eclipse-SDK-3.0.x-win32.zip（语言包）<br />　　<br />　　解压缩eclipse-SDK-3.0.1-win32.zip即可，我的路径：D:\MyDevelopTools\eclipse<br />　　<br />　　解压缩NLpack-eclipse-SDK-3.0.x-win32.zip,得到features和plugins两个文件夹，把里面的文件分别拷入eclipse中相应的目录下即可<br />　　<br />　　安装Tomcat<br />　　<br />　　从<a href="http://jakarta.apache.org/" target="_blank">http://jakarta.apache.org/</a>下载jakarta-tomcat-5.5.9.zip<br />　　<br />　　解压缩jakarta-tomcat-5.5.9.zip即可<br />　　<br />　　配置环境变量：<br />　　<br />　　Tomcat_Home: D:\MyDevelopTools\tomcat-5.5.9<br />　　<br />　　PATH: D:\MyDevelopTools\tomcat-5.5.9;<br />　　<br />　　在eclipse中配置J2ME开发环境：<br />　　<br />　　安装eclipseme:<br />　　<br />　　从<a href="http://www.eclipseme.org/" target="_blank">http://www.eclipseme.org/</a>下载eclipseme.feature_0.9.4_site.zip，在eclipse中选择帮助-〉软件更新-〉查找并安装-〉搜索要安装的新功能部件-〉新建已归档的站点。选择eclipseme.feature_0.9.4_site.zip，打开-〉选择eclipseme.feature_0.9.4_site.zip，剩下的一直下一步就可以了。安装完成会在窗口-〉首选项中出现J2ME<br />　　<br />　　修改Java-〉调试：<br />　　<br />　　选中Java-〉调试，把暂挂执行的前两项点去，通信中的调试器超时改为15000<br />　　<br />　　配置WTK<br />　　<br />　　窗口-〉首选项-〉J2ME-〉Platform Components<br />　　<br />　　右键单击对话框右侧的Wireless Toolkit，选择Add Wireless Toolkit,<br />　　<br />　　选择WTK安装目录，eclipse会自动匹配。<br />　　<br />　　在eclipse中配置J2EE开发环境(Tomcat5.5.9)：<br />　　<br />　　安装EMF-RunTime:<br />　　<br />　　从<a href="http://www.eclipseme.org/" target="_blank">http://www.eclipseme.org/</a>下载emf-sdo-runtime-2.0.1.zip<br />　　<br />　　解压缩emf-sdo-runtime-2.0.1.zip,得到features和plugins两个文件夹，把里面的文件分别拷入eclipse中相应的目录下即可。<br />　　<br />　　安装Lomboz：<br />　　<br />　　从<a href="http://forge.objectweb.org/" target="_blank">http://forge.objectweb.org</a>下载org.objectweb.lomboz_3.0.1.N20050106.zip解压缩org.objectweb.lomboz_3.0.1.N20050106.zip,得到features和plugins两个文件夹，把里面的文件分别拷入eclipse中相应的目录下。如果在窗口-〉首选项中有Lomboz选项就安装正确，如果没有，在D:\eclipse\configuration\下删除org.eclipse.update这个文件夹,再重起eclipse就可以了。<br />　　<br />　　配置Lomboz:<br />　　<br />　　在D:\eclipse\plugins\com.objectlearn.jdt.j2ee_3.0.1\servers下新建一个文件tomcat559.server，里面的内容从tomcat50x.server全部复制过来，把name="Apache Tomcat v5.0.x"替换成name="Apache Tomcat v5.5.9"，然后把所有的<br />　　<br />　　“${serverRootDirectory}/bin;${serverRootDirectory}/common/endorsed”替换成<br />　　<br />　　“${serverRootDirectory}/common/endorsed”就可以了。然后进入eclipse，窗口-〉首选项-〉Lomboz，把JDK Tools.jar改为：D:\jdk1.5.0\lib\tools.jar，窗口-〉首选项-〉Lomboz-〉Server Definitions,在Server types中选择Tomcat5.5.9在Application Server Directory和Classpath Variable的路径改为D:/MyDevelopTools/tomcat-5.5.9先应用，再确定就可以了。</span>
<img src ="http://www.blogjava.net/hoocoral/aggbug/88823.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hoocoral/" target="_blank">胡昆栄</a> 2006-12-19 16:07 <a href="http://www.blogjava.net/hoocoral/articles/88823.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>