<?xml version="1.0" encoding="utf-8"?>
<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="en">
<title>Kirill Grouchnikov&apos;s Blog</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/kirillcool/" />
<modified>2008-04-14T19:02:03Z</modified>
<tagline></tagline>
<id>tag:weblogs.java.net,2008:/blog/kirillcool/210</id>
<generator url="http://www.movabletype.org/" version="3.01D">Movable Type</generator>
<copyright>Copyright (c) 2008, kirillcool</copyright>
<entry>
<title>Substance 4.3 official release</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/kirillcool/archive/2008/04/substance_43_of.html" />
<modified>2008-04-14T19:02:03Z</modified>
<issued>2008-04-14T19:01:53Z</issued>
<id>tag:weblogs.java.net,2008:/blog/kirillcool/210.9532</id>
<created>2008-04-14T19:01:53Z</created>
<summary type="text/plain">Announcement of the 4.3 release for Substance look-and-feel project. The list of new features and a few screenshots inside.</summary>
<author>
<name>kirillcool</name>

<email>kirillcool@yahoo.com</email>
</author>
<dc:subject>Community: JavaDesktop</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/kirillcool/">
<![CDATA[It gives me great pleasure to announce the official release for version 4.3 of <a href="https://substance.dev.java.net/">Substance look-and-feel</a> (code-named <strong>Nairobi</strong>). The list of <a href="https://substance.dev.java.net/release-info/4.3/release-info.html">new features</a> includes:</p>
<ul>
<li><a href="https://substance.dev.java.net/docs/painters/decoration.html">Decoration painters</a></li>
<li>Much better layout of menus and menu items</li>

<li><a href="https://substance.dev.java.net/docs/painters/highlight.html">Highlight painters</a></li>
<li><a href="http://www.pushing-pixels.org/?p=280">Auto-scroll</a> on scroll panes</li>
<li>Visuals for disabled selected buttons</li>
<li>Usability of tab close buttons</li>
<li>First support for <a href="http://www.pushing-pixels.org/?p=285">very large fonts</a></li>
</ul>
<p>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 <a href="https://substance.dev.java.net/">main project page</a> 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.</p>

<p>A few screenshots of the new functionality in Substance 4.3:</p>
<p>New decoration painters applied to the Flamingo ribbon component:</p>
<p><img src="https://substance.dev.java.net/release-info/4.3/decoration-ribbon-new-business-blue-steel.png" height="285" width="500"></p>
<p>Highlight painters on table (note a single-line border separators):</p>
<p><img src="https://substance.dev.java.net/release-info/4.3/table-highlight-rows.png" height="267" width="566"></p>
<p>Colorized visuals of disabled selected buttons:</p>
<p><img src="https://substance.dev.java.net/release-info/4.3/disabled-selected-buttons.png" height="117" width="509"></p>
<p>A button with 72 pixel font:</p>
<p><img src="https://substance.dev.java.net/release-info/4.3/dpi-72-button-substance4.3.png" height="140" width="381"></p>
<p>Click on the button below to launch a signed WebStart application that shows the available Substance features.</p>
<p></p><center><a href="https://substance.dev.java.net/webstart/test.jnlp"><img src="https://substance.dev.java.net/images/webstart.png" border="0" height="23" width="88"></a></center>&nbsp;The sources and binaries are available on <a href="https://substance.dev.java.net/servlets/ProjectDocumentList?folderID=8729">the project site</a> and the CVS repository.]]>

</content>
</entry>
<entry>
<title>Translucent and shaped windows in core Java</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/kirillcool/archive/2008/02/translucent_and.html" />
<modified>2008-02-27T17:38:26Z</modified>
<issued>2008-02-27T17:38:19Z</issued>
<id>tag:weblogs.java.net,2008:/blog/kirillcool/210.9277</id>
<created>2008-02-27T17:38:19Z</created>
<summary type="text/plain">Build 12 of JDK 6.0u10 has support for translucent and shaped windows!</summary>
<author>
<name>kirillcool</name>

<email>kirillcool@yahoo.com</email>
</author>
<dc:subject>Community: JavaDesktop</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/kirillcool/">
<![CDATA[<p>The lack of support for translucent and shaped windows has been a subject of quite a few complaints about AWT and Swing. This has finally been addressed in the latest 6u10 build.</p>

<p>Here is how a translucent window looks like:</p>
<img alt="window-translucent.png" src="http://weblogs.java.net/blog/kirillcool/archive/window-translucent.png" width="440" height="330" />

<p>And here is a shaped window:</p>
<img alt="window-shaped.png" src="http://weblogs.java.net/blog/kirillcool/archive/window-shaped.png" width="440" height="330" />

<p>And here is a translucent <b>and</b> shaped window:</p>
<img alt="window-translucent-shaped.png" src="http://weblogs.java.net/blog/kirillcool/archive/window-translucent-shaped.png" width="440" height="330" />
 
<p>For more (unofficial) information on where these APIs are located and how to use them, click through to <a href="http://www.pushing-pixels.org/?p=260">Pushing Pixels</a>.</p>

]]>

</content>
</entry>
<entry>
<title>Flamingo 3.0 official release</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/kirillcool/archive/2008/02/flamingo_30_off.html" />
<modified>2008-02-19T17:44:00Z</modified>
<issued>2008-02-19T17:43:41Z</issued>
<id>tag:weblogs.java.net,2008:/blog/kirillcool/210.9230</id>
<created>2008-02-19T17:43:41Z</created>
<summary type="text/plain">The official release for version 3.0 of Flamingo component suite, including command buttons, breadcrumb bar, ribbon and file viewer panel.</summary>
<author>
<name>kirillcool</name>

<email>kirillcool@yahoo.com</email>
</author>
<dc:subject>Community: JavaDesktop</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/kirillcool/">
<![CDATA[<p>It gives me great pleasure to announce the official release for version 3.0 of <a href="https://flamingo.dev.java.net/">Flamingo component suite</a> (code-named <strong>Deirdre</strong>). The goal of this project is to provide a small and cohesive set of powerful UI components that allow creating modern applications that provide visual functionality similar to or superseding that of Vista Explorer and Office 2007. The components provide consistent visuals under the existing core and third-party look-and-feels, respect the DPI settings of the user desktop and follow the core Swing guidelines in the external APIs and the internal implementation details.The component suite includes:</p>
<ul>
<li>Layer for defining and using <a href="https://flamingo.dev.java.net/docs/icons.html">resizable icons</a></li>
<li><a href="http://www.pushing-pixels.org//?p=199">Command button</a> component</li>

<li><a href="http://www.pushing-pixels.org//?p=209">Command button panel</a> component</li>
<li><a href="https://flamingo.dev.java.net/docs/fileviewerpanel.html">File viewer panel</a> component</li>
<li><a href="http://www.pushing-pixels.org//?p=246">Breadcrumb bar</a> component</li>
<li><a href="http://www.pushing-pixels.org//?p=247">Ribbon</a> component</li>
</ul>

<p>The project is licensed under BSD license and requires JDK 6.0. You can see the <a href="https://flamingo.dev.java.net/see.html">demo applications here</a>. The binary and source bits are <a href="https://flamingo.dev.java.net/servlets/ProjectDocumentList?folderID=6931">available here</a>. A few screenshots of some of the Flamingo components:</p>
<p>File-selector breadcrumb bar and file viewer panel with medium command buttons:</p>
<p style="text-align: center;"><img src="https://flamingo.dev.java.net/images/common/commandbuttonpanel/explorer-medium.png" height="400" width="500"></p>
<p>Ribbon under Windows XP look-and-feel with resizable SVG-based icons:</p>
<p style="text-align: center;"><img src="https://flamingo.dev.java.net/images/ribbon/lafs/windowsxp.png" height="130" width="500"></p>
<p>Ribbon under Synthetica Mauve Metallic look-and-feel:</p>
<p style="text-align: center;"><img src="https://flamingo.dev.java.net/images/ribbon/lafs/syntheticamauvemetallic.png" height="130" width="500"></p>
<p>SVN-selector breadcrumb bar and file viewer with tile command buttons and SVG based icons:</p>

<p style="text-align: center;"><img src="https://flamingo.dev.java.net/images/common/commandbuttonpanel/explorer-tile-svn.png" height="400" width="500"></p>
<p>Command button with a command button panel embedded in a popup panel:</p>
<p style="text-align: center;"><img src="https://flamingo.dev.java.net/images/common/commandbutton/popup-complex.png" height="234" width="371">

<p><a href="http://www.pushing-pixels.org/?p=255">Cross-posted</a> at "Pushing Pixels".</p>]]>

