JavaDesktop Home
Projects
 
Community
Discussion Forums
Forums
Partners
Contacts
 
Featured Desktop Blogs
Romain Guy
Chet Haase
Kirill Grouchnikov
Shannon Hickey
Joshua Marinacci
Hans Muller
Alexander Potochkin
Chris Campbell
Jasper Potts
All JavaSE Blogs (PlanetJDK)
 
Resources
JavaLobby
Wiki
Articles
Swing Depot:
Component Suites
Swing Pointers
Swing Sightings
NetBeans Community
Desktop Java Technology
 
 
 

Welcome to JavaDesktop

Welcome to JavaDesktop, a gathering place for members of the Java™ platform's graphical user interface (GUI) community. Here you'll find news, discussions, technical articles, and open source projects that use the Java Platform, Standard Edition (Java SE™) APIs to produce applications with rich client interfaces. (If you're looking for information on the Sun Java Desktop System, you can find it at sun.com.)

GetJava Button Spread the word! Hosting the Get Java Software Button shows your support for the Java platform and helps users download the latest version. How to do it...
We want to hear from you! Please feel to contact us with comments, suggestions, product announcements, pretty much anything you have on your mind related to Java on the desktop:
       

   (currently:

Features
 
 
Nimbus UIManager UIDefaults
Nimbus is completely configured by properties in the UIManager defaults table. In my last blog I showed a simple example of how to skin a single component. This gave you a sneak peek into the power of these properties.. (Aug 27, 2008)
Alexander Potochkin: JXLayer 3.0 - MouseScrollableUI
Implementing the auto-scrolling feature with JXLayer (Jun 27, 2008)
Red Hat's IcedTea open source JVM has passed the Java Compatibility Kit tests.
Red Hat's IcedTea open source JVM has passed the Java Compatibility Kit tests. Thus on paper we now have a fully open source Java virtual machine. Now the work starts to begin noticing and reporting areas where the Sun VM and the Red hat VM diverge in significant ways, and thus indicate bugs in the specifications and compatibility kit. Nonetheless this is a major milestone. (Jun 27, 2008)
Java Posse #194 - Newscast for June 26th 2008
Newscast for June 26th 2008Fully formatted shownotes can always be found at http://javaposse.com Eclipse 3.4 - Ganymede - has been releasedhttp://www.eclipse.org/org/press-release/ 20080625_ganymede.phphttp://eclipse.dzone.com/articles/ eclipse-34-hidden- (Jun 26, 2008)
David Herron
On the evolution of the Java plugin

Ted Neward on the demise of Java applets is an interesting look back in history (interview on the Sparkling Client podcast). The Java Applet was the first of the RIA platforms, long before Flash became the king of RIA, long...   David Herron
  (Jun 26, 2008)

Enhancing the Flamingo command button component
Over the course of the past few weeks the command button component in Flamingo component suite has been enhanced following the feedback from the project users. There is nothing better than getting the feedback from real-world use, and it is much appreciated on my side. Many thanks go to Kenneth Flynn and Christian Hebert for [...] (Jun 25, 2008)
Substance Extras pack - part II
The new Extras pack for Substance look-and-feel provides additional settings on top of the functionality available in the core library. The previous entry showed screenshots of color schemes, watermarks and skins from the Extras pack, and this entry will talk about button shapers, mixed color scheme and mixed gradient painters. Additional button shapers can be found [...] (Jun 24, 2008)
Article reprint in JavaWorld
My “party of one” series of articles about one-man open source projects has been reprinted in an abridged form over at JavaWorld.com. Those of you who missed it the first time can either read the shorter version linked above or spend more time on the full series: Introduction to one-man open source projects Development and staying passionate Maintenance [...] (Jun 24, 2008)
Swing links of the week: June 22, 2008
Here are some Swing links that you might have missed during this week: Jacek Furmankiewicz has announced the first beta release 0.1 of his SwingBuilder project. It provide support for data binding with Beans Binding, layout management with MigLayout, validation with Apache Commons Validator, long running tasks with SwingWorker and has integration libraries for JIDE and [...] (Jun 23, 2008)
Substance Extras pack
As specified in the roadmap for version 5.0 of Substance look-and-feel, a number of the existing Substance plugins have been consolidated into the Extras pack. This pack contains additional color schemes, watermarks and skins, as well as a mixed color scheme and a mixed gradient painter. The documentation for the Extras pack contains the information [...] (Jun 21, 2008)
Java Posse #193 - Listener Feedback
Listener FeedbackFully formatted shownotes can always be found at http://javaposse.com Audio feedback sent in to the Java Posse feedback number: (408) 465 4626Other Java implementations than Sun's Java:IBM -  http://www.ibm.com/developerworks/java/jd (Jun 20, 2008)
Performance comparison of Substance skins
As a follow up to the previous post that showed how LightBeam tool can be used to analyze the performance of various core and third-party Swing look-and-feels, today i’m going to answer Luke’s question in the comments section and compare the performance of the core Substance skins. The table below lists all available core Substance skins, [...] (Jun 19, 2008)
Did Apple update their 1.5 renderer ?
Looks like it. Lots of Apple people in my web logs as well. Maybe my mind tricks are working ! Lima Lima Lima.... (Jun 18, 2008)
David Gilbert: Charts in Charts
A client asked how to add one or more small charts within a larger chart using JFreeChart. I figured that one approach would be to use the XYDrawableAnnotation class, but it turned out that I needed to add a scaling facility to make this work nicely. This has gone into Subversion for inclusion in the next release (1.0.11). Here's a demo screenshot to illustrate ...
(Jun 18, 2008)
LightBeam - measuring performance of Swing look-and-feels
About a month ago i have introduced the new project named LightBeam that aims to assist look-and-feel writers to measure performance of their libraries under various static and dynamic scenarios. I have used this tool extensively during the performance optimizations of the next release of Substance look-and-feel, and it has now reached its first official [...] (Jun 18, 2008)
Collin Fagan
A Thumbnail Preview Tabbed Pane

Lately I've been spending my spare time contributing code samples to the The Java Tutorial Community Portal. My latest addition is a tabbed pane that shows a preview of a tab as a thumbnail tooltip.   Collin Fagan
  (Jun 17, 2008)

Swing links of the week: June 15, 2008
Here are some Swing links that you might have missed during this week: Jan Erik Paulsen experiments with the new functionality of shaped and translucent windows in 6u10. The screenshots are impressive, and he is correctly pointing out two main deficiencies of the current (semi-private) API. The first is that you need to attach a listener [...] (Jun 16, 2008)
Java Posse #192 - Newscast for June 12th 2008
Newscast for June 12th 2008Fully formatted shownotes can always be found at http://javaposse.comPOSSE 200th EPISODE COMINGWe are currently trying to guage interest in a live performance and potentially an unconference for the 200th episode, which wil (Jun 14, 2008)
New Swing Article : SwingLabs' PDF Renderer
New article on the PDF Renderer project at SwingLabs. More.... (Jun 14, 2008)
Artem Ananiev
Using JWebPane: common scenarios

Moving on with JWebPane. Let's examine some basic things developers can do with this component.   Artem Ananiev
  (Jun 11, 2008)

David Gilbert: JFreeChart 1.0.10
JFreeChart 1.0.10 is out now. It's a free (LGPL) chart library written in Java. The NEWS file lists the latest changes. I've been working on JFreeChart for years and I charge money for the documentation. That's all.
(Jun 10, 2008)
Jan Haderka
SwingX 0.9.3 Released

After weeks of waiting SwingX 0.9.3 have been released. Delivers fixes for most pressing issues identified since previous release.   Jan Haderka
  (Jun 10, 2008)

Teppefall Kvitre prototype
Just playing around with Java 1.6.0_10-beta-b23. The shaped window is a bit ugly in the edges, but this is the best I can do for now. The resizing is a bit wonky as well. I have to redesign parts of... (Jun 09, 2008)
Swing links of the week: June 8, 2008
Here are some Swing links that you might have missed during this week: Synthetica look-and-feel has released version 2.7.0 and 2.7.1. No new skins have been added, but there are some new features and bug fixes. Swing has aged remarkably well considering its long history and imposed rules of preserving backwards compatibility. However, there are some trends [...] (Jun 09, 2008)
Alexander Potochkin
Alexander Potochkin: JXLayer 3.0 - Getting started

A major update of JXLayer, a universal decorator for Swing components   Alexander Potochkin
  (Jun 05, 2008)

Patrick Keegan: Using Beans Binding to Search in a Table
Now and again someone will ask me how you can search records in a desktop database app. Here's a reasonably simple way to do so, using mechanisms that exist in Swing and the Beans Binding library. We will create a binding between the rowSorter property of the master table in the example in my previous entries and a text field that I've just added for the search string. For this binding we will need a binding converter so that the table knows how to respond to the search string. (Jun 05, 2008)
Romain Guy: Slides and Audio for Filthy Rich Clients at JavaOne 2008
Sun has posted the slides and audio of Filthy Rich Clients 2008. Enjoy! (Jun 04, 2008)
Java Posse #190 - Interview with Bill Pugh and Brian Goetz
Interview with Bill Pugh and Brian GoetzFully formatted shownotes can always be found at http://javaposse.com Our third annual chinwag with Bill Pugh and Brian Goetz recorded at this year's JavaOne. We cover concurrency and strategies for dealing with it, (Jun 04, 2008)
Geertjan: Swing Outline Component
Announcing the new Swing Tree Table today, Tim writes:

Usage is incredibly easy - you just provide a standard Swing TreeModel of whatever sort you like, and an additional RowModel that can be queried for the other columns contents, editability and so forth.

I found an example from sometime ago, by Tim, and have been playing with it to get used to this new development... (Jun 03, 2008)

Amy Fowler
responding to questions on Swing, RIA, and JavaFX

JavaOne raised many questions for Swing developers regarding the future of client development and I'd like to take a first stab at answering some of them.   Amy Fowler
  (May 19, 2008)

Swing, RIA and JavaFX - interview with Amy Fowler
This year’s JavaOne placed a significant emphasis on client Java. The name Amy Fowler should ring a bell for anybody who ever delved into the intricacies of Swing internal implementation, and she graciously agreed to answer a few questions that i had after attending most of the desktop track sessions. Tell us a little bit about [...] (May 19, 2008)
Joshua Marinacci
JavaOne Exhaustion (with links!)

So another JavaOne has come to an end. This time I think I finally tried to simply do too much. I'm lucky I didn't get the Moscone flu. Still, all in all, I think we had a good showing. I'm...   Joshua Marinacci
  (May 19, 2008)

Static layout explorer
This applet showcases the power of Teppefall Layout + MigLayout. Just click on the layout files below. There is no logic attached to these examples and you need Java 6u10 Beta b23 to run them correctly. I would like to... (May 20, 2008)
Swing links of the week: May 18, 2008
Here are some Swing links that you might have missed during this week: This subject seems to come up every now and then over the last couple of years. Supporting CSS in Swing has been mentioned in Ben Galbraith’s presentation at last year’s JavaOne, Eitan Suez’s JMatter has a CSS module in it, and the naming [...] (May 18, 2008)
Party Of One: Conclusion
This is the final part of the series on one-man open source projects. In the previous entries i talked about the different facets of the issues that face single-developer projects: Development and staying passionate Maintenance and staying focused Promotion and staying committed There are a lot of big projects out there with dozens of active developers and hundreds of [...] (May 18, 2008)
Evan Summers
Linux desktop market musings

Encumbents Red Hat ignore the tricky consumer desktop market, and focus on the enterprise. I don't blame them. Upstart Canonical focusses on the consumer desktop et al. So I wonder what the future holds for Canonical vs Red Hat. Now where's that blasted crystal ball of mine - darn thing must have rolled under the couch again.   Evan Summers
  (May 17, 2008)

Party Of One: Promote
If you write it they will come. Open source software has thousands of eyeballs monitoring it for flaws. Let the code speak for itself. The code is the best documentation. Haven’t we all heard this before, and haven’t we all had this type of wishful thinking? Alas, the harsh reality of hundreds of thousands of [...] (May 17, 2008)
Danny Coward: Top 10 JavaOne 2008 Rich Client things
Here's my top 10 list from Java on the client at JavaOne this year. Enjoy x 10 ! ...
(May 16, 2008)
Party Of One: Maintain
The previous entry on one-man open source projects has talked about the development facet. Today, i’m going to talk about perhaps the most unappreciated and overlooked part of any project - the maintenance. It is my belief that if you want your project to become and stay successful, you must treat the maintenance part with [...] (May 16, 2008)
Party Of One: Develop
As mentioned in the introduction entry, every one-man hobby open source project has three main parts - development, maintenance and promotion. Today, i’m going to talk about where it all starts, and, if you’re not careful enough, where it all ends. It all starts, of course, with the development. You take an idea and you put [...] (May 15, 2008)
Slides from JavaOne 2008: Filthier, Richer, Clientier
Chet and I just posted our JavaOne 2008 slides online. (May 14, 2008)
Rachel Hill
Rich Internet Applications Pavilion Floor Debate

Josh and Rachel again hit the pavilion floor and get caught up in a debate over rich internet applications, their purpose, their usefulness, and, once again, what exactly they are...   Rachel Hill
  (May 14, 2008)

Party Of One: Surviving A Hobby Open-Source Project
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 [...] (May 14, 2008)
Rachel Hill
Rich Internet Applications

Click to Play play_blip_movie_909710(); Panel Discussion on Rich Internet Applications at the RedMonk Unconference at CommunityOne 2008Formats available: Quicktime (.mov)   Rachel Hill
  (May 13, 2008)

Input on a New Desktop Java Database Tutorial
Over the next few weeks, I'll be incrementally posting sections of an extended tutorial on creating a Swing desktop application with database connectivity. The tutorial will go beyond simple database connectivity and show things such as one-to-many and many-to-one relationships as well as how to bind database tables to a variety of GUI components. We'll use a MySQL database that has tables for client info, order info, and countries. There will be a one-to-many relationship between the client and order tables. There will be a many-to-one relationship between client and countries tables. (May 13, 2008)
Swing links of the week: May 11, 2008
Here are some Swing links that you might have missed during this week: Christophe Le Besnerais has a custom implementation of Paint interface to paint a glossy button with arc-shaped gradient. Paint is one of the more advanced concepts in Java2D and it’s tricky to create a performant implementation. The only visual thing that is missing [...] (May 12, 2008)
James Gosling: Too much fun...
My keynote this morning went off flawlessly. You can watch it on UStream. I'd like to thank everyone who contributed: The demos were all incredibly inspirational. I was in awe of every one of them. The main hall at Moscone was packed. The production crew was totally perfect, despite all the re-arranging of the plan. And the Sun crew were their usual wonderful selves. ...
(May 10, 2008)
Java Posse #186 - JavaOne 2008 BoF
Java Posse Episode 186 - JavaOne 2008 BoF Fully formatted shownotes can always be found at http://javaposse.com Recorded live in front of a large and, frankly, quite enthusiastic audience at JavaOne 2008. News from JavaOne JAVA FXApplet plugin - drag appl (May 09, 2008)
John Ferguson Smart
JavaOne 2008 - geeky gadgets galore!

In his keynotes presentation, James Gosling showed an impressive range of Java-based tools, technologies and gadgets.   John Ferguson Smart
  (May 09, 2008)

James Gosling: Aiee!!
I don't know how some people manage to blog so much. Yesterday was another huge blur. A big chunk was rehearsing for my keynote this morning. It's kinda easy for me because it's mostly demos, and they're all wickedly cool. We added a new one late last night because some folks got something to work that was pretty magnificent. Drives the stage crew mad. ...
(May 09, 2008)
James Gosling: Wednesday at JavaOne: what a ride!
Yesterday was totally packed. Absolutely no rest for the wicked :-) Lots of great interactions with all sorts of folks, some in organized meetings, but most just random chats in the hallways. I love the energy that is everywhere. ...
(May 08, 2008)
John Ferguson Smart
JavaOne 2008 - towards user interfaces that rock!

Enhanced user experience is a key theme coming out of this year's JavaOne. There are countless sessions on innovative technologies such as JavaFX, the Google Web Toolkit, Comet, and Android. All of these have in common that they are...   John Ferguson Smart
  (May 08, 2008)

Ron Hitchens
Hehe, 3-D Stuff Is Cool

Now with 50% more dimensions that 2-D   Ron Hitchens
  (May 08, 2008)

James Gosling: What a day...
First things first, a couple of things to check out: ...
(May 07, 2008)
The Lightweight U I Toolkit
A Swing-like toolkit for mobile devices that you can have today. (May 07, 2008)
Slides for the “High Resolution Monitors” BoF session
We’ve just finished presenting our Birds-of-Feather session on high resolution monitors. Thanks to everybody for coming at such a late hour, and thanks to Mike for presenting this session with me. To all of you who attended but want to see the slides once again, and to those of you who couldn’t attend, here are [...] (May 07, 2008)
Joshua Marinacci
JavaFX.com

We launched JavaFX.com today. I'm very excited about this site since I was personally involved in putting it together. We have videos of the JavaFX demos from each keynote as well as explanations of what JavaFX is, where you can...   Joshua Marinacci
  (May 07, 2008)

Christian Frei
RIA, RIA, RIA...

javaone, jazoon, java, ria, jazoon cutting-edge, android, Rich Green, Jonathan Schwartz   Christian Frei
  (May 06, 2008)

Qusay H. Mahmoud
Hybrid Apps with JavaFX

If you ever wanted to be able (or enable your customers) to drag a running app off the browser onto the desktop, Java FX will help you...   Qusay H. Mahmoud
  (May 06, 2008)

Swing links of the week: May 4, 2008
Here are some Swing links that you might have missed during this week: Mikael Grev has announced release 3.5 of his MigLayout layout manager for Swing and SWT applications. He also has a technical session on MigLayout this week at JavaOne (TS-4928). Maxim Zakharenkov will present his Swing Explorer tool with Alexander Potochkin at JavaOne as well [...] (May 05, 2008)
James Gosling: The madness begins!
On Friday, Tommy came to visit Sun's offices in Menlo Park, and then did some driving around Sun's campus on Saturday. It's a new generation DARPA Urban Grand Challenge car that uses Solaris and realtime Java. He and his parents will be at JavaOne. ...
(May 05, 2008)
Stanley Ho: Updates on Modularity in the Java platform
There have been lots of exciting development and changes going on in the modularity areas recently.
(May 04, 2008)
Alexander Potochkin
RepaintManager's side effect

A little-known side effect of setting a custom RepaintManager or using RepaintManager.setDoubleBufferingEnabled() method   Alexander Potochkin
  (Apr 13, 2008)

John O'Conner
Character Conversion points

You'd think this sort of problem would be resolved by now, but it's not. It's still almost impossible to quickly and easily migrate an application from the too common default Latin-1 to UTF-8 character set encoding.   John O'Conner
  (Apr 13, 2008)

Harold Carr
Joint Sun/Microsoft J1 talk on Web Services

Kevin Wittkopf (Microsoft) and I (Sun) will be giving a joint talk on Java (using Metro and GlassFish) and .NET 3.5 interoperable web services at JavaOne. The blog entry gives the details.   Harold Carr
  (Apr 10, 2008)

Tim Boudreau is working on the Wizard API, an open source Java library that.
Tim Boudreau is working on the Wizard API, an open source Java library that: More... (Apr 14, 2008)
Swing links of the week: April 6, 2008
Here are some Swing links that you might have missed during this week: Jacek Furmankiewicz posted a series of three entries on builders for Swing layout managers. The first entry shows two prototypes for wrapping Mig layout manager in a Java builder, the second entry explores a more WYSIWYG approach (which looks like a simplified version [...] (Apr 07, 2008)
Joshua Marinacci
At the speed of JavaFX

As we all rush headlong into JavaOne prep someone (okay it was James Gosling) sent me an email about performance of JavaFX. Speed is a crucial issue for anything dealing with user interfaces, so we care deeply about performance in...   Joshua Marinacci
  (Apr 06, 2008)

Substance 4.3 official release
It gives me great pleasure to announce the official release for version 4.3 of Substance look-and-feel (code-named Nairobi) (Apr 14, 2008)
Swing links of the week: April 13, 2008
Here are some Swing links that you might have missed during this week... (Apr 14, 2008)
John O'Conner
John O'Conner: Call for participation: Internationalization and Unicode Conference #32

The Internationalization & Unicode Conference is the technical conference for software and web internationalization engineers. If you have a product that implements the Unicode standard or an idea that will help others work with this standard, share your knowledge.   John O'Conner
  (Apr 03, 2008)

Charles Ditzel: Java SE 6 Update 10 (Beta Early Access) Is Now Available
Beta of Update 10 of Java SE 6 is now available. (Apr 02, 2008)
Java Posse #176 - Roundup 08 - Why is Agile Hard?
Roundup 08 - Why is Agile Hard?Fully formatted shownotes can always be found at http://javaposse.com Superfriendshttp://en.wikipedia.org/wiki/Super_Friends  Unit Testinghttp://en.wikipedia.org/wiki/Unit_testing Parleys.comhttp://parleys.com Agility r (Apr 01, 2008)
Java 3D Open Sourced!
The Java 3D team has announced the open source release of the j3d-core and vecmath subprojects on java.net under the GPLv2 license with the CLASSPATH exception. This applies to all source code in the javax.media.j3d and javax.vecmath packages. Read the LICENSE.txt and README-FIRST.txt files in the top directory of each project's source code repository for details on what the license allows you to do.

You may notice that the web page and various README files now refer to the "3D Graphics API for the Java Platform" in many places. This is the official name for the open source version of the Java 3D API. Other than the name, there are no differences (and, in fact, we will build the binary version of Java 3D 1.5.2 from the same sources).

The name change was done for the same reason that OpenJDK chose a different name than "Java" for their release: namely, Java 3D is a trademark of Sun Microsystems, and we want to make it clear that: A) we are not giving away rights to use that name, and B) the binaries built from these (possibly modified) sources are not "Java 3D" from Sun.

