"野马"中的桌面Java特性

来源:互联网 发布:windows系统补丁 编辑:程序博客网 时间:2024/04/27 22:58

Sun的桌面Java客户端组正在为下一版Java(代码名"野马")的某些重要特性和功能而工作;我们认为在此细说其中的某些亮点也许对您有所帮助。我们尽量给附加信息添加链接(如Bug ID或其它文章)并且在开发进程中告诉你每项特性添加到“野马”中的构建号的信息。并且随着野马的发布,这不仅只是说说而已,你可以随时从 http://mustang.dev.java.net下载到野马的最近版本。

在此我们尽量开诚布公;我们将告诉你将要在野马上开展的工作;出于各种原因,这些工作很可能不在野马的发布版中出现。毕竟,野马正处在开发中的阶段。而且任何新增AP或其它对的J2SE平台规格的增强必须提交到 JSR 270 Expert Group审阅和批准。除了这种“意外”,此列表将包含所有我们现在希望添加到野马中的特性。

还需注意,这里不是客户端组所有工作的详解列表;这里仅仅是我们当前工作中比较大、比较可见的和需求强烈或激动人心的特征。

最后,我们鼓励你在java.sun.com中寻找更多的信息。尤其注意的是,我们的bug报告趋向于包括我们关于bug,特性和修正最近的想法。对于下面包括bug ID的项,点击链接或在bug database中搜寻该bug ID可以阅读关于这些特征更多的信息。

我们把这个列表分为不同的区域:

  • Swing
  • Java2D
  • 国际化
  • AWT
  • 部署

对下面的每个特征,我们列出以下内容:

  • Feature: 特性的名字或简单描述。
  • Delivered: 此修订将被集成的build号。例如,"b27" 意思是 "build 27"。任何关联一个特定build好的特性可以在 http://mustang.dev.java.net上http://mustang.dev.java.net上http://mustang.dev.java.net上上下载和测试。没有完成的特性无build号;我们计划在每次修订递交后升级此文档。
  • Bug IDs: 到java.sun.com的链接,包括此问题和修订的更多信息。
  • Description: 对特性的描述。某些特性可能在其它地方有报道,我们会适当的链接到这些位置。
Swing

对改进Swing最重要的驱动是它的各平台look and feel。亦即是说,使Swing的Windows和GTK外观与相应的平台匹配。此外还包括对各种组件功能的修正。

Feature: 改善 indows Look and Feel
Bug IDs: 5106661
Status: Portions done, remaining ongoing.
Description: This feature consists of three distinct parts:

  • 用微软的API绘制组件的各部分(5106661).
  • Make sure each of the components look and behave correctly. That is, each component provides the appropriate feedback, has an appropriate size and matches the underlying component.
  • 确保Swing的Windows Look and feel在Longhorn表现良好。

Feature改善 GTK Look and Feel
Bug IDs: 6185456, 5090726
Status: In-development
Description: This feature consists of three distinct parts:

  • 用GTK的API绘制组件的各部分(6185456).
  • After fixing 6185456 Swing components will use GTK's rendering engine. This portion of this feature is to make sure each of the components look and behave correctly. That is, each component provides the appropriate feedback, has an appropriate size and matches the underlying component.
  • 让Swing的GTK文件对话框与最新的GTK文件对话框一致(5090726).

Feature: New Examples
Bug IDs: 6246816, 6246820, 4989244
Status: In-development
Description: Swing's current examples do not illustrate best practices and are not representative of real applications. With that in mind we plan on providing two distinct types of examples. One shows all the widgets in all possible states. SwingSet2 currently serves this purpose but has grown stale and out of date. The second example type is one that better matches a real world application, showing best practices in using the toolkit.

Feature: Layout Enhancements
Bug IDs: 6237146, 6237199
Status: In-development
Description: This work consists of two distinct parts:

  • Add the ability to get the baseline for various components, extending the appropriate layout managers where it makes sense.
  • Add the ability to get preferred spacing between components. That is, each look and feel offers different guidelines as to how far apart components should be placed during layout. This API will allow you to get this information.

Feature改善Swing的拖放支持
Bug IDs: 4521075, 4468566, 4942851, 5029427, 5029432, 4816922
Status: In-development
Description: Currently it's difficult to use drag and drop with Swing -- only a small handful of Swing components have easy-to-use drag and drop support. This feature will not only fix a number of drag and drop bugs, but also make the process of providing custom feedback and interaction during a drag and drop session much easier.