</content>
</entry>
<entry>
<title>Flamingo component suite 3.0 - ribbon</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/kirillcool/archive/2008/02/flamingo_compon.html" />
<modified>2008-02-08T17:51:00Z</modified>
<issued>2008-02-08T17:50:49Z</issued>
<id>tag:weblogs.java.net,2008:/blog/kirillcool/210.9163</id>
<created>2008-02-08T17:50:49Z</created>
<summary type="text/plain">The latest visuals of the Swing ribbon component from Flamingo component suite.</summary>
<author>
<name>kirillcool</name>

<email>kirillcool@yahoo.com</email>
</author>
<dc:subject>Community: JavaDesktop</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/kirillcool/">
<![CDATA[<p>The ribbon component is one of the major parts of the <a href="https://flamingo.dev.java.net/">Flamingo component suite</a>. It is a Swing component that provides capabilities of  Office 2007 Command Bar, and the <a href="https://flamingo.dev.java.net/docs/ribbon.html">detailed documentation</a> has been updated to show the latest visuals, APIs and terminology of the ribbon component. Here, i will show a few screenshots that illustrate the ribbon functionality.</p>
<p>The following screenshot shows a sample ribbon component (under Metal look-and-feel with the default Ocean theme):</p>
<p><img src="https://flamingo.dev.java.net/images/ribbon/ribbon-overview.png" height="145" width="527"></p>
<p>Ribbon consists of a set of ribbon tasks. Only one task is visible at a time (a-la card layout). Logically, a task also includes its toggle button (the top portion of the ribbon control):</p>
<p><img src="https://flamingo.dev.java.net/images/ribbon/ribbon-overview-task.png" height="145" width="527"></p>
<p>When another task is selected (programmatically or via user interaction), the contents of the selected task replace the previously selected task:</p>

<p><img src="https://flamingo.dev.java.net/images/ribbon/ribbon-overview-task2.png" height="145" width="527"></p>
<p>A ribbon task consists of a number of ribbon task bands:</p>
<p><img src="https://flamingo.dev.java.net/images/ribbon/ribbon-overview-task-band.png" height="145" width="527"></p>
<p>A ribbon task band can contain <a href="https://flamingo.dev.java.net/docs/commandbutton.html">command buttons</a> in different states, usual core Swing controls (buttons, check boxes, combo boxes) and in-ribbon galleries. The available width is distributed between the task bands based on the priority of the elements in the task. As can be seen in these screenshots, some command buttons are in <code><font color="darkblue">ElementState.BIG</font></code> (big icon and text), some are in <code><font color="darkblue">ElementState.MEDIUM</font></code> (small icon and text), and the others are in <code><font color="darkblue">ElementState.SMALL</font></code> (only small icon).</p>

<p>An in-ribbon gallery allows scrolling and operating a large number of command buttons in a limited space.</p>
<p><img src="https://flamingo.dev.java.net/images/ribbon/ribbon-overview-in-ribbon-gallery.png" height="145" width="527"></p>
<p>Clicking on the gallery expand button opens a popup panel that shows the gallery command buttons arranged in a <a href="https://flamingo.dev.java.net/docs/commandbuttonpanel.html">multi-row scrollable grid</a>:</p>
<p><img src="https://flamingo.dev.java.net/images/ribbon/ribbon-overview-expanded-gallery.png" height="233" width="527"></p>

<p>The ribbon component uses the visuals of the current look-and-feel. Here is how ribbon looks under the Windows XP with Windows look-and-feel:</p>
<p><img src="https://flamingo.dev.java.net/images/ribbon/lafs/windowsxp.png" height="130" width="500"></p>
<p>And under Windows Vista:</p>
<p><img src="https://flamingo.dev.java.net/images/ribbon/lafs/windowsvista.png" height="130" width="500"></p>
<p>And under Ubuntu 7.10 with GTK look-and-feel:</p>

<p><img src="https://flamingo.dev.java.net/images/ribbon/lafs/gtkubuntu.png" height="130" width="500"></p>
<p>And under Looks Plastic XP:</p>
<p><img src="https://flamingo.dev.java.net/images/ribbon/lafs/looksplasticxp.png" height="130" width="500"></p>
<p>And under Synthetica Mauve Metallic:</p>
<p><img src="https://flamingo.dev.java.net/images/ribbon/lafs/syntheticamauvemetallic.png" height="130" width="500"></p>
<p>And finally under Pagosoft:</p>
<p><img src="https://flamingo.dev.java.net/images/ribbon/lafs/pagosoft.png" height="130" width="500"></p>
<p>The release candidate of Flamingo 3.0 is scheduled for February 11, with the official release scheduled for February 18. The latest binaries and source can be <a href="https://flamingo.dev.java.net/servlets/ProjectDocumentList?folderID=6931">downloaded here</a>.</p>

<p><a href="http://www.pushing-pixels.org/?p=247">Cross-posted</a> at <i>Pushing Pixels</i></p>]]>

</content>
</entry>
<entry>
<title>Evolving the language</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/kirillcool/archive/2008/02/evolving_the_la.html" />
<modified>2008-02-06T18:38:46Z</modified>
<issued>2008-02-06T18:34:17Z</issued>
<id>tag:weblogs.java.net,2008:/blog/kirillcool/210.9150</id>
<created>2008-02-06T18:34:17Z</created>
<summary type="text/plain">Trying to bring together a disordered array of thoughts on the subject of evolving Java as a language.</summary>
<author>
<name>kirillcool</name>

