I came across an interesting article that discusses today’s application developers making extensive use of different frameworks in their applications.
This is the writer’s opinion:
…Todays projects are over bloated from the use of frameworks that dont really produce a real benefit. Developers spend around 75% of their time just on set up and configuration…
The question I would like to ask you dear readers:
Do todays application developers really exaggerate the use of frameworks?
I think it would be a difficult question to answer. First some clarification is needed – what is exaggeration really? The number of frameworks used or the reduced performance as a result of use of these framework? Or the amount of time developer spends on installation and configuration?
I think first as a developer, one must understand the pros and cons of the framework, and how will it affect the performance of the application to be designed. The developer must have clear idea about what is he trying to achieve by using a particular framework in his application, and whether the framework is going to give him the desired result.
As a developer, when designing an application, one may ask questions which framework should be used depending on application’s requirements. Often the will not be just one framework choice, but several frameworks.
Of course not every developer may face the same situation mentioned above. Proprietary developers rely on leading market software vendors to provide the necessary solutions in one big product bundle.
One has to take several things into account such as future enhancements and possible requirements changes by the client. Using several frameworks to support an application may be look exaggerated at start, but on the long run it may turn out as a better decision. The time spent at the start on initial framework configuration will be paid off during further implementation and maintenance.
In conclusion, I think the ability to know which framework to put for use and when, can come only with experience.
loading...
Related posts:
- Singleton Pattern and Problem With Double Checked Locking
There are several ways to initialize singleton object. Some are thread safe and some are not. Until the last two days I thought... - How to Set SecurityManager and Java Security Policy Programmatically
In this example I want to show how to use SecurityManager to prevent unauthorized access to private members of a Java class, for... - Hack any Java class using reflection attack
Have you ever thought how secure your application is? Well reflection attack can demonstrate how vulnerable Java classes are. In this post, I... - Brainteaser: Broken Comparator
Question: The following program returns result “1″, which indicates that first Integer value is greater than the second, why? import java.util.*; public class... - Brainteaser: Overridable methods
Consider the following case of inheritance: public class Parent { public Parent() { getValue(); } public void getValue() { } } public class...