Feature: 提供真双缓冲
Bug IDs: 4967886
Status: b32
Description: Where it makes sense have Swing provide true double buffering support. This will provide two immediate advantages: exposing a Java application (moving an application to the front that was previously obscured) will be nearly instantaneous, and an application that hangs the event dispatch thread can still have its contents restored during an expose event. For more information on this feature, check out Scott Violet's blog

Feature: JTable排序,过滤和强调
Bug IDs: 4747079
Status: In-development
Description: Add the ability to sort, highlight and filter the contents of tables. Portions of this work will come from JDNC.

Feature: SwingWorker
Bug IDs: 4681682
Status: In-development
Description: SwingWorker was originally published in 1998 in the article Threads and Swing. Since that time, developers have continuously requested we move it into core. At the 2004 JavaOne conference we presented a new version of SwingWorker that included generification, use of the concurrency package, and PropertyChangeListener support. This work will place a version very similar to the one shown at the 2004 JavaOne conference into core.

Feature: Text Printing
Bug IDs: 4791649
Status: In-development
Description: Add printing support to JTextComponent, including the ability to specify a customer header or footer and layout to printed page size.

Feature: 可以把任意组件作为JTabbedPane的页签
Bug IDs: 4499556
Status: Done (but not yet integrated into Mustang)
Description: JTabbedPane currently limits the contents of a tab to a string and/or an icon. This feature allows you to embed arbitrary components, such as a JPanel containing a label and button, as the tab.

Java 2D

The high order bits for Java2D in this release are quality issues and performance. Most of our work is related to these overarching goals.

