(1) The building blocks of an application.
(2) A set of common software routines that provides a foundation structure for developing an application. Frameworks take the tedium out of writing all the program code for an application from scratch. Object-oriented application frameworks, which are the norm today, are structured as a class library. Each class library has its way of doing things, and although the purpose of a framework is to eliminate a certain amount of programming drudgery, programmers must first learn the structure and peculiarities of the framework in order to use it. Microsoft Foundation Class (MFC) is a widely used application framework for writing general-purpose Windows applications. Cocoa and Cocoa Touch are Mac and iOS frameworks, and Struts is a framework for Web-based Java applications. Specialized Application Frameworks There are also frameworks geared to specific purposes; for example, a framework for a content management system (CMS) would include the infrastructure for developing e-commerce, document maintenance and interactive user activities such as blogs and wikis (see content management system). See class library, MFC, Cocoa, Struts, AFC, JFC, OWL and enterprise framework.