… and the problem gets even worse when one uses a big framework/library, with all its stack and overhead, to achieve just a small feature of it!
loading...
I absolutely agree. I go farther and say that this is specific to the java world. For some reasons the java system attracts a lot of people who have an inclination to over engineer to the point of desperation. People are incapable of appreciating simplicity, practicality, return on investment. They are not satisfied with a solution that just works. A working solution demands the end of speculation and speculation is precisely what they enjoy. They just don’t cook a meal and sit down to eat it. They starve themselves to anorexia trying to figure out the most flexible, extensible, modular apple pie.
The programming world reflects the real world. There are smart people, effective people, fashionable people, boring people, attractive people, etc. The java world attracts the pedant, always wanting to be right kind of people. People of self importance that want to impress with the finesse of their obscure, beautiful complexity of the minutia that only they care about.
The java programmer has no sense of beauty and simplicity, of practicality and effectiveness. More so not even a sense of time or the power and need of clear communication. He is lost in their color-less world and is surprised that the lesser qualified actually succeed and enjoy life.
Just compare java with php. Long before the java guys even finish establishing the role of tags or scripts within the html page, the php programmer has completed, sold and enjoyed the benefits of his crm.
When you can have Wicket, they insist on JSF or even Seam on top of it. When you can have Click, they insist on a meta-framework named Rome.
Well, my wife called me for lunch. I could go on forever. Just watch out for these overly self important java programmers and marginalize them. Put them to extinsion.
There are things that matter more: time to market. Some people need to get paid.
loading...
> I go farther and say that this is specific to the java world.
> For some reasons the java system attracts a lot of people who
> have an inclination to over engineer to the point of desperation.
I am quite sure this is not limited to the java world. I think a lot of software design is just reutilizing what “is known to work”. Just as many consultants recommend Microsoft because they think they can’t be wrong recommending one of the market leaders.
> Just watch out for these overly self important java programmers
> and marginalize them. Put them to extinsion.
Fortunately I am still quite new and hence there is not much risk for me regarding that one.
My experience is while learning java is like this example: It took me about half a day to get a http server running just receiving an http request and I could have responded with whatever I like. It took not really longer than any other hello world java app to start. So I wonder why some TomCat (just to give an example) server app using hibernate, spring and whatever is taking about 20 seconds to start – just to be up and running. And after each configuration change again shutdown and restart. I can’t imagine this to be efficient at least during development phase.
But while learning Java I read a lot of frameworks and libraries and I felt fear about all the stuff I have to learn until I can write some real application. But suddenly I stopped and thought by myself – do I really need all this stuff? – I could already build a simple CMS by using the “builtin” http server, use some html template using %-variables and just replace them (only to mention a possible first learning app). Wouldn’t it also be much faster?
In the real world there were similar hypes when the 3-tier design came up. Then everything even turned into multi-tier. My experience: While it is nice to have more abstraction layers from the design point of view, performance sucks! And it is clear because if a thing has to be passed along through several layers until finally and hopefully arriving in one piece at the client it can’t be faster than a direct connection.
But there is another point I see: The usage of frameworks does constrict you to a particular way of solving things. In reality the usage of frameworks reduce your flexibility. I remember the DOS times when I was developing with a RAD tool at times when nobody else next to me thought about RAD. Although I could write programs fast I was limited to what the tool’s features.
loading...
Many frameworks certainly seem to turn a “programming” problem into a “configuration and reading documentation” problem, without it being clear that much effort is actually saved overall. I’ve definitely wasted a lot of time on trying to persuade Framework X to perform Task Y (or finding out why it wasn’t performing Task Y correctly) when I could have spent 10 minutes had I not been writing with the “help” of the framework in question.
Of course, I’m a programmer. For some people, turning a “programming” problem into a “configuration” problem is excellent, because they have more “configuration” skills than “programming” skills. And if you’re a Project Manager, it may sound better to say “we use Ajax Beans version 3.0″ than “we use some arbitrary code that doesn’t have a name”.
Presumably arguments about “if it’s a known framework, it’s easier to recruit people with knowledge of that framework” also work for some people. Sometimes the reality is probably closer to: “there are so many frameworks out there that do a similar thing, our chances of recruiting somebody who is very skilled in this particular version isn’t really greater than the chances of just recruiting a generally skilled, versatile coder who will learn whatever in a couple of days”.
loading...
Interesting topic. Short answer: In my opinion, yes!
This is perhaps most profound in the Java space, where the provided tools and technologies are only so-so (EJB2.1 is a nighmare, java.util.Logger clumsy, java.util.Calendar a disgrace etc.). Also, people often invoke the “choice” moniker, even if evidently less is sometimes more. Then there’s the overengineering aspect, where a hammer just never seems to be enough.
I think we’re on the brink of seeing a bit of “return to basics”. While relying on frameworks can get you started quikly on stuff (once you know the framework), the return of investment is only really there if the framework turns out to exhibit extraordinary longevity and/or you are developing a lot of similar applications.
Concrete example: I still don’t quite understand why people would want to learn and fiddle with type-unsafe JPQL queries in a language that does not suport multi-line strings, when they can write SQL in external .sql files that load directly into a database tool for degugging and testing.
In .NET of course they focus more on providing good de-facto tools, if not as a library, then in the language. LINQ is a good example.
loading...
my 2 cents, no offence please
I am a Java developer for 4 years now and I am convinced that there is a lot of noise when talking about programing experience. You can not have a fluent thinking in which you can just think and write and that’s it, because you NEED to care about
integration
configuration
packaging
deployment
and as this type of things become normal to java developers, we think like “How is possible that someone by just making clicks on his computer to build up a full crm system and then to be called a programmer ?”
Well, my point of view is the next. I think IT IS important to know all the things that I mentioned before because without them you are unable to make good decisions about your software and once you understand them yo normally write your code accordingly. But then, as long as you understand them you shouldn’t be dealing with non-programing stuff
and I recognize as a Java developer somehow our tools, besides they perform very well, it has still a long track to go to free developers of non-programing tasks
loading...
It depends a bit on what you mean by “needing” to worry about integration, configuration and deployment. If these tasks are awkward and the only reason for needing them is due to the use of particular frameworks, that’s *not* a very good case for the use of those frameworks…
loading...
I disagree, Seam is JSF done right and has really great integration with EJB3.
I never used framework that i do not need, could you guys give some examples of those kind of frameworks?
“EJB2.1 is a nighmare, java.util.Logger clumsy, java.util.Calendar a disgrace etc.” those are not frameworks, they are part of jdk i j2ee. you can replace most of it with frameworks Spring, log4j and joda time. So to not live nightmare you need to add 3 frameworks.
loading...
“So to not live nightmare you need to add 3 frameworks.”
Until a new one comes a long, these days slf4j. Basically I like having choices but discover-ability, versioning and dependency management needs to improve. For those things, Maven (wahoo another complex framework to master) is indispensable.
loading...
Why do I need dependency management in Java? – In NetBeans I am configuring the libraries by giving a name and paths and then I reference in a project to those I want to use. When building it copies all needed libraries to the dist folder.
So other than with Windows and the DLL hell with Java every app has those libraries with it that it uses in the appropriate version. So I don’t see here why I need another tool/framework.
I was so happy that in Java we get back to old times when it was sufficient to copy all the files from disk to harddisk or you could even start the application directly from the disk – no installation required. You make me worrying that it is not working so fine as I expected…
loading...