2009-04-24 14 views
66

Pasé mucho tiempo programando en Java recientemente, y una cosa que extraño de los lenguajes de scripting fue la capacidad de probarlos en una consola.¿Hay alguna consola interactiva similar a Python para Java?

Para probar rápidamente un programa Java, tengo que editar un archivo, luego convertirlo en bytecode y ejecutarlo. Incluso usando un IDE, pierde su diversión después de la hora 372.

Me gustaría saber si hay un producto que tenga algo así como una consola interactiva (apuesto a que necesitas un compilador JIT) y alguna autocompletar (con relexividad, supongo que es posible).

Tal vez eso es algo muy común que yo no sé sobre o algo totalmente imposible, pero su peor que pide :-)

Respuesta

35

No del todo, porque Java no está bien definido y sin la estructura de una clase y pronto. Pero algunas aproximaciones cercanas están en Groovy, Clojure, Scala y Bean Shell.

+5

me gusta BeanShell. –

+1

De acuerdo. Uso BeanShell a través de [JDE] (http://jdee.sourceforge.net/) en emacs; está lejos de ser perfecto, pero proporciona una consola interactiva y un soporte decente para la finalización, tanto en la consola como durante la edición de sus archivos Java normales. –

+0

De hecho, es muy primitivo pero mucho mejor que nada. Gracias a ustedes, y gracias a los chicos que lo codificaron :-) –

2

Puede que le interese el Groovy.

0

Ocasionalmente he tenido el mismo problema y tengo una solución parcial. Guardo alrededor de un archivo (como dijo Charlie Martin, Java necesita sus contextos de clase) que es poco más que un programa de prueba. En una segunda ventana, una consola, tengo un script que ejecuto que solo comprueba el tiempo de modificación del archivo fuente cada segundo o segundo. Cuando ve la fuente cambiar, la vuelve a compilar (suelo jugar con C, pero también lo he hecho con Java) y ejecuta el resultado.

No es una gran solución, pero es una solución única y rápida, y me ha resultado muy útil.

4

Un enfoque que he utilizado con cierto éxito es depurar en Eclipse y usar la vista de visualización. Lo que la vista de visualización le ofrece es la capacidad de manipular el código que se está ejecutando actualmente en la JVM mediante la ejecución de sentencias de Java. Cualquier objeto disponible en el punto de corte particular en el que se detenga está dentro del alcance dentro de la vista de visualización. Si bien esto no es exactamente lo que está buscando, proporciona algunas de las características que un REPL proporciona para otros entornos de programación. Ver Debugging with the Eclipse Platform para más información.

+0

Todavía prefiero el plugin Scala IDE Eclipse, sin embargo, cuando no es deseable instalar un plugin, el enfoque de depuración es lo más cercano que puede tener a un intérprete REPL, que es una "característica" incorporada en Eclipse JDT. :) –

+0

¿Cómo se muestra el valor de una expresión desde la vista de visualización? Por ejemplo, si escribo algo como: Cadena s = "Hola mundo", s1 = s.substring (3, 5); cómo saber el valor de s1? No puedo encontrar la forma – zakmck

+0

Puede resaltar 's1' y luego abrir el menú contextual. Hay una entrada allí etiquetada 'Display' que hará lo que quieras. – laz

10

¡Curiosamente, obtienes una consola interactiva con Jython! No obtienes mucho más similar a Python.

4

También puede ejecutar el intérprete interactivo Scala.

1

jGRASP IDE tienen una consola interactiva donde se puede probar en, lo uso mucho, y hay alos una vista de depuración mostrando variabel etc efter tiene deklare ellos.

Es opensoruce y se puede obtener una copia att http://www.jgrasp.org/

// Anders

+0

Miré alrededor de JGrasp, pero no pude encontrar una consola interactiva – Casebash

2

Puede utilizar BeanShell para ejecutar código Java arbitrario. Si desea la integración de Eclipse, EclipseShell tiene compatibilidad con BeanShell.

9

Probar Dr Java's "Panel de interacción".

+0

Sí, realmente lo extraño. ahora cambio a Eclipse pero no sé cómo obtener un Panel de interacción en Eclipse. –

3

JShell es ahora estándar en Java 9. JShell introduction

+0

Esta es una mejor respuesta ahora (desde noviembre) de lo que parece por los votos, tal vez incluso debería ser aceptada @ e-satis. – TGar

Cuestiones relacionadas