Feb 25

Swing is still drowning, and how it will be hard to get some air

Java, Tech with tags: 21 Comments »

I have had several people comment on my view of Swing, where I claim it is drowning. Now some news is out in the public, I thought I would give more detail to my post.

Chet Haase came out telling people that he is now going to be creating Filthy Rich applications with Flex. His blog will be very interesting for Java developers who are interested in the switch as he himself learns the nuances of Flex, after many years in the land of Swing.

The core problem is that Swing hasn’t been updated much over recent years, especially in the area of productivity. Other companies are pushing the industry on giving you the appropriate tools for developing great user experiences, on their own platforms, and on the Web. This has never been a big push for the higher ups of Swing. Animations and flashy graphics have been relatively hard, even with some great work from the people within Swing.

So, Swing has been crawling along, and other platforms have been moving a lot faster in ways that matter. You could argue that JavaFX is a way to approach these issues, but is it too late? Also, people still equate JavaFX to JavaFX Script, and ignore the fact that you can do a lot of good graphics work in plain old Java.

If you keep going higher, you see that Sun is a hardware company that sells servers. They may have recently renamed the stock ticker to JAVA, but that doesn’t mean that they understand software. Within software itself, Sun hasn’t proven to do a great job on the client. Java on the client is a second class citizen.

Compare this to the competition. Chet moved to Adobe, and I am at their Adobe Engage event as we speak discussing their new Air 1.0 / Flex 3.0 launch.

  • Adobe develops platforms: PDF, Flash, Air
  • Adobe develops client software: Photoshop, Acrobat, Thermo, etc.
  • Adobe is investing in having its own applications running on its platforms

They are doing this slowly. Photoshop on the Web will probably take a little bit of time, and there is a lot of work thinking about the business models, moving to services vs. shrink-wrap, for example.

Then you take Microsoft, who obviously both build the platform and many applications. Ditto for Apple. Sun is the odd one out here.

Oh, and I haven’t even gotten to the Web platform, and how a huge number of people just want to migrate over there.

The fact that Sun doesn’t developer client software and isn’t investing half as much in Swing as the other platforms are make me conclude that without a huge turn around, Swing is drowning.

Feb 20

Swing is drowning

Java, Tech with tags: , 22 Comments »


Sun needs to do something drastic else Swing will drown. Although many people tease about the complexity of Swing, it does do a lot of things right.

Unfortunately the ship has not turned fast enough to reach its potential, and it is losing the race fast to the Web, Air, and WinForms.

Sun seemed to put its might into JavaFX and left Swing itself with a skeleton crew that I feel sorry for. A lot of the top Swing folk have actually left. Some for Google, and some for Adobe.

How many people do you think are working on the Swing core? I bet you would be shocked. I think that more people live at Ben’s house :)

How many young developers do you hear jumping into Swing development? The “cool” factor isn’t there. It is all about the Web and Air. The Air development team is growing fast.

Who can save Swing? Sun needs to put its hands in its wallet, but it doesn’t appear to be doing anything other than hoping that JavaFX can compete. Ouch.

Update: I got a lot of emails and comments on this, so I have written up more thoughts on my reasoning.

Feb 19

JSF Coding Standards

Comic, Java, Tech with tags: 2 Comments »

JSF Coding

It is fun to see the comments on the Joint Strike Fighter coding standards documentation from AT&T.

Mostly people are arguing over recursion in C/C++ and embedded devices.

I had the same thought as OMouse though: “Why aren’t they using Ada?”

Feb 12

Interview Day: Java

Comic, Java, Tech with tags: 3 Comments »

Interview: Java

Write a Stack class… and a full suite of tests without IoC

What about the other languages?

Got some good ones for other languages like Fortran, BASIC or assembly?

Feb 04

Bill Burke wants to get rid of Java!

Java, Tech 12 Comments »

Bill Burke jumped onto the computer after a painful last few minutes of the superbowl to tell us how he could be done with Java:

I also do not believe that Java is the end all, be all of existence.

He thinks that a new Java needs to come around and it must have the following features:

  • Be typesafe, statically typed
  • Have an IDE that supports the same features as modern Java IDEs
  • Have a rich set apis and libraries to build my applications from
  • Have a viable commercial ecosystem
  • Have a vibrant open source community.

If Java is to stay around it “needs elegant, typesafe closures to complement annotations as a way to implement DSL. It needs a standard, non-code generating way of adding behavior to annotations. It needs a structural syntax to make initialization easier. AOP support might be nice too, or at least JVM support to make it easier to implement AOP-like features. Better zero-turnaround development features in both the JVM and APIs like Java EE, Seam, Hibernate, Spring, and JBoss AS would help out tremendously as well.”


