Java desktop spotlight – interview with Elie El Khoury of Woopra

December 29th, 2008 | 5 Comments »

Woopra desktop client is my favorite Swing application of the year, and it’s time to meet its creator – Elie El Khoury, as the Java desktop spotlight that has started with Don DeCoteau and Sam Berlin continues.

Tell us a little bit about yourself.

Elie Khoury - Photo by Sara SfeirMy name is Elie El Khoury, 23 years old. I live in the ancient city Byblos of Lebanon. Programming has been my hobby for more than 10 years. I was introduced to Java 5 years ago at the Lebanese American University which was the first university in Lebanon to teach Java as a main language.

I love Graphical User Interfaces and Graphic Design, that’s why I switched to Mac. I run a personal blog at http://www.ekhoury.com that I maintain in my free time.

Besides computing, I’m a guitarist. I taught Blues Guitar and Jazz Theory and was part of a couple of bands.

What is your “elevator pitch” for Woopra?

woopra1Woopra is a web tracking and analytics service for bloggers and online businesses. It’s a Swing based desktop application that shows you what’s happening on your website in real time. Unlike other analytics services, you don’t need to refresh pages to get updates, you see instant statistics on a TV like interface.

What’s even cooler about Woopra is the Instant Notifications. A website owner can setup as many notification filters as they want and get notified as they occur. There are infinite filters combinations you can setup for all kinds of actions that might occur on your website!

Fore more information about Woopra, visit our a little bit outdated features page on the Woopra website.

In the age where browser-hosted solutions are mature enough to provide rich user experience, why did you decide to use Swing for the main Woopra client?

It’s true that the browsers today can handle very rich applications, but we cannot forget that the limitations are still endless and the browsers were never meant to handle heavy weight client applications like Woopra.

Before starting the development of Woopra, it was a very tough decision to take. The only advantage for having a web based application is the accessibility. You don’t need to download the Woopra application as you go, but our clients are the kind of people who carry their laptops (they are webmasters), so I would sacrifice accessibility for the different advantages provided by a desktop application (Desktop notifications, sockets, cross-domain connections, load on startup, sit in systray, reliability, speed, more interaction etc…).

I believe the browser is not yet ready to handle apps like Woopra. We all know how much time it takes to create an application that looks the same on IE6 and Firefox, is it worth it? But if I was to work on a Facebook like platform, I’d definitely go for a browser based solution because users would need to access it on public computers.

To add something, check out Twitter! Everyone is using a desktop application to tweet, this is another proof that people enjoy the desktop based experience much more.

As for why Swing not .Net for example? My simple answer is that I adore Swing and Java in general, and of course, the need to create a cross platform application.

Why do we not see more Swing-based user facing applications?

woopra2I believe it’s because the unattractive look and feel provided by Sun. Performance is no longer an issue with today’s hardware, but people want to see good-looking things. Adobe Air has done it correctly. You cannot make an ugly application with Adobe Air because they provide you with amazing UI Kits. With Java, it’s very easy to come up with a very ugly application, but what they don’t know is how much Swing is customizable.

Sun should consider working on the “Look and feel” aspect more in Swing. JavaFX is one solution but not the ultimate for Swing lovers.

What are Swing’s weak points?

Swing’s weak points are not many. But I would say that AWT is better in terms of native dialogs. I prefer the FileChooser instead of the JFileChooser because AWT’s is native. Also, the Anti Aliasing is really weak in Java. It looks different from a platform to another. Adobe Air has done it better!

Not to forget the look and feel, that is the major weakness of Swing.

What functionality is missing from core Swing, and would you want to see third-party libraries folded into the core distribution?

The JWebPane of course as mentioned by Sam Berlin of LimeWire. I’m glad they are working on it and have chosen the WebKit renderer. But I don’t believe we will be able to use it before a year of its release unless they provide it as a standalone API. People using PowerPC cannot even run Java 1.6 applications yet, we had to downgrade the application to work with Java 1.5 which is missing a lot of new interesting features like SysTray and more desktop tools.

What I’d like to see more with Swing is the window transparency for example, and the ability to create windows with custom shadows and rounded corners. ( I think that’s is now available with JavaFX).

Another interesting missing feature is the blinks in the task manager and the bounces in Mac OS X. There should be a simple function for the JFrame to do that.

One last missing feature in Swing and DesktopTools is the ability to change the screen insets. I would love to create an always on top floating window on the right just like Windows Vista’s Sidebar. I can imagine Woopra on the sidebar and always on top, showing live stats without intruding on other application (This is doable at the moment but we cannot change the screen insets). That would be awesome.

Woopra client has great responsiveness and excellent non-intrusive animations. How easy was it to code this functionality in Swing?

Almost 99% of the components you see in Woopra extend JComponent. I spend most of my time painting components. I spend sometimes hours testing colors, gradients on a simple simple button. Graphics2D is an amazing class that allows you to create whatever you need for your application. I didn’t really rely on the Swing components, I created my own layouts, buttons. You can easily notice that all the components are selfmade.

