# WebSphere Application Server

IBM WebSphere Application Server (WAS, servidor de aplicaciones WebSphere), es un servidor de aplicaciones de software, de la familia WebSphere de IBM. WAS está construido usando estándares abiertos tales como J2EE, XML, y Servicios Web. Varios laboratorios de IBM alrededor del mundo participaron en la creación de los productos run-time WebSphere y las herramientas de desarrollo. Esto funciona con varios servidores web incluyendo Apache HTTP Server, Netscape Enterprise Server, Microsoft Internet Information Services (IIS), IBM HTTP Server para i5/OS, IBM HTTP Server para z/OS, y también IBM HTTP Server para el sistema operativo AIX/Linux/Microsoft Windows/Solaris.

## Versiones del WAS

IBM ha entregado varias versiones y ediciones del WAS. En las primeras versiones beta, WAS era llamado con el nombre Servlet Express. [EDD_DIC_2013].

### Versión 1

Todo comenzó en junio de 1998. En realidad sólo era un motor de servlet.

### Versión 2

En esta versión IBM añade soporte para JavaBean y CORBA. Ahora soporta Linux. Viene en dos ediciones: Standard Edition (SE) y Advanced Edition (AE).

### Versión 3

Esta versión del WAS era compatible con JDK 1.2, versión J2EE 1.0. IBM suministró muchas mejoras a la especificación J2EE 1.0 básica. Se añadió soporte para OS/400 (ahora i5/OS) y OS/390 (ahora z/OS), aunque la versión z/OS mantenía una base de código substancialmente separada hasta v5.x. La Versión 3 se distribuye en tres ediciones: Standard Edition (SE), Advanced Edition (AE), y Enterprise Edition (EE).

### Versión 3.5

Esta versión se entregaba en las siguientes ediciones:
* SE (Standard Edition)
* AE (Advanced Edition)
* EE (Enterprise Edition)

### Versión 4

Esto ya era un servidor de aplicaciones certificado J2EE 1.2. Esto heredó el modelo de configuración basado en bases de datos de V3.x para todos excepto para la edición single-server(servidor único), la cual se usa en almacenes de datos XML.
* AE (Advanced Edition)
* AEs (Advanced Edition single). Edición Single-server que no era capaz de ejecutarse en configuración de clúster.
* AEd (Developer Edition). Funcionalmente equivalente a las versiones AEs, con facilidades para desarrollo.
* EE (Enterprise Edition)

### Versión 5

Esta versión se publicó el 19 de noviembre de 2002. Fue un servidor de aplicaciones certificado J2EE 1.3. Tuvo una reescritura principal del codebase V3/V4 y fue la primera vez que WebSphere Application Server fue programado desde un codebase común. Ahora los WAS de todas las plataformas de despliegue, desde Intel x86 a mainframe, son esencialmente el mismo código. El repositorio de configuración basado en bases de datos fue reemplazado con un repositorio de configuración basado en ficheros XML de replicación. Un servicio llamado el Gestor de Despliegue tenía la copia maestra de la configuración de celdas, y los nodos tenían los ficheros que necesitaran copiados desde este servidor maestro cuando quiera que cambiaran. V5 también incluyó una versión miniatura de MQ 5.3 llamado el servidor de Java Message Service (JMS) empotrado.
* Express Edition reemplaza a la edición Standard. Express ahora se convierte en el término que indica las ofertas orientadas a PyMEs desde IBM, a través de todas sus marcas de software.
* Base
* Network Deployment(Despliegue de Red). Esta versión soporta el despliegue de una configuración en celdas con clúster y soporte a tolerancia de fallos J2EE. Ahora también incluye Edge Components, previamente conocido como Edge Server. Esto suministra un servidor proxy, balanceado de carga, y enrutamiento basado en contenidos.
* Enterprise Edition. Esta versión añadió un motor de workflow, llamado el Coreógrafo de Procesos, la primera vez, pero elimina el estándar BPEL. También añadió el primer modelo de threading de aplicaciones completamente soportado llamado WebSphere Asynchronous Beans.
* WebSphere Application Server para z/OS. Esta versión esencialmente es el mismo que el producto de Network Deployment excepto que está optimizado para tomar ventaja total de las características z/OS, tales como el Gestor de Carga de Trabajo(Workload), para impulsar las tecnologías clave que hacen al mainframe indispensable para cargas de trabajo seguras, importantes y escalables.

