BeanShell, shell scripting con Java!

BeanShell es un lenguaje de scripting en consola basado en Java, que provee toda la funcionalidad de la API para que la manejemos interactivamente, sin necesidad de crear clases y compilaciones manuales.

Algunos ya lo conocerán, puesto que no es algo nuevo, pero para otros tantos pasa desapercibido y vaya que es útil.

Es parte del Java Community Process bajo el nombre: JSR 274: The BeanShell Scripting Language

Es comparable con lenguajes como Perl o Python, extensamente utilizados en sistemas UNIX/Linux para shell scripting.

Aquí les pongo un ejemplo de su utilización en consola, como si estuviéramos escribiendo comandos, en mi caso bajo Debian GNU/Linux ("bsh %" es el prompt):

Aunque también podemos crear un script en un archivo (para este ejemplo lo hago con "cat") y después ejecutarlo con el comando bsh, tal como un script de Bash o Korn Shell:

Ya que tenemos acceso a toda la API, las posibilidades son infinitas :-)

Recursos:

Sitio oficial: http://www.beanshell.org/
Manual: http://www.beanshell.org/manual/
Documentación y ejemplos: http://www.beanshell.org/docs.html

Saludos a todos!

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Nopalin

Esta bueno

Yolo eh probado para hacer algunas cosas y se me hace muy útil y bastante bueno. Aparte de me gusta mas que groovy por que éste tiene la sintaxis igual que la de java y no hay que aprender nada nuevo.

sobres

Imagen de ezamudio

interesante

Yo no lo conocía, y como dices, está bueno para algunas tareas. Hay manera de correrlo y que importe algunas librerías para tener acceso a ciertas clases para poder tener algunas utilerías a la mano?

Given the choice of dancing pigs and security, users will choose dancing pigs, every single time. - Steve Riley

Imagen de 1a1iux

No sólo para consola

Aclaro que beanshell no es para uso exclusivo en consola, ni muchos menos.

Por ejemplo, uno de tantos frameworks para desarrollo web llamado JPublish lo utiliza para crear "Acciones".

http://code.google.com/p/jpublish/

Por cierto, he usado beanshell y me parece buen lenguaje, sin embargo, me ha gustado un poco más Groovy

:)

En fin,

Sale y vale
Byte

Imagen de benek

Sí, puedes agregar recursos

Sí, puedes agregar recursos la classpath de las siguientes maneras:

addClassPath( "/home/pat/java/classes" );
addClassPath( "/home/pat/java/mystuff.jar" );
addClassPath( new URL("http://myserver/~pat/somebeans.jar") );

O si quieres modificar la classpath actual y no solo agregar utilizas setClassPath(); de la misma manera.

--
Javier Benek

Imagen de benek

Buen dato, es muy extenso lo

Buen dato, es muy extenso lo que se puede hacer con BeanShell :-)

Estaba viendo en la documentación que incluso con BeanShell se pueden crear servlets así que el panorama se extiende aún más.

--
Javier Benek

Imagen de Nopalin

acciones remotas

Pues para lo que yo lo eh utilizado es en nuestras aplicaciones j2ee. Creo un EJB al que se le pase una string y un array de object como parametros, y en un método del ejb invoco al bean shell embebido en mi servidor pasandole el array de objetos como parametros al script y así, tengo una manera eficiente de hacer tareas únicas sin tener que redeployar mi server, por ejemplo:

  1. actualización de información usando archivos de excel (ésta es la más utilizada)
  2. envió de correos con información específica del sistema (por ejemplo info que no se haya planeado para algun reporte y se requiera solo una o dos veces)
  3. generación de pdf's con info del sistema

sobres