There's a qualitative difference between Java and say Django in how easy that is, though. With Django you can write a couple lines of code and immediately see your results on the screen. Instead of having to figure out how things should work from the user's perspective, you can just try them out and see if they do work from a user's perspective. Often the results are pretty surprising, and suggest new ways that you can make things even better. It's hard to do this when your edit-compile-run cycle consists of "Write new class. Change some lines to include it. Rebuild JAR file. Redeploy. Restart servers."
The advantage of dynamic languages isn't that you get your coding done 5x faster, because most projects don't actually spend all that much time coding. It's that you can do 5x as many iterations in the same amount of time, which changes the way you approach your interaction design.
There are ways of avoiding the long compile/deploy cycle in Java development, but most people don't take the time to learn them. Just like there are ways of writing fairly concise, readable Java, but most of the code written day-to-day is garbage.
> There are ways of avoiding the long compile/deploy cycle in Java development, but most people don't take the time to learn them.
Pointers would be very much appreciated.
I've inherited 50K lines of java of the 'cut-and-paste' variety after one of those 'rockstar ninja' types quit just before product launch and I'm busy refactoring and commenting everything. Currently the ect cycle is on the order of a couple of minutes and I'd really like to get that down to something more manageable.
When I was doing JSF development, I found the real problem was that libraries were often developed without an awareness of how to make it reload-safe. So yeah, it's theoretically possible to hit Save and Refresh and have Tomcat automatically pick up your changes, but in practice I found that all sorts of strange things happened in the 3rd party libraries that made up the middle of our technology stack.
I think one of the main strengths of the Python/Ruby communities is that it's expected that you'll be able to edit a file and immediately have the changes reflected. If this doesn't happen, people complain! While in the Java world, a lot of people (including myself, eventually) just accept it as business as usual, because so many libraries and apps don't work like that.
I'm not sure what you're talking about. If you want to try something you have to code it first. That's true in any language. After that it's just hitting Ctrl+S for me, in any language.
Comments
There's a qualitative difference between Java and say Django in how easy that is, though. With Django you can write a couple lines of code and immediately see your results on the screen. Instead of having to figure out how things should work from the user's perspective, you can just try them out and see if they do work from a user's perspective. Often the results are pretty surprising, and suggest new ways that you can make things even better. It's hard to do this when your edit-compile-run cycle consists of "Write new class. Change some lines to include it. Rebuild JAR file. Redeploy. Restart servers."
The advantage of dynamic languages isn't that you get your coding done 5x faster, because most projects don't actually spend all that much time coding. It's that you can do 5x as many iterations in the same amount of time, which changes the way you approach your interaction design.
There are ways of avoiding the long compile/deploy cycle in Java development, but most people don't take the time to learn them. Just like there are ways of writing fairly concise, readable Java, but most of the code written day-to-day is garbage.
> There are ways of avoiding the long compile/deploy cycle in Java development, but most people don't take the time to learn them.
Pointers would be very much appreciated.
I've inherited 50K lines of java of the 'cut-and-paste' variety after one of those 'rockstar ninja' types quit just before product launch and I'm busy refactoring and commenting everything. Currently the ect cycle is on the order of a couple of minutes and I'd really like to get that down to something more manageable.
When I was doing JSF development, I found the real problem was that libraries were often developed without an awareness of how to make it reload-safe. So yeah, it's theoretically possible to hit Save and Refresh and have Tomcat automatically pick up your changes, but in practice I found that all sorts of strange things happened in the 3rd party libraries that made up the middle of our technology stack.
I think one of the main strengths of the Python/Ruby communities is that it's expected that you'll be able to edit a file and immediately have the changes reflected. If this doesn't happen, people complain! While in the Java world, a lot of people (including myself, eventually) just accept it as business as usual, because so many libraries and apps don't work like that.
I'm not sure what you're talking about. If you want to try something you have to code it first. That's true in any language. After that it's just hitting Ctrl+S for me, in any language.