Beta
×

Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

How Do You Decide Which Framework to Use?

Cliff posted more than 8 years ago | from the evaluation-criteria dept.

291

GPolancic asks: "Software frameworks are increasingly popular software reuse technique, because they provide infrastructure functionalities to an application, or a layer of an application and therefore reduce the work of a software developer. Numerous complementary (for example: Struts and Hibernate) and competitive (for example: JSF vs. Struts or JSF vs. ASP.Net) software frameworks are available as both proprietary and open source software. A major precondition for the success of a software framework is their acceptance, which is related to market share or community size. On the other side, application developers need to review and select the best available software framework for their needs. Which factors do you evaluate before you decide to use a specific software framework?""Our presumption is that software developers mostly evaluate following software framework characteristics based on:

  1. perceived ease of use (e.g. easy to learn, easy to adapt)
  2. perceived usability (e.g. improving developer performances, reducing work, faster development),
  3. perceived sustainability (e.g. perceived long term support, supporting standards, clear project directions) and
  4. perceived fit to specific developer requirements (e.g. suited language, suited functions, suited architecture).
What are your criteria? Do you support the factors listed above? I am not asking for a preference on a specific software framework, but rather an explanation on the non-trivial task of framework selection, which might be very usable for both frameworks developers and framework users."

cancel ×

291 comments

Sorry! There are no comments related to the filter you selected.

Fuck struts. (-1, Offtopic)

