[Qt-interest] [OT] RE: GCF 2.2.0 Released!!
Oliver.Knoll at comit.ch
Oliver.Knoll at comit.ch
Wed Aug 5 11:00:29 CEST 2009
Matthias Pospiech wrote on Wednesday, August 05, 2009 8:03 AM:
> ...
> I have not studied computer science, and never came across an app.
> framwork. I have looked at some articles in the web, but apart from
> the hint that it is different to a libary I did not understand what
> an app. framework does, or what is more important, if it could be of
> interest for my applications.
I am pretty sure there is no exact definition of "application framework" (but we computer people love terms like "framework" ;), but here are a few thoughts:
- a "framework" doesn't necessarily need to come as a "library" (DLL, "shared object") alone, but could consist of
utilities which create "template code" which are compiled into the project
- a "framework" typically is the "skeleton" of something, which also "enforces" you to follow certain
design patterns
- a "framework" takes away the task of writing "boilerplate" code (or the "boring code" no one
really fancies to write, but which is crucial for every application)
- a "framework" often also provides means to "configure" your application, or to "hotwire"
components together ("Dependency Injection")
That said, is Qt a framework? For me yes, because all these points (more or less) apply to Qt - is it a "library"? Well yes, it comes with DLLs which provide certain functionality (networking, painting, ...). But it is more than just "providing functionality", it also provides tools like moc, uic etc. which make you follow certain design principles (signals/slots, user interface configured as XML, ...). It also provides "base functionality" for writing/reading configuration files, providing a help system etc... uh well...
Another good example for a "framework" would be the Spring Framework (http://en.wikipedia.org/wiki/Spring_Framework) which provides means (by annotations or XML configuration) to "hotwire" components (Java Beans), called "Dependency Injection". It also provides a kind of a "runtime container" (The "ApplicationContext") which can create and wire more Spring Beans at runtime. But it also offers concrete functionality (as "libraries") for database access, persistence, messaging etc.
Then the aforemetioned GCF (without knowing the details) is also a framework, because it obviously provides means to update (via network) your application etc. - base stuff which should not be re-written by each application, but which is really "base functionality".
So you see, the difference between "framework" and "library" is really a smooth transition.
What is clearly *not* a "framework"? For example a "math library" which provides "raw functionality", e.g. matrix manipulation, multiplication, imaginary numbers etc.. Or OpenGL, which provides "raw functionality" for drawing 3D (2D) graphics - but then again, you could also call it a "framework", because it also offers some kind of "runtime environment", the OpenGL context, it defines the graphic pipeline, it specifies the API for hardware drivers etc. - confused? Me too, so I stop here and leave the rest for you to think about it :)
Cheers, Oliver
--
Oliver Knoll
Dipl. Informatik-Ing. ETH
COMIT AG - ++41 79 520 95 22
More information about the Qt-interest-old
mailing list