Thursday, March 23, 2006

Sorry, I moved to WordPress

I used to use pLog as my blog system, but after I move my hosting providor to DreamHost, I found that, WordPress is so Cool, and I decided to transfer my blog system to word press.

Except those comments was losted, all the other blog entry are all alive. :-)

That's most important!

WordPress provided a convenient way to transfer all the old blog entries via RSS 2.0, I had been confused by pLog's system by incorrect RSS Date format. For 2 days long, I finally found out that I missed the local files which I choosed in pLog system.

Of corz, when u know where is wrong, fix it will not be a big problem.

:-p

Monday, March 6, 2006

The coming revolution

Java is facing a revolution on desktop because of the coming Java SE 6.0, Sun just released the first beta version of Java SE 6.0 a few days ago, and a log of people is making a test drive on it.

Here I present you an article which is highlighted on Sun's Java office site, and I think it will help u understand the new features better.

To view the original article, please click HERE.


初探Java SE 6: 一个桌面赢家

一个有着丰富的Java经验的开发者试用了一下Java SE 6 Beta,并且认为Java SE 6 有希望成为桌面开发的一次革命。

by Eric Bruno (Translated by Xu Ting)

刚刚发布的Java Standard Edition 6 (Java SE 6,也被称为Mustang)beta版完整的包括了预定的新特性,对于主流的应用来说,已经足够稳定。我在第一时间下载并尝试了这个新?动物?,并且被它全新的桌面特性所震撼。除了Java平台一贯以来的命名方式上的改变(去掉了2),它还包含了包含了很多值得探索一下的新特性。这些新特性可以分为两类:桌面和核心。

桌面上的改进主要集中在用户界面(UI)性能,以及,用本地化的接口与OS的桌面整合。核心部分则集中在提高开发人员的生产性,以及Java程序的可管理性上。Sun的Mustang团队也对Web Service以及安全性方面作出了显著的改进。

不管怎么样,无论你是一个应用程序开发人员,还是一个系统管理者,或者提供独立的工具,或者是一个安全专家,Java SE 6都为你准备了些东西。这片文章主要是详细讨论了一些我试用过了的有趣的特性。

有关Java核心的新特性以及改进。

