Los programadores de sistemas. Los programadores de aplicaciones. Los programadores de sistemas escriben el cdigo que utilizarn los programadores de aplicaciones. Los programadores de sistemas desarrollan los lenguajes Java, PHP, C o C++ y los programadores de aplicaciones utilizan estos lenguajes y herramientas para crear valor aadido con fines comerciales. Los programadores de aplicaciones se concentran en sus proyectos sin preocuparse de las tcnicas y las mecnicas de bajo nivel. Los programadores de aplicaciones utilizan una serie de bibliotecas o herramientas que reciben el nombre de framework. Un framework es un conjunto de bibliotecas, herramientas y normas a seguir que ayudan a desarrollar aplicaciones. Los frameworks los desarrollan los programadores de sistemas. Un framework est compuesto por varios segmentos/componentes que interactan los unos con los otros. Las aplicaciones pueden escribirse de manera ms eficaz si utilizamos un framework adaptado al proyecto en lugar de tener que volver a inventar la rueda cada vez. Un framework Java proporciona un conjunto de caractersticas a partir de una implementacin de objeto. En proyectos de desarrollo a gran escala y de diseo en equipo, los frameworks son muy tiles, incluso imprescindibles. En la actualidad, existen diferentes tipos de framework: los frameworks de infraestructura de sistema, que permiten desarrollar sistemas de explotacin, herramientas grficas y plataformas Web (Struts, Spring...); los frameworks comunicativos (llamados software); los frameworks de empresa (desarrollos especficos); los frameworks de gestin de contenido (tipo Content Management System). Los frameworks permiten la reutilizacin de cdigo, la estandardizacin del desarrollo y la utilizacin del ciclo de desarrollo de tipo interactivo-incremental (especificacin, codificacin, mantenimiento y evolucin). En ocasiones hablamos de paquetes de programas evolucionados cuando diseamos un framework y su ciclo de vida. En la actualidad, existen muchos frameworks en todos los dominios de aplicacin y en prcticamente cualquier idioma. Esta es una lista no exhaustiva de los frameworks utilizados en Java: Apache Struts WebWork JSF (Java Server Faces) Spring Wicket