# Eclipse Che

Eclipse Che es un servidor de espacio de trabajo para desarrolladores de código abierto, basado en Java y un IDE en línea (entorno de desarrollo integrado). Incluye una plataforma de desarrollo remoto multiusuario. El servidor del espacio de trabajo viene con un servicio web RESTful flexible. También contiene un SDK para crear plug-ins para lenguajes, frameworks o herramientas. Eclipse Che es un proyecto de alto nivel de Eclipse Cloud Development (ECD), que permite contribuciones de la comunidad de usuarios.

## Historia

Eclipse Che se anunció por primera vez en octubre de 2014. Uno de sus principales contribuyentes, Codenvy, entregó la pila tecnológica en la que se basa Che. La idea detrás del IDE basado en la nube y su desarrollo surgió a principios de 2009 por la plataforma eXo. Después de tres años de desarrollo continuo, el proyecto recaudó 9 millones de dólares y desarrolló un negocio independiente llamado Codenvy. Después de anunciar el proyecto Che, incluida la donación de la propiedad intelectual y la participación en el proyecto Eclipse Cloud Development, comenzó el desarrollo del proyecto Che. Codenvy en sí es hoy un producto comercial construido sobre Eclipse Che. En la actualidad, hay muchos colaboradores además Codenvy como IBM, Red Hat, Samsung, SAP, Microsoft, Intuit, eXo Plataform, WSO2, y Serli, así como numerosos colaboradores de código abierto de Brasil, Canadá, China, Francia, India, Rusia, Sri Lanka, Ucrania, y Estados Unidos.

### Licencia

Eclipse Che se publica bajo la licencia pública Eclipse, que es similar a la Licencia Pública Común.

### Nombre

El nombre "Che" está basado en el hecho de que la mayoría del desarrollo se realiza en Cherkasy (Ucrania).

## Lenguajes y Frameworks compatibles

De forma predeterminada, se admiten los siguientes frameworks y lenguajes de programación:
| Categoría | Soporte |
| Lenguajes | C, C++, C#, F#, VA, Java, Javascript, PHP, Python, Ruby, SQL, TypeScript |
| Frameworks | AngularJS, Docker, .Net 2.0, Kubernetes, OpenShift, Yeoman, |
| Fundadores | Ant, Bower, Grunt, Gulp, Maven, Npm |
| Herramientas | Git, Orion, SSH, Subversion |

## Propuesta

Che en sí es un servidor de espacio de trabajo que se ejecuta en un servidor de aplicaciones. Che proporciona un IDE integrado que se puede utilizar a través de un navegador. Después de la carga inicial, el IDE proporciona una interfaz de usuario dinámica que incluye componentes conocidos como asistentes, editores, barras de herramientas y muchos más. El usuario tiene la oportunidad de crear espacios, proyectos, entornos, máquinas y muchos otros módulos necesarios para construir un proyecto desde cero. La comunicación entre la interfaz de usuario y el servidor se realiza mediante API RESTful que interactúan con el denominado Workspace Master. Un workspace o espacio de trabajo puede incluir cero o más proyectos y debe incluir al menos un entorno, que a su vez contiene al menos una máquina. Una máquina es un tiempo de ejecución que tiene instalado el software necesario. Si el usuario agrega, por ejemplo, un proyecto que usa Apache Maven, el Workspace Master instala Maven en cualquier máquina en el workspace o espacio de trabajo para garantizar que el proyecto se pueda ejecutar en cada máquina. Che viene con algunas pilas de tecnología predefinidas para configurar rápidamente una nueva máquina. Para garantizar una alta flexibilidad y extensibilidad, el usuario también puede definir pilas de tecnología personalizadas que se pueden utilizar para configurar nuevas máquinas.

### Pila tecnológica

Eclipse Che es una aplicación Java que se ejecuta de forma predeterminada en un servidor Apache Tomcat. El IDE que se utiliza dentro del navegador se escribe mediante el kit de herramientas Web de Google. Che es altamente extensible ya que ofrece un SDK que se puede usar para desarrollar nuevos complementos que se pueden agrupar en los llamados ensamblados. Más adelante, un ensamblaje se puede ejecutar como una aplicación de servidor independiente o un cliente de escritorio utilizando los instaladores incluidos. Docker gestiona las máquinas en las que se pueden ejecutar los proyectos.