### Versión 5.1

Publicado el 1 de abril de 2004.
    El principal cambio desde V5.0 fue una actualización del JDK a 1.4.2 y el uso del lenguaje Jython para el soporte de scripting wsadmin en lugar de solo soportar Java Tcl.
** Express
** Base
** Network Deployment
** WebSphere Application Server para z/OS
    Version 5.1 para z/OS es la primera en soportar motores zAAP.
** WebSphere Business Integration Server Foundation V5.1
    Esta es la continuación del producto para WebSphere Application Server Enterprise Edition V5.0. El motor de workflow fue actualizado para soportar BPEL en lugar del formato FDML propietario usado en V5.0. El producto estaba en todas las plataformas IBM desde los entornos Intel al mainframe.
** WebSphere eXtended Deployment (XD)

### Versión 6

    Esta versión fue publicada en diciembre de 2004. Es un servidor de aplicaciones que cumple J2EE 1.4.
** Community Edition (Gratuito, para recibir soporte bajo pago)
    Código basado en el proyecto Apache Geronimo
** Express
    Muchas extensiones del modelo de programación previamente encontradas en WebSphere Application Server V5.0 Enterprise Edition fueron extraídas del enterprise hacia el Express y Base. Estas APIs incluyeron perfil de aplicación, beans de inicio, el planificador, y los beans asíncronos.
    El motor JMS, ahora llamado "WebSphere Platform Messaging," fue reescrito en Java al 100% y mejorada su funcionalidad. (Obviamente WebSphere MQ es todavía soportado como el proveedor JMS y es interoperable con WebSphere Platform Messaging.)
** Base
** Network Deployment
    El clustering fue reescrito para usar el gestor de alta disponibilidad. Esto gestiona todos los singletons en el entorno WebSphere y puede suministrar recuperación en caliente par esos singletons.
    WebSphere fue modificado para que un sistema de ficheros compartido pudiera usarse para almacenar logs de transacciones y esto significa que cualquier miembro del clúster con ese sistema de ficheros compartido montado puede recuperar en caliente las transacciones XA dudosas sin software HA externo.
    El rol del Gestor de Despliegue due eliminado de todas las operaciones runtime de clustering. Esto es solo requerido para admin JMX centralizado y cambios en la configuración.
    Ahora soporta celdas mezcladas de las versiones (V5 to V6) ejecutándose mezcladas en producción.
** WebSphere Application Server para z/OS
    Suministra la misma funcionalidad núcleo que ND, dado que comparte un modelo de programación común, pero todavía contiene las ventajas de la plataformas tales como:
*** Gestor de Workload(Carga de trabajo) z/OS para gestión priorizada de las cargas de trabajo mezcladas
*** Servicios de Recuperación de Recursos (integridad de transacciones añadida para transacciones críticas y complejas)
*** Soporte para los productos de mainframe de seguridad tales como RACF
*** Escalado vertical avanzado para servidor de aplicaciones caracterizando una región servidores de control único (área de control integrado) permitiendo la separación para abrir y cerrar regiones de servidor cuando se necesite por el volumen de las peticiones entrantes
** eXtended Deployment
    WAS XD como es sabido incrementa la funcionalidad de tu servidor de aplicaciones en dos áreas principales - Gestionabilidad y Rendimiento. Esto también te permite trabajar en nuevas formas que nunca han sido posibles antes. Esto incluye virtualización dinámica entre pools de servidores de aplicaciones.
    Bajo el principio de rendimiento se añadió el componente ObjectGrid, el cual es una caché distribuida standalone que puede usarse con cualquier servidor de aplicaciones (cualquier versión que incluya JDK 1.4) o con cualquier runtime J2SE 1.4, incluyendo soporte zLinux y z/OS.
Con Versión 6, algunas de las funciones encontradas previamente en WebSphere Business Integration Server Foundation (WBISF) se movieron al nuevo WebSphere Process Server. Otras se movieron a otras ediciones (Express y superiores).

### Versión 6.1

