Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Hey I'm a student programmer currently working in Java. I often see several terms thrown around alot and it would be very helpful for someone to explain the differences. I was prompted by my research that I did when reading this question. Anyway here are the terms (and wiki links), I've read their wiki's but am still uncertain.

Software Stack

Software Framework/Application framework - is there a difference? what are they?

Middleware

share|improve this question
    
site engine did not allow you to provide links right? were these from wikipedia? just edit your answer and add explanation for that –  gnat Dec 10 '11 at 16:29
add comment

2 Answers

up vote 8 down vote accepted

A software stack generally refers to a set of technologies that work together to support the development, maintenance and operation of software. Stack in this context is a bit of a colloquialism and doesn't have an official definition, but often includes all software that is required for your solution (including the webserver, the OS, any special extensions like memcache etc, as well as developer tools like a tightly coupled platform/language/IDE). Sometimes, the definition might even extend to a hardware stack like Amazon's cloud computing services.

A framework has a more technical definition, and although the term is sometimes used interchangeably with library, a framework is usually distinguished by a property called Inversion of Control. Contrasted with a library, where methods are called by the programmer where needed, using a framework usually means that much of the application functionality is deferred to the framework, allowing the programmer to avoid writing boilerplate code and merely "fill in the blanks", leaving the framework to decide when its appropriate to execute core business logic.

Middleware is a bit more esoteric, but often refers to software or an application interface built to facilitate standard communication between complex systems. You can expect middleware to perform tasks like parsing, authentication or just provide a standard way to communicate data between systems. Contrasted with a library or framework, middleware is generally not considered a "developer tool" per-say and tends to be pretty tightly integrated into the systems it facilitates.

share|improve this answer
add comment

I tend to think about it like this, but this is just my opinion (not science):

Stack: Is a set of tools serving the purpose of providing a software solution. The tools are meant to be compatible and complementary to one another.

Framework: Is a set of methods, patterns, possibly tools or components that serve the development of only part of the software solution.

Example:

Microsoft ASP.NET Stack: IIS, ASP.NET (Framework), HTML, CSS + MVC Framework (GUI) + Entity Framework (for data persistance)

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.