20 Year Applications?
A client I am working with is porting several green screen applications to J2EE and one thing that keeps popping up is that we need to develop an architecture that will support these applications for the next 20 years just like the last one did.
Dan Appleman posted about how he doubts that Microsoft will promise to make Windows Forms viable for the next 15 years. I must say that I doubt Sun and IBM will promise to make WebSphere and the J2EE 1.2 spec viable for the next 15 years either (not without significant upgrades from time to time).
I am not naive enough to believe that 20 years ago a few developers wrote our existing COBOL systems and they've been running perfectly ever since. I expect several hardware and software versions caused upgrade headaches as well as the ongoing maintenance that keeps users happy. But J2EE, WebSphere and all the components that hook things together (Hibernate, Swing, web services, etc) are fairly immature compared to COBOL in 1984.
So how does one help create a 20 year system given todays platforms?