The Source for Java Technology Collaboration
User: Password:



Kirill Grouchnikov's Blog

Kirill Grouchnikov Kirill Grouchnikov has been writing software since he was in junior high school, and after finishing his BSc in computer science, he happily continues doing it for a living. He is currently working as a senior software developer in a large corporate environment and would like to share his views on the Java community, trends and code writing experience.



Performance improvements in Substance 5

Posted by kirillcool on May 28, 2008 at 02:41 PM | Permalink | Comments (2)

The biggest pain point of Substance users, as expressed in the comments on the announcement of release 4.3, is the performance. While this might have been less noticeable for smaller UIs, the users of Substance NetBeans module were especially vocal about the performance issue. You made your statement very clear, and performance improvements were placed as the top priority for the next release (code named Substance 5).

Following the extensive correspondence with Java2D team (thanks, Dmitri), i have created a new java.net project named LightBeam. LightBeam has a collection of static and dynamic scenarios that are targetting different core Swing components and different interaction scenarios. The static scenarios create a number of components and then render the main frame onto an offscreen buffer. The dynamic scenarios run a number of typical interaction scenarios that involve changing the components or models.

Here is the spreadsheet with the performance improvements on static scenarios. The numbers are milliseconds it takes to render a frame with a number of matching components (buttons, sliders etc) to an offscreen buffer (the smaller, the better).

An average improvement from version 4.3 is by factor of 3.5. As you can see, slider rendering was especially slow in version 4.3. Another important number to notice is the heap memory consumption - it has not grown at all as compared with version 4.3.

And here is the spreadsheet with the performance improvements on static scenarios. The numbers are milliseconds it takes to run a specific scenario and repaint the contents (the smaller, the better).

An average performance improvement from version 4.3 is by factor of 2.5. As before, sliders were especially slow in version 4.3. Note that there is one scenario where the additional visuals provided by Substance prove to be still too costly - in dynamically selecting table rows. This would, obviously, have to be addressed before the final release.

Project LightBeam is targeted at look-and-feel developers that wish to test the performance of their libraries. The SVN repository contains a number of sample scripts that were used in creating the above spreadsheets. It will be extensively used throughout the development of Substance to make sure that there are no performance regressions from this moment forward.

The latest development drop of Substance 5 should be very stable. You’re more than welcome to try it out and report any exceptions, errors or visual inconsistencies on the project forums, mailing lists or in a direct mail. Also, if you’re using NetBeans 6.1, please consider trying out the latest drop of Substance module. It should be noticeably faster, but if you’re experiencing any slowdowns, just right-click on the title bar and select "Show cache stats". In the new dialog, click "Copy to clipboard" and attach the results to a forum / mailing list posting.

The numbers above are for software unaccelerated rendering. No work has been done yet to analyze and improve the performance on d3d-accelerated pipeline.

Cross-posted at "Pushing Pixels".



Party Of One: Surviving A Hobby Open Source Project

Posted by kirillcool on May 19, 2008 at 09:36 AM | Permalink | Comments (3)

Last week’s JavaOne had a separate track on open source, and there’s been a substantial number of very interesting panels, discussions and presentations. However, i felt that these talks concentrated mostly on big, well-established and very broad open-source communities. While it is perfectly understandable, the few dozens of these high-profile communities do not reflect the specific problems of a much vaster landscape of the open-source in general. Here I’m talking about literally hundreds of thousands of projects that only have a single active developer. I call it the "party of one" type of project, and these pose a number of quite significant challenges to their "owners", especially if it is done as a part time hobby. I had a number of such projects (where i am the only developer) over the last decade, and some of them are still quite active. I have written a blog series that talks about the specifics of one-man projects and how to maintain a long-term level of commitment. If the terms such as steering committee, constitution, incubation and governance models do not apply to your project, take a look.

Substance 4.3 official release

Posted by kirillcool on April 14, 2008 at 11:01 AM | Permalink | Comments (3)

It gives me great pleasure to announce the official release for version 4.3 of Substance look-and-feel (code-named Nairobi). The list of new features includes:

It was on this day in 2005 that Substance project has been created. It is now three years old and to celebrate this occasion i have redesigned the main project page to be less cluttered and a little better organized. Hope that you like it, and if you have any comments, i will be more than interested to hear your opinion.

A few screenshots of the new functionality in Substance 4.3:

New decoration painters applied to the Flamingo ribbon component:

Highlight painters on table (note a single-line border separators):

Colorized visuals of disabled selected buttons:

A button with 72 pixel font:

Click on the button below to launch a signed WebStart application that shows the available Substance features.

 The sources and binaries are available on the project site and the CVS repository.

June 2008
Sun Mon Tue Wed Thu Fri Sat
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          


Search this blog:
  

Categories
Accessibility
Community
Community: Java Enterprise
Community: Java Tools
Community: Java Web Services and XML
Community: JavaDesktop
Community: JDK
Community: NetBeans
Databases
Deployment
J2SE
JavaOne
Linux
Open Source
Performance
Porting
Programming
Swing
Web Services and XML
Archives

May 2008
April 2008
February 2008
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005

Recent Entries

Performance improvements in Substance 5

Party Of One: Surviving A Hobby Open Source Project

Substance 4.3 official release

Articles

Translucent and Shaped Swing Windows
The new "Consumer JDK," Java SE 6 Update N, offers desktop developers the ability to set per-pixel translucency on windows, which opens up a wide variety of possibilities for translucent and shaped windows previously only available to native applications. Kirill Grouchnikov shows how far these features can take you. Mar. 18, 2008

Debugging Swing
Proper Swing programming depends on widely known but unenforced rules about the proper handling of the event-dispatch thread, and failure to follow those rules leads to many Swing problems. In this article, Kirill Grouchnikov shows off techniques to find and fix bugs relating to Swing EDT misuse. Aug. 30, 2007

Adding Auto-Completion Support to Swing Comboboxes
Auto-completion, as seen in browser address bars (among other GUIs), can be a very useful and much appreciated trait for input fields in your GUI. However, all of the second-generation Java GUI toolkits provide the feature differently. Kirill Grouchnikov shows how to add auto-completion to comboboxes in GlazedLists, SwingX, JIDE, and Laf-Widget. Jul. 19, 2007

All articles by Kirill Grouchnikov »



Powered by
Movable Type 3.01D


 Feed java.net RSS Feeds