Anonymous Coward | more than 8 years ago | (#14790420)

Seriously.

Use what you know (1)

Mutilated1 (836311) | more than 8 years ago | (#14790424)

You use the one you and your team already know how to use.

Re:Use what you know (-1, Troll)

Anonymous Coward | more than 8 years ago | (#14790544)

This is worse than goatse.cx. Remember, you're on THE INTERNET, so anything goes. Be prepared to have nightmarish recollection of what you will see if you click on this. And remember, you were warned:

http://img33.imageshack.us/img33/8765/cortacabea2i q.jpg [imageshack.us]

Re:Use what you know (1)

XMyth (266414) | more than 8 years ago | (#14790647)

Hah.....I have some sick urge to see just what the hell is so bad about this picture.

Nice line.

Re:Use what you know (1)

networkBoy (774728) | more than 8 years ago | (#14790769)

WTF?
seriously, that is wrong. Goatse is dimented, tubgirl is gross. That is

it's been half a minuite and I can't complete the above sentance.
-nB

Re:Use what you know (0)

Anonymous Coward | more than 8 years ago | (#14790806)

Ladies and gentleman, we have a wiener! Best new shock imagery!

Re:Use what you know (0)

Anonymous Coward | more than 8 years ago | (#14790593)

Exactly. Either we use stuff we aleady invested tons of time and knowledge into, or we buy into hyped-up uberkewl fads du jour. Well I'm more interested in just getting the job done,and moving on to the next contract. Maybe one day I'll retire and have time to learn all the other stuff and agonize over the pros and cons in a deliciously minute way. Or maybe by then I'll be so burned out I won't give a damn.

Use what you know-This Old Frameup. (0)

Anonymous Coward | more than 8 years ago | (#14790642)

"You use the one you and your team already know how to use."

Well Bob Villa is all set then.

Re:Use what you know (1)

deetsay (703600) | more than 8 years ago | (#14790811)

You use the one you and your team already know how to use.
I wish. In three years I'm not sure I've ever done two projects with an exact same combination of frameworks. (Struts, Spring+Struts, just Spring, Spring MVC, Spring+JSF ......) I'm not sure this is a really smart strategy, but it's definitely better than just being stuck with Struts.

Easy to decide... (5, Insightful)

moronikos (595352) | more than 8 years ago | (#14790440)

You use the one your boss tells you that you are going to use.

Re:Easy to decide... (3, Interesting)

hutchike (837402) | more than 8 years ago | (#14790637)

So true! I worked at a place where our boss decided that every framework class was to be wrapped in a bespoke wrapper with a slightly polluted API, meaning all my skills were unportable and my pay check never rose too high (until I quit).

How Dilbert [dilbert.com] life was back then in the late 90's. Sure it was a long time ago, but I bet it's "good practice" someplace...

Re:Easy to decide... (2, Insightful)

jZnat (793348) | more than 8 years ago | (#14790714)

What if you're said boss and need to pick out some possible frameworks for use? Somebody has to make the decision somewhere along the line of management.

missing (1)

JeffSh (71237) | more than 8 years ago | (#14790443)

I would've thought things like prototype.js and ruby on rails would be better examples of frameworks in proliferate use today than those provided in the blurb.

but then again i could just be karma whoring. so whatever!

SimCity metaphor (0)

Anonymous Coward | more than 8 years ago | (#14790458)

SimCity metaphor time: Ruby on Rails gets built in "light commercial" zones. These sort of Java frameworks are "heavy industrial."

World of Warcraft metaphor (0)

Anonymous Coward | more than 8 years ago | (#14790600)

Ruby on Rails gets equipped by paladins who bubble-hearth.

Struts and Hibernate get dual-wielded by rank 14 rogues.

Re:missing (3, Funny)

larry bagina (561269) | more than 8 years ago | (#14790477)

Do you also think linux is easy enough for your grandmother? Do you also think ogg vorbis has widespread use?

I think you've spent too much time on slashdot.

Re:missing (1)

INeededALogin (771371) | more than 8 years ago | (#14790484)

You would of thought wrong.

Hibernate and Struts are both very well known packages for the Java world. My company has plenty of apps that use both of them.

As far as ruby on rails... who in the business world uses that? Can you name any website or application currently in production that does. I have a guy who messed around with a website using it, but it is far from perfect and far from production.

Re:missing (2, Informative)

Trejkaz (615352) | more than 8 years ago | (#14790555)

"Can you name any website or application currently in production that does."

The Rails Wiki [rubyonrails.org] has a list.

Re:missing (1)

broohaha (5295) | more than 8 years ago | (#14790567)

As far as ruby on rails... who in the business world uses that? Can you name any website or application currently in production that does.

As far as ruby on rails is concerned, the easy answer can be found here:

http://rubyonrails.com/applications [rubyonrails.com]

Belly Button (1)

EraserMouseMan (847479) | more than 8 years ago | (#14790609)

They have to have a special page on the framework's official website to answer the question, "So, who the heck even uses this framework?" And then they give examples like "BellyButton.com" (maternity site). And that's supposed to be proof that it's good enough for mission-critical production use?

Re:missing (1)

INeededALogin (771371) | more than 8 years ago | (#14790618)

From the list(and I saw the other one as well), it has been implemented at largely small places similar to how linux was first deployed. The best I saw on the list was a Newspaper which my friend works at a Newspaper so I know that the person who did it was probably one of the only technical person there.

The point was that no serious company is going to give Ruby on Rails a chance right now because it hasn't been proven yet. When I say serious compay, I mean a company that has SLAs.

Re:missing (1, Interesting)

Anonymous Coward | more than 8 years ago | (#14790760)

Amazon.com and BBC News are using Ruby on Rails in some of their development projects. There are also many examples of Ruby production work in asia as well. As for it being far from perfect, I could say the same about .Net. Sure, Rails is still quite young, there are holes, but it's way more flexible than other more established frameworks. It saves money, it saves time, its flexible, compilable, cross platform, self-documenting, brainless to version, painless to test, easy to deploy, and hey it even plays well with Java and .Net. Don't let the dumbass screencasts on how to create a CRUD scaffold fool you - you can do some powerful stuff with Rails.

Rails - who uses it? (1)

DavidNWelton (142216) | more than 8 years ago | (#14791035)

"As far as ruby on rails... who in the business world uses that?"

Mostly people who you won't notice until they pass you like you're standing still:-)

Re:missing (1)

xero314 (722674) | more than 8 years ago | (#14791008)

Please tell me prototype.js is not actually catching on. I'm not going to rip into prototype.js, but I will say emulating classical inheritance is a waste. Prototypical inheritance is far more powerful and flexible than classical inheritance in pretty much every way. Honestly prototype.js has some useful functionality, but adding in things like the classical inheritance emulation is just asking for trouble, by teaching the next generation of developers that prototyping is bad, which is far from the truth.

Just my opinion, I'm just sick of people trying to knock prototypical systems.

Oh and to back up some of the other comments, as much as slashdot has alot of posts about Ruby on Rails I have never heard of a single company using it. I worked for a company that used XUL heavily but wouldn't say it's popular since no one else used it in production systems. I think Ruby is the same way.

Go for the hype. (5, Funny)

croddy (659025) | more than 8 years ago | (#14790455)

Personally, I'd pick Ruby on Rails. Not that I have any technical reason to prefer it, mind you... but man, it's so jam-packed with alliterative goodness and it's all Web 2.0'ed out and shit. And it has some crap called a scaffold. Do you have any idea how many struts it takes to build just one scaffold? No? Well it takes a lot!!

Let me tell you about this better web technology (4, Funny)

ad0gg (594412) | more than 8 years ago | (#14790560)

ColdFusion, yup thats right. You can have your struts and scaffold, my website is power by cold fusion. Let me tell you it picks up the honeys when i say i work with cold fusion. Good luck picking up a lady telling them you work on struts, scaffold or java beans.

Re:Let me tell you about this better web technolog (1)

jZnat (793348) | more than 8 years ago | (#14790720)

Is this a subtle jab at MySpace as well? If so, roffles.

Re:Let me tell you about this better web technolog (1)

chgros (690878) | more than 8 years ago | (#14790725)

Good luck picking up a lady telling them you work on struts, scaffold or java beans.
On the other hand, rubies are a girl's second best friend.

Re:Let me tell you about this better web technolog (2, Funny)

moonbender (547943) | more than 8 years ago | (#14791085)

So are perls...

Re:Go for the hype. (1)

EraserMouseMan (847479) | more than 8 years ago | (#14790562)

I love that! I love it, man. You captured the spirit perfectly! Very well done.

You know, I was wondering (3, Funny)

bradleyland (798918) | more than 8 years ago | (#14790631)

I was wondering how hard it must have been for the submitter to write that summary without mentioning Rails at least once. It feels almost like bait.

bloop bloop

Spring! (0)

Anonymous Coward | more than 8 years ago | (#14790471)

Anybody ever do anything with Spring? At JavaOne last year the Spring sessions were always the most popular but it seems it's hardly made a squeak since then. I guess with EJB 3.0 coming it's not quite the God send it once was, but still.

Difficult to answer (5, Insightful)

IntelliAdmin (941633) | more than 8 years ago | (#14790473)

This is almost as bad as asking "What programming language to use for a project" It all depends on the needs and experience of those involved. Sometimes it means rolling your own, other times it is better to get one that has been fully tested in the field for some time. Either way it is a silly question to ask.

Re:Difficult to answer (4, Informative)

Tony Hoyle (11698) | more than 8 years ago | (#14790538)

More to the point, the design will answer the question for you (as it does for the 'what programming language' question).

You design the application *then* you start making technical decisions about implementation - not the other way around.. there's already too much crap produced by people who *must* use the latest wizzy 'framework' and then design an app to use it regardless of the functional requirements.

Difficult to answer-Getting Framed. (0)

Anonymous Coward | more than 8 years ago | (#14790614)

"You design the application *then* you start making technical decisions about implementation - not the other way around.. "

Well that explains the KDE framework then.

Re:Difficult to answer (1)

SengirV (203400) | more than 8 years ago | (#14790561)

I wouldnt' say silly. The specifics of the question itself if silly, but the overall question can be discussed vagely enough. And unfortunately, answered vagely as well.

You can pretty much ignore this, as I am kinda just doing a self ping for a later read ;)

Re:Difficult to answer (1)

RaisinBread (315323) | more than 8 years ago | (#14790581)

No, I think this is a great question to ask: regardless of language (and hype), a framwork - at least for me - has to help me with the following:

- DRY: I hate re-inventing the wheel everytime I pick up a new project. Not repeating yourself in intra- application code and inter-application code is a must.

- Rapid Application Development: if the framework is saving me time and speeding up the iterative development process, its a go. If I'm stuck trying to stay with in a structure or conform to someone else's standards, its out.

- Convention over configuration: I personally hate mappings, defines, configurations...etc. Hopefully the framework has an intuitive naming/coding convention that gets me free functionality.

-- J

Re:Difficult to answer (1)

Overly Critical Guy (663429) | more than 8 years ago | (#14790598)

So the answer to the submission is "Whatever is needed." Another pointless article.

Re:Difficult to answer (3, Insightful)

Dlugar (124619) | more than 8 years ago | (#14790634)

So the answer to the submission is "Whatever is needed." Another pointless article.

You're all missing the point. The question isn't "Which Framework Should We Use?", the question is "How Do You Decide Which Framework to Use?"

The answer the first question is, quite obviously, "Whatever is needed." But the second question is asking, in essence, "What factors do you use in determining 'whatever is needed'?" That seems like an interesting question, and I'm surprised people don't seem interested in discussing it.

Dlugar

Re:Difficult to answer (0)

Overly Critical Guy (663429) | more than 8 years ago | (#14790797)

Okay, let's discuss what factors I use in determining whatever is needed:

1.) I look at what is needed.
2.) I use what fulfills those needs.

For LAMP/server work (0)

Anonymous Coward | more than 8 years ago | (#14790474)

Perl - POE
Python - Zope

Framework schmamework (5, Insightful)

quantum bit (225091) | more than 8 years ago | (#14790479)

I've played with a bunch of frameworks based on Java, Ruby, Python, etc... However for my last few projects I decided to go "old school". Since the target platform was Windows, that meant plain C and Win32 API. No MFC or anything. Staticly linked libpq if I need database access. Extra plus is that without C++ or COM frameworks, I can use mingw gcc on my BSD workstation to cross-compile.

It was a little more work up front, but I've gotten nothing but extremely positive responses about the interface. The application binary usually is under 50k, even the larger ones don't break the 100k barrier. They're extremely quick and responsive on modern machines, and still very usable on older ones. I like to do processing asynchronously (i.e. user types a few characters and a DB query kicks off in the background when they stop typing) and it keeps things snappy. It's pretty easy to literally run circles around all the bloated apps eating up tens of megs of memory or more.

Oh yeah, ol' school baby! (2, Informative)

MacDork (560499) | more than 8 years ago | (#14790539)

Another upside is that there's no one but you who can fix or maintain it! ;-)

Re:Oh yeah, ol' school baby! (2, Insightful)

quantum bit (225091) | more than 8 years ago | (#14790565)

Haha, well that may or may not be an upside, but I consider that a quality-assurance measure. After all, any competent and intelligent programmer or engineer will be able to figure it out. It's only the java-monkeys with paper certs and degrees in meta-theory who have never touched any real code (without 3+ layers of abstraction) in their life that will be lost. ;)

Re:Oh yeah, ol' school baby! (1)

quantum bit (225091) | more than 8 years ago | (#14790574)

...and yes, the code is well-commented.

Re:Oh yeah, ol' school baby! (1)

rickumali (756010) | more than 8 years ago | (#14790620)

Ah yes, the C on Win32 framework. :-) I like it! (Where's my Petzold?)

Re:Framework schmamework (2, Insightful)

The-Trav-Man (913000) | more than 8 years ago | (#14790623)

an app that uses 10's of megs!?! you mean like, on a SERVER!?!
OH NOES! It'll never handle it!
Are your win32 calls supported by WinXP and Win2000?(probably) How much effort would it take to port it to linux? Are you helping lock your organisation onto a single software platform?

Re:Framework schmamework (1)

Nataku564 (668188) | more than 8 years ago | (#14790688)

If he is smart, he has confined all his platform specific code to a single library, or collection of libraries, with abstract interfaces. He shouldn't really be doing much in the way of system specific syscalls, so odds are its not that bad to port. Not as easy as Java or Perl, but still - a well designed C program shouldn't be all that bad to port.

This does assume competentcy on the part of the developer, but pretty much all programming does that. C can just bite a bit harder when this is lacking.

Re:Framework schmamework (1)

ClosedSource (238333) | more than 8 years ago | (#14790961)

"If he is smart, he has confined all his platform specific code to a single library, or collection of libraries, with abstract interfaces."

That sounds like a good academic approach. It's a good professional approach too if there's a reasonable expectation that the application will be ported to another OS.

On the other hand, most applications will never be ported from the environment they started on and the extra effort and added complexity of adding a layer of abstraction that doesn't model the problem being solved isn't justified in those cases.

Even in those cases where the porting takes place, it's almost never as simple as just recompiling the code.

The question is whether you want to spend extra money and effort to pay today for what you may or may not need tomorrow.

Re:Framework schmamework (1)

Brandybuck (704397) | more than 8 years ago | (#14790696)

Actually, that's a pretty good idea. If I could find a decent *thin* C++ wrapper around Win32 or X11, I might go that route myself.

Think if it is really neded (0)

Anonymous Coward | more than 8 years ago | (#14790483)

Thinking of if you really need to use any of framework or not is also important.

It all depends (2, Insightful)

owlman17 (871857) | more than 8 years ago | (#14790493)

...on your budgetary constraints, whether you're willing to invest in expensive frameworks that you have to pay for over and over again, or go FOSS. It will also depend on your company's systems. Some frameworks have relatively steep requirements.

As much as its easy to suggest "use-this-or-that-framework-because-its-the-best", a quick inventory of what you have and where you're willing to go in the long run brings everything back to earth. Sorry if I didn't answer your question directly, but there are a lot of things to consider.

Do what the rest of us do (3, Insightful)

gadzook33 (740455) | more than 8 years ago | (#14790504)

Evaluate each one based on what's important to you. What language do you use? What platforms do you support? What libraries do you incorporate vs write yourself? I'm not sure there are shortcuts to answering any of these.

The Other Option (1)

ThinkComp (514335) | more than 8 years ago | (#14790506)

If you don't like what you see out there, or you don't know any better, you can just write your own. I came up with Lampshade [thinkcomputer.com] , but open-source software definitely fosters the mentality that you shouldn't necessarily just use what other people provide, when you're able to contribute something yourself. Of course, once you've written it, you want someone to use it.

Why I Hate Frameworks - a popular article (5, Interesting)

hermank (101000) | more than 8 years ago | (#14790507)

Hmm.... I think you should read this first, in case you didn't. http://discuss.joelonsoftware.com/default.asp?joel .3.219431.12 [joelonsoftware.com]

Re:Why I Hate Frameworks - a popular article (3, Interesting)

russellh (547685) | more than 8 years ago | (#14790776)

snarky. reminds me of why I dislike joel on software.

It is claimed in that article that the distinction between a framework and a library is a subtle one. Not so, not so. Programming languages are themselves frameworks, whereas an add-on framework is often a poorly implemented, misunderstood, misappropriated, half-assed, dumbed down, broken programming language. It is an attempt to add task-based end-use assumptions to a language, to turn an existing language into a special purpose tool. That could be bad, unless the framework was designed by someone who understands programming language design, or if it is done in a language designed with such extensions in mind - CLOS for instance.

So either forget frameworks, or choose them as you would a programming language, and accept that you have to learn and play by their rules, philosophy, paradigm, what-have-you. Just as you wouldn't want to write C style code in CLOS, you would rather learn and use the CLOS special facilities. CLOS *is* a framework, as is C, as is any programming language. This is why Objective-C is the greatest language EVAR, it took two completely at-odds programming philosophies and bashed their heads together. C, fark your static type system and compile-time checking! Smalltalk, let me introduce my old friends malloc() and SIGSEGV! ..but to answer the poster's question, first choose a language that best matches your problem domain, ensuring (hopefully) the minimum size of the framework and minimizing philosophical contradictions between it and the host language.

Do you really need a framework? (4, Interesting)

wrook (134116) | more than 8 years ago | (#14790508)

I think the very first question you should ask yourself is, do you really need a framework?

Yes, reuse is good. But too much functionality in one package is not necessarily good. Sometimes it is better to rely on multiple small reuse libraries than on one "all singing, all dancing" framework.

For instance, if you have a large number of teams, do they all have the same needs? If the teams have divergent needs, picking "the best compromise" in a framework can have negative implications on their productivity.

Also, is the quality of the framework consistent across the whole system? For instance, if you have network class libraries and gui class libraries, are they both equally good? Or are you sacrificing on one side to get the benefit of another?

What are your maintenance/upgrade needs? While it's relatively easy to keep 5 versions of a network library around for legacy applications that don't need to upgrade, it's a very different story to keep 5 different versions of .Net or the JRE around. Are you sure you want to upgrade all the apps all at the same time?

Do you need all of the functionality the framework is bringing you? It might be nice for you to have choice, but how does the size of the framework affect the end user? If your app is small (say 1 meg) compared to a large framework (say 25 megs), it might not be so good.

What's your backup plan? What if the vendor of your framework abandons it? Or refuses to fix critical bugs? Will you be able to find something else that you can use in its place? Smaller pieces can be replaced easier than bigger ones.

I know this isn't the point of the question. But before you decide what framework you want, I urge you to consider whether you *really* need one at all. There are lots of reuse libraries around for every kind of application. It seems likely to me that picking and choosing *exactly* what you want for each circumstance is going to give you better results.

Re:Do you really need a framework? (1)

espressojim (224775) | more than 8 years ago | (#14790554)

Also, is the quality of the framework consistent across the whole system? For instance, if you have network class libraries and gui class libraries, are they both equally good? Or are you sacrificing on one side to get the benefit of another?


What I don't understand about this question is: why would you have a framework that covers both network operations and the GUI? Aren't those seperate concerns? Wouldn't you use a specialized framework for each of those operations? Example: In java, I'd use a network framework (RMI/webservices/etc) to communicate between client and server (if neccesary), a framework to access databases (hibernate, ibatis, spring) and a presentation framework for whatever kind of client I wanted (struts, JSF, swing, SWT, etc).

If frameworks exist that do "all of the above", I've gotta wonder how well they do any of them. Seems like modular use of frameworks (picking 1-2 for each type of task) buys you the most ease of development and flexibility. Besides, most good frameworks even talk about their interoperability with other frameworks, and brag about how loosely coupled they are to the other layers.

Re:Do you really need a framework? (0)

Anonymous Coward | more than 8 years ago | (#14790651)

What I like about Spring is that it sort of puts you in a straightjacket on how to accomplish a task. Sure there's all sorts of ways to do your business logic but it sets up a way that you should code things. In particular I'm thinking about "programming to interfaces" and inversion of control.

The main benefit this gives you is that the next programmer that picks up your code has a reference point to start from. He'll see that you're creating some basic factories in XML and setting them in controllers and can start from there.

If this doesn't sound appealing to you I dare you to go into a project where its whatever style the programmers were thinking of. You'll be screaming for consistancy and that's what Spring gives you.

In the case of Hibernate I love it as it allows me to concentrate on business logic and not how to do something mundane as saving objects to databases. That's not what my employer is paying me for.

My criteria (5, Interesting)

TrappedByMyself (861094) | more than 8 years ago | (#14790509)

1) Established - Needs to be stable and in heavy use. New stuff is fun to play with, but not an option for paying customers.
2) Philosophy - I need to agree with the way they do things. Major reason why I ignored EJBs, but jumped on Spring
3) Cost - I hate having to spend unnecessary $$ when team members cycle, or we have to do an install. Free is best
4) Standards Based - Vendorlock is teh suck. I like the options of being able to swap a component if I'm unhappy with it, even if I know I'll never swap it.
5) Familiarity/Ease of Use - Will it ease into what we're doing? Can the team become proficient in it in a reasonable amount of time? Is there decent documentation available?
6) Licensing - I don't like unecessary limitations, or surprising my customers, so I avoid things like the GPL.

Re:My criteria (0, Troll)

TheQuantumShift (175338) | more than 8 years ago | (#14790821)

Offtopic, but I'm silly.

"Help me take back Slashdot. When did 'News for Nerds' become 'FUD and Conspiracy Theories for Extremist Nutjobs'?"

When? Day one. Some of us have grown up a bit since then though...

Let the market steer your decisions. (2, Insightful)

Fisban78 (532915) | more than 8 years ago | (#14790940)

As much as i hate to say it I think the market determines what you should use.

If you are working on a product you have more flexibility to choose your own frame work, but if you are consulting or responding to RFPs then you have to choose a framework that the client is familiar with and comfortable with.

If you are going to be doing work for government or larger companies they probably already have a lot of time and money invested in a framework, so if you plan on doing work for them you better be able to develop in their framework.

Marketing also plays a big role, Microsoft, Sun, IBM and the other players spend big money targeting the decision makers in IT. If you decide to go with a framework by one of the big players you can leverage some of the marketing to your advantage.

If you have a good team of developers the framework isn't as important as you may think, a good team will be able to make a successful project regardless of the framework; so choosing the framework to match the market and your clients is an important decision.

I recomend that you evalute your potential customers and see what they want then train or hire developer with knowledge of that framework.

Re:My criteria (2, Interesting)

GotenXiao (863190) | more than 8 years ago | (#14791043)

1) In use by dozens of large corporations. Has several years of development behind it.
2) Open source, freely linkable and redistributable in any form.
3) Free.
4) Can be compiled to use stdc++, or use its own internal classes. Uses native controls etc where possible. Cross platform.
5) Very easy. Well documented.
6) Very flexible license, few limitations.

And what is this wonderful framework? wxWidgets.

Compiles on Windows, *NIX, Mac, Palm (!), PocketPC (!).
Has bindings in Perl, Lua, JavaScript and half a dozen other languages, but is native to C++.
Easy enough that a complete noob at C++ (myself) can get to grips with C++ and wxWidgets and have compiled apps running successfully with low resource use inside two weeks.

I recently referred it to a heavy duty programmer who has been in the job for a while (10+ years), and he fell in love with it after about 2 hours of using it. He loved it so much that his company's next major app is going to be written using it.

The funny part is... (0)

Anonymous Coward | more than 8 years ago | (#14790510)

EJB (Enterprise Visual Baisc) used to be the worst solution, people don't want even include it as an option. GREAT!!! THANK YOU!!!

Re:The funny part is... (1)

n0-0p (325773) | more than 8 years ago | (#14790532)

You do realize that EJB is a back-end technology, and is often deployed in conjuction with Struts? Also, the VB reference makes no sense since EJB is actually a wrapper around Corba IIOP.

What sort of dickhead asks this on slashdot? (-1, Flamebait)

Anonymous Coward | more than 8 years ago | (#14790520)

Slashdot - News for Nerds, Stuff that matters. How is this remotely classified as news or something that matters? If you have to post a stupid question like this to Slashdot, you shouldn't be responsible for choosing frameworks.

Re:What sort of dickhead asks this on slashdot? (0)

Anonymous Coward | more than 8 years ago | (#14791058)

Even worse:

Most advice you get on a question like this on slashdot is bad advice...

Most guys here have no clue what they are talking about...

Hey Editors! Redundent link alert! (1)

mcguirez (524534) | more than 8 years ago | (#14790530)

Uh, both JSF vs. links above point to the same JSF vs Asp article.

Got something on JSF vs Struts?

Software maturity. (1)

markv242 (622209) | more than 8 years ago | (#14790543)

I had written out a fairly complex post about how you need to pick "the right tool for the job" but you already knew all that crap-- if you don't need to enforce MVC, don't bother with Struts, etc.

What you really need to look for is a mature product. Market share helps, but I keep waiting for that announcement that Ruby on Rails has some horrendous security hole because it's a 1.0 release. What you need is something that has been expanded upon, revised, and rethought a few times after having been deployed in the field. For me, if I need MVC, I pick Struts. For database abstraction, Hibernate is pretty slick. Both of those packages have been around the block a few times, so I'm fairly confident that any custom problems that I might see, have probably already been solved.

My Views (2, Informative)

INeededALogin (771371) | more than 8 years ago | (#14790547)

perceived ease of use (e.g. easy to learn, easy to adapt)
In the business world this is huge, because time is money. That is the reason that Developers use these tools instead of developing new code from scratch.

perceived usability (e.g. improving developer performances, reducing work, faster development),
This might be hard to measure unless someone has used it in the past. Reviews of Toolkits are also hard to find and many places are gonna be bias.

perceived sustainability (e.g. perceived long term support, supporting standards, clear project directions)
Huge, you have no idea how many times I have seen projects go with some new library that disappears from the world the next year pushing you to dead links in google. The project has to have a firm backing by something. Like, libraries coming from the Apache team is a great example of something you can rely on in the future, but libraries from some random person who made a gnome lib just doesn't make sense.

perceived fit to specific developer requirements (e.g. suited language, suited functions, suited architecture).
This is a given I would say. When I look for a toolkit, I usually start with this as my search parameter(example: "Python iTunes" or "C++ XML").

Now, I don't have much to add to the list since I believe it is a good list, but I would also say that being a rebel when selecting toolkits will set you up for failure. Selecting your friends toolkit or some open source toolkit to save $1,000 will often find the blame for outages coming down on you.

So, a criteria should be stability. What state is the code in. If the code has 700 bugs logged against it, then it might be a problem. Also, how many people are currently implementing the toolkit. While it is a falacy to think that the majority is right, I look at it as survival of the fittest. Toolkits that are useful, supported and implemented, tend to be re-implemented if they were successful as people move around from company to company.

Which one to pick... (1)

Mock (29603) | more than 8 years ago | (#14790548)

I wait a year or so to see which ones come out a sure winner before picking up on it.

Hibernate and Spring are two good examples of good projects with lots of mindshare.

Struts, however, I don't like. I don't like JSP or JBoss either.
Those are examples of the wrong solution to the problem; the complexity of the solution being too high.

Echo2 looks very promising, and I expect I'll be doing future development on it.

10 Minute Rule (1)

dood (11062) | more than 8 years ago | (#14790558)

The first test is the 10 minute rule. Start by downloading the framework or project, compile it, get it to run and read the docs. If in 10 minutes you feel productive then you can move to the next steps.

An amazing framework will be easy to use, well documented, intuitive and will make you feel smart & productive all within 10 minutes.

Re:10 Minute Rule (1)

finnif (945981) | more than 8 years ago | (#14790918)

An amazing framework will be easy to use, well documented, intuitive and will make you feel smart & productive all within 10 minutes.

This is quite possibly the most ludicrous "rule" I've ever heard. Granted, I've spent a lot of time trying to wrap my head around crazy Java frameworks and have wondered why they couldn't just make some tutorial that would make it easy to get into the software. That said, the world isn't built in 10 minutes.

It's easy for any framework to give you a 10 minute experience. The problem comes once you've gotten past that 10 minutes. I was blown away with my early experiences with Ruby on Rails. However, as soon as I started getting deep into it and wanted to do more complicated things... sure enough, that up-front simplicity reared its ugly head by adding more complexity later. Try subclassing and extending ActiveRecord sometime. Some of the code they've created to allow for the simplicity of the Rails experience is mightily arcane once you want to make some simple extensions.

So, I think the 10 minute rule is great for hype, horrible in the real world. 10 minutes is what it takes to do a good demo, nothing more... and we all know what demos are worth. There are plenty of extremely powerful tools and frameworks out there in all disciplines (the web isn't the only thing people do, although you wouldn't know it from looking at slashdot) that take significantly more time to feel productive in than 10 minutes. But that up front learning curve pays off later.

Re:10 Minute Rule (1)

dood (11062) | more than 8 years ago | (#14791065)

So, I think the 10 minute rule is great for hype, horrible in the real world. 10 minutes is what it takes to do a good demo, nothing more... and we all know what demos are worth. There are plenty of extremely powerful tools and frameworks out there in all disciplines (the web isn't the only thing people do, although you wouldn't know it from looking at slashdot) that take significantly more time to feel productive in than 10 minutes. But that up front learning curve pays off later. You miss my point, I'm not talking about demos. I'm talking about 10 minutes of hands-on testing. In 10 minutes you should be able to build the source, run tests, read docs and read the APIs. Well documented code, good build scripts, simple & clean architecture are all signs that the developer of the framework has focused on quality. After 10 enjoyable minutes it's likely the framework will hold up to more inspection.

Been Thinking About This Too (1)

Comatose51 (687974) | more than 8 years ago | (#14790563)

I've been thinking about software architecture for a while now and it's even more important in the case of a framework. I realized from using my own architecture and seeing its own flaw that a design that flows naturally from the way a person thinks is usually easy to use and coherent. What I mean is that when I'm using some part of a framework (like .Net) and I need to do something new, I would often go online and research it really quick like searching for a node using XPath when using the XML parser class. I mind not know the name of the method/property or exactly how I can call it, but I guess that it is there because it ought to and seen like a common desire most other people would have. A counter-example would be .Net Datagrid. It's a datagrid so I expect it to be easy to use it to display data in row form. It is so tied into ADO.Net, however, that it is clunky to use for anything other than database data. On the other hand, I think their XML parser is fairly good as I've stated above. I didn't know right off which method would support search by XPath but it seems that they would and I was right. So for me #1 is the most important. I don't want to think about the framework nor remember every details. I want to design my project and be fairly confident that the framework will support what I do.

Use what everybody else is using (2, Funny)

burris (122191) | more than 8 years ago | (#14790576)

If it is really popular, it must be really good. See C++, Java, XML, Windows, McDonalds, etc...

Here is how my boss did (4, Funny)

2Bits (167227) | more than 8 years ago | (#14790577)

That reminds me of a (quite large) project a few years ago. We were deciding what language to use, what framework, what methodology, etc. And the boss asked:"How many frameworks can we use in the project?" We gave a few, and he wrote down one himself. He then drew one on each corner of a paper, put his pencil in the middle, and spinned. It pointed to COBOL, which is the one he wrote down.

Imagine the look on our face... One of the colleagues later told us he almost peed in his pants for that experience.

Seriously though, this story is just a bit exagerated, but not that much, the selection process was almost like what I just described :)

Why COBOL is great for Web apps (0)

Anonymous Coward | more than 8 years ago | (#14790767)

It's got two builtin features that are fantastic:
  • fixed-point math, just what accounting requires,
  • fixed-length strings, which are optimal for web processing (provided you know what you're doing, that is).

No other language has these features AFAIK, except as a separate function library.

Which Factors do I evaluate? (0)

Anonymous Coward | more than 8 years ago | (#14790594)

Factors? Evaluate?

Dude. I have no say in any of this. My wife makes these decisions.

build my own (1)

mhale2243 (415016) | more than 8 years ago | (#14790604)

... or at least help http://opensails.org/ [opensails.org]

Use a more powerful language (1)

putko (753330) | more than 8 years ago | (#14790626)

If you use Scheme, you don't need a framework -- it is powerful enough.

If you use CAML/ML, there are also typically libraries of combinators (e.g. CML) that allow you to get done what you need to get done.

People make frameworks for less powerful languages, because that's the only way you can get stuff done when your language requires so much effort to get things done.

Tried and proven methodology! (1)

ninjaz (1202) | more than 8 years ago | (#14790638)

You decide which framework to use the same way you decide which ANYTHING to use! You research the choices, go through the available information on each, and quickly become overwhelmed with the details.

Then you get the one featured the most prominently in ads!

You do have Adblock disabled, right?

Good question. (2, Funny)

deep44 (891922) | more than 8 years ago | (#14790646)

I usually start by asking myself, "what programming language am I most familiar with?" .. then, once I have that figured out, I spam "Ask Slashdot" until they post my question. By then, I've already lost interest and/or forgot about the reason for needing an application framework in the first place, so I close the loop by replying to the question with a completely offtopic (yet slightly humorous) comment.

That's just me, though. YMMV.

Maintainability, readability & coding style. (1)

savala (874118) | more than 8 years ago | (#14790676)

Whenever I use a third-party framework (for web development, both server-side and client-side), I spend half my bug-fixing time looking through the framework's code. It's frigging annoying! I don't know if my code's just that advanced, or if I have that much bad luck picking frameworks, but I always seem to be hitting the limitations of any frameworks I use.

Nowadays, the first thing I do upon downloading a framework is to open a couple of its files and look at the coding style, see if I can figure out what's going on. If I can't make it out on a glance, if it's badly documented, or if their curly brackets look at me from the wrong position... I ditch it. It's not worth the effort. I'm far more effective just re-inventing the wheel on my own for the small parts of the framework that I'd otherwise use. And at least that way I know the code will do precisely and exactly what I need, rather than being a general-purpose tool-building factory factory factory [joelonsoftware.com] .

Frameworks? (3, Funny)

Theatetus (521747) | more than 8 years ago | (#14790680)

*shrug* I use Lisp. Most frameworks take about 4 or 5 macros to emulate. Not really worth the time to download any of them.

Those who don't use Lisp are doomed to reimplement it...

Seriously though (1)

arrrrg (902404) | more than 8 years ago | (#14791004)

I think the main reason Lisp isn't popular is it isn't perfectly standardized, and doesn't play well with others. If someone would just fix up the foreign function interface, and add a bad-ass selection of packages (like for Python), all other languages could go suck it. Hell, if you don't like Lisp, you could implement Java in Lisp using a few handfuls of macros, and the end result might even be faster than the JRM (seriously).

Re:Seriously though (1)

Theatetus (521747) | more than 8 years ago | (#14791023)

I think the main reason Lisp isn't popular is it isn't perfectly standardized

Good point; unfortunately at this point the Lisp community has almost a half-century of legacy code committed to some form of Lisp or another, so standardization will not be coming any time soon. However, read-time conditionals and other read-macros go a long way towards solving this.

If someone would just fix up the foreign function interface

UFFI is pretty darn good. It just talks a little better than it listens.

and add a bad-ass selection of packages

CCLAN is not as comprehensive as CPAN, I'll grant you, but I'd put it up against gems or python's packages for most areas.

Obligatory reference (2, Funny)

thib_gc (730259) | more than 8 years ago | (#14790699)

MOD PARENT UP! (0)

Anonymous Coward | more than 8 years ago | (#14790996)

That was hilarious!!

Y

The one does it my way.. (1)

Fujisawa Sensei (207127) | more than 8 years ago | (#14790700)

I pick the one that does things my way.

I tend to use lots of factories, singletons, stateless objects, data access components, transactions, and data validators.

I can either write and implement a lot of these myself, or I can pick a framework that does it as much of it as possible for me.

An interesting story, I was messing with an application awhile back. Something completely different, and i was using this framework because of its connection management. I then discovered that it everything interesting I was doing in the other peoject was already built into this one.

Incidentally the framework I'm talking about is Spring. I picked it because I like what it does.

I also profess to being a Struts hater. I can do most of what Struts does without it. The same applies to Spring, but with Spring I don't have to extend somebody elses base classes to write interfaces to separate my own code from the frameworks. Then again I do tend to code to the interface anyway, but I'm still not necessarily extending somebody elses base classes.

Documentation! (3, Interesting)

metamatic (202216) | more than 8 years ago | (#14790704)

The first thing I do is try to browse the documentation. If there isn't any, or it's no good, I eliminate the framework right there and then. (That kills SWT/Eclipse.)

Next I take a look at the amount of functionality offered, compared to the pain of learning the framework, and the risk of tying my code to someone else's code that may break or not work on some platforms. Another important thing to consider is how easy it would be to write your own equivalents of the bits of framework you need. If the benefit to pain/risk ratio is too low, I eliminate it from consideration. (That's always been enough to keep me away from Struts--it doesn't seem to do anything that's hard to do anyway, so it's not worth the pain and risk.)

After that, it might be time to look at specifics like how clean the API is, how mature it is, and so on.

Loaded question but a few a musings. (5, Interesting)

Runesabre (732910) | more than 8 years ago | (#14790751)

There are so many criteria you have to consider that are so situational specific that it would be near impossible to write down the complete guideline. But I think there are a few solid guidelines to start with or consider.

1. Know what goals you have to meet. The eventual success or failure of a software project has more to do with having a strong vision of what it is you need to accomplish at the beginning regardless of platform or tool choices made before and during its development.

2. Be wary of selecting anything because it's cool. Many engineers, I think, fall into the trap of buying into cool toys rather than selecting mission critical tools.

3. Pick frameworks with a maturity directly proportional to the criticalness of the application you need to develop. If you are building something that is to be the the cornerstone of a company, you should pick well established frameworks that have a proven history and proven credibility to provide effective features. Conversely, feel free to experiment with less proven frameworks for applications that can afford to be less robust. A balance between sticking with tradition and building for the future does have to be taken into consideration.

4. Identify the top 3 features your application has to deliver and ensure your chosen framework excels at those features. Bells and whistles and future expansion are nice but make sure you take care of what's critical first before comparing extra features. This will help focus your evaluation and not get side-tracked by all the cool stuff a given framework might provide.

5. Experiment with possible options. There is no reason to select a framework based on paper analysis. Try as much to get your own hands-on experience.

6. If possible, interview other people who have used the framework in real applications. Get the opinions of people who have actually used your options in the real world. Don't let tech demos be your only guide.

Simplicity is key (1)

syousef (465911) | more than 8 years ago | (#14790768)

You need to make sure you use the simplest framework BUT does !!!everything!!! you need.

There's a lot of over-engineered crap out there. eg. EJBs were in fashion but they were always over-engineered. Spring's in fashion now but when the honeymoon's over people will realise that Spring is just wrapper technology for existing frameworks and that it's hyped up junk too. Another example: Try and do anything complex with Hibernate and HQL. In the case of DB, SQL works so well. Plain JDBC and SQL with a little bit of intellgent in-house or 3rd party framework wrapping really isn't that bad for goodness sake people.

At the end of the day you have to choose and use them, but you don't need to swap yourself with design patterns that give you flexibility you don't need and want.

Choose a handful of well known, well proven frameworks. Less frameworks is better (which is why J2EE has turned into a nightmare - too many frameworks and too much reliance on one another).

Re:Simplicity is key (1)

Runesabre (732910) | more than 8 years ago | (#14790778)

I agree. As simple as can be while meeting one's needs.

Re:Simplicity is key (4, Informative)

Serveert (102805) | more than 8 years ago | (#14790805)

HQL has major limitations but you can rip out into native SQL using createSQLQuery() I believe. Map it into a hibernate class and you're golden.

When selecting aggregates, JDBC works well. But Hibernate is pretty amazing if you are aware of its limitations. 90% of my code uses hibernate, 10% uses jdbc.

And the code that uses hibernate is pretty neat, it cuts down dev time significantly. I use hibernate tools in eclipse, point it to the DB and it generates all the classes, parsing foreign keys, making the associations.

Don't get me wrong, I like to be unique and cynical, against the grain if you will, but hibernate, despite the jerk off creator of it, is amazing and useful.

5. Performance (1)

tahpot (237053) | more than 8 years ago | (#14790866)

1-4 Address valid points, but each project is different and sometimes the overbearing factor is performance.

When developing web applications one of the largest bottlenecks can be rendering of templates. I always use clearsilver [clearsilver.net] for templating, it's written in C and orders of magnitude faster than any other template engine I've come across.

The issue then becomes, which framework uses clearsilver? I didn't find a satisfactory solution using similar criteria as 1-4, so I hacked clearsilver support into cherrypy [cherrypy.org] . I'm sure there's many other solutions out there.

The basic point is that every project is different, so different criteria should apply to selecting the appropriate framework.

Rock, Paper, Scissors (1)

SnuffySmith (780790) | more than 8 years ago | (#14790894)

Always pick Rock. Rock always wins.

O...crap....

What you know and what you can afford (1)

clueless666 (952528) | more than 8 years ago | (#14790907)

I look at how the framework matches with the requirements, cost, our knowledge of it, if new howz the learnng curve, ease of use On the app side wxwidgets has been my favorite, but worked quite a bit on python and .NET based on need. Have worked on very few web related projects, Ruby on Rails is miles ahead of others here.

I'm starting to sour on frameworks (5, Insightful)

Jerf (17166) | more than 8 years ago | (#14790946)

I've been developing for about ten years now; not as long as some people, but enough to be getting over the ten year [norvig.com] hump for competency. As a result, I don't expect that everybody can pick this idea up and run with it, but it might color how you look at the frameworks.

I'm really starting to sour on frameworks. Libraries, love 'em to pieces. You want to take care of all the bit-bashing in the video card and present me an OpenGL interface, thank you very much. You want to give me a proper 21-st century file abstract like the KDE io-slaves, you have my gratitude. But you start bundling together five or six different technologies, each themselves fairly simple, and give me this unified framework or something, and in short order I'm likely to be cranky. This is especially true for things that are themselves fairly easy, like emitting HTML.

The problem is two-fold:
  1. The resulting framework is quite often nearly impenetrable to an outsider, so when it's wrong, it's really, really wrong; even an open source framework might be of only dubious value since you're unlikely to be able to unravel all of the pieces in any useful amount of time.
  2. As you add pieces together, the complexity of the whole increases geometrically. (Not "exponentially" as the term is commonly abused.) This can be mitigated by maturity, both of framework or core developer, but that's more rare than you might think. But the thing is, you are very unlikely to need all of the pieces. If the framework does 40 things, at a complexity of 1600, but you only need to use it for 12 things, at a complexity of 144, you're gaining an awful lot of complexity. (The numbers are of course made up, but the idea holds; don't try to over-rationalize the figures.) What's worse, as mentioned in the previous point, you might want to do 3 things that the framework fights you on, and now you're either going to have to give up on those 3 things, make unbelievably ugly hacks to get each of them half-sort-of working, or scale a huge learning curve to fix the framework that you are now significantly invested in, but know effectively nothing about the insides.
Especially in this age of using more dynamic languages, I'm finding I'm a lot happier taking smaller libraries and tying them together with my own frameworks, which I understand and can make sing and dance in exactly the ways I need them to with only the minimal complexity.

One important point here is the scale of development. If I'm going to do a three-week project, I'm going to probably go ahead and use a framework. But the larger the project, the larger the team, the more time that geometric price has to come up and bite you in the ass, where you Absolutely, Positively Need this thing the framework can't do, and it has to be done by tomorrow.

Also depends on your skill level, of course. And one of the cardinal Laws of Programming is that there are no Laws of Programming, only tradeoffs. I don't expect everyone to agree, I'm not pitching this so much as throwing it out as food for thought. Caveat, caveat, caveat.

I don't do Java, but my guess is that Hibernate, to the extent that it is a framework, is probably a win because it's so mature. But then again, you can also look at it as a really big library, because it sure does seem to play well with a lot of things. I think one of the distinguishing charateristics of a "framework" as I mean it in this post is that it is well-nigh impossible to glue two "frameworks" together, and sometimes even adding the capabilities of an additional library is an exercise in frustration. But the upshot is, I'm finding in practice that I'm a lot happier and more effective in the medium and long term, even on my own projects, with libraries that I tie together myself and not "frameworks".

While I'm not dogmatic about any particular one of them, the Agile-style development really help with this, and I might not feel this way without their influence. Automated Test (unit tests, usually) + Once and Only Once leads fairly natually to a "framework" that you're in control of, that consists of only what you need, but natually over time evolves into something that is a joy to use, and actually helps you, instead of fighting you.

What is a framework? (4, Informative)

SickLittleMonkey (135315) | more than 8 years ago | (#14791067)

A framework ...

"... dictates the architecture of your application. It will define the overall structure, its partitioning into classes and objects, the key responsibilities thereof, how the classes and objects collaborate, and the thread of control. A framework predefines these design parameters so that you, the application designer/implementer, can concentrate on your application. The framework captures the design decisions that are common to its application domain."

Erich Gamma et al., Design Patterns: Elements of Reusable Object-Oriented Software.
Quoted from Tapestry in Action by Howard Lewis Ship.

Howard continues: "Frameworks are very useful; instead of your having to start with a clean slate, the design is partially filled in and the path to follow is clear. Many design decisions are already made for you, decisions that leverage the combined experience of the frameworks' authors and users."

And that's why when weighing up JSF or Struts, I chose ... Tapestry!
Load More Comments
Slashdot Login

Need an Account?

Forgot your password?

Submission Text Formatting Tips

We support a small subset of HTML, namely these tags:

  • b
  • i
  • p
  • br
  • a
  • ol
  • ul
  • li
  • dl
  • dt
  • dd
  • em
  • strong
  • tt
  • blockquote
  • div
  • quote
  • ecode

"ecode" can be used for code snippets, for example:

<ecode>    while(1) { do_something(); } </ecode>