### Usuarios

Che divide a sus usuarios en tres grupos. Los desarrolladores son los usuarios reales del IDE. Esto puede ser accediendo a un servidor Che remoto o ejecutando una instancia local de Che. Los propietarios de productos pueden utilizar Che para proporcionar espacios de trabajo bajo demanda. Los proveedores de complementos pueden desarrollar complementos IDE del lado del cliente o del administrador del espacio de trabajo del lado del servidor.

## Características

Eclipse Che viene con muchas funcionalidades y flexibilidad nuevas:
* Portátil Workspaces: Cada espacio de trabajo tiene su configuración que se puede conservar, migrar e integrar fácilmente en otras instancias de Eclipse Che
* Docker Imágenes: Cada espacio de trabajo contiene las denominadas máquinas que se utilizan para ejecutar proyectos. Cada máquina puede tener distintas tecnologías y es administrada por Docker.
* Compatibilidad con la infraestructura de OpenShift: Ejecute Che en OpenShift
* Agentes del espacio de trabajo: Cada máquina contiene agentes del espacio de trabajo que brindan servicios como acceso a SSH, monitoreo y depuración remota para el usuario.
* Snapshots del espacio de trabajo: Los espacios de trabajo con transitorios por defecto. Eso significa que el estado del entorno probablemente no será el mismo después de reiniciar el espacio de trabajo. Con las Snapshots del espacio de trabajo, el estado de un espacio de trabajo se puede conservar y reiniciar más adelante.
* Multiusuario y Multicliente: Cientos de desarrolladores o usuarios pueden iniciar sesión en Che y colaborar. Lo que a menudo es necesario para los equipos y empresas más grandes.
* Espacios de trabajo colaborativos: Si Eclipse Che está alojado como un servidor de espacio de trabajo, varios usuarios y equipos pueden acceder a él. Cada usuario puede desarrollar fácilmente la misma aplicación sin la necesidad de instalar software.
* Visualización de Git: los archivos tanto en el explorador de proyectos como en las pestañas del editor se pueden colorear en función de su estado de Git.
* Espacios de trabajo RESTful: la comunicación entre el IDE del navegador y el administrador del espacio de trabajo se realiza mediante el uso de las API RESTful que expone el administrador del espacio de trabajo.
* Depurador: navegue por el hilo de su código, configure las condiciones y suspenda las políticas en los puntos de interrupción. Lo que le permite diagnosticar y resolver desafíos.
* DevOps: los desarrolladores pueden ver y monitorear el estado de una máquina usando el IDE.
* Framework Plug-in: al proporcionar un SDK para permitir el desarrollo de complementos personalizados, Eclipse Che obtiene una alta extensibilidad.
* Código abierto: Eclipse Che ha sido desarrollado durante cuatro años por muchos colaboradores en todo el mundo.

## Escalada

Dado que Che es una aplicación de servidor, varios desarrolladores pueden acceder a ella a la vez. Cada desarrollador puede conectarse al mismo espacio de trabajo utilizando el IDE del navegador. En este momento, Eclipse "Che implementa una política de última escritura gana cuando varios usuarios modifican el mismo archivo". En una versión futura, se planea incluir imágenes de varios cursores para permitir la edición colaborativa de múltiples usuarios de un solo archivo. Los espacios de trabajo pueden volverse muy grandes porque un espacio de trabajo puede tener muchas máquinas incluidas. Si un solo host ya no es suficiente, se recomienda proporcionar una instancia de Che propia para cada usuario o grupo de usuarios. Eso significa que puede tener muchos servidores ejecutando Che en el mismo ecosistema. Codenvy también ofrece un ecosistema de escalado que se puede instalar bajo demanda o se puede utilizar como SaaS. En versiones futuras, también está previsto habilitar contenedores Docker remotos para que no sea necesario que todos los contenedores se ejecuten en el mismo host.

## Otras lecturas

* Documentación de Eclipse Che oficial
* https://github.com/eclipse/che