Feature: 单线程绘制
Bug IDs: 6219284
Delivered: b27
Description: This is a rearchitecture of our multi-threaded rendering code for the OpenGL rendering pipeline, to make Java2D graphics faster, our code cleaner (read: less buggy), and to make our OpenGL renderer more ready for prime time. While only enabled for OpenGL in this release, STR is the basis for our other accelerated rendering pipelines in the future (can't wait to make this work on our DirectX pipeline in the next release!) For more information, check out Chris Campbell's blog.

Feature: 更多更好的Windows硬件图形加速支持
Bug IDs: 5104393
Delivered: b33. Disabled by default for now, enabled via command-line flag -Dsun.java2d.d3d=true
Description: We are rewriting our native code on Windows that uses Direct3D to take much better advantage of the graphics acceleration capabilities on that platform. As of J2SE 5.0, we only use Direct3D for drawing diagonal lines and rectangles (we DirectDraw for filling rectangles, horizontal/vertical lines, and image/buffer copies). We also use Direct3D for translucent image copies, but only when specified on the command-line (sun.java2d.translaccel=true). The idea here is to restructure our DirectX code on Windows to more closely resemble that of our OpenGL rendering pipeline, which has acceleration for the very simple operations above, but also more interesting and powerful features such as transforms, text (anti-aliased and otherwise), complex clips, and translucent operations.

Feature: 改善文字显示品质和能力
Bug IDs: 4502804, 5057760, 4871297, 4726365
Delivered: Not yet
Description: This is an umbrella feature which addresses the key bugs and RFEs needed to make Java text -- and Swing text in particular -- offer the same capabilities as native text on all supported platforms. The main items to be delivered include:

  • Enable additional text anti-aliasing modes
    • 4726365: LCD text: use the characteristics of LCD displays (which have addressable red, green, and blue sub-pixels for each whole device pixel) which can increase the perceived display resolution. This feature is commonly seen by users with LCD panels on Windows and Linux desktops.
    • 4726365: Font-specific anti-aliasing settings: use information in the font to indicate whether text should be anti-aliased at a particular size. This is what is typically seen by CRT (non LCD display) users on Windows.
      These capabilities will be available to applications as additional values of the same Java2D Rendering Hint currently used to anti-alias text.
  • Fix rasterization bugs (e.g., 4924220): There are specific instances where our rasterization of particular glyphs is poor, or is significantly different from the way that the native text rasterizer renders those same glyphs, resulting in Swing looking different than native applications. We need to work through these cases and fix the bugs.
  • Respect desktop text anti-aliasing settings (bugs 4502804, 4871297): The Windows Look and Feel for Swing currently runs non-antialiased by default, no matter what the user has selected for their desktop text settings, because there was no way for Swing to request the same behaviors as the native platform. The GTK Look and Feel for Swing already uses text anti-aliasing if it is a desktop setting, but can not request LCD text anti-aliasing mode. This feature addresses this issue for the native look and feels, which will automatically detect and use the desktop settings.

Feature: Curved primitive rasterization
Bug IDs: 4151279
Delivered: In-development
Description: For some time people have complained about the look of our ovals, round rectangles, and arcs. We need to fix these problems and make these simple shapes look more reasonable.

Internationalization

The main theme of Internationalization for Mustang is pluggability of some locale-dependent components in J2SE. This new functionality in Mustang will ease the way to deal with more locale-specific features.

Feature: Pluggable Locales
Bug IDs: 4052440
Delivered: In-development
Description: This feature will enable plug-in of locale dependent data (e.g., date format strings) and services (e.g., date formatters). This project plans to add some SPIs (Service Provider Interfaces) for locale sensitive classes in the java.text and java.util packages. These SPIs will make it much easier for developers to provide support of more locales in addition to the currently available locales in J2SE. For example, your own implementation of BreakIterator for Chinese could become available through the BreakIterator.getSentenceInstance factory in the Java runtime.

Feature: ResourceBundle enhancements
Bug IDs: 5102289
Delivered: In-development
Description: There have been a number of requests to enhance the current ResourceBundle functionality, especially to improve the flexibility of the ResourceBundle.getBundle factory. This project plans to open up the steps of the resource bundle loading process and its cache control so that each step may be substituted with an application-provided one. For example, you can specify getBundle to look up only properties-based resource bundles so that the overhead of never-existing-class-based-bundle lookups is avoided.

Feature: Normalizer API
Bug IDs: 4221795
Delivered: In-development
Description: This new API will support the Unicode text normalization defined in Unicode Standard Annex #15.

Feature: Japanese calendar support
Bug IDs: 4609228
Delivered: b34
Description: This project will add a new Calendar implementation supporting the Japanese Imperial era-based year numbering, such as Heisei 17 for 2005 (Gregorian). An instance of this Calendar implementation could be created through the Calendar.getInstance factory by specifying a Locale("ja", "JP", "JP"). The SimpleDateFormat class will support calendar specific eras and date formats.

AWT

For Mustang, AWT plans to implement long-awaited features (small and big) related to Desktop Integration.

Feature: 新的模态模式
Bug IDs: 4080029, 4167266, 4813288, 4866704
Delivered: In-development
Description: Problems with modality have been plaguing developers for years. Bug 4080029, which was filed in 1997 and had 463 votes at last count, is in the Top 25 bug list and is an unfortunate proof of the existence of such problems. In Mustang, we will try solve most of the modality problems by introducing several new modality modes (such as application modality, toolkit modality, and document modality) as well as exclusion from modality, which is useful for the applications like JavaHelp (see 4813288 for example). The implementation and API-design work is done; we are now polishing things up and preparing for the final putback.

Feature: 允许轻-重量级组件混合使用
Bug IDs: 4811096
Delivered: In-development
Description: Inability to mix heavyweight (such as java.awt.Canvas) and lightweight (such as javax.swing.JTextArea) components is a well-known limitation of our implementation (see this article for more information on the problem). You can not mix AWT and Swing components easily, and other third-party heavy-weight components (such as ActiveX components) can not be used with Swing. There is a solution that allows to solve this problem in the majority of cases and we are working on that solution in Mustang. We do not plan to introduce any new API; the feature should just work when an application adds heavyweight component into the Swing-based hierarchy.

Feature: Java启动时的弹出式闪屏
Bug IDs: 4247839
Delivered: In-development
Description: Many performance problems are actually issues of "perceived performance," where the sheer time an operation takes is not as important as the fact that the GUI needs to be responsive in the meantime. This perceived performance problem can apply to application startup time; if an application takes several seconds to start and nothing happens on the user's desktop in the meantime, the user sees this as a performance problem with the application. If that application was able to do something simple in the meantime to show that it was actually working, the perception is much improved. This is the impetus for splash screens; show the user something related to the application even if the application is not yet in a usable state.

Think of this feature like an on-hold phone messaging system; you listen to boring smooth jazz while you're on hold. Every minute or so, a voice comes on and tells you that someone will probably answer your call eventually, unless you hang up and try again, in which case you are doomed to repeat this tedious process. The splash screen is kind of like that voice ("this application will be with you Very Soon"), only not nearly as annoying.

This feature would allow one to show a splash screen during the Java startup. The splash screen functionality would support various image formats (GIF, PNG, JPEG), and will including animation and transparency capabilities supported by the image formats. There is also some simple Java API that allows you to plug into the splash screen and display such items as application loading progress or runtime messages.

Feature: API to add a Java application to a system's app-launching panel/toolbar
Bug IDs: 4310333
Delivered: In-development
Description: This feature started as part of the JDIC project and we are moving it into J2SE in Mustang. The main functionality remains the same; it allows you to create a "tray icon", add it to the "system tray area" and listen for various events on it. The original API from JDIC has been rewritten, but the implementation remained almost intact. This project shows that there is a simple way to contribute to J2SE; participate in or start a highly-demanded feature-project (preferably on java.net) and one day it may become integrated into J2SE!

Feature: Input in non-English locales
Bug IDs: 4360364, 4490692, 5033605, 5064016, 4725203, 5057184, 4957565, 4960727, 5014911, 4799499
Delivered: In-development
Description: This is basically a big bug-fix. We are well aware that the input in non-English locales on Linux/Solaris is sometimes just impossible, and we are working on resolving the various issues. We have refactored our code and fixed important internal design flaws that were causing those problems. Once we have integrated these fixes, we invite you to test the changes in your favorite locale and file a bug if it still does not work for you; if we find out about the problems early enough, we may be able to fix them in Mustang as well.

Deployment

The deployment group is working on everything from user experience, to improved desktop integration, to more/better browser support, to enhanced security.

Feature: Deployment Helper Browser Controls on Windows
Bug IDs: 6198919
Delivered: b32, b34, but still more to come
Description: This is a set of browser controls targeted for enterprises to customize deployment experience:

  • Detect JRE versions installed on the system.
  • Install JRE from specified location.
  • Launch JNLP application from specified location.

The browser controls will be supported for Microsoft Internet Explorer and Mozilla Firefox browsers on Windows.

Feature: Improve desktop integration in Java Web Start
Bug IDs: 4625362, 5042073, 6185527, 6192439, 5105298, 4999352, 5080623, 5080666, 5081170, 5101866
Delivered: b10, b24, b29, b32, b34, but still more to come
Description: This is a set of enhancements to support desktop integration in Java Web Start on various platforms, including:

  • Support .ico files for desktop shortcut
  • Support .png files for desktop shortcut
  • Better shortcut and submenu items creation on GNOME
  • Better "Add/Remove Programs" integration on Windows

Feature: Improve security in Java Plug-in and Java Web Start
Bug IDs: 6201815, 6182603, 6222485, 6201800, 6201819
Delivered: b27, but still more to come
Description: This is a set of enhancements to improve the security support in Java Plug-in and Java Web Start, including timestamped signature verification, certificate revocation list support, online certificate status protocol (OCSP), etc.

Feature: Improve user experience in Java Plug-in and Java Web Start
Bug IDs: 6205064, 6205073, 5066227, 5076050
Delivered: b32, b34, but still more to come
Description: To simplify the entire user experience in Java Plug-in and Java Web Start:

  • Simplify download experience for Java applets and JNLP applications.
  • Improve usability in many UI dialogs, especially the security warning for signed applets and signed applications.

Feature: Unified download engine for Java Plug-in and Java Web Start
Bug IDs: 4802551, 6213959, 6213963, 4978699, 6213967, 6213976, 4414439, 6213985, 4897990, 4690736
Delivered: b28, b32, b34, but still more to come
Description: This is a rearchitecture of the download engine that will be used by both Java Plug-in and Java Web Start. It will provide a consistent download and caching model, and it will also support many download and caching enhancements:

  • JAR indexing (new in Java Web Start)
  • Cache size control and cache cleanup policy (new in Java Web Start)
  • JNLP versioning protocol and JARDiff support (new in Java Plug-in)
  • HTTP compression and HTTP cache control support
  • Multi-filetype caching support
  • Offline support
  • Flexible update policy (for Java Web Start only)
  • Improved cache import tool (mainly for CD install)
  • Improved cache management tool
  • ... and more

Feature: Mozilla Firefox browser support
Bug IDs: 6177901
Delivered: b32
Description: Support Mozilla Firefox in Java Plug-in and Java Web Start.

Feature: Improve user experience in JRE/JDK installer
Bug IDs: 5079209, 6201795, 6205783
Delivered: b27
Description: This feature is to simplify the JRE/JDK installer user experience.

Feature: Default Java on Linux
Bug IDs: 6211006
Delivered: In-development
Description: Both Windows and Solaris have the concept of a default 'java'. Just type 'java' and something wonderful happens. This feature is to bring the concept of default 'java' to Linux, so developers and users can access the latest greatest versions of 'java' on the system without hardwiring the path.

原创粉丝点击