Framework vs Platform: what's the difference?

Hello, Habr! I present to you the translation of the article "Framework Vs. Platform What's The Difference?" author G. Harris.


Confess: I'm a pedant. Despite personal failures in this field, I deeply believe that using the right language adds many benefits. To quote Mark Twain's aphorism :


The difference between an almost correct word and a correct word really means a lot. This is the difference between the lightning bug (lightning bug) and lightning (lightning).

In view of this difference, I see the point in the fact that from time to time I am annoyed by the lack of clarity around the two concepts of the framework and the platform . Any company in the world that is related to development has some kind of platform. The open source world is full of frameworks. But few can define these concepts when asked. If I am not able to give clear definitions of basic terminology, can I claim to have a complete understanding of the subject of discussion?


I would like to offer one of the possible definitions by analogy.


A platform is something that can be compared to the designer box that my children had in the room when they were small. Individual cubes are components. On an ideal platform, many different combinations are available for assembling components, and a wide range of end products can be created. Platforms offer the holy grail of software reuse: that's why they are so popular.


But what are the prerequisites for building the platform? To be successful, the platform must meet some mandatory technical requirements, and satisfy them is the task of the framework.


  • , ? , . , , . . , ยซยป โ€” , , . , (well-defined) .
  • , , โ€” . , ? , . . Lego (tm) Fischer-Price (tm). , ( ) . .
  • , . () , , () . , . , , .

, , , :


  1. , .

โ€” , .


, .


, . , . . . , .


: . . , . , , , . , . , , .


A framework may have additional responsibilities. Ideally, he will support the concept of cause and effect relationships (Wirkketten in German), which identifies run-time dependencies, data streams, and control flows. In addition, it must contain (and hide) the necessary mechanism for working with concurrency. But this will serve as material for another article.


All Articles