This post originated from an RSS feed registered with Java Buzz
by Jiri Lundak.
Original Post: Looking for the 'application' in an application framework
Feed Title: Jiri on Java and Jini
Feed URL: http://www.kstaken.com
Feed Description: Jiri Lundak's thoughts on Java, Jini, Distributed Systems and Software Craftsmanship
No it is not about a particular web publishing framework or some J2EE container.
It is about the 'application' perspective of the term 'application framework'.Most discussions about application frameworks center around the infrastructurecomponents of a framework. They discuss the technical advantages of Webworkversus Struts versus Xyz.
Although these discussions have their merit and are fun to follow sometimes, Ithink they often miss an important component: the customer centered perspective.
When a customer wants a solution for her problem, she is not interested in theunderlying technology. Instead the customer is interested in a working andtimely delivery of the software.
So instead of focussing on any particular web publishing or O/R mapping framework or tool, we should consider the elementary features of an applicationframework, that make our live as application developers and solution providerseasier and more fun.
So what should we expect from an application framework in this respect?
It should provide us with high-level solutions to standard development problems.
One such standard problem we encounter very often in our projects is the supportof multiple languages (be it at the GUI or in our data structures). Living inEurope and especially in Switzerland (that has 3 offical languages - German,French and Italien) makes me really sensitive to this. So I would like to supportN languages in all of my programmes, without having to think each time about how to implement that feature, right?
Another problem domain we encounter often is to create some data entry GUI fora particular model object (say a person), then there are other types of objects(like an address or an account) that are associated with that person. Forthese object we also need to implement the GUI. Now I get no particular benefit,if I use any web publishing framework to accelerate my ability to deliver functioning data entry screen to the customer, if I do not try to abstract ata higher level. At this point I would prefer some framework, that allows to present a GUI, that is able to edit ANY model object.
The framework should handle for me the hairy details. I should be able to concentrate on the implementation of the features my customer requests, instead of the coding the nth save() method.
This does not only enable quicker delivery of a feature, it also makes the solution more robust, as I gain time to test my code better. And inherentlythe application is also easier to maintain. Need some extension to the multilanguage support in your product? Let the framework handle it for you, in oneplace and all your business model profits, even all your existing applicationsmay profit!
But what about those special GUI screens for some model object. Am I not stuckwith the standard generic screens the framework creates for me? If the applicationframework is any good, it will allow you to plug-in your own implementation ofa component at any time, just for a particular type of object your wish to present.
Other examples of abstractions of behaviour can be found, to which the same principles apply (be it caching, be it runtime extension of objects, etc.).You name it!
So, if you are a developer building individual solutions for your customers yousurely want to concentrate on the problems at hand (and there is plenty of them).Let the web publishing frameworks or O/R mapping tools be only an implementationdetail to your work. Use or maybe develop an application framework with a higherlevel of abstraction and thus encapsulates your or others' valuable knowledge.