Esta versión fue publicada en mayo de 2006, es un servidor de aplicaciones que cumple J2EE 1.4. Las funciones que se entregan en este desarrollo incluyen:
* Soporte para Java Standard Edition 1.5.
* Soporte para ejecutar Portlets JSR 168 en el servidor de aplicaciones
* Servlets de Session Initiation Protocol (SIP, Protocolo de Inicio de Sesión)
* Mejoras para la WebSphere Install Factory
* Asistente de Soporte IBM
* Biblioteca de Widget IBM
* Administración simplificada
* Gestión de claves y certificados mejorada
* Mejoras de Seguridad
* Administración de IHS desde la Consola Administrativa WebSphere
* Soporte para el framework de recursos de Servicios Web y WS-BusinessActivity (WS-BA)
* Soporte para Conexiones Remotas JMX JSR160
* Asistencia de Comandos Jython de Consola Administrativa.

### Versión 7

Esta versión fue publicada en septiembre de 2008. Es un servidor de aplicaciones que cumple con la especificación Java EE 5
Las características más importantes que incluye esta versión son:
* Gestión sencilla.
La Gestión sencilla facilita la administración de diversas topologías de WAS edición base y ND que estén distribuidas geográficamente.
* Aplicación a nivel de negocio
Se usa para gestionar elementos de las aplicaciones independientes de paquetes o de modelos de programación.
* Configuración basada en propiedades
Esta característica simplifica la gestión de la administración automática: un administrador puede actualizar la configuración de un WAS 7 simplemente utilizando un fichero de configuración.

### Versión 8

Esta versión fue publicada en junio de 2011. Incorpora las características de WAS 7 más sus feature packs. Cumple con la especificación Java EE 6 y se ejecuta por defecto sobre la versión 6 de la JVM.

### Versión 8.5

Al igual que la versión 8, WAS 8.5 cumple con la especificación Java EE 6 y se ejecuta sobre la JVM de Java SE 6 aunque es posible configurarlo para su ejecución con JVM 7.
De sus nuevas características destacan:
* Liberty profile
Es un perfil reducido para la ejecución de aplicaciones Web, Móviles y OSGi. El tamaño de instalación es inferior a los 50 MB y su tiempo de arranque es de aproximadamente 3 segundos.
* Intelligent management
Esta característica solo está disponible para las ediciones Network Deployment y zOS de Websphere Application Server. Permite la administración de la salud del servidor, clustering dinámico y ruteo inteligente.

### La Beta del Pack WebServices Feature

El Pack WebServices Feature fue publicado como beta en octubre de 2016. Un pack feature es una pieza de función instalada opcionalmente que puede instalarse sobre un desarrollo de WebSphere que existe actualmente en tiendas de clientes, en este caso el Pack Feature WebServices se ejecuta sobre WebSphere 6.1.
La publicación de la Beta del Pack Web Services Feature es una temprana implementación que no contiene toda la funcionalidad planeada para la versión final. La Funcionalidad que se entrega en esta Beta incluye:
* Modelo de programación Asíncrono (soporte funcional limitado)
* Estructuras de Payload Múltiples
* StAX (API de Streaming)
* WS-RM (Soporte funcional Limitado)
* WS-Addressing (Soporte funcional Limitado)
* Soporte JAX-B
* Conjunto de Políticas (Soporte funcional Limitado)
* Cliente fino Securizado (Soporte funcional Limitado)
* Mecanismo de Optimización de Transmisión de Mensajes SOAP (MTOM)
Esta beta puede encontrarse en https://www14.software.ibm.com/iwm/web/cc/earlyprograms/websphere/wsvwas61/download.shtml.22222 (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última).

## WebSphere eXtended Deployment

WebSphere Application Server V6 Extended Deployment Edition (WebSphere XD) fue publicada en 2006 como un añadido para WebSphere 6. XD suministra características avanzadas para administradores que gestionan aplicaciones múltiples basadas en J2EE y desarrolladores que construyen aplicaciones avanzadas que requieren técnicas de clustering asimétricas. Esto también tiene varias tecnologías que incrementan significativamente el rendimiento de las aplicaciones en ejecución, incluyendo una caché de base de datos en memoria y un balanceador de carga muy avanzado llamado el Router On Demand.

## Beneficios del Administrador

