파이썬의 대화식 REPL 모드와 같은 것이 있지만 Java 용입니까?


92

파이썬의 대화식 REPL 모드와 같은 것이 있지만 Java 용입니까? 예를 들어 InetAddress.getAllByName( localHostName )창에 입력 하고 즉시 결과를 얻을 수 있도록이 모든 public static void nightmare () 일없이?



3
JDK-9 에서 도입 한 Java : JEP 222 : jshell : The Java Shell
Not a bug

답변:


64

편집 Java 9부터 JShell이 ​​있습니다.

원래 대답은 다음과 같습니다.

Groovy Console을 사용할 수도 있습니다 . 원하는 것을 할 수있는 대화 형 콘솔입니다. Groovy에는 핵심 Java 플랫폼의 클래스도 포함되어 있으므로 이러한 클래스도 사용할 수 있습니다.

다음과 같이 보입니다.

Groovy의 스크린 샷


스크린 샷은 더 이상 imageshack에 존재하지 않습니다.

그루비 콘솔에서 특히 좋은 점은 기본적으로 더 많은 패키지를 가져 오기 때문에 (예 : java.util. *), 너무 많은 import 문을 작성할 필요가 없다는 것입니다
Dónal

2
Groovy를 설치하기에는 너무 게으른 사용자를 위해이 콘솔의 온라인 버전이 여기에 있습니다 : groovyconsole.appspot.com . 일부 JDK 라이브러리는 사용할 수 없지만 (예 : I / O 및 System.exit()) 대부분의 경우 충분합니다.
Dónal

수업을 받아들이지 않는 것이 정상입니까? class test{public static void test(){System.out.println('test')}}
Lime

52

Eclipse에는 루프가 아니지만이를 수행하는 기능이 있습니다. "스크랩북 페이지"라고합니다. 나는 당신이 작은 코드 조각을 수집하는 스크랩북을 가지고 있다고 비유한다고 가정합니다.

어쨌든, 작동하게하려면 Eclipse에서 프로젝트를여십시오 (스크랩북 페이지는 프로젝트와 연결될 것입니다. Eclipse는 프로젝트가 사물을 소유 할 때 좋아합니다).

그때:

  1. 프로젝트 탐색기 창에서 프로젝트 어딘가에있는 폴더를 선택합니다.
  2. 메뉴 파일-> 새로 만들기-> 기타를 선택하거나 Ctrl-N을 누르십시오.
  3. Java-> Java 실행 / 디버그-> 스크랩북 페이지를 선택하십시오.
  4. "다음"을 누르고 파일 이름을 지정한 다음 "마침"을 누르십시오.

이제 스크랩북 페이지가 있습니다. 다음과 같은 코드를 입력하십시오.

System.out.println(System.getProperties());

그런 다음 마우스로 텍스트를 선택하고 Control-U를 누르거나 컨텍스트 메뉴에서 "실행"을 선택합니다. 코드가 실행되고 출력이 콘솔에 나타납니다.

식을 입력하고 선택한 다음 상황에 맞는 메뉴에서 표시를 선택할 수도 있습니다. 표현식을 평가하고 유형을 인쇄합니다. 예를 들어 Display on 1 + 2을 실행 하면 (int) 3.


1
감사합니다. Beanshell은 나를 위해 시작 시간이 초과되었지만 완벽하게 작동합니다.
Bayard Randel

3
나는 이클립스를 오랫동안 사용해 왔지만 이것에 대해 몰랐습니다. 감사합니다!
Tobold

28

BeanShell은 Java로 작성된 개체 스크립팅 언어 기능을 갖춘 작은 무료 임베드 가능한 Java 소스 인터프리터입니다. BeanShell은 표준 Java 구문을 동적으로 실행하고 느슨한 유형, 명령 및 Perl 및 JavaScript와 같은 메소드 클로저와 같은 일반적인 스크립팅 편의를 통해이를 확장합니다. BeanShell을 Java 실험 및 디버깅을 위해 대화식으로 사용할 수있을뿐만 아니라 새로운 방식으로 애플리케이션을 확장 할 수 있습니다. 스크립팅 Java는 신속한 프로토 타이핑, 사용자 스크립팅 확장, 규칙 엔진, 구성, 테스트, 동적 배포, 임베디드 시스템, 심지어 Java 교육을 포함한 다양한 애플리케이션에 적합합니다.

http://www.beanshell.org/

http://www.beanshell.org/manual/syntax.html#Standard_Java_Syntax


덜 장황한 구문을위한 Jython 및 JRuby 대화 형 쉘도 있습니다.
bakkal

1
- BeanShell이다 적극적으로 Beanshell 2로 유지 code.google.com/p/beanshell2
hshib

명령 줄에서 beanhell을 실행하는 간단한 예제는 여기에서 찾을 수 있습니다
Brad Parks

@hshib : 지금 Github에 있으며 마지막 커밋은 2013 년부터입니다. " 활성 유지" 가 아닙니다 .
Martin Schröder

