Back from the Beyond

October 20, 2006

So as I said I would, I've taken a look at Python and Django. In my brief look at it, I've learned a few things. One is that Python isn't that weird, it's just different. Handling blocks based on indentation is cool. Django is cool in a lot of ways. The thing I was most impressed with is the admin interface. The thing I was least impressed with is that the admin interface isn't very customizable. You get you what you get, which is a lot, but you don't have much control over it.

But this blog post isn't really about Python or Django specifically, it's about languages and web frameworks. Here's what I've decided. Choosing a web framework and programming language is like choosing a guitar. There are die hard fans of different types. There are obscure niche types. There are widely used types. There are even variations among the different types. But the bottom line is that if you are a shitty guitar player, it's going to sound like shit, not matter which one you pick. And if you are a great guitar player, anything is going to sound pretty good. Choosing between them is really a matter a preference. The part where this analogy falls apart is that once you learn to play guitar, you can pick up any guitar and play, but just because you are a Ruby on Rails expert doesn't mean you can build a web site with Java, and vice versa. So it's not perfect, but you get the idea.

I think up until recently, you couldn't argue with a straight face that building a Java application is not more complicated than building a Ruby on Rails app. Anyone who has tried to maintain a web app built with Struts 1.x, Spring, Hibernate 2.0, JSP 1.0 and an overly complex set of ant build scripts can attest to that. But I'm a believer in the latest innovations in Java. Annotations and Generics are making life easier. Stripes and Hibernate 3.2 with Annotations are much better than Struts (or webwork or Spring MVC for that matter) and Hibernate 2.0 respectively. JSP 1.2 is better than JSP 1.0, Maven is better than Ant, the list goes on.

My theory is that we are at a point with Java where we can build applications with the same level of productivity as any other framework. I think we're beyond Beyond Java.

So what I'm planning on doing in attempt to prove Bruce Tate wrong is to build a new version of my own blog in Java. I'm hoping this little side project will give me a chance to provide the world with an example of how Java applications can be built without endless XML sit-ups. I also feel the need to blog about it because it will motivate me into actually doing it. I have had lots of big ideas in the past and I rarely follow through with any of them, but this is one that I intend to. And so it begins.

Posted in Technology | Tags Django, Python, Stripes, Ruby, Java, Rails

Comments

1.

As a guitar player myself, I love your guitar/framework analogy. It's spot on.

Just FYI, did you know Django is named after a guitar player, the fantastic Django Reinhardt?

--Adrian (Django dev)

# Posted By Adrian Holovaty on Saturday, October 21 2006 at 12:43 PM

2.

I did read that Django was named after Django Reinhardt. I've never heard his music, I'll have to check it out. Thanks for the comment, Django is a great framework, keep up the good work.

# Posted By Paul Barry on Sunday, October 22 2006 at 10:32 AM

3.

What framework is your current blog written in?

# Posted By Brandon Corfman on Monday, October 23 2006 at 5:51 PM

4.

It is typo, which is a blog written in Ruby on Rails.

# Posted By Paul on Monday, October 23 2006 at 6:12 PM

5.

Wow, you're going from a dynamic language to a static language? This should be interesting.

# Posted By Brandon Corfman on Tuesday, October 24 2006 at 8:55 AM

6.

Well, first of all, I didn't write any code for this blog, it is just an out of the box typo install with a custom theme. So I'm not going from a dynamic language to a static one, I'm really going from a product to a custom app, at least with this blog.

# Posted By Paul on Tuesday, October 24 2006 at 1:12 PM

7.

I'm no web guy, but Django's method of OR mapping seems sub-optimal and not very pythonic to me. I would imagine that is one reason why SQLAlchemy is being integrated into Django ... it separates the table definitions/types from the Python classes used to

# Posted By Brandon Corfman on Thursday, November 2 2006 at 1:37 PM

8.

Clearnova's Thinkcap is a rad J2EE!

# Posted By mar feo on Monday, November 20 2006 at 3:30 AM

Comments Disabled