# Eclipse (software)

Eclipse es una plataforma de software compuesto por un conjunto de herramientas de programación de código abierto multiplataforma para desarrollar lo que el proyecto llama "Aplicaciones de Cliente Enriquecido", opuesto a las aplicaciones "Cliente-liviano" basadas en navegadores. Esta plataforma, típicamente ha sido usada para desarrollar entornos de desarrollo integrados (del inglés IDE), como el IDE de Java llamado Java Development Toolkit (JDT) y el compilador (ECJ) que se entrega como parte de Eclipse (y que son usados también para desarrollar el mismo Eclipse).
Eclipse es también una comunidad de usuarios, extendiendo constantemente las áreas de aplicación cubiertas. Un ejemplo es el recientemente creado Eclipse Modeling Project, cubriendo casi todas las áreas de Model Driven Engineering.
Eclipse fue desarrollado originalmente por IBM como el sucesor de su familia de herramientas para VisualAge. Eclipse es ahora desarrollado por la Fundación Eclipse, una organización independiente sin ánimo de lucro que fomenta una comunidad de código abierto y un conjunto de productos complementarios, capacidades y servicios.
Eclipse fue liberado originalmente bajo la Common Public License, pero después fue re-licenciado bajo la Eclipse Public License. La Free Software Foundation ha dicho que ambas licencias son licencias de software libre, pero son incompatibles con Licencia pública general de GNU (GNU GPL).

## Arquitectura

La base para Eclipse es la Plataforma de cliente enriquecido (del inglés Rich Client Platform RCP). Los siguientes componentes constituyen la plataforma de cliente enriquecido:
* Plataforma principal - inicio de Eclipse, ejecución de plugins
* OSGi - una plataforma para bundling estándar.
* El Standard Widget Toolkit (SWT) - Un widget toolkit portable.
* JFace - manejo de archivos, manejo de texto, editores de texto
* El Workbench de Eclipse - vistas, editores, perspectivas, asistentes
Los widgets de Eclipse están implementados por una herramienta de widget para Java llamada Standard Widget Toolkit, a diferencia de la mayoría de las aplicaciones Java, que usan las opciones estándar Abstract Window Toolkit (AWT) o Swing. La interfaz de usuario de Eclipse también tiene una capa GUI intermedia llamada JFace, la cual simplifica la construcción de aplicaciones basadas en SWT.
El entorno de desarrollo integrado (IDE) de Eclipse emplea módulos (en inglés plug-in) para proporcionar toda su funcionalidad al frente de la plataforma de cliente enriquecido, a diferencia de otros entornos monolíticos donde las funcionalidades están todas incluidas, las necesite el usuario o no. Este mecanismo de módulos es una plataforma ligera para componentes de software. Adicionalmente a permitirle a Eclipse extenderse usando otros lenguajes de programación como son C/C++ y Python, permite a Eclipse trabajar con lenguajes para procesado de texto como LaTeX, aplicaciones en red como Telnet y Sistema de gestión de base de datos. La arquitectura plugin permite escribir cualquier extensión deseada en el ambiente, como sería Gestión de la configuración. Se provee soporte para Java y CVS en el SDK de Eclipse. Y no tiene por qué ser usado únicamente con estos lenguajes, ya que soporta otros lenguajes de programación.
La definición que da el proyecto Eclipse acerca de su software es: "una especie de herramienta universal - un IDE abierto y extensible para todo y nada en particular".
En cuanto a las aplicaciones clientes, Eclipse provee al programador con frameworks muy ricos para el desarrollo de aplicaciones gráficas, definición y manipulación de modelos de software, aplicaciones web, etc. Por ejemplo, GEF (Graphic Editing Framework - Framework para la edición gráfica) es un plugin de Eclipse para el desarrollo de editores visuales que pueden ir desde procesadores de texto wysiwyg hasta editores de diagramas UML, interfaces gráficas para el usuario (GUI), etc. Dado que los editores realizados con GEF "viven" dentro de Eclipse, además de poder ser usados conjuntamente con otros plugins, hacen uso de su interfaz gráfica personalizable y profesional.
El SDK de Eclipse incluye las herramientas de desarrollo de Java, ofreciendo un IDE con un compilador de Java interno y un modelo completo de los archivos fuente de Java. Esto permite técnicas avanzadas de refactorización y análisis de código. Mediante diversos plugins estas herramientas están también disponibles para otros lenguajes como C/C++ (Eclipse CDT) y en la medida de lo posible para lenguajes de script no tipados como PHP o Javascript. El IDE también hace uso de un espacio de trabajo, en este caso un grupo de metadatos en un espacio para archivos planos, permitiendo modificaciones externas a los archivos en tanto