@ MartinSchröder, 그 코멘트는 2013 년에 있었다 :-)
hshib

19

Eclipse 스크랩북 페이지를 사용할 수 있습니다.

Eclipse에서 스크랩북 페이지를 만듭니다. 프로젝트에서 새로 만들기-> 기타-> 스크랩북 페이지.

파일에 텍스트를 입력하고 선택하고 ctrl-U를 누르면됩니다.

가져 오기를 관리하려면 페이지를 마우스 오른쪽 단추로 클릭하고 가져 오기 설정을 선택하십시오. 여기서 패키지 또는 단일 클래스 가져 오기를 선택할 수 있습니다. 이것은 영구적이며 페이지와 함께 저장됩니다.


3
유용 할 수 있지만 스크랩북 페이지는 지속성 세션이 아니므로 REPL만큼 잘 작동하지 않습니다.
MHarris

19

오래된 질문이지만 더 나은 답이 있습니다 (2013 년 5 월)-java-REPL! github 에서 사용할 수 있으며 빠른 일회성 테스트를 위해 java-repl 웹 사이트 에서 라이브로 사용할 수도 있습니다 .

git 허브 코드를 잡고 실행 ant하여 아티팩트를 생성하면 다음과 같은 작은 스크립트를 사용하여 쉽게 사용할 수 있습니다.

#!/bin/sh
java -jar /home/rdahlgren/scripts/javarepl-dev.build.jar

이 프로젝트를 찾은 후 나는 아마 하루에 5 번 그것을 사용합니다. 즐겨!


온라인 repl에 대한 링크는 이제 javarepl.com/term.html보입니다 . 이전 링크는 Java 오류 만 표시합니다.
Tony

13

아직 아무도 Java (6, 7)가라는 REPL 콘솔을 제공한다고 언급하지 않은 것 같습니다 jrunscript. 언어에 구애받지 않습니다 (따라서 Jython, JRuby 등과 함께 사용할 수 있음). 또한 기본적으로 번들로 제공되는 JavaScript (Rhino)로 기본 설정되어 있으며 다른 언어와 마찬가지로 클래스 경로에서 사용 가능한 모든 패키지 / 객체에 액세스 할 수 있습니다.




11

Jython 은 Java 객체를 검사하고 상호 작용할 수있는 Python 구현입니다.

>>> from java.net import *
>>> InetAddress.getAllByName("google.com")
array(java.net.InetAddress,[google.com/209.85.171.100, 
                            google.com/74.125.45.100,
                            google.com/74.125.67.100])



7

그루비 콘솔은 당신이 그렇게 할 수 있습니다. 실제로는 그루비 코드를 시도하고 테스트하기위한 것이었지만 그루비는 자바의 수퍼 세트이기 때문에 일반 자바도 허용합니다.

방금 콘솔에 입력했습니다.

InetAddress.getAllByName('localhost')

CTRL-R을 누르면 다음이 반환됩니다.

groovy> InetAddress.getAllByName('localhost')

Result: [localhost/127.0.0.1]

7

Scala 는 대화 형 콘솔도 제공합니다. 다음과 같이 InetAddress를 완전히 정규화하여 질문의 식에 대한 결과를 얻는 데 사용할 수있었습니다.

java.net.InetAddress.getAllByName("localhost")

6

하지만 JRuby를 , BeanShell이다 , 줄리안 플레이 셔의 REPL이 거기 알버트 Latacz의 REPL은 최신 활성화 될 것으로 보인다.

간단한 클래스 정의로 시도했지만 잘 작동합니다.

$ java -jar javarepl.jar
Welcome to JavaREPL version 56 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_17)
Type in expression to evaluate.
Type :help for more options.

java> public class Test {
    | public static void execute(String [] s) {
    |  System.out.println(54353 + s[0]);
    | }}

java> Test.execute(new String [] {"234343"});
54353234343

java> System.exit(0);

3

Mathematica에 액세스 할 수있는 사용자를 위해 JLink를 사용하면 Mathematica 코드로 Java 및 스크립트에 액세스 할 수 있습니다.