Subject to the terms of the GPLv2 license, you may modify the j3d-core or vecmath sources, but you may not call it "Java 3D".

(Mar 05, 2008)

Java Posse #166 - Guillaume Laforge on Groovy
Interview with Guillaume Laforge on Groovy Fully formatted shownotes can always be found at http://javaposse.com This interview is also available in video form at http://parleys.com The actual interview video is: http://parleys.com/display/PARLEYS/A+Groov (Feb 28, 2008)
Kirill Grouchnikov
Kirill Grouchnikov: Translucent and shaped windows in core Java

Build 12 of JDK 6.0u10 has support for translucent and shaped windows!   Kirill Grouchnikov
  (Feb 27, 2008)

Teppefall Capture: From prototype to application
There is a lot of tricky logic in this application that is not so obvious just by looking at some screen shots. There are the delicious differences between Windows XP and Vista on how they deal with shared native libraries.... (Feb 27, 2008)
Java Posse #165 - Listener Feedback
Listener Feedback Special Fully formatted shownotes can always be found at http://javaposse.com Join us for the Java Posse Roundup 2008 in Crested Butte from March 4th to 7th http://www.mindviewinc.com/Conferences/JavaPosseRoundup/ And if you are attendin (Feb 25, 2008)
Kirill Grouchnikov: Swing links of the week: February 24, 2008
Here are some Swing links that you might have missed during this week: Daniel Spiewak walks through the steps of creating a simple form, from sketching the design on a piece of paper to implementing it in code. Personally, i felt that the recommendation to select the layout that the specific developer feels comfortable with is [...] (Feb 25, 2008)
Introducing Teppefall Capture
This application is still a work in progress, but I am tired of keeping it a secret so here is the dirt. Teppefall Capture is a simple Photo Booth clone. By simple I mean it is built on the FX/Layout... (Feb 24, 2008)
John O'Conner
John O'Conner: Java applets not viable for this application?

