# Cliente pesado

Se denomina cliente pesado al programa "cliente" de una arquitectura cliente-servidor cuando la mayor carga de cómputo está desplazada hacia la computadora que ejecuta dicho programa. También se conoce como cliente grueso (anteriormente se conocía como cliente rico pero esta acepción ya está en desuso).
Un cliente pesado es la antítesis de un cliente liviano (también denominado cliente ligero).

## Explicación detallada

Una aplicación informática con arquitectura cliente-servidor consta de dos programas:
* El programa cliente, que se ejecuta en la computadora que interactúa con el usuario (habitualmente un ordenador personal).
* El programa servidor, que se ejecuta en una computadora central (habitualmente en una computadora servidor dentro de un CPD).
Ambos programas colaboran entre sí gracias a una red de comunicaciones.
Las funcionalidades de la aplicación deben repartirse entre ambos programas, en principio, de forma equitativa. Sin embargo, por razones de viabilidad técnica o económica puede ser necesario un reparto desigual de dichas funcionalidades. Esto se denomina "carga de cómputo".
El programa cliente se califica como pesado cuando asume la mayor parte de las funcionalidades. Por ejemplo, una hipotética aplicación de punto de venta tendría el siguiente reparto:
* Cliente:
** Identificar cada producto (por ejemplo, mediante código de barras).
** Calcular el importe total de la factura.
** Calcular y desglosar los impuestos.
** Aplicar ofertas y descuentos.
** Emitir el ticket de compra.
** Abrir y cerrar la caja.
** Ejecutar transacciones bancarias con tarjeta de crédito.
* Servidor:
** Almacenar los tickets emitidos.
** Descontar los productos comprados del stock de la tienda.
** Proporcionar los precios de cada producto.

## Ventajas e inconvenientes

La primera ventaja de un cliente pesado es que aprovecha la capacidad de cómputo de las computadoras que lo ejecutan, generalmente infrautilizadas, en favor de la computadora servidor. Dicha computadora asume menos funciones y, por tanto, puede atender a un número mayor de programas cliente con los mismos recursos.
La segunda ventaja del cliente pesado es su riqueza en la interfaz de usuario. La interfaz no está limitado por las características de un cliente universal, por ejemplo, un navegador web. Por tanto, pueden diseñarse interfaces complejas, ricas y más fáciles de usar.
Sin embargo, también existe un importante inconveniente: el cliente pesado necesita ser instalado en cada una de las computadoras cliente, y posteriormente actualizado en todas ellas cuando sea necesario. Las consecuencias de ello son:
* Pueden surgir incompatibilidades. Dado que no todas las computadoras son idénticas y pueden disponer de distinto software de base, es posible que la aplicación no funcione correctamente en algunos lugares. En ocasiones, el diseñador de la aplicación no conoce a priori cuál es el perfil de la computadora que debe ejecutarlo (por ejemplo, cuando el software se vende al público).
* Es necesaria una infraestructura para la instalación y actualización de la aplicación de manera desatendida. Es inviable realizar dichas tareas utilizando medios humanos cuando se trata de cientos de ordenadores.
* Cuando se renueva el parque de ordenadores, o se modifica su software de base, es necesario realizar pruebas exhaustivas de regresión, para asegurar que la aplicación sigue funcionando.

## Caracterización

Desde el punto de vista de los profesionales de las tecnologías de la información, un cliente pesado es cualquier programa que requiera una instalación o configuración a medida en el ordenador del usuario. Es decir, cualquiera que manifieste el inconveniente anteriormente mencionado.
En este sentido es habitual la confusión entre clientes pesados y clientes ligeros. Por ejemplo, los populares plugins para navegador, tales como Adobe Flash Player o los applets construidos con swing, son clientes pesados. El hecho de que se descarguen automáticamente no elimina los problemas de configuración y compatibilidad tanto con el navegador como con el sistema operativo. Obsérvese que los applets requieren la instalación de una máquina virtual Java, y que se actualice a la versión requerida por la aplicación.

## Situación actual

Las aplicaciones con cliente pesado han sido las más numerosas hasta la aparición del navegador web. Muchas organizaciones están abandonando estas aplicaciones mediante un rediseño de las mismas, adoptando el navegador como cliente ligero o cliente universal para todas las aplicaciones.

## Ejemplos

La mayoría de los clientes pesados asumen todas las funcionalidades de la aplicación, dejando al programa servidor la gestión de transacciones contra una base de datos, es decir, el almacenamiento de información.
Algunos ejemplos son:
* Terminales de punto de venta.
* Aplicaciones de diseño asistido por ordenador (CAD).
* Sistemas embebidos o empotrados. Por ejemplo, cajeros automáticos.
* Aplicaciones de escritorio remoto.

## Nota final

A partir del 2003 el término cliente rico (rich client) ha tomado un significado diferente al de cliente pesado. Se ha convertido en un híbrido entre 'liviano' y 'pesado', o una arquitectura donde el uso del CPU de parte del cliente y del servidor está más equilibrada. El cliente puede parecer y comportarse como un cliente pesado, mientras está completamente basado en una arquitectura de red de cliente liviano. Véase Rich Internet Application.