Needs["JLink`"]
LoadJavaClass["java.net.InetAddress"]
InetAddress`getAllByName["localhost"]

평가하기 위해 Shift-Enter를 누르면

{<<JavaObject[java.net.Inet4Address>>}

그런 다음 Mathematica의 Map 함수를 사용 toString하여 반환 된 객체 를 호출 할 수 있습니다 .

#@toString[]& /@ %

결과를 얻으려면 (또는 덜 모호한 구문을 사용하려면 Map[Function[obj, obj@toString[]], %]) :

{"localhost/127.0.0.1"}

이것에 대해 진지하게 생각하기 시작하면 http://reference.wolfram.com/mathematica/JLink/tutorial/Overview.html 에서 Todd Gayley의 튜토리얼을 읽고 싶을 것 입니다.


2

이미 Groovy를 알고 있다면 (Groovy 콘솔을 언급 했으므로 알고 있다고 가정합니다) Groovy 배포판에 포함 된 groovysh 또는 groovyConsole을 사용하십시오. 가져 오려는 사용자 지정 jar가있는 경우 클래스 경로에 추가 된 항목으로 groovysh / groovyConsole을 시작하는 배치 파일을 작성할 수 있습니다. 당신은 또한 이것을 할 수 있습니다

this.class.classLoader.rootLoader.addURL(new URL("file:///path to file"))

셸 내에서 다른 항아리를로드합니다.

나는 몇 년 전에 당신이 요구하는 것을하기 위해 자이 썬을 사용했다. 빌드 스크립트의 일부로 작업중인 프로젝트의 전체 클래스 경로를 포함하는 사용자 지정 jython.bat 및 .py 파일을 생성했습니다. 그런 식으로 자이 썬을 시작했을 때 모든 코드를 사용할 수 있고 스프링을 불러 와서 라이브 시스템에서 작업을 할 수있게되었습니다. Groovy, JRuby, BeanShell 등에서 동일한 작업을 수행 할 수 있습니다.


그루비 셸을 사용할 수 있다는 것을 알고 있지만 Groovy는 Java와 정확히 동일한 의미를 가지고 있지 않으며 유형 검사도 없습니다. 따라서 Groovy 셸에서 작동하는 것처럼 보이는 Java 코드로 컴파일 오류 또는 다른 런타임 동작이 발생할 수 있습니다.
Dónal

그루비도 있습니다 또는 사용 심볼릭 링크에 ~ /에는 .groovy / lib에, 당신이 중 하나를 복사 할 수 물건의 모든 lib 디렉토리를로드
제이슨



1

대부분의 IDE에는 즉석에서 자바 코드를 평가할 수있는 "즉시 모드"와 같은 창이 있습니다.


Eclipse에는 내가 원하는 것과 가까운 "디스플레이"보기가 있습니다. 문제는 애플리케이션 실행의 맥락에 있어야한다는 것입니다. 앱을 실행하고 중단 점에서 멈춰야 만 원하는 것을 입력 할 수 있습니다.
Yoni Roit

@YoniRoit IMHO 명령 줄 REPL보다 "디스플레이"+ 디버그 모드를 더 좋아합니다. 오래 전에 Python과 함께 REPL을 사용했기 때문에 둘 다 수행했습니다. 단위 테스트를 작성하고 중단 점을 배치하고 원하는 컨텍스트로 재생하는 것이 훨씬 낫다고 생각합니다. 일반 REPL에서 정확한 컨텍스트를 얻는 것은 단위 테스트를 말하는 것보다 훨씬 어렵습니다.
Adam Gent

1

Eclipse 또는 NetBeans와 같은 완전한 IDE가 아닌 OOP 교육을위한 대화 형 Java 개발 환경 인 BlueJ 를 살펴볼 수 있습니다 . 어쨌든 함께 놀아주는 것은 일종의 재미입니다.

일련의 Java 자습서 에서 YouTube 에서 실제로 작동하는 것을 볼 수 있습니다 .


이건 재미 있네. Bluej는 op repl과 같습니다. 현재 repl을 사용하는 것들에는 유용하지 않지만 repl을 사용하여 메서드를 프로토 타입하는 것처럼 oo 디자인을 프로토 타입하는 데 사용할 수 있습니다.
Bill K

1

DrJava 는 REPL 창을 포함하는 교육용 IDE입니다.

Eclipse 플러그인도 있지만 작동하지 않았습니다. 한동안 업데이트되지 않은 것 같습니다. 그래서 제가 일반적으로하는 일은 "이렇게하면 어떻게되는지"질문에 대해 DrJava 창을 열어 두는 것입니다.

EclipseShell도 좋지만 아직 사용하지 않았습니다.



1

Interactions 콘솔이있는 DrJava 라는 간단한 IDE가 있습니다 . 예상대로 정확히 작동합니다. 파일을로드하고 그 안에있는 객체와 상호 작용하기 시작하면됩니다.




1

JPad 는 REPL이 내장 된 자바 스크래치 패드입니다.

C:\>jpad
       _ _____          _
      | |  __ \        | |
      | | |__) |_ _  __| |
  _   | |  ___/ _` |/ _` |
 | |__| | |  | (_| | (_| |
  \____/|_|   \__,_|\__,_|



Anything you type is evaluated as java.
The code is continuously appended until you call \clear.
Other Available Commands:
\exit - exit
\clear (n) - clear past java statements
\history - display all past java statements
\help - display this help

j>2+2
4
j>Math.sin(100.1)
-0.4177477
j>

컬렉션, 목록,지도 등을 덤핑하는 것도 현명하고 테이블이나 차트로 렌더링 할 수 있습니다.

여기에 이미지 설명 입력


1

Java 9는 JShell을 제공합니다.

jshell> println( "Print me!")
jshell> Print me!

0

Jython, JRuby 용 JIRB , Groovy (groovyconsole 등) 및 Beanshell은 모두 실행 가능한 옵션입니다.

저는 InteractiveConsoleJython에를 사용했는데 앱에서 정말 잘 작동했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.