关于Java 核心部分,我们认为是部分((语言和工具)对所有的Java而言都是很基础的东西,包括从界面API到服务端API库。下面我将按照不同的分类来讨论这些与Java核心相关的特性。

开发人员的生产性

新的Java编译器API允许你从一个Java应用程序中去编译另外的Java源程序。在这样的编译的过程中,应用程序将根据计算出来的依赖关系去访问那些相关的API库文件,这个过程也会产生Warning,Error以及其他一些在编译的时候会产生的消息。虽然这个功能是我不太会常去用的,但是我很快发现了一种用法。比如:我在我的应用程序A中,快速的用这个特性来编译A的数据访问层代码。我可以用我的代码去生成并且编译我在A程序中要去访问的数据库表的类,最终的结果可以是一个从Ant脚本中生成出来的JAR文件。这样最显而易见的一个事实就是我可以在自己的程序中去重新编译生成这些重要的文件,至少我可以不需要改动应用程序。

Java Scripting,是在Java SE6中实现了的JSR223。这是一个脚本框架,提供了让脚本语言来访问Java内部的方法。你可以在运行的时候找到脚本引擎,然后调用这个引擎去执行脚本。这个脚本API允许你为脚本语言提供Java支持。另外,Web Scripting Framework允许脚本代码在任何的Servlet容器(例如Tomcat)中生成Web内容。

对于调试,Java平台的调试器(JPDA)已经提供了死锁诊测,并且可以为产生了死锁的对象生成堆栈信息。另外,Java SE 6允许在一个运行中的JVM上,添加不同的诊断工具 。

应用程序管理

Java SE 6中对内存泄漏增强了分析以及诊断能力。当遇到java.lang.OutOfMemory异常的时候,可以得到一个完整的堆栈信息,并且当堆已经满了的时候,会产生一个Log文件来记录这个致命错误。另外,JVM还添加了一个选项,允许你在堆满的时候运行脚本。(这也就是提供了另外一种方法来诊断错误)

增强的JMX 监视API在MBean的属性值传入了一个特定的参数的时候,允许这个应用程序发送一个事件通告。(这里的属性值可以在很复杂的类型中)

对于Solaris 10的用户,为Solaris提供的Hotspot JVM中,提供了一种通过Solaris DTrace(这是个系统的调试工具)来追踪显示JVM内部的活动情况,包括垃圾收集,类装载,线程,锁等等。我在JavaOne上得到了一个第一手的DEMO,这个DEMO所显示的能追踪到的详细情况简直是太棒了。比如,当一个应用程序运行的时候,DTrace允许可以在任何地方中止代码,查看所有被载入内存的库(不仅仅是Java的类库,甚至是系统级别的库),并且可以单部跟踪到Solaris的内核中去,甚至可以直达硬件!Java新提供的这个工具为全世界提供了一种系统级别的追踪调试手段。我还记得以前我在Solaris的JVM上经常会收到一些Signal8这样的错误,这个特性将会省去我许多的猜测。

Web services

Java SE 6 包含了一些支持Web Services的新API。XML 数字签名API,允许你为基于Java上的Web Services数据提供加密的可能。Java-XML Web Services (JAX-WS)2.0API更新的以前称为JAX-RPC的API库。增强的Java-XML Binding (JAXB)2.0包含了对XMLSchema的支持,以及将某个Class绑定到一个Schema上去。最后, Streaming API for XML (STaX)提供了一个双向API,这个API可以通过一个事件流来读取或者写入XML,其中包括跳过某个部分,然后直接关注与文档中的另外一个小部分的能力。

安全

Java SE 6的安全部分,整合了GSS/Kerberos的操作API,LDAP上的JAAS认证,以及一个?请求安全认证?的框架,这个框架允许应用程序从一系列的协议中选择一种?请求安全认证?所用的协议。

桌面特性以及改进

Java长久以来,一直被认为是一个一流的服务器端软件的语言,但是桌面GUI应用上只能是二流地位。 Sun的Java桌面工作小组正在努力改变这个现状。通过调用系统的GUI接口,来更好的显示Java 的GUI应用。他们的努力不仅改善了Java SE 6中的GUI性能,也改变了一些Java GUI应用程序的行为。(比如提供了DnD的支持)

Java SE 6中的桌面新特性,大部分 都来自于JDesktop Integration Components(JDIC)项目。JDIC项目为Java的应用程序提供了访问OS底层本地桌面GUI接口的方法,例如浏览器,Email编辑器,文件类型绑定,系统托盘,阴应用程序启动,打印等等。 下面是那些Java SE 6中最显著的一些桌面特性。
  • 启动界面的支持。启动界面(Splash Screens)是一个应用程序启动的时候,用户等待的时候给用户看的界面。Java SE 6中的启动界面甚至可以在JVM启动之前显示出来。
  • JFC以及Swing中的改进:
    • Java SE 6通过调用Windows的API,不仅提高了 GUI的性能,也保证了在当前以及以后的Windows版本中的兼容
    • 增强的布局管理包含了一个可定制的布局管理,另外还包含了一些使得GUI元素布局的时候更加简单的方法。
    • Java SE 6中显著的增强了Swing控件的托拽功能,并且是可以定制的。
    • 真正的双缓冲,提供了快速,平滑的图形效果。
  • 系统托盘的支持。在java.awt包中,增加了SystemTray和TrayIcon两个类,它们允许你在Windows或者使用GNome的Linux的系统托盘区,添加图标,提示信息,弹出菜单。系统托盘区是所有的应用程序都共享的区域,通常在屏幕的右下角。通过系统的动作和事件可以允许你的Java应用程序去相应在托盘区的鼠标事件。我发现这个特性也同样对我的服务器程序非常有用,比如,我可以通过桌面API,非常轻松的启动一个浏览器,并且打开这个服务器程序的管理界面(当然,是HTML页面)。在Linux或者Window上,我再也不需要自己输入管理界面的URL和端口号了,只要简单的点击一下托盘图标就可以:)
  • JTable支持打印了
  • Java 2D方面增强了许多。 主要是在字符显示上,尤其在LCD的显示屏上。整合了许多字体反锯齿的设定来保证平滑的显示文字。
  • 新的java.awt.Desktop包。Java SE 6中这个新的包目标是让Java 的GUI应用程序成为?一等公民?。 有了这个包,Java的应用程序可以启动默认的浏览器和邮件客户端,并且整合了一些通用桌面应用程序的启动。例如启动OpenOffice,然后打开,编辑,打印一些制定的类型。Desktop包通过action事件来实现的,你可以将这些Action整合到你的应用程序中去。
  • 国际化。Java SE 6提供了一些本地化特性的可扩充性,比如日期格式,Unicode文字的一致性,资源簇等等。