<email>kirillcool@yahoo.com</email>
</author>
<dc:subject>Programming</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/kirillcool/">
<![CDATA[<p>I guess i wasn't very focused in <a href="http://weblogs.java.net/blog/kirillcool/archive/2008/02/and_so_it_begin.html">yesterday's entry</a>, paying too much attention to the details of the specific puzzle and not emphasizing my main point (or as <a href="http://weblogs.java.net/blog/editors/archives/2008/02/monkey_wrench.html">Chris defined it</a> the "money quote"). I'll try to rectify it here, bringing together my thoughts on the subject of evolving Java as a language.</p>

<p>First, let's start with the code from <a href="http://gafter.blogspot.com/2008/02/closures-puzzler-neapolitan-ice-cream.html">Neal's entry</a>. Here is the relevant part:</p>

<pre><code>
    static &lt;T,U&gt; List&lt;U&gt; map(List&lt;T&gt; list, 
		{T=&gt;U} transform) {
        List&lt;U&gt; result = new ArrayList&lt;U&gt;(list.size());
        for (T t : list) {
            result.add(transform.invoke(t));
        }
        return result;
    }

    public static void main(String[] args) {
        List&lt;Color&gt; colors = map(Arrays.asList(
		Flavor.values()), { Flavor f =&gt; f.color });
        System.out.println(colors.equals(Arrays.asList(Color.values())));
    }
</code></pre>

<p>Putting aside the puzzle punchline, here is how i would do the same without closures:</p>

<pre><code>
public class Puzzler&lt;T, U&gt; {

   interface Transformer&lt;T, U&gt; {
      U transform(T t);
   }

   List&lt;U&gt; transform(List&lt;T&gt; list, 
          Transformer&lt;T, U&gt; transformer) {
      List&lt;U&gt; result = new ArrayList&lt;U&gt;(list.size());
      for (T t : list) {
         result.add(transformer.transform(t));
      }
      return result;
   }

   public static void main(String[] args) {
      List&lt;Colour&gt; colors = new Puzzler&lt;Flavor, Colour&gt;().transform(Arrays
            .asList(Flavor.values()), new Transformer&lt;Flavor, Colour&gt;() {
         public Colour transform(Flavor f) {
            return f.color;
         }
      });
      System.out.println(colors.equals(Arrays.asList(Colour.values())));
   }
}
</code></pre>

<p>And now comes the million dollar question - which one is better? It's a simple question that has two straightforward answers. However, the real answer is "it depends". And based on the subjective background of each one of us, we would go for either the first version or the second version. What does it depend on? Well, quite a few things.</p>

<p>There was an illuminating exchange of opinions in Scala blogosphere about a month ago, ignited by <a href="http://creativekarma.com/ee.php/weblog/comments/my_verdict_on_the_scala_language/">Doug Pardee's post</a>, which lead <a href="http://weblog.raganwald.com/2008/01/programming-language-cannot-be-better.html">Reg Braithwaite</a> to quote <a href="http://www.asktog.com/papers/raskinintuit.html">Jef Raskin's views</a> on the definition of <i>intuitive</i>:</p>

<blockquote>It is clear that a user interface feature is "intuitive" insofar as it resembles or is identical to something the user has already learned. In short, "intuitive" in this context is an almost exact synonym of "familiar."</blockquote>

<p>Let's get back to our two code samples, and to the question which one is better. In my highly subjective opinion, the second one is better, because:</p>

<ul>
<li>it is more readable</li>
<li>it is more maintainable</li>
<li>it is more verbose</li>
</ul>

<p>Allow me to address each one of these three points. The second sample is more readable because this is how i'm accustomed to program this sort of requirement. This is what the current language structures allow me to do, and i don't find it too much of a hassle. The code is more maintainable because of the limited variety of currently available options. It ascertains that i and other people who will have to maintain this code must have seen this approach a few times in the existing code base. Getting back to the Jef Raskin quote, it feels more intuitive since it is familiar. Not necessarily optimal, but familiar nonetheless.</p>

<p>The last point on verbosity might be a little controversial, but i'll stand by my words. I've programmed in Ada for almost five years (professionally) and i've never seen it as an over-verbose language. Sure, it might take me an extra 20 seconds to read through the definition of that interface and its invocation, but the extra verbosity makes sure that the code guides me (as its maintainer) along its intended path.</p>

<p>Why would one choose the first example? There are many reasons, all of them undoubtedly valid in the subjective eye of the relevant parties. Some would enjoy the perceived expressiveness (cramming more logic in less characters), some would prefer the abstraction of a method body as first-class language citizen, some would want to know that their language is on par with the hot kid-du-jour that gets all the blogosphere love, some would view it as a refreshing exercise to expand their mind, and some would see the commercial potential that lies in books, consulting and conferences (absolutely no offense meant).</p>

<p>One nagging question remains unanswered - who is the intended target of the new language features? Are the creative minds behind different closures proposals at work just because they are creative, or is there an overwhelming evidence that Java programs (and programmers to a lesser extent) suffer without this language feature.  Couple that with the absolute refusal to remove existing language features (like, say, poorly-implemented generics), and you get the following from <a href="http://www.artima.com/weblogs/viewpost.jsp?thread=221903">Bruce Eckel</a>:</p>

<blockquote>But we need to become especially conservative when considering major, fundamental language features like closures which, while they can be very appealing in theory, may have a cost that is too great in practice when they are forced into a language that values backward compatibility over the clarity of its abstractions.</blockquote>

<p>There are real-life scenarios addressed by closures. Anonymous listeners, unnecessary complex try-catch-finally blocks on closing streams and connections, blocks guarded by semaphores, you name it. But if the language is not going to remove (refuse to compile) the existing ways of addressing these scenarios, adding yet another way to do what millions (yes, millions that do not read or write blogs) Java programmers already know how to do is very harmful. Harmful to the code readability (at least in the first few years with the very slow adoption rate for the server-side JDK upgrades) and harmful to the code maintainability.</p>

<p>In my opinion, the language is only a tool. At the end of the day, we still have real people addressing real problems. The technical merits of new language proposals need to be weighed carefully against the potential negative disruption that they bring into the everyday cycle of software development. The puzzlers are only a tip of the iceberg. When i need to maintain and extend existing code, i already have a hard enough time to understand the business logic in it. If you're not going to remove the existing ways to address the limitations imposed by the language, don't add yet another way. It's not going to help me. Not in the everyday world.</p>]]>

</content>
</entry>
<entry>
<title>And so it begins - the first closures puzzler</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/kirillcool/archive/2008/02/and_so_it_begin.html" />
<modified>2008-02-05T18:21:01Z</modified>
<issued>2008-02-05T18:20:53Z</issued>
<id>tag:weblogs.java.net,2008:/blog/kirillcool/210.9140</id>
<created>2008-02-05T18:20:53Z</created>
<summary type="text/plain">That didn&apos;t take too long. Neal Gafter has posted the first closures puzzler.</summary>
<author>
<name>kirillcool</name>

<email>kirillcool@yahoo.com</email>
</author>
<dc:subject>Programming</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/kirillcool/">
<![CDATA[<p>Neal Gafter has posted the <a href="http://gafter.blogspot.com/2008/02/closures-puzzler-neapolitan-ice-cream.html">first closures puzzler</a>. I guess the second edition of <a href="http://www.javapuzzlers.com/">Java Puzzlers</a> is in works, and closures will be a hefty addition to the book. If anything, this makes me really sad.</p>

<p>I was very excited to lay my hands on the first edition, but after reading through a few chapters, i skimmed the table of contents, glanced at the visual illusions and never came back to it. If i had to sum this book in one sentence, it would be "great optical illusions and irrelevant content". I know, this is a harsh statement, and i have nothing but respect to both authors (in fact, i consider "Effective Java" to be <b>the</b> book that i would take with me to a deserted island on a condition that it has WiFi access).</p>

<p>I've been using Java for the last 8 years, most of it exclusively (amounting to about 10-12 hours a day, including the work and the side projects). I've written my share of new code, and i most certainly have seen my share of old code that i had to maintain, fix and extend. But never <b>once</b> have i encountered anything even remotely connected to any Java puzzler presented in the book and at the conferences.</p>

<p>Bit-level shifts, integer overflows, overloaded methods, reflection, generics - you name it. I've looked at the examples, i've tried to match them to the real code that i see during the day, and i have found nothing. Of course, i am looking at the tiniest sliver of Java code that exists in the enterprise sector, but somehow i get an impression that i'm not alone. I would even go as far as to say that <b>a feature implemented in a way that results in at least one puzzler is not a feature worth having in the language</b>.</p>

<p>Which brings me to the quote of the day. It comes from an announcement on the <a href="http://groups.google.com/group/RubyDOTNET/browse_thread/thread/1752830c857620b0#f34570019c391974">end-of-life for Ruby.NET</a>:</p>

<blockquote>As a researcher, my prime interest is not in developing products, but in developing innovative new ideas and having an impact by having those ideas used in the real world.</blockquote>

<p>The generics were added to the language in a very incomplete manner, mainly due to the restrictions on binary compatibility. If we let the researchers in us (even if they are the best researchers) to do the same with closures, i'll pass.</p>]]>

</content>
</entry>
<entry>
<title>Substance 4.2 official release</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/kirillcool/archive/2008/02/substance_42_of.html" />
<modified>2008-02-05T01:15:49Z</modified>
<issued>2008-02-05T01:15:02Z</issued>
<id>tag:weblogs.java.net,2008:/blog/kirillcool/210.9131</id>
<created>2008-02-05T01:15:02Z</created>
<summary type="text/plain">Announcement of the 4.2 release for Substance look-and-feel project. The list of new features and a few screenshots inside.</summary>
<author>
<name>kirillcool</name>

<email>kirillcool@yahoo.com</email>
</author>
<dc:subject>Community: JavaDesktop</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/kirillcool/">
<![CDATA[<p>It gives me great pleasure to announce the official release for version 4.2 of <a href="https://substance.dev.java.net/">Substance look-and-feel</a> (code-named <strong>Memphis</strong>). The list of <a href="https://substance.dev.java.net/release-info/4.2/release-info.html">new features</a> includes:</p>
<ul>
<li>Support for <a href="http://www.pushing-pixels.org/?p=219">native text rendering</a> in the <a href="https://substance-bramble.dev.java.net/">Bramble plugin</a>.</li>

<li>Support for <a href="http://www.pushing-pixels.org/?p=215">component colorization</a> with the new <a href="https://substance.dev.java.net/docs/clientprops/ColorizationFactor.html">SubstanceLookAndFeel.COLORIZATION_FACTOR</a> client property.</li>
<li><a href="http://www.pushing-pixels.org/?p=205">Font policy</a> for KDE desktops.</li>
<li>More streamlined visuals of arrow buttons for combo boxes and spinners.</li>
<li>New visuals for <a href="https://substance.dev.java.net/docs/skins/saturated.html#OfficeBlue2007Skin">Office Blue 2007</a>, <a href="https://substance.dev.java.net/docs/skins/dark.html#RavenGraphiteSkin">Raven Graphite</a> and <a href="https://substance.dev.java.net/docs/skins/dark.html#RavenGraphiteGlassSkin">Raven Graphite Glass</a> skins that provide better blending for disabled controls and more consistent painting of check marks.</li>

<li>Cleaner and more streamlined <a href="http://www.pushing-pixels.org/?p=235">appearance</a> of tables (including tables wrapped in scroll panes)</li>
<li>Auto-dispose of <a href="http://weblogs.java.net/blog/kirillcool/archive/2007/02/spicing_up_your_7.html">tab overview dialog</a>.</li>
</ul>
<p>In addition to the core release candidate, the following Substance plugins and modules have been updated as well:</p>
<ul>
<li> Substance <a href="https://substance-swingx.dev.java.net/servlets/ProjectDocumentList?folderID=8318">SwingX plugin</a> for the <a href="http://swinglabs.org/hudson/">build 795</a> of <a href="https://swingx.dev.java.net/">SwingX component suite</a>.</li>

<li>Substance <a href="https://substance-baseline.dev.java.net/servlets/ProjectDocumentList?folderID=8577">Baseline plugin</a> for <a href="https://swing-layout.dev.java.net/servlets/ProjectDocumentList?folderID=6838">release 1.0.2</a> of <a href="https://swing-layout.dev.java.net/">Swing-Layout project</a>.</li>
<li>Substance <a href="http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=815">NetBeans module</a> for <a href="http://download.netbeans.org/netbeans/6.0/final/">release 6.0</a> of <a href="http://www.netbeans.org/">NetBeans IDE</a>.</li>

<li>Substance <a href="https://substance-button-shaper-pack.dev.java.net/servlets/ProjectDocumentList?folderID=8581">button shaper pack</a>.</li>
<li>Substance <a href="https://substance-theme-pack.dev.java.net/servlets/ProjectDocumentList?folderID=8585">theme pack</a>.</li>
<li>Substance <a href="https://substance-watermark-pack.dev.java.net/servlets/ProjectDocumentList?folderID=8521">watermark pack</a>.</li>
</ul>
<p>A few screenshots of the new functionality in Substance 4.2:</p>
<p>Support for native text rasterization (viewed here with Segoe UI 12 pixel font under Windows Vista on JDK 5.0):</p>

<p style="text-align: center;"><img src="https://substance-bramble.dev.java.net/images/groupb1.png" height="245" width="315"></p>
<p>Component colorization with 50% factor (both background and foreground):</p>
<p style="text-align: center;"><img src="https://substance.dev.java.net/release-info/4.2/colorization-buttons-50.png" height="240" width="340"></p>
<p>Respecting the KDE desktop font settings:</p>
<p style="text-align: center;"><img src="https://substance.dev.java.net/release-info/4.2/font-policy-kde-96dpi.png" height="245" width="315"></p>
<p>Better visuals for disabled controls under <strong>Raven Graphite</strong> skin:</p>
<p style="text-align: center;"><img src="https://substance.dev.java.net/images/screenshots/themes/skins/ravengraphite1.png" height="225" width="300"></p>
<p>Removing visual noise on tables and table headers in scroll panes:</p>
<p style="text-align: center;"><img src="https://substance.dev.java.net/blog/visualnoise/substance-4.2-nebula.png" height="310" width="360">]]>

</content>
</entry>
<entry>
<title>File viewer panel control for Swing applications</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/kirillcool/archive/2007/12/file_viewer_pan.html" />
<modified>2007-12-25T02:09:13Z</modified>
<issued>2007-12-15T05:58:19Z</issued>
<id>tag:weblogs.java.net,2007:/blog/kirillcool/210.8837</id>
<created>2007-12-15T05:58:19Z</created>
<summary type="text/plain">This entry shows the capabilities of file viewer panel control from the upcoming version 3.0 of Flamingo component suite project.</summary>
<author>
<name>kirillcool</name>

<email>kirillcool@yahoo.com</email>
</author>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/kirillcool/">
<![CDATA[<p>Flamingo component suite comes with a flexible and powerful component that hosts <a href="http://www.pushing-pixels.org/?p=199">command buttons</a>,  providing support for button groups, single selection mode (for toggle  command buttons), same icon state / dimension and automatic column layout. The official documentation for the base <a href="https://flamingo.dev.java.net/docs/commandbuttonpanel.html">command button panel</a> and <a href="https://flamingo.dev.java.net/docs/fileviewerpanel.html">file viewer panel</a> have the detailed walkthroughs, and here i will give a short overview of some of the main features.</p>

<p>As <a href="http://www.pushing-pixels.org/?p=189">i wrote on my other blog</a>, one of Flamingo’s goals is to provide a small and cohesive set of powerful UI components that allow creating modern applications that provide visual functionality similar to or superseding that of Vista Explorer and Office 2007. The command button panel and its extension, file viewer panel, address the functionality commonly found in file explorer applications.</p>
<p>Here is a simple file explorer that uses the breadcrumb bar and file viewer panel with button state set to medium:</p>

<p style="text-align: center;"><img src="https://flamingo.dev.java.net/images/common/commandbuttonpanel/explorer-medium.png" height="400" width="500"></p>
<p>Here, the icon for image files come from the file itself (thumbnails), while the icons for other mimetypes are taken from the latest SVN snapshot of the <a href="http://www.pushing-pixels.org/?p=153">KDE Oxygen project</a>.</p>
<p>Here is the same exact application with big icons:</p>
<p align="center"><img src="https://flamingo.dev.java.net/images/common/commandbuttonpanel/explorer-big.png" height="400" width="500"></p>
<p>The icons are properly scaled and the <a href="http://www.pushing-pixels.org/?p=199">inner layout of the buttons changed</a> to reflect the new button state. What about custom large icons?</p>
<p style="text-align: center;"><img src="https://flamingo.dev.java.net/images/common/commandbuttonpanel/explorer-custom.png" height="400" width="500"></p>
<p>The same functionality, only controlled by <a href="http://today.java.net/pub/a/today/2007/02/22/how-to-write-custom-swing-component.html">the flexible slider</a> (on the left hand side of the application frame). Note that the bottom-right button has the icon based on the actual JPG contents (scaled down), while the other three buttons sport resolution-independent sharp visuals from Oxygen SVG images.</p>

<p>Here is the same application under the tiled state - with extra line of information on each file:</p>
<p style="text-align: center;"><img src="https://flamingo.dev.java.net/images/common/commandbuttonpanel/explorer-tile.png" height="400" width="500"></p>
<p>The last screenshot is from a sample SVN browser that uses the same icon computation approach, tiled state and extra line of information on each file (fetched from the SVN repository and set on the corresponding command button):</p>
<p style="text-align: center;"><img src="https://flamingo.dev.java.net/images/common/commandbuttonpanel/explorer-tile-svn.png" height="400" width="500"></p>
<p>You’re welcome to play with the <a href="https://flamingo.dev.java.net/servlets/ProjectDocumentList?folderID=6931">latest 3.0dev drop</a> of Flamingo and read the detailed documentation on  <a href="https://flamingo.dev.java.net/docs/commandbuttonpanel.html">command button panel</a> and <a href="https://flamingo.dev.java.net/docs/fileviewerpanel.html">file viewer panel</a>.</p>

<p>Cross-posted on <a href="http://www.pushing-pixels.org/?p=209">Pushing Pixels</a>.</p>]]>

</content>
</entry>
<entry>
<title>Substance 4.1 official release</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/kirillcool/archive/2007/11/substance_41_of.html" />
<modified>2008-02-10T23:19:08Z</modified>
<issued>2007-11-12T08:01:12Z</issued>
<id>tag:weblogs.java.net,2007:/blog/kirillcool/210.8629</id>
<created>2007-11-12T08:01:12Z</created>
<summary type="text/plain">Official release of version 4.1 of Substance look-and-feel. Read inside for the full list of new features, links to accompanying documentation and a few selected screenshots.</summary>
<author>
<name>kirillcool</name>

<email>kirillcool@yahoo.com</email>
</author>
<dc:subject>Community: JavaDesktop</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/kirillcool/">
<![CDATA[<p>It gives me great pleasure to announce the official release for version 4.1 of <a href="https://substance.dev.java.net">Substance look-and-feel</a> (code-named <strong>Lima</strong>). The list of <a href="https://substance.dev.java.net/release-info/4.1/release-info.html">new features</a> includes:</p>
<ul>
	<li>Full HiDPI support (<a href="http://www.pushing-pixels.org/?p=143">part 1</a>, <a href="http://www.pushing-pixels.org/?p=144">part 2</a>, <a href="http://www.pushing-pixels.org/?p=148">part 3</a>).</li>
	<li><a href="http://www.pushing-pixels.org/?p=145">Font policy</a> for Gnome desktops.</li>
	<li>API for installing a scaled font policy.</li>
	<li>New <a href="http://www.pushing-pixels.org/?p=156">Creme Coffee</a> skin.</li>
	<li><a href="http://www.pushing-pixels.org/?p=139">Inner border painters</a>.</li>
	<li><a href="http://www.pushing-pixels.org/?p=155">New visuals</a> for tabbed pane content border.</li>
	<li><a href="http://www.pushing-pixels.org/?p=138">Transition-aware animating icons</a> for control icons.</li>
	<li>New version of <a href="http://www.pushing-pixels.org/?p=132">Xoetrope color wheel</a> for the color chooser component.</li>
	<li>Better visuals for the JRibbon component (<a href="http://www.pushing-pixels.org/?p=162">part 1</a>, <a href="http://www.pushing-pixels.org/?p=164">part 2</a>, <a href="http://www.pushing-pixels.org/?p=165">part 3</a>) in the <a href="https://substance-flamingo.dev.java.net/">Substance Flamingo plugin</a>.</li>
	<li>Support for the <a href="http://www.pushing-pixels.org/?p=131">GroupLayout baseline functionality</a> in the <a href="https://substance-baseline.dev.java.net/">Substance Baseline plugin</a>.</li>
</ul>
<p>Applications that use or implement custom <a href="https://substance.dev.java.net/docs/painters/border.html">border painters</a> and <a href="https://substance.dev.java.net/docs/painters/titleheader.html">title painters</a> should consult the instructions in the <a href="https://substance.dev.java.net/release-info/4.1/migration.html">migration guide</a>.</p>

<p>In addition to the core release, the following Substance plugins and modules have been updated as well:</p>
<ul>
	<li>Substance <a href="https://substance-flamingo.dev.java.net/servlets/ProjectDocumentList?folderID=6932">Flamingo plugin</a> for the <a href="https://flamingo.dev.java.net/servlets/ProjectDocumentList?folderID=6931">latest 2.1dev drop</a> of <a href="https://flamingo.dev.java.net/">Flamingo component suite</a>.</li>
	<li>Substance <a href="https://substance-swingx.dev.java.net/servlets/ProjectDocumentList?folderID=7325">SwingX plugin</a> for the <a href="http://swinglabs.org/hudson/job/SwingX%20Continuous%20Build/">build 255</a> of <a href="https://swingx.dev.java.net">SwingX component suite</a>.</li>
	<li>Substance <a href="https://substance-baseline.dev.java.net/servlets/ProjectDocumentList?folderID=8004">Baseline plugin</a> for <a href="https://swing-layout.dev.java.net/servlets/ProjectDocumentList?folderID=6838">release 1.0.2</a> of <a href="https://swing-layout.dev.java.net/">Swing-Layout project</a>.</li>
	<li>Substance <a href="http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=815">NetBeans module</a> for <a href="http://download.netbeans.org/netbeans/6.0/beta2/">6.0beta2</a> of <a href="http://www.netbeans.org/">NetBeans IDE</a>.</li>
</ul>
<p>The documentation has been updated with the latest visuals and APIs. In addition, there are new tutorials on <a href="https://substance.dev.java.net/docs/painters/overview.html">Substance painters</a> and <a href="https://substance.dev.java.net/docs/painters/custom-skinning.html">skinning of custom components</a>.
Special thanks for bug reporting and testing go to Mikael Grev, Vincent Trussart, Kamil Paral, Klaus Rheinwald and Jean-Francois Poilpret.</p>

<p>A few screenshots of the new functionality in Substance 4.1:</p>

<p>The inner border painters and tab pane content borders in the <strong>Raven Graphite Glass</strong> skin:</p>
<p style="text-align: center"><img src="https://substance.dev.java.net/release-info/4.1/border-new-ravengraphiteglass1.png" height="225" width="300" /></p>
<p>The new <strong>Creme Coffee</strong> skin:</p>

<p style="text-align: center"><img src="https://substance.dev.java.net/release-info/4.1/skin-cremecoffee1.png" height="225" width="300" /></p>
<p>Full support for desktop resolution settings:</p>
<p style="text-align: center"><img src="https://substance.dev.java.net/release-info/4.1/hidpi-borders-144.png" height="339" width="436" /></p>
<p>Automatic font policy for Gnome desktops:</p>
<p style="text-align: center"><img src="https://substance.dev.java.net/release-info/4.1/font-policy-gnome-96dpi.png" height="245" width="350" /></p>]]>

</content>
</entry>
<entry>
<title>Why i don&apos;t care about Java 6 on Leopard</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/kirillcool/archive/2007/10/why_i_donat_car.html" />
<modified>2007-10-29T17:43:36Z</modified>
<issued>2007-10-29T17:45:01Z</issued>
<id>tag:weblogs.java.net,2007:/blog/kirillcool/210.8511</id>
<created>2007-10-29T17:45:01Z</created>
<summary type="text/plain">A pragmatic view on the hottest topic in the Java blogosphere - Leopard and Java 6 (or lack of thereof).</summary>
<author>
<name>kirillcool</name>

<email>kirillcool@yahoo.com</email>
</author>
<dc:subject>Community: JavaDesktop</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/kirillcool/">
<![CDATA[<p>It looks like anywhere you go in the Java blogosphere, people are only talking about Java 6 (or lack of thereof) on Leopard. Some say that the only reason they bought Leopard was for Java 6, some say that their honeymoon with Apple is over, and some say that Java 6 will be available shortly as a separate download. And 99% of the postings and the comments seem to agree - Java 6 should have been included in the golden master of Leopard.</p>
<p>I thought about it over the weekend, and time and time again i reach the same pragmatical conclusion - i don't care about Java 6 on OS X, and for that matter i don’t care about OS X as a Java development platform. While that may sound as a harsh statement, allow me just a few minutes of your time.</p>
<p>I’ve already written that for me, an operating system is <a href="http://weblogs.java.net/blog/kirillcool/archive/2005/03/what_is_keeping.html">just another layer</a> in my development platform. I’m more interested in the tools that i’m using and the applications that i'm developing. The things that i said 30 months ago are still true - i'm perfectly OK with my Windows machines, because i rarely directly interact with the operating system. I might have switched to Linux, but pragmatically speaking, it is <a href="http://weblogs.java.net/blog/kirillcool/archive/2007/04/feisty_fawn_sun.html">not a good business proposition</a>. Between 150$ for the OEM version of Vista and spending 12 hours to download and install OS and configuring the Java environment (on my free time during the weekend away from the family), i choose Vista any given day.</p>
<p>Now, let’s talk some numbers. The market share for Windows is somewhere in 90-95% range, and while sales of Mac machines rise on the quarterly basis, so do sales of Windows boxes. One might say that these numbers are for all the machines, including corporate environments and home machines for non-IT people. I’m looking at the visitor stats of this blog, which is has a very specific technical orientation, and the numbers are a little surpising:</p>
<ul>

<li>Windows has 75.6%</li>
<li>Linux has 14.4%</li>
<li>Mac has 9.6%</li>
</ul>
<p>Yes, even for such a narrowly oriented site that mainly talks about Swing, Java2D and other UI topics in Java land, Mac doesn’t even cross into double digits. While you do see most of JavaOne presenters use Mac laptops, it doesn’t really extrapolate to the wider audience of JavaOne attendees, and most certainly it doesn’t extrapolate to the much wider audience of Java developers. The same applies to the blogosphere numbers - i’m sure i have seen about 20-30 rant entries on this subject over the past three days. Let’s be generous and say it’s an even hundred. Is that a lot? It is a lot of noise, but compared to the number of blogs tracked by <a href="http://javablogs.com/Welcome.action">JavaBlogs</a> (2261)&nbsp; it’s not that much.</p>
<p>Looking at the bug reports for my open-source projects over the past three years, i see only two Linux-specific bugs and one Mac-specific bug. Yes, about 500 bugs reported via the bug trackers, forums, mailing lists and direct mail, and only one Mac-specific bug. Of course, most of these bugs were cross-platform, but so have been the bug fixes.</p>
<p>Now, your numbers might be different. If you’re developing a commercial product that is targeting multiple OSes, you might not be in a position similar to mine. However, if you spend more money to provide support for Mac than what you make from product sales on Mac, that is a bad business proposition. In this case, you might as well say that your product is for Windows only (like the vast majority of all the applications out there) and don’t mention that it’s in Java (so you don’t get blog-flamed about lack of cross-platform support). Of course, in this case you might as well switch to Win32, MFC, WinForms, WPF or whatever technology is pimped that year, but that is a topic for another blog entry.</p>

<p>This is, of course, my personal subjective opinion. I never had a Mac, and this fact alone might severely skew my judgement. But on the other hand, i never <strong>had</strong> to have a Mac as a Java developer. And this most certainly doesn’t change now with Leopard. Windows (in its various flavors) was and remains my only Java development platform (both at work and at home), with Linux and Mac delegated to what they really are at this point in time - alternative OSes with minor penetration to be installed for platform-specific bug fixes. Will this change in the future? I’m a pragmatic person, so i don’t say "no".
</p>

<p>Cross-posted on <a href="http://www.pushing-pixels.org/?p=178">Pushing Pixels</a>. If you have comments, click through.</p>]]>

</content>
</entry>
<entry>
<title>Rainbow 1.1 - SVG browser for remote SVN repositories</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/kirillcool/archive/2007/10/rainbow_11_svg.html" />
<modified>2008-02-10T23:18:56Z</modified>
<issued>2007-10-08T16:57:47Z</issued>
<id>tag:weblogs.java.net,2007:/blog/kirillcool/210.8393</id>
<created>2007-10-08T16:57:47Z</created>
<summary type="text/plain">The new version of Rainbow SVG browser is available. Now you can browse remote SVN repositories with regular and compressed SVG content.</summary>
<author>
<name>kirillcool</name>

<email>kirillcool@yahoo.com</email>
</author>
<dc:subject>Community: JavaDesktop</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/kirillcool/">
<![CDATA[<p>Those of you who came to <a href="https://rainbow.dev.java.net/media/JavaOne2007Rainbow.pdf">the session</a> (PDF link) that <a href="http://weblogs.java.net/blog/alexfromsun/">Alex</a> and I <a href="http://weblogs.java.net/blog/kirillcool/archive/2007/05/bringing_life_t_2.html">have presented</a> at JavaOne 2006 saw the application that we wrote to illustrate different animation, translucency and transition techniques. The project itself was named <a href="https://rainbow.dev.java.net/">Rainbow</a> and all the bits were made available immediately after the session. Unlike many other demo applications written specifically for JavaOne, Rainbow was not meant to be one-shot sow-it-all-together-over-the-pizza to be left stagnating in the dark, and over the past month i have added a few big features.</p>

<p>There are two main new features that you can find in the version 1.1 (nearing RC stage), code-named <strong>Nightstone</strong>:</p>
<ul>
	<li>Support for SVGZ format in addition to SVG</li>
	<li>Ability to browse local and remote SVN repositories with the <a href="http://www.pushing-pixels.org/?p=151">new breadcrumb bar</a> functionality from <a href="https://flamingo.dev.java.net/">Flamingo</a>.</li>
</ul>
<p>To try the latest dev version in action, click on the WebStart button below:</p>

<a href="https://rainbow.dev.java.net/webstart/rainbowSvn.jnlp"></a>
<p style="text-align: center"><a href="https://rainbow.dev.java.net/webstart/rainbowSvn.jnlp"><img src="https://rainbow.dev.java.net/images/webstart.png" border="0" height="23" width="88" /></a></p>

<p>After the application has been downloaded (it is about 12MB large, including the bundled Batik, Substance, SVNKit and a few others) and granted permissions (as before, you can convert the SVG images to Java2D code classes and PNG images and save them to local disk), you can browse two remote SVN repositories, <a href="http://www.oxygen-icons.org/">Oxygen</a> and <a href="http://edu.kde.org/kalzium/">Kalzium</a>.</p>

<p>Here is a screenshot that shows a few icons from the Oxygen SVN repository:</p>

<p style="text-align: center"><img src="https://rainbow.dev.java.net/images/oxygen-devices.png" height="539" width="700" /></p>

<p>As you can see, the application is able to show compressed SVG images (in SVGZ format) after these have been downloaded from a remote SVN repository. Here is a screenshot of another Oxygen folder:</p>

<p style="text-align: center"><img src="https://rainbow.dev.java.net/images/oxygen-apps.png" height="539" width="700" /></p>

<p>As before, when you click on an icon button, you will see another frame pop up with three tabs. The first tab will show you the SVG contents (XML), the second tab will show you the matching Java2D code that you can save as a local class, and the third tab will allow you to apply a few effects on the SVG image and save it as a local PNG file. For example, if you're interested in more details on <a href="http://davigno.oxygen-icons.org/2007/09/23/inspiration-is-bad/">the new Konqueror icon</a>, here is what you'll see:</p>
<p style="text-align: center"><img src="https://rainbow.dev.java.net/images/oxygen-konqueror.png" height="456" width="600" /></p>

<p>Want to see it inverted? Click on the "Invert colors" checkbox et voila:</p>

<p style="text-align: center"><img src="https://rainbow.dev.java.net/images/oxygen-konqueror-inverted.png" height="456" width="600" /></p>

<p>Still convinced that web applications are the way of the future?</p>

<p><a href="http://www.pushing-pixels.org/?p=153">Also published</a> in Pushing Pixels</p>]]>

</content>
</entry>
<entry>
<title>Java SE 6 Update N. Is that a real name now?</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/kirillcool/archive/2007/10/java_se_6_updat.html" />
<modified>2008-02-10T23:18:56Z</modified>
<issued>2007-10-01T08:37:52Z</issued>
<id>tag:weblogs.java.net,2007:/blog/kirillcool/210.8341</id>
<created>2007-10-01T08:37:52Z</created>
<summary type="text/plain">The project formerly known as &quot;Consumer JRE&quot; is now &quot;Java SE 6 Update N&quot;.</summary>
<author>
<name>kirillcool</name>

<email>kirillcool@yahoo.com</email>
</author>
<dc:subject>Community: JDK</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/kirillcool/">
<![CDATA[<p>In what appears to be the latest installment in the naming saga of Java releases, Sun officially renamed the "Consumer JRE" to <a href="https://jdk6.dev.java.net/6uNea.html">"Java SE 6 Update N"</a>. Originally pioneered by <a href="http://weblogs.java.net/blog/enicholas/">Ethan Nicholas</a>, it had a few sexy names, such as <b>Java Browser Edition</b>, <b>Java Kernel</b> and lately <b>Consumer JRE</b>. And now the official name is out, ant it is the most unpalatable name for a Java release that i have ever heard.</p>

<p>The promise made by Sun at JavaOne 2005 about the new release schedule for JDK was simple - no more minor releases. Starting from JDK 5.0, there will be no longer .1, .2 and so on. Only bug fixes, named with small letter <b>u</b>. It worked with JDK 5.0, and it worked up until now with JDK 6.0 (or JavaSE 6.0 is the official terminology), which also sadly eliminated the nicknames for Java major and minor releases. So what is so different now?</p>

<p>With so <a href="https://jdk6.dev.java.net/6uNea.html">many new features</a> in the "Update N", it's not really a bug fix release. It's really a big major release, but marking it as such would make its adoption even more problematic. However, marking it as "Update N" doesn't make any sense at all. What does "N" stand for? Will there be any updates once it's released? Most certainly there will, we're already at update 12 for JDK 5.0. Will that be "N+1"? "N++"? "O"?</p>

<p>Why not admit the obvious? It is a big release with major new features, just like 1.4.2 was compared with 1.4 and 1.4.1. If you don't want to call it 7.0 (which it should really be), name it 6.5. Do you know how many syllables are there in the new name? Eight. How many syllables in "Silverlight"? Three. Apollo? Three. Flex and Flash? One. Make it sexy. Make it scream for headlines.</p>]]>

</content>
</entry>
<entry>
<title>An article on multi-core client side development in Java</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/kirillcool/archive/2007/09/an_article_on_m.html" />
<modified>2008-02-10T23:18:59Z</modified>
<issued>2007-09-26T17:51:48Z</issued>
<id>tag:weblogs.java.net,2007:/blog/kirillcool/210.8325</id>
<created>2007-09-26T17:51:48Z</created>
<summary type="text/plain">Interested to see what awaits the client-side Java development in the near future?</summary>
<author>
<name>kirillcool</name>

<email>kirillcool@yahoo.com</email>
</author>
<dc:subject>Performance</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/kirillcool/">
<![CDATA[<p>Yesterday <a href="http://www.javaworld.com/">JavaWorld.com</a> published a <a href="http://www.javaworld.com/javaworld/jw-09-2007/jw-09-multicoreprocessing.html">new article</a> titled "Multicore processing for client-side Java applications". You're welcome to take a look and let me know what you think. Here's a summary of the article:</p>

<blockquote>It's a well-known fact that hardware companies are abandoning the race for single-CPU speed and instead are focusing on multicore processors. Despite the fact that many algorithms can be easily parallelized, most client-side Java code is still written for single-CPU systems. This article shows you how to fine-tune a core JDK array-sorting algorithm for improved processing speed of as much as 35%.</blockquote>]]>

</content>
</entry>
<entry>
<title>Key Largo, Edelweiss and Caireann are finally released</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/kirillcool/archive/2007/09/key_largo_edelw.html" />
<modified>2008-02-10T23:19:16Z</modified>
<issued>2007-09-04T05:36:59Z</issued>
<id>tag:weblogs.java.net,2007:/blog/kirillcool/210.8167</id>
<created>2007-09-04T05:36:59Z</created>
<summary type="text/plain">Announcing the releases of three major desktop libraries that i&apos;m working on.</summary>
<author>
<name>kirillcool</name>

<email>kirillcool@yahoo.com</email>
</author>
<dc:subject>Community: JavaDesktop</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/kirillcool/">
<![CDATA[<p>I'm very pleased to announce releases for the main three projects that i'm working on:
<ul>
	<li>Release 4.0 of <a href="https://substance.dev.java.net">Substance</a> look-and-feel (code-named <strong>Key Largo</strong>)</li>
	<li>Release 3.1 of <a href="https://laf-widget.dev.java.net">Laf-Widget</a> layer for LAFs (code-named <strong>Edelweiss</strong>)</li>
	<li>Release 2.0 of <a href="https://flamingo.dev.java.net">Flamingo</a> component suite (code-named <strong>Caireann</strong>)</li>
</ul>
The release for version 4.0 of <a href="https://substance.dev.java.net">Substance look-and-feel</a> includes the following <a href="https://substance.dev.java.net/release-info/4.0/release-info.html">new features</a>:
<ul>
	<li>Six new skins: <a href="http://www.pushing-pixels.org//?p=7">Nebula</a>, Nebula Brick Wall, <a href="http://www.pushing-pixels.org//?p=48">Autumn</a>, <a href="http://www.pushing-pixels.org//?p=55">Magma</a>, Mist Silver and Mist Aqua.<br>
<img src="https://substance.dev.java.net/release-info/4.0/skin-nebula1.png" height="225" width="300" /><img src="https://substance.dev.java.net/release-info/4.0/skin-autumn1.png" height="225" width="300" /><img src="https://substance.dev.java.net/release-info/4.0/skin-magma1.png" height="225" width="300" /></li>
	<li>State-aware <a href="http://www.pushing-pixels.org//?p=56">theme</a> transitions</li>
	<li><a href="http://weblogs.java.net/blog/kirillcool/archive/2007/04/borrowing_from_1.html">Smart tree scroll</a></li>
	<li>Glowing icons (buttons, option pane)</li>
	<li>Support for JXPanel translucency</li>
	<li>SwingX UI delegates in <a href="https://substance-swingx.dev.java.net/">SwingX plugin</a><br>
<img src="https://substance.dev.java.net/release-info/4.0/swingx-errorpane-nebula.png" height="206" width="458" /><img src="https://substance.dev.java.net/release-info/4.0/swingx-monthview-raven.png" height="250" width="350" /></li>
	<li>Border painters</li>
	<li>New title painters: Brushed Metal, Marble Noise<br>
<img src="https://substance.dev.java.net/release-info/4.0/skin-officesilver2007_1-new.png" height="225" width="300" /><img src="https://substance.dev.java.net/release-info/4.0/skin-nebula1.png" height="225" width="300" /></li>
</ul>
</p>

<p>
Some applications may need to follow the instructions in the <a href="https://substance.dev.java.net/release-info/4.0/migration.html">migration guide</a>. The latest stable NetBeans module <a href="http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=815">available here</a> installs Substance as the look-and-feel in <a href="http://bits.netbeans.org/download/6.0/nightly/">NetBeans 6.0</a> and allows playing with various <a href="https://substance.dev.java.net/docs/skins/overview.html">skins</a>, <a href="https://substance.dev.java.net/docs/themes/overview.html">themes</a> and <a href="https://substance.dev.java.net/docs/watermarks.html">watermarks</a>.
</p>
<p>
Work has begun on the next releases, <a href="https://substance.dev.java.net/release-info/releases.html"><strong>Lima</strong></a> for Substance, <strong>Foxglove</strong> for Laf-Widget and <strong>Deirdre</strong> for Flamingo.</p>]]>

</content>
</entry>
<entry>
<title>An article on Swing EDT violations</title>
<link rel="alternate" type="text/html" href="http://weblogs.java.net/blog/kirillcool/archive/2007/08/an_article_on_s.html" />
<modified>2008-02-10T23:19:19Z</modified>
<issued>2007-08-30T17:03:08Z</issued>
<id>tag:weblogs.java.net,2007:/blog/kirillcool/210.8136</id>
<created>2007-08-30T17:03:08Z</created>
<summary type="text/plain">A new article on java.net on tracing and automatically detecting Swing EDT violations.</summary>
<author>
<name>kirillcool</name>

<email>kirillcool@yahoo.com</email>
</author>
<dc:subject>Community: JavaDesktop</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://weblogs.java.net/blog/kirillcool/">
<![CDATA[<p>There's a new article that has been published today on java.net titled <a href="http://today.java.net/pub/a/today/2007/08/30/debugging-swing.html">Debugging Swing</a>. It builds on the previous work by <a href="http://www.clientjava.com/blog/2004/08/20/1093059428000.html">Scott Delap</a> and <a href="http://weblogs.java.net/blog/alexfromsun/archive/2006/02/debugging_swing.html">Alex Potochkin</a> to provide even more tools for tracing the EDT violations that can lead to visual artifacts, unresponsive or frozen UIs and infinite painting cycles.</p>

<p>If you're interested in more articles on Swing, please post your suggestions in the comments. Specifically, i'm looking for the "everyday" problems that you're facing in the regular business Swing applications. Note that an article scope is too small to talk about architecturing a Swing application, so try to keep it to a specific topic, such as <a href="http://today.java.net/pub/a/today/2007/07/19/adding-auto-completion-to-swing-comboboxes.html">auto-completion support on comboboxes</a> or <a href="http://today.java.net/pub/a/today/2007/02/22/how-to-write-custom-swing-component.html">writing a custom component</a>.</p>

<p>Thanks to <a href="http://weblogs.java.net/blog/emcmanus/">Eamonn McManus</a> for his help on JMX-related code and to <a href="http://weblogs.java.net/blog/editors/">Chris Adamson</a> for the editing.</p>]]>

</content>
</entry>

</feed>