BeanShell es un intérprete de Java gratuito que fue inventado por Pat Niemeyer. Se ejecuta en Java Runtime Environment (JRE) y utiliza la sintaxis estándar de Java, así como tipos sueltos, comandos y cierres methox. BeanShell agrega funcionalidades similares a las de un script al lenguaje Java. Al igual que Javascript, es un lenguaje de secuencias de comandos basado en objetos. Fue aceptado como una solicitud de especificación de Java (JSR), que es el primer paso para una integración completa en el lenguaje de programación Java.
Como intérprete de Java, BeanShell se puede utilizar para interpretar la sintaxis normal de Java, pero también puede interpretar su propia sintaxis, que se puede utilizar para escalar Java de un lenguaje de programación estático a uno dinámico. Los programadores han llamado extraoficialmente a BeanShell Little Java porque se parece mucho a la sintaxis del lenguaje de programación Java en muchos aspectos. Sin embargo, agrega el soporte de muchas características nuevas, como las variables con tipos sueltos, en las que la variable no tiene que declararse primero. BeanShell también admite objetos con secuencias de comandos como cierres de métodos simples y controladores de eventos Abstract Windows Toolkit / Swing.
BeanShell tiene un sitio web desde el que se puede descargar. El sitio web se puede localizar escribiendo «BeanShell» en cualquier motor de búsqueda de Internet. En este sitio web, los usuarios encontrarán muchas opciones y pueden descargar el paquete BSH, que incluye el intérprete principal, los comandos de shell y las utilidades.
Los usuarios cuya versión de Java no incluye Swing deben agregar el archivo de archivo Java (JAR) swingall a la ruta de clases. Algunas de las utilidades utilizan Swing. Una vez que se ha configurado Swing en la ruta de clases, BeanShell funcionará en un intérprete interactivo de consola o en un intérprete interactivo gráfico.
BeanShell es un proyecto de código abierto. Es pequeño e integrable. BeanShell se ha integrado en muchas aplicaciones, incluidas pruebas, configuración, sistemas integrados, motores de reglas, extensión de secuencias de comandos de usuario, creación rápida de prototipos, implementación dinámica e incluso educación Java.