I have been talking about J2EE, Python and CherryPy, and about Ruby Rails a lot lately. Although I still prefer Java for large (well funded web applications, the advantages of dynamic languages for database table wrapper generation, continuation based navigation (e.g., Smalltalk Seaside, SISC web continuation examples, etc.) are compelling.
I suspect that in a few years when the infrastructure for Python ‘catches up’ with that for Java, that I will end up doing 60% or my development in Python and 20% in Java – the opposite from my current language choice. Still, I think that the reliability and scalability of the J2EE platform will make J2EE the “COBOL of the 21st century”: there will be more agile tools available, but J2EE will be a platform of choice for large web applications that provide web services, talk to web browsers, PDAs, cell phones, etc. Scripting languages like Groovy might help make Java development more facile in the future, but I am taking a wait and see attitude towards Groovy.
New paradigms for web app development must make it less expensive to:
- manage data persistence (for Java, tools like Hibernate and Prevayler help; for Ruby, the data wrapper capabilities of Ruby on Rails is a good start, for Python, automatic table wrapper generation from database metadata helps)
- provide agility in writing and modifying middle tier logic (dynamic languages tend to win here)
- easier ways to handle presentation, session management, etc. (continuation based web programming, better “what you see is what you get” tools, etc.)
I really enjoy experimenting with new technologies. I schedule about 5 or 6 hours a week to do nothing but evaluate new technologies – not enough time, but I can be a little more efficient about this evaluation process by reading other people’s experiences and focussing on what are likely to be the most useful tools for my consulting work.