I've been working with a company that creates a chat system that helps companies sell more of their products online. The backend is all Java, complete with Spring, servlets...all good Java stuff. The frontend is...well, it's Flash.   John O'Conner
  (Feb 22, 2008)

Charles Ditzel: Swing Pointers Updated
Swing Pointers have been updated. The Swing Pointers are simply a collection of Swing-related events, tutorials, latest new, presentations, blog entries and articles that have transpired in the last few months. More... (Feb 20, 2008)
Kirill Grouchnikov: New painter types in Substance
About three months ago i wrote an overview of painters in Substance look-and-feel. Painters are one of the major building blocks of Substance, and over the last few releases they have been used extensively to provide consistent appearance to both core and third-party components. Unfortunately, the original painter design and responsibilities have not always stood [...] (Feb 20, 2008)
Michael Nascimento Santos
Michael Nascimento Santos: Making your components work nicer inside Matisse

Have you developed the killer component for your application, but it takes too long to load inside Matisse? Or worse - you face class loading errors since it has too many weird dependencies? Well, here is a small tip to make it work faster and without much hassle...   Michael Nascimento Santos
  (Feb 20, 2008)

Java Posse #164 - Newscast for Feb 18th 2008
Newscast for Feb 18th 2008 Fully formatted shownotes can always be found at http://javaposse.com Join us for the Java Posse Roundup 2008 in Crested Butte from March 4th to 7th http://www.mindviewinc.com/Conferences/JavaPosseRoundup/ And if you are attendi (Feb 20, 2008)
Kirill Grouchnikov
Kirill Grouchnikov: Flamingo 3.0 official release

