BeanShell est un langage de script proche de Java inventé par Patrick Niemeyer. Il s'exécute dans l'Environnement d'Exécution Java (JRE) et utilise une variante de la syntaxe Java, en plus des commandes de script et de la syntaxe. BeanShell permet à ses utilisateurs de définir des fonctions qui peuvent être appelées à partir d'un script. Le choix a par ailleurs été fait de ne pas encombrer sa syntaxe avec trop d'extensions ni de sucre syntaxique, dans le but qu'un code écrit pour un compilateur Java puisse généralement être interprété par BeanShell sans nécessiter de changement et réciproquement. Cela fait de BeanShell un outil de test et de débogage populaire pour la machine virtuelle Java (JVM). BeanShell prend en charge les objets scriptés ainsi que les fermetures avec des méthodes simples, comme ceci est également possible en Perl et en JavaScript. BeanShell est un projet open source et a été intégré dans de nombreuses applications, telles qu'Apache OpenOffice, Apache Ant, le serveur d'applications WebLogic Server, jWork.ORG DataMelt, Apache JMeter, jEdit, , SAUTER SIG, Apache Taverna et beaucoup d'autres. BeanShell fournit une interface de programmation d'application (API) le rendant facilement intégrable. Il peut également être exécuté en ligne de commande ou à l'intérieur de son propre environnement graphique. Les premières versions de BeanShell (0.96, 1.0) ont été rendues publiques par Patrick Niemeyer en 1999, suivi par une série de versions. BeanShell 1.3.0 a été publié en août 2003. La Version 2.0b1 a été publié en septembre 2003, et culmine avec la version 2.0b4 en mai 2005, qui est encore, en janvier 2021, la version la plus récente publiée sur le site officiel. BeanShell a été inclus dans la distribution Linux Debian depuis 1999. BeanShell était en cours de normalisation par le Java Community Process (JCP) sous la JSR 274. En juin 2005, la JSR 274 ne montre aucune activité visible. La JSR 274 est à l'état Dormant. Depuis Java 9, Java inclut , un REPL () différent, basé sur la syntaxe Java.