## Características

Eclipse dispone de un Editor de texto con un analizador sintáctico. La compilación es en tiempo real. Tiene pruebas unitarias con JUnit, control de versiones con CVS, integración con Ant, asistentes (wizards) para creación de proyectos, clases, tests, etc., y refactorización.
Asimismo, a través de "plugins" libremente disponibles es posible añadir control de versiones con Subversion. e integración con Hibernate.

## Historia

Eclipse comenzó como un proyecto de IBM Canadá. Fue desarrollado por OTI (Object Technology International) como reemplazo de VisualAge también desarrollado por OTI. En noviembre de 2001, se formó un consorcio para el desarrollo futuro de Eclipse como código abierto. En 2003, fue creada la fundación independiente de IBM.
Resumen de las versiones de Eclipse:
| Versión | Fecha de lanzamiento | Versión de plataforma | Proyectos |
| Eclipse 3.0 | 28 de junio de 2004 | 3.0 | |
| Eclipse 3.1 | 28 de junio de 2005 | 3.1 | |
| Callisto | 30 de junio de 2006 | 3.2 | Callisto projects |
| Europa | 29 de junio de 2007 | 3.3 | Europa projects |
| Ganymede | 25 de junio de 2008 | 3.4 | Ganymede projects |
| Galileo | 24 de junio de 2009 | 3.5 | Galileo projects |
| Helios | 23 de junio de 2010 | 3.6 | Helios projects |
| Indigo | 22 de junio de 2011 | 3.7 | Indigo projects |
| Juno | 27 de junio de 2012 | 4.2 | Juno projects |
| Kepler | 26 de junio de 2013 | 4.3 | Kepler projects |
| Luna | 25 de junio de 2014 | 4.4 | Luna projects |
| Mars | 24 de junio de 2015 | 4.5 | Mars projects |
| Neon | 22 de junio de 2016 | 4.6 | Neon projects |
| Oxygen | 28 de junio de 2017 | 4.7 | Oxygen projects |
| Photon | 27 de junio de 2018 | 4.8 | Photon projects |
| Foundation | 24 de junio de 2019 | 4.9 | Foundation projects |

## Datos

Los datos y cifras relacionados con Eclipse, mostrados a continuación, permitirán profundizar un poco más en el producto.
Como puede verse en la tabla siguiente, la versión 3.2.1 posee más de 2 millones de líneas de código (para el proyecto Eclipse). Estos datos son de acuerdo a SLOCCount. Utilizando esta cifra y aplicando el modelo COCOMO, podemos ver que requeriría un esfuerzo para producir un software de este tamaño de 604 persona-año (para ello se ha utilizado la fórmula 2.4*(KSLOC ** 1.05)).
Para tener un estimado de los costes se toma en consideración el salario de 56.286 $/año, que es el salario promedio de un programador en los Estados Unidos, y luego se multiplica ese resultado por 2,40, que incluye cualquier gasto extra diferente de los programadores como pueden ser luz, teléfono, papelería, etc.
Estado actual de Eclipse :
| Líneas de código fuente | 2.063.083 |
| Esfuerzo estimado de desarrollo (persona-año / persona-mes) | 604,33 / 7.251,93 |
| Estimación de tiempo (años-meses) | 6,11 / 73,27 |
| Estimación del n.º de desarrolladores en paralelo | 98,98 |
| Estimación de coste | $ 81.636.459 |
Un punto muy importante a notar son los diversos lenguajes de programación utilizados en el desarrollo del proyecto. De acuerdo al análisis realizado usando SLOCCount, el lenguaje más utilizado es Java, seguido de ANSI C.
Lenguajes de programación utilizados en Eclipse 3.2.1 :
| Lenguaje | Líneas de código | % |
| Java | 1.911.693 | 92,66% |
| ANSI C | 133.263 | 6,46% |
| C++ | 10.082 | 0,49% |
| JSP | 3.613 | 0,18% |
| sh | 2.066 | 0,10% |
| perl | 1.468 | 0,07% |
| php | 896 | 0,04% |
| sed | 2 | 0,00% |

## Idiomas

En julio de 2008, los siguientes paquetes de lenguas están disponibles para Eclipse 3.2.x (En orden alfabético): Alemán, Árabe, Checo, Chino Simplificado, Chino tradicional, Coreano, Español, Francés, Húngaro, Inglés, Italiano, Japonés, Polaco, Portugués (Brasil) y Ruso.
Consultado en 2018: traducido total o parcialmente a más de 40 idiomas. Puede consultarse la lista de idiomas en: http://babel.eclipse.org/babel/languages.php