The official release for version 3.0 of Flamingo component suite, including command buttons, breadcrumb bar, ribbon and file viewer panel.   Kirill Grouchnikov
  (Feb 19, 2008)

Romain Guy: What do you want to hear about?
Chet and I are going to present another installment of Filthy Rich Clients at JavaOne 2008. We have a bunch of cool ideas for techniques and demos we would like to show you but I am very interested in hearing what you want to know about. If you have any visual effect, animation or graphics [...] (Feb 19, 2008)
Joshua Marinacci
Joshua Marinacci: JavaFX Script Doodles, #2: a tabbed rectangle

Before I dive into my second doodle I'd like to mention the following Groodle. Allow me to explain. Andres Almiray saw my first JavaFX Doodle and decided to recreate it using the GraphicsBuilder syntax of Groovy; hence a Groodle! :)...   Joshua Marinacci
  (Feb 19, 2008)

Kirill Grouchnikov: Swing links of the week: February 17, 2008
Here are some Swing links that you might have missed during this week: Thierry Lefort joins the ranks of Swing bloggers and opens his blog with a slew of posts. The first entry talks about rendering bar charts in table renderers, the second one adds zooming capabilities to tables (with a very interesting zooming on selection [...] (Feb 18, 2008)
Alexander Potochkin
Alex Potochkin: JTrayIcon update

TrayIcon and JPopupMenu - will they ever be friends?   Alexander Potochkin
  (Feb 14, 2008)

Kirill Grouchnikov: Swing links of the week: February 10, 2008
Here are some Swing links that you might have missed during this week: Christopher Deckers writes about the new functionality in drop 0.9.3 of his DJ Native Swing project. The main focus is on the possibility to mix heavyweight and lightweight components with lightweight components on top, to change their Z-order or re-parent them. The new Metawidget [...] (Feb 11, 2008)
Geertjan: Beans Binding for Dummies
If you want to really understand "beans binding", i.e., JSR-295, you can study lots of documents. Alternatively, you can go through a small but very powerful demo, here. At the end, you have a bean, which has properties that you bind to Swing components. No coding at all, because the NetBeans tooling makes it a point-and-click experience.

At the end, and only a few clicks later, I moved the demo to the NetBeans Platform, installing it in the IDE's "output" window position. (I created a suite, which included two library wrappers, for the beans binding JAR and the original app JAR, together with my functionality module that provides the TopComponent, which creates the new window in the IDE.) Now, I can change the text in the JTextField below and then immediately the text in the ticker is changed. Why? Because the relevant property in the ticker bean is bound to the Swing component (in real life, when you run the app, the yellow banner with the blue text is moving from right to left, like a "ticker", such as is found on the bottom of the screen on CNN, for example):

Take my advice and follow the Ticker Demo and you too will find out what it's all about.

(Feb 10, 2008)

Java Posse #163 - Newscast for Feb 8th 2008
Newscast for Feb 8th 2008 Fully formatted shownotes can always be found at http://javaposse.com Join us for the Java Posse Roundup 2008 in Crested Butte from March 4th to 7th http://www.mindviewinc.com/Conferences/JavaPosseRoundup/ Grails 1.0 has been rel (Feb 10, 2008)
Igor Kushnirskiy
Igor Kushnirskiy: Scenario Webstart Extension

webstart extension is available for Scenario binaries.   Igor Kushnirskiy
  (Feb 09, 2008)

Alexander Potochkin
Alex Potochkin: Disabling Swing Containers, the final solution?

The elegant and effective solution for disabling Swing containers, the correct implementation of the locking GlassPane included   Alexander Potochkin
  (Jan 23, 2008)

Ben Galbraith: of Fonts and Java2D
A poorly-rendered typeface can really ruin my day. This entry describes my past and recent efforts to get beautiful type in my Java Swing applications. (Jan 25, 2008)
Kirill Grouchnikov: Is one of my Java desktop 2008 wishes coming true?
I had only two things on my Java desktop wishlist for 2008 - cross-platform support for H.264 / FLV formats and converters / viewers for competing markup formats. To quote myself on the second wish You know what i’m talking about - those pesky competitors that have 99.9% percent of the consumer-facing rich desktop market. Flash [...] (Jan 24, 2008)
Java Posse #158 - Newscast for Jan 9th 2008
Java Posse Episode 158 - January 9th 2008 Fully formatted shownotes can always be found at http://javaposse.com T-shirt is available -- http://www.zazzle.com/javaposse Roundup - only days left for the early bird price - sign up before January 15th or it (Jan 10, 2008)
Joshua Marinacci
How do I answer the question: What is Java?

Things are going well on the designer tool, but we won't have anything to show publicly for a while. I will tease you with the news that I just implemented the first version of a drawing tool assistant that you...   Joshua Marinacci
  (Jan 09, 2008)

Native text rendering in Swing applications - followup with Steve Northover
Following the last few entries on using SWT for native text rendering in Swing applications under the Substance look-and-feel, i was contacted by Steve Northover (technical lead of the SWT project) with a few suggestions. First, to recap the relevant entries up until now: The introduction showed a few screenshots of rasterizing the default Vista [...] (Jan 09, 2008)
New Tutorial : Using the SceneGraph API
There is a nice little tutorial on using the SceneGraph API. (Jan 09, 2008)
Hans Muller
Introducing the SceneGraph Project

An introduction to the new java.net SceneGraph project.


   Hans Muller
  (Jan 09, 2008)

Chet Haase
Been There, Scene That: Part 2

And now, for the stunning conclusion of my previous blog entry. In this week's exciting climax, we'll go over some of the new, cool elements in the scene graph animation engine and end with a discussion of what it all means (life, animation - all of that).   Chet Haase
  (Jan 09, 2008)

Swing links of the week: January 6, 2008
Here are some Swing links that you might have missed during this week: Luan O’Carroll writes about updates to the rollup bar component from the XUI framework. The functionality of the component seems to lie somewhere between the task pane container / collapsible panels of SwingX and the collapsed panels of docking frameworks. The links to [...] (Jan 07, 2008)
Rich Unger
Youtube player in JDIC browser

At Geertjan's suggestion, I tried his Youtube modules with my JDIC integration.  Worked out of the box, no problem.  I didn't have to change a thing.  Nice when that happens, eh?   Rich Unger
  (Jan 07, 2008)

Fractal flames #1
The Substance watermark pack comes with the functionality to generate fractal flame watermarks. While it takes considerably more time to create these watermarks (about 15-20 seconds on a decent machine), the visual results are certainly worth it, even outside the original goal of using the fractal flame images to add watermarking capabilities to Swing applications. [...] (Jan 06, 2008)
Painting vertical texts with subpixel anti-aliasing
Sometimes, the application design requires displaying vertical (rotated) texts. While this is not a common requirement, and the usage of vertical texts must be kept to the absolutely minimum, one should be aware of the possible technical solutions and the problems associated with them. This entry shows two possible solutions, accompanied by the screenshots and [...] (Jan 05, 2008)
Chet Haase
Been There, Scene That

Part 1 of a two-part article on the animation engine in the Scene Graph project. A moving tale.   Chet Haase
  (Jan 04, 2008)

Substance theme pack updated
In addition to about twenty core Substance themes, the theme pack plugin provides even more themes to create a unique look for your Swing applications. When you put the binary plugin in the classpath, the additional themes become available in the getAllThemes() API, and you can use them just like any other core theme. As part [...] (Jan 04, 2008)
JavaFX Script and a New Key Animation Framework
JavaFX Script is getting a more comprehensive Key Animation framework. More.... (Jan 03, 2008)
Java Posse #157 - Holiday Special
Holiday SpecialFully formatted shownotes can always be found at http://javaposse.com Join us for the Java Posse Roundup 2008 in Crested Butte from March 4th to 7th and be a part of sessions like this yourself! http://www.mindviewinc.com/Conferences/JavaPo (Jan 03, 2008)
Native text rendering in Swing applications - ready, steady, go!
The subject of native text rendering in Swing applications has been introduced on this blog about six weeks ago, and I already described some of the implementation details. The devil is, of course, in details (unless you’re working on whizzy demoes), and i’ve spent the last month working on all the issues mentioned in the [...] (Jan 02, 2008)
Cay Horstmann
The OLPC and Java

I got myself (and another deserving child somewhere out there) a "One Laptop Per Child" for christmas. Here is my experience with Java on the device, followed by some year-end musings what this all means.   Cay Horstmann
  (Dec 31, 2007)

Swing links of the week: December 30, 2007
Here are some Swing links that you might have missed during this week: Nazmul Idris has created a tutorial on SwingX painters. The painters generated quite a lot of heated discussion and development about half a year ago, and there were passionate talks about restructuring the entire Swing painting pipeline around the painters. It seems that [...] (Dec 30, 2007)
Resource : JavaPolis JavaFX Session (PDF)
James Weaver has made his Javapolis session (PDF) available. More... (Dec 30, 2007)
Alexis Moussine-Pouchkine: Yet Another Successful JavaPolis

JavaPolis is over and it was yet another great event. I've had many people tell me they liked it more than JavaOne. It must be either the comfy theater chairs or the size of the conference (easy to talk chat with speakers and conference attendees).

It must be a habit of releasing NetBeans versions for JavaPolis (4.0 in 2004). This time NetBeans 6.0 is really here and what a distance between those releases!

My GlassFish presentation went well, very well even given I had totally crashed my aging laptop two hours before I started. Good thing I had my presentation on a USB stick and that the GF download was reasonable in size. As Jean-François wrote, the audience was good (the competition was pretty stiff) and people stayed throughout the presentation and there were some interesting questions after the talk. The startup time of the current v3 drew some nice "wow" 's and applause which I almost did expect (I'm must be spoiled after showing this too many times ;-).

Of course I met a lot of people and I'm not even going to try to name them all. I have to say that I was very pleasantly surprised to see the attendance in talks such as Java EE 6, EJB 3.1, and JPA 2.0. They were really crowed. Spring seemed less present than previous years and there was no BEA in sight (they used to be one of the main sponsors).

Finally, it was great to see Neal and Josh on stage together, but it seems the agreement didn't last long.

(Dec 18, 2007)
Laird Nelson
Laird Nelson: Useful Swing Thing #1

The first of (hopefully) a series of quick, useful Swing tips.   Laird Nelson
  (Dec 17, 2007)

Kirill Grouchnikov: Swing links of the week: December 16, 2007
Here are some Swing links that you might have missed during this week: Dave Gilbert of JFreeChart project follows in the footsteps of Google Chart and provides a servlet that generates embeddable chart images for web applications. While not strictly relevant to Swing, it employs the same approach as outlined by Jacobus Steenkamp in this article [...] (Dec 17, 2007)
Kirill Grouchnikov
Kirill Grouchnikov: File viewer panel control for Swing applications

This entry shows the capabilities of file viewer panel control from the upcoming version 3.0 of Flamingo component suite project.   Kirill Grouchnikov
  (Dec 15, 2007)

Project SceneGraph Unveiled (Presentation) - Updated
A new project that enables scene graphs in JavaFX Script and Java (more generally) is now available. Check out the presentation...