Ok, ok, what am I doing here?

After listening to the political commentary this “season” for what seems like an eternity, I decided to see how I could turn around something that someone said and make the opposite point.

Bill was actually ranting against dynamic languages and FOR Java. Just like certain benchmarks, it is easy to take things out of context and paint a different picture.

Bill, the result must have been hard to take, but you did have a fantastic season.

Jan 30

Rotating Java and JavaScript on the Server

Ajax, Comic, Java, JavaScript, Tech 24 Comments »

Rotating Java and JavaScript on the Server

I was chatting with someone about how, in 2008, you could build an application with GWT on the client side, and Rhino on Rails on the server side, and how that would mean flipping the roles of Java and JavaScript. Of course, this would be a flip BACK to the past:

Netscape LiveWire enables developers to create, modify, and maintain online sites and applications through a simple drag-and-drop, point-and-click environment. The environment uses the Java programming language and a Java-based scripting language to enable developers to create and execute Live Objects, or interactive multimedia content, within their applications.

Jan 25

Of Fonts and Men

Java, Tech with tags: , , , 2 Comments »

I am font overloaded.

First, I kick on a movie on type faces, Helvetica. Just imagine for a second this exchange with the wife:


It was actually interesting to see the designer types say exact opposite things about the font, the art of typography, and design:

Then, Ben goes and writes about Of Fonts and Java2D in which he picks apart pixels, as he is want to do.

He lists some of his favourites, starting with the Helvetica wannabe, Arial:

Good to see you blogging again Ben, and why wasn’t Helvetica on your favourites? :)

Jan 25

The Consultants: Mavenization

Comic, Java, Tech with tags: , , 7 Comments »

The Consultants: Mavenization

Jan 21

The “killer app” phenomenon

Java, JavaScript, PHP, Tech 3 Comments »

Cedric is talking about the killer app phenomenon as it related to programming language. Of course, the term killer app doesn’t quite fit so well with languages, but the abstract concept is “reason it hit a tipping point”.

For Java it wasn’t the Applet as Cedric pointed out. I think it is a mix of:

  • No more memory management (language feature)
  • C like (not a huge leap)
  • JVM worked OK on the server side (although a bit crap at first, ended up becoming top notch)

For PHP though, I think it is much clearer:

  • Deployment. PHP was built for the Web. Remember how painful Perl was back then? PHP fit the jump from CGI to “oh, to do rich dynamic stuff we can’t fork() every time”. PHP was easy to setup with Apache, it just worked, and soon it was deployed on all hosting providers. This is why it is still a winner for so many people
  • Simple, scripting based: easy to go from Perl to PHP. Easy enough for the people who liked the deployment issue to hack away (e.g. the non CSci folk)

And JavaScript? The killer app was Netscape, and the fact that it was like PHP in that people could hack away.

Dec 11

Rails, and how the opinion can keep back Rails EE

Java, Ruby, Tech 2 Comments »

Marcus Ahnve posted about Merb, and how it is “leaner and meaner than Rails”.

His core point:

I have used Rails on a daily basis for almost a year now, and before that I was a night time hangaround. While I am definitely a happier programmer using Rails than anything built on Java, I still feel that it can get better.

First of all I want more things to be plugins. And really, they should not be plugins at all but gems instead.

Why plugins? We use RSpec instead of Test/Unit, HAML instead of erb and are seriously looking into JQuery instead of Prototype. And of course, we are using Mercurial instead of Subversion. All of this is of course possible to use in Rails, but a lot of things are sort of made for the default choice, such as generators generating tests, and plugins having the -x switch for Subversion. And I am pretty sure that this is the way DHH wants it.

The part that interests me is “we use X instead of Y”. I get it. People have been doing Rails for quite awhile now, and as with everything, they see things they would like to do different. That PHP/ASP/JSP-like, ugly <% %> syntax is a drag. It makes me think that I will be putting code throughout the view god damn it! So, I will give HAML a try, or some other builder-based system, or write my own. Why not? With Ruby, surely I can put together a great templating system in about 10 lines of code.

The problem of course is one of the reasons that you probably jumped to Rails in the first place was due to the paradox of choice that you had in Java land. You sat down with Rails for the first time and had a sign of relief as you ran % rails mynewproject. Just like that, you had bypassed the weeks of work evaluating which combination of Java frameworks and tools that should be used on this project. You didn’t have to argue with The Architect about the merits of abstracting logging to a bizarre degree with commons-logging.

When you talk to Railsy folk you will already hear about various plugins that you should be using. If you aren’t careful, you will be in the same path as before, until you move on to Django, …