I am newbie to Java world (7 years of low level plain C).
When I started reading Java related sites:
- http://wiki.apidesign.org/wiki/Main_Page
- http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/
I confused by existing terminology:
- class
- package
- module
- component
- container
- service
- framework
- platform
I found many resources about terms definition (and a lot more):
- Framework vs. Toolkit vs. Library
- Difference between framework and container?
- What are the containers in Java
- Definition of a Java Container
- http://martinfowler.com/articles/injection.html (Inversion of Control Containers and the Dependency Injection pattern)
- http://www.cafeaulait.org/course/week8/36.html (What is a AWT Container?)
- http://en.wikipedia.org/wiki/Web_container
- http://netbeans.org/features/platform/ (The NetBeans Platform)
- What is meant by "application framework"?
- What is a software framework?
- What is the difference between a framework and a library?
- What is the difference between a class library and a framework
- https://stackoverflow.com/questions/11576018/what-is-the-difference-between-a-javascript-framework-and-a-library
- What is the major difference between a framework and a toolkit?
- http://blog.orderharmony.com/2011/07/libraries-vs-frameworks.html
- http://www.javacodegeeks.com/2012/04/frameworks-vs-libraries-as-inheritance.html
- Difference between library, platform and framework?
- What is the difference between a platform and a framework?
- what is the difference between a framework and a platform
- Difference between a module, library and a framework
but each of these resources define them on its own purpose and I still can't distinct for example module from component in general case.
Please explain what means of these terms in big picture (can be single class a platform, what amount of modules is required to make a container, etc).
UPDATE 2019 From https://www.artima.com/lejava/articles/reuse3.html (my highlighting)
Bill Venners: What is the difference between a framework, a platform, and a toolkit, and what are the different flexibility needs?
Erich Gamma: With a platform I associate long term stability. It is safe to build on top of a platform. A platform makes compatibility guarantees. Frameworks often do not have this quality and I have seen many framework failures with regard to stability. If you look at Eclipse, yes it includes frameworks, toolkits, and provides platform APIs. All of this is bundled as plug-ins. Frameworks abstract and provide higher level default functionality. To do so the framework needs to be in control. This loss of control can lead to what is sometimes called frameworkitis.
Bill Venners: And toolkits don't because...
Erich Gamma: With toolkits you create and call toolkit objects and register listeners to react to events. You're in control. Frameworks try to be in control and tell you when to do what. A toolkit gives you the building blocks but leaves it up to you to be in control.
Another quotation answers my naive question how many classes makes something a framework:
https://www.artima.com/lejava/articles/reuse.html
Erich Gamma: ... JUnit is a small framework, for example. It is the "Hello, world" of frameworks. You have
Test
,TestCase
,TestSuite
and relationships defined. Also, you hook into frameworks by subclassing somewhere. They use the so-called Hollywood principle of "don't call us, we'll call you." The framework allows you to define your custom behavior, and it will call you back when it's your turn to do something. Same with JUnit, right? It calls you back when it wants to execute a test for you, but the rest is done in the framework.