一场Java桌面革命

Java SE 6提供了许多的特性,改进,bug修改等 (这些可以参考我的另外一篇翻译),本文旨在对Java这个即将到来的重要版本之前做一个历史的记录。 这个改动涉及到了Java SE如此多的方面,乃至几乎所有的Java应用程序都会被波及到,包括那些Java EE的应用程序。

Java SE 6有潜力成就一场桌面革命,就如同Java 2成就了一场服务器革命。最好是现在就为这场即将到来的风暴做好准备,让你自己成为革命的先锋人员。

Eric Bruno is a New York-based consultant who has built high-volume Web applications, database systems, and real-time transactional systems in Java and C++. Visit www.ericbruno.com for more about him.

New features in Java SE 6.0

A few days ago, Sun just released Java SE 6.0 Beta. And I had viewed the release notes and some articles discussed the new features .

Here is a translation about the new features and enhancement list provided by Sun officially. And I had translated this to Chinese(Simplified Chinese.)

The original document is placed HERE.

Here is the translation.
#Thanks to Zou, he helped me review this translation.
#There are some features about the compiler and VM are remained as original, because I am short at this areas. If you have any suggestions, please leave your comments of send a mail to my mailbox: tonny.xu[a]gmail.com


Java SE 6.0(代号?Mustang")是即将面世的下一版本Java。相比较J2SE 5.0,添加了许多重要的特性和增强功能,这些新特性和增强功能如下面的列表。

所有的条目都按照涉及范围以及所属的组件分类。第一列表示了修改涉及的范围。

  • JSR - 表示这是实现了某一项JSR(Java标准需求)的重大特性
  • API - 表示新添加的API
  • IMP - 表示没有增加新的API,只是作了一些类似性能增强的改进。

请注意:这是个Beta里程碑,?Mustang?还在继续开发中。这些都是JSR270中的内容。JSR270本身并没有定义新的特性,但是它列举了一系列的其他JSR或者是正在进行评审中的需求。?Mustang?的最终发布版的目标是包含JSR270中所有的特性,但是不保证(有些已经商议通过的特性可能最终不会在?野马?版本中实现)。

范围 涉及到的组件或者技术领域摘要 可参考的记录
api client/2d ImageIO: GIF writer 4339415
imp client/2d Native Text Rendering Parity
本地化文字渲染支持
4726365
impclient/2dImproved hardware acceleration on Windows
利用Windows平台的硬件加速得到改进
5104393
impclient/2dSingle-threaded rendering for OpenGL pipelines
为OpenGL管道实现了单线程渲染
6219284
apiclient/awtPop-up splash screen at beginning of Java startup
在启动的时候能跳出启动画面
4247839
apiclient/awtJava applications can access desktop applications
Java应用程序可以访问桌面应用程序
6255196
apiclient/awtImproved modal dialogs
改进的模式对话框
4080029
impclient/awtXAWT is the default Toolkit on Solaris
在Solaris上,XAWT是默认的图形化接口
5049146
apiclient/awtWindows system-tray support
支持Windows收缩到Windows系统图标区
4310333
impclient/awtBetter support for input in non-English locales
对非英文文字输入有更好的支持
4360364
impclient/awtLive resizing
(窗体元素)全时自动缩放
6199167
impclient/deployImproved application deployment across browsers
改进了跨浏览器的应用程序部署
6329487
impclient/deployImproved user experience in JRE/JDK installer
在JRE/JDK的安装过程中更加友好的用户体验
5079209
impclient/deployImproved security
安全性有所改进
6222485
impclient/deployDirect execution of JAR files on Linux
在Linux上支持直接执行JAR文件
6211008
impclient/deployImproved desktop integration in Java Web Start
在JavaWebStart中,和桌面整合部分有所改进
4625362
impclient/deployImproved IFTW installer
IFTW安装程序有所改进
6198632
impclient/deployImproved startup & footprint for plugin/webstart
对插件和WebStart的启动/追踪有改进
6329480
impclient/deployMozilla Firefox browser support
支持Mozilla的Firefox浏览器
6216340
impclient/deployDefault Java on Linux
Linux系统中支持默认JVM
6211006
impclient/deployImproved user experience in Java Plug-in and Java Web Start
对Java插件以及JavaWebStart中的用户体验有所改进
6205064
impclient/deployUnified download engine
统一的下载引擎
4802551
impclient/deploySupport Mozilla and Firefox family browsers.
支持所有Mozilla和Firefox系列浏览器
6216340
apiclient/dndA way to avoid hangs on retrieval of clipboard data
添加一种方法,用来防止从剪贴板读取数据时系统瘫痪
4818143
impclient/i18nSupport for important locales
支持一些重要国家的本地化支持(文字,汇率,时间日历)
4324505
impclient/i18nJapanese calendar
支持日本日历
4609228
apiclient/i18nResource bundle enhancements
增强了对资源包的定制功能
5102289
apiclient/i18nNormalizer API
提供文字正规化的API
4221795
apiclient/i18nPluggable locales: Pluggability for break iterators
BreakIterator现在是可扩展的了
4052440
apiclient/i18nPluggable locales: Pluggability for locale names, formatters, and collators
LocalNames,Formatters,Collators现在是可扩展的了
4052440
impclient/l10nChinese localization for JDK tools
提供了JDK工具的中文化支持
6209342
impclient/swingGTK Native L&F Fidelity
本地化的GTK Look&Feel支持
6185456
impclient/swingThrough-the-stack: Reduced footprint / startup time
改进的堆栈处理,减少启动和追踪时间
6329480
impclient/swingNative look & feel fidelity
改进了本地化的Look&Feel支持
JSR 15: Image IO Framework
JSR 183: Web Services Message Security APIs
JSR 185: Java Technology for the Wireless Industry
impclient/swingAvalon Look-and-Feel
支持Avalon的Look&Feel
6329475
apiclient/swingJTable sorting, filtering, and highlighting
新增对Jtable的排序,过滤,高亮支持
4747079
apiclient/swingJTabbedPane: Tabs as components
新增对JTabbedPane支持:Tabs可以作为组件
4499556
impclient/swingWindows native L&F fidelity
Windows平台上本地化的Look&Feel支持
5106661
apiclient/swingSwingWorker
新增SwingWorker(遗漏的API)
4681682
apiclient/swingImprove Drag & Drop features for Swing Components
对Swing控件提供拖拽支持(DnD)
4468566
apiclient/swingExtend SpringLayout
新增扩展的SpringLayout布局方式
4726194
apiclient/swingText Document printing
新增文本文件打印支持
4791649
impclient/swingImproved painting performance (fix grey boxes)
改进了对固定大小灰色框的上色过程
4967886
jsrcore/coreJSR 223: Scripting for the Java Platform
实现了JSR223,新增了对Java平台的脚本化支持
6249843
apicore/debugMultiple simultaneous agents
新增多个应用程序的并行调试
4772582
apicore/debugAdded heap capabilities to JPDA
对JPDA新增了堆容积
4914266
apicore/debugAttach-on-demand
JVM支持按需添加诊断工具(类似Debug,Jconsole等等)
6173612
apicore/debugJVMPI and JVMDI have been removed.
JVMPI和JVMDI已经被去除了。
4914266
apicore/jndiRead-timeout specification for LDAP operations
新增LDAP操作的Read-Timeout标准
6176036
apicore/libsarray reallocation API
新增数组重分配API
4655503
impcore/libsBigDecimal optimizations for specjbb++
为SpecJBB++优化了BigDecimal
apicore/libsFloating point: Add IEEE 754 recommended functions to java.lang.{{,Strict}Math}
在java.lang.Math类中添加了IEEE754推荐的浮点方法
4406429
apicore/libsStandard service-provider API (java.util.Service)
新增标准的Service-Provider类
4640520
apicore/libsUpdates to java.util.concurrent
对java.util.concurrent类进行了更新
6268386
apicore/libsIO Enhancement: Password prompting
新增IO特性:Password提示
4050435
apicore/libsIO Enhancement: File attributes
新增IO特性:文件属性
6216563
apicore/libsIO Enhancement: Method for discovering free disk space
新增IO特性:提供查找某个分区剩余空间的方法
4057701
impcore/libsIO Enhancement: Long pathnames on Windows
新增IO方法:Windows平台上的长路径名
4403166
apicore/libsLow-level Java compiler API for IDEs
新增对IDE提供支持的底层Java编译器API
4813736
jsrcore/libsJSR 202: Java Class File Specification Update
实现了JSR202,按照JavaClass文件的标准更新的Class文件的结构
4