Muchos negocios ejecutan varias granjas de servidores pero desean consolidarlas en una única granja de servidores más pequeña. Esto es porque la mayoría de las granjas de servidores son infrautilizadas o sobre-explotadas. Las cajas están normalmente ejecutándose al 10% de carga lo cual es muy costoso y nada flexible. Por ejemplo, una granja de servidores se calienta y funciona al máximo mientras la granja en la siguiente habitación está todavía ociosa al 10%. XD permite a los administradores definir un clúster único (un grupo de nodos) y monitoriza el balanceado de carga y decide dinámicamente en que cajas del grupo de nodos debe hospedar cuales aplicaciones para obtener las metas. Si la aplicación A tiene un tiempo de respuesta actual de 1.5 segundos, XD sacará los recursos de las aplicaciones B y C para incrementar la potencia dedicada a A y decrementar su tiempo de respuesta. puede también predecir que A probablemente excederá su tiempo de respuesta en 10 minutos basándose en una tendencia y reaccionara anticipándose al evento. Esto simplifica ampliamente la vida de un administrador y permite a las máquinas ser más eficientes que una granja de varias granjas independientes convencionales. XD también ofrece opciones para generar alertas de correo electrónico cuando se sobrepasan las condiciones, esto puede reiniciar los servidores cuando parece tener un fallo de memoria o después de X peticiones.

### Beneficios del Desarrollador
#### Facilidad de Partición WebSphere

Las aplicaciones tradicionales J2EE trabajan bien para muchos tipos de aplicaciones. La clase puede ser ampliamente categorizada como aplicaciones que se ejecutan en un clúster simétrico sin estado enfrente de una base de datos:
* todos los miembros del clúster pueden realizar cualquiera tarea en cualquier momento.
* la aplicación es sin estado.
* la aplicación es modal lo que significa que solo realiza trabajo síncronamente en respuesta a la petición del cliente el cual puede ser recibido usando HTTP/IIOP o JMS.
Hay otras aplicaciones que no funcionan tan bien en tal entorno, por ejemplo, un sistema de comercio electrónico en un banco. Tales aplicaciones normalmente usan trucos que pueden mejorar el rendimiento como el particionamiento, multi-threading y la escritura a través del cacheado. Estas son aplicaciones que pueden explotar clustering asimétrico. Un clúster asimétrico es prácticamente lo opuesto de un clúster simétrico:
* Las aplicaciones pueden declarar particiones nombradas en cualquier punto mientras se están ejecutando, las particiones tienen alta disponibilidad, son móviles dentro del clúster y normalmente sólo se ejecutan sobre un miembro de clúster a la vez.
* El trabajo entrante para una partición es enrutado al miembro de clúster que hospeda la partición.
* La aplicación es amodal. Las Particiones tienen un ciclo de vida por ellas mismas y pueden iniciar alarmas/hilos en background así como también responder a eventos entrantes si son mensajes IIOP/HTTP o JMS/foreign.
WebSphere XD ofrece un nuevo conjunto de APIs llamada WebSphere Partition Facility (WPF). Estas APIs permiten a las aplicaciones que requieren desplegar un clúster asimétrico sobre un servidor J2EE.

#### ObjectGrid

El ObjectGrid es la primera pieza del framework de cacheado distribuido de IBM. V6 de XD se entrega con soporte para cacheado de Objetos locales Java así como también cacheado peer to peer con invalidación/push de datos asíncronos. Esto está diseñado para instalar framework extensible de cliente para cachear objetos. Todos los aspectos del framework núcleo tienen puntos de plugin(para añadir plugin). Esto permite a los clientes añadir funciones así como también permite a IBM extenderlo en futuros niveles del producto. Esto está diseñado para ejecutarse independientemente del WebSphere. No significa que no se integra con WebSphere 6.0 XD, sí que lo hace. En cambio, esto también funcionará con las versiones viejas del servidor de aplicaciones, servidores tomcat, y servidores de aplicaciones competitivos. Esto es necesario para competir contra otros productos de caché distribuida del mercado. Actualmente solo requiere un nivel de JDK 1.4 de cualquier vendedor. La Versión 2 de ObjectGrid está actualmente bajo desarrollo para entrega en XD 6.0.1. Esto añadirá la función significativa al componente así como también un soporte a nivel JDK más amplio. La intención es permitir a los clientes construir grandes grids de JVMs en las cuales puedan conectar aplicaciones y almacenar objetos de varias calidades de servicio. La grid está siendo diseñada para escalar a 1000s de JVMs y mantener una gran cantidad de datos.