(Dec 11, 2007)
Alexander Potochkin
Alex Potochkin: Making A Rainbow: Spotlight effect and soft clipping

Detailed tutorial on implementing advanced effect for the our J1 session's demo...


   Alexander Potochkin
  (Nov 29, 2007)

Kirill Grouchnikov: Substance animation primer
Lately, there have been quite a few postings on the mailing list of Substance look-and-feel that ask how to change the default animation settings. This can be required for a number of reasons, including performance speedup and proper effects on custom application renderers. Following in the footsteps of the painter primer and skinner primer, the [...] (Nov 29, 2007)
Jan Haderka
Jan Haderka: SwingX in central maven repository

SwingX version 0.9 and 0.9.1 have been uploaded to central maven repository.   Jan Haderka
  (Nov 28, 2007)

Invitation: Java Mobile & Embedded Developer Days
Are you a mobile application or platform developer and interested in connecting with other developers to share ideas, best practices, and technical know-how? Join us at Sun Microsystems in Santa Clara for a mini-conference, January 23-24th.


James Gosling will be delivering the keynote.

  • Two-day immersion in mobile and embedded Java technology with an information-packed agenda
  • Networking and brainstorming opportunities
  • Access to the entire conference program and all sessions
  • Access to archived sessions and content after the event (subject to technical and organizational limitations)
  • Continental breakfast and box lunch each day