Do you have any plans to extract the Woopra skinning layer to a standalone look-and-feel library?

No, since I’m extending swing not skinning it.

Woopra client looks like a perfect candidate to be ported to JavaFX, the new direction of client Java. What are your thoughts on this topic?

I haven’t explored JavaFX a lot yet but I think it’s too late now to switch to JavaFX. I’d rather have more control over the animation and drawing. Swing is really huge and I’m learning more and more everyday about that package. I’m afraid Sun would consider JavaFX as Swing 2 and stop their core swing development. JavaFX and Swing should be parallel projects.

Anything else that you would like to add?

woopra3I’d be happy to develop Look and Feels for Swing, but I wish there are enough documentation on the web to do so.

Woopra 1.3 is close to be released which is more interactive, attractive, fast and optimized.

I want to thank you for interviewing me and I want to salute the other people behind Woopra today: Jad Younan, John Pozadzides, Vi Kim Vu, Lorelle VanFossen and Chris Patton.


Related posts:

  1. Java desktop spotlight – interview with Sam Berlin of LimeWire I’ve talked about LimeWire in the latest installment of Swing Links of the Week, and...
  2. Java on the Desktop, the past, the present and the future – interview with Richard Bair In this interview Richard Bair answers my questions on Swing, SwingX, JavaFX and Java on...
  3. Java on the desktop I’ve said before that the customers don’t care about the technology. To a certain extent,...
  4. Desktop, browser and RIA – interview with Chet Haase Chet Haase is a well-known figure in the graphics community. Join him as he talks...


5 Comments on “Java desktop spotlight – interview with Elie El Khoury of Woopra”

  1. 1 Thierry Lefort said at 7:04 am on December 30th, 2008:

    I have to react to : “I’m afraid Sun would consider JavaFX as Swing 2 and stop their core swing development.”

    SwingX has proved that yes Swing can be improved but backward compatibility is a pain and a major limit the possibilities of extension especially on the JTable. Look at the implementation of the JXTable lots of hacks were necessary …

    JavaFX don’t have those boundaries. For now it’s hard to know how it will evolve but it is clearly the (only?) place where Swing 2 can be built.

    Remember the interview of Richard Blair on this blog :
    “To those people who say we should make a Swing2 which is not backwards compatible, I would say, this is exactly what we’re doing with JavaFX.”

  2. 2 Gregg Bolinger said at 9:16 am on December 30th, 2008:

    This is interesting:

    “Almost 99% of the components you see in Woopra extend JComponent. I spend most of my time painting components. I spend sometimes hours testing colors, gradients on a simple simple button. Graphics2D is an amazing class that allows you to create whatever you need for your application. I didn’t really rely on the Swing components, I created my own layouts, buttons. You can easily notice that all the components are selfmade.”

    How is that alone not a mature weakness of Swing? That it doesn’t provide components and layouts that can be used to create great applications that look great? I mean, its great that the flexibility is there but not everyone should have to have a PHD in Swing engineering to create a good application.

  3. 3 Developer Dude said at 1:11 pm on December 30th, 2008:

    Gregg,

    The fact that Elie chose to make his own layouts and spend so much time on custom components does not mean that Swing is not mature. Apparently he wanted a certain L&F that Swing did not provide. He would have had to do the same with any other GUI framework that didn’t have that particular L&F.

    Sun has made some real progress in matching the native L&F of most platforms, but you rarely see Swing programmers use them – usually they use Metal or some other non-standard L&F, and they don’t seem to take the time to polish the app with properly designed layouts and standard behavior/positioning, etc. – hence many Swing apps are clunky in the least, and some are downright ugly.

    Unless there is a really good reason, a Swing desktop app should be indistinguishable from a desktop app using a native GUI framework. It isn’t that hard to do (BTDT). Along those lines, I would be interested to hear what business reasons Elie had from designing an app with a non-standard L&F. Why the weird colors? Does a gradient in a button really add anything with respect to usability? It’s an analytic tool, not Winamp.

    I do agree about JXTable/SwingX. I’ve used a few SwingX components (the tree table implementation among others), and while they had most of the functionality I needed, the underlying code and behavior was at times best described as ‘quirky’.

    I also agree that web apps and web app frameworks have a long ways to go before they can even approach what a simple Swing desktop app has been able to do for years – and right now it is really hard to get the same behavior/layout on even the 3 or 4 core browsers – not to mention that it takes much longer to develop it.

  4. 4 Elie El Khoury Interview Featured on PushingPixels.com - One Man’s Blog said at 10:25 pm on December 30th, 2008:

    [...] now those of you who think of me as a neophyte can head on over to PushingPixels.com and read the interview with Elie in which he talks about the development of the Woopra client. [...]

  5. 5 Woopra » Blog Archive » Woopra Co-Founder, Elie Khoury, Interview with Pushing-Pixels said at 9:55 am on January 8th, 2009:

    [...] John Pozadzides of One Man’s Blog spotlighted an interview with Woopra co-founder Elie El Khoury on PushingPixels. [...]