(Nov 21, 2007)
Jan Haderka: SwingX 0.9.1 released
It is barely a month ago that I announced the SwingX 0.9 release. Since then SwingX has seen renewed interest from users and some major work done on the backlog by its commiters. Due to this and due to the fact that we have managed to fix about 75 issues within last month, I'm happy to announce next release! (Nov 20, 2007)
Geertjan Wielenga: Filthy Rich Clients: The Book Review
It's been a few months since the release of Chet Haase and Romain Guy's "Filthy Rich Clients: Developing Animated and Graphical Effects for Desktop Java Applications". The cover of my copy of the book is bent and buckled, the edges of the pages are frayed, bread crumbs and chocolate smears have enriched its pages, and there are multiple bookmarks peeking out at various angles... perhaps the time has come to pass judgement on its content.

(Nov 14, 2007)

Cafe au Lait : Apple has posted a developer preview of Java for Mac OS X 10.4, Release 6 on the Apple Developer Connection (first born child required).
Apple has posted a developer preview of Java for Mac OS X 10.4, Release 6 on the Apple Developer Connection (first born child required). This release updates the Java on Mac OS X Tiger to versions 1.5.0_13 and 1.4.2_16. Still no sign of Java 6. :-( (Nov 14, 2007)
Kirill Grouchnikov: Flamingo component suite 3.0 - the teaser
There hasn't been a lot of new content on this blog over the past three weeks, and this entry is just to keep you in sync with what you can expect from the next development drop of the components in the Flamingo component suite. Here is a partial screenshot of the controls (ribbon, buttons and galleries)... (Nov 13, 2007)
Chet Haase: Submit a JavaOne Proposal NOW!
Tick, tick, tick.... The JavaOne Call for Papers closes on November 16th. It's only an abstract. Just one little abstract. And it's free! Come on - you can do it... (Nov 07, 2007)
Kirill Grouchnikov: Substance skinning primer
As Substance look-and-feel nears the official release 4.1 (scheduled for November 12th), i’m working on the missing documentation. This entry talks about the using the painter layer to skin custom components. As mentioned in the painter overview, most of the Substance painting logic is abstracted into a set of painters. This not only allows preventing duplicate [...] (Nov 07, 2007)
Alexander Potochkin
Alexander Potochkin: Debug Swing repainting

Implementing a nice visual indication during repainting of Swing components   Alexander Potochkin
  (Nov 06, 2007)

Fabrizio Giudici
Fabrizio Giudici: Next talks about NASA World Wind and other geographic tecnologies

In the latest months I've presented blueMarine at a lot of conferenced and meetings, so now I'm going to change a bit the focus (but don't panic :-) blueMarine will be again at the center of a JavaPolis presentation). The...   Fabrizio Giudici
  (Nov 04, 2007)

Michael Grev: MiG Layout 3.0 (Free Swing/SWT Layout Manager)
MiG Layout is for Java developers writing GUI layouts by hand that wants simplicity, power and automatic per platform fidelity. If you are dissatisfied with the current layout managers in Swing and SWT, MiGLayout solves all your layout problems.


Unlike JGoodies' FormLayout and Clearthought's TableLayout - MiGLayout solves all your layouts with equal ease in a way that is easy to change and maintain. You will understand how the layout will look like when looking at the code.


Version 3.0 adds better and more automatic support for Resolution Independence. It also fixes all known bugs.


Visit the MiG Layout Site where you can find Web Start Demos and full Documentation. (Nov 05, 2007)

JavaOne Conference 2008: Call for Papers
It's that time again! The deadline is November 16, just around the corner. (Oct 31, 2007)
Product Update: Colorspace 1.7
(Nov 05, 2007)
Kirill Grouchnikov: Swing links of the week: November 4, 2007
Here are some Swing links that you might have missed during this week: Jan Erik Paulsen is working on a new RIA tool named Amanda. Some nice screenshots that use the Titanium look-and-feel that is based on Substance. The release notes for Java 5 on Leopard include a few new client properties that can be used to [...] (Nov 05, 2007)
Kirill Grouchnikov: Overview of Substance painters
As Substance look-and-feel nears the official release 4.1 (scheduled for November 12th), i’m working on the missing documentation. This entry talks about the painter layer in Substance. Painter encapsulates a common painting logic. For example, in Substance, selected elements in lists, tables, trees and menus are painted with the same gradients. So, instead of replicating this [...] (Nov 04, 2007)
Joshua Marinacci
Joshua Marinacci: My First Screencast: Visually build an RSS reader using NetBeans 6

In this screencast I will show you how to use a simple RSS reader bean to build a feed reading application with almost no code. The screencast is 12 minutes long, but I could build and deploy the app in about 4 minutes if I wasn't talking. That's how productive NetBeans 6 can make you.   Joshua Marinacci
  (Nov 02, 2007)

Jayson Falkner
Jayson Falkner: Building a Java applet-based game -- why don't we see more of them?

My younger brother and I decided to try and make a viral video game. The sort of game that can suck hours away from your life. The type of game that passes the boring times at work. The type of game that normally seems to be coded in Flash.... Here we'll document how successful Java seemed to be in making this game.   Jayson Falkner
  (Nov 02, 2007)

Julian Doherty: Still no Java 1.6 on Mac OS X Leopard

Leopard is out, and most development based news sites are abuzz with the scandal that OS X still doesn't support Java 1.6

Don't have much to add to the flames, except to say I called it.

(Nov 01, 2007)
Ben Galbraith: More on Leopard's Java 1.5: The Release Notes Michael Urban Should Have Read
A journey through OS X 10.5 Leopard's release notes shows some pretty interesting tidbits. (Oct 31, 2007)
Charles Ditzel: JavaFX Script Second Tutorial, Groovy, Apple and NetBeans 6 GPLv2
There is a bunch of stuff happening. For starters, James Weaver's second tutorial on JavaFX Script is out. There are two new Groovy intro tutorials and Apple has caused a firestorm amongst Java developers. Finally - NetBeans 6 has been GPLv2'ed. (Oct 30, 2007)
Kirill Grouchnikov: Why i don't care about Java 6 on Leopard
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 [...] (Oct 29, 2007)
Kirill Grouchnikov: Java desktop wishlist for 2008
While the Java blogosphere is raging with debates on closures, properties and other negligible language-level features, the client-side battle is still fought between Microsoft, Adobe and Apple. And while finally Sun decided to step in with JavaFX and improved applet handling, this will change little without the tools for content handling. (Oct 26, 2007)
Patrick Keegan
Patrick Keegan: Binding JComboBox and Getting a Reasonable Display Value

Just a few days after I published my first major foray into explaining Beans Binding in NetBeans, I received some feedback asking how to populate a JComboBox with reasonable display values from a data source. I had been wondering the same thing. With the help of Honza Stola (explanation plus code snippet) and the trusty Beans Binding Javadoc (available from NetBeans by choosing Help > Javadoc References > Beans Binding), here's my stab at it.   Patrick Keegan
  (Oct 26, 2007)

Swing Sighting: Paralog
Paralog is the world's leading skydiving logbook and flight analysis software made by skydivers for skydivers. Paralog downloads jump details from most electronic freefall loggers. Paralog also supports direct downloads from most GPS units.


(Oct 26, 2007)

Chet Haase: Move It!
Introducing Animated Transitions, a new library for the easy creation of animated segues between application states. Begin here, but then check out the java.net article and project sites, and then go use the darn thing. (Oct 23, 2007)
Kirill Grouchnikov: Better visuals for the JRibbon component, part I
I;s been more than two years since i first started working on all-Java version of the Office 2007 ribbon component (see part 1, part 2 and part 3). Since then, there have been quite a few visual improvements in the Substance look-and-feel... (Oct 23, 2007)
Swing links of the week: October 21, 2007
Here are some Swing links that you might have missed during this week: A three-part series by Eric Burke on do' and do not't of scroll panes. Read part 1, part 2 and part 3. A good rule of thumb would be to never use scroll panes for wrapping UI controls. Only use them for wrapping... (Oct 22, 2007)
Shannon Hickey: Beans Binding 1.1.1 Beats 1.0's Butt, Bigtime
Shannon Hickey announces the 1.1.1 release of Beans Binding, with a drastic increase in performance. (Oct 19, 2007)
Ken Russell on the new Java Plugin
After we posted about the news that Sun has rewritten the browser Java plugin system, we got a chance to sit down with the lead engineer on the project, Ken Russell... (Oct 18, 2007)
Dummy' guide to drawing raw images in Java 2D
A couple months ago I signed up to do a presentation on concurrency for the St. Louis Java User Group, which happened last night. I wanted to explore a bunch of techniques and issues but stick to one domain, so I chose generation of the Mandelbrot set, just for fun. It takes me way back [...] (Oct 12, 2007)
Charles Ditzel: OpenJFX Compiler : Tom Ball Talks About the JavaFX Script Compiler
A JavaFX Script compiler will change the performance characteristics of JavaFX Script. There is a nice interview with Tom Ball of Sun where he talks about it. More.... (Oct 12, 2007)
Apple's removed the Java 1.6 preview form the Apple Developer Connection, possibly because they expect to ship it with Mac OS X 10.5 Leopard in a couple of weeks, or possibly because they've decided n
Apple's removed the Java 1.6 preview form the Apple Developer Connection, possibly because they expect to ship it with Mac OS X 10.5 Leopard in a couple of weeks, or possibly because they've decided not to ship it at all. With Apple, it could go either away. (Oct 16, 2007)
Kirill Grouchnikov: Swing links of the week: October 14, 2007
Here are some Swing links that you might have missed during this week: A very informative posting on the AppFramework mailing list from Hans Muller that includes advice by Shannon Hickey on handling uncaught exceptions in EDT. There are three alternatives, none of them providing a complete solution (unfortunately): Toolkit.getSystemEventQueue.push() with a custom event queue. The “sun.awt.exception.handler” [...] (Oct 15, 2007)
Kirill Grouchnikov: New Creme Coffee skin for Swing applications
Just before the feature freeze of Substance 4.1, i added a new Coffee Cream skin that is based on the existing Creme skin and the Ubuntu’ish brown active theme. If you want to take it for a spin, click on the WebStart button below and change the skin to Coffee Cream from the “Skins” menu: To [...] (Oct 15, 2007)
Kirill Grouchnikov: Getting ready for the Substance 4.1 feature freeze
Over the past releases of Substance look and feel I found that it helps to have a well-defined release lifecycle and schedule. The usual cycle for a minor release is 12 weeks long, with last two weeks being the release candidate stage and the two weeks before that (a month before the final release) being [...] (Oct 12, 2007)
Mark Reinhold: Publishing code reviews
One of the engineering practices that’s served the JDK development team well for many years now is that of peer-based code reviews. What’s the most expedient way to enable any OpenJDK contributor to publish code-review materials on the open web for all to see?
(Oct 11, 2007)
Alexander Potochkin
Alexander Potochkin: Why I don't use Swing hacks (continuation)

Overview of hacks in validation overlays implementations   Alexander Potochkin
  (Oct 09, 2007)

Alexander Schunk: Java 6: Update N Nice but
I have tried the Update N of Java 6 today and rated it with 2. 2 because i was not able to get the Nimbus look and feel running on my Win XP machine (Oct 09, 2007)
Teppefall Labs: SVG and Darkstar FX
I have been playing a little with Kirill's SVG to Java transcoder and then manually converting the Java code into Javascript based Darkstar FX renderer's. Very tedious, but good fun nevertheless. I had less success with the SVG to JavaFX... (Oct 09, 2007)
Geertjan: Marilyn in a J2SE TreeTableView
At the end of yesterday's blog entry, hilz asked about multiple nodes in a TreeTableView... (Oct 08, 2007)
Kirill Grouchnikov: Rainbow 1.1 - SVG browser for remote SVN repositories
The new version of Rainbow SVG browser is available. Now you can browse remote SVN repositories with regular and compressed SVG content. (Oct 08, 2007)
Juan Carlos Herrera