Czy istnieje coś takiego jak interaktywny tryb REPL w Pythonie, ale dla Javy? Więc mogę na przykład wpisać InetAddress.getAllByName( localHostName )
okno i natychmiast uzyskać wyniki, bez tego całego publicznego statycznego koszmaru void ()?
java
read-eval-print-loop
Yoni Roit
źródło
źródło
Odpowiedzi:
edytuj Od Java 9 istnieje JShell
Oryginalna odpowiedź następuje
Możesz także użyć Groovy Console . To interaktywna konsola, na której możesz robić, co chcesz. Ponieważ Groovy zawiera również klasy z podstawowej platformy java, będziesz mógł również z nich korzystać.
To wygląda tak:
źródło
System.exit()
), ale do większości zastosowań powinno być wystarczające.class test{public static void test(){System.out.println('test')}}
Eclipse ma do tego funkcję, chociaż nie jest to pętla. Nazywa się to „stroną w notatniku”. Zakładam, że analogią jest to, że masz album z wycinkami, w którym zbierasz małe fragmenty kodu.
W każdym razie, aby to zadziałało, otwórz projekt w Eclipse (Twoja strona w notatniku będzie powiązana z projektem - Eclipse lubi to, gdy projekty są właścicielami rzeczy).
Następnie:
Masz teraz stronę z notatnikiem. Wpisz kod, na przykład ten:
System.out.println(System.getProperties());
Następnie zaznacz tekst myszą i naciśnij Control-U lub wybierz „Wykonaj” z menu kontekstowego. Kod zostanie uruchomiony, a dane wyjściowe pojawią się na konsoli.
Możesz także wpisać wyrażenie, zaznaczyć je i wybrać Wyświetl z menu kontekstowego. Oceni wyrażenie i wypisze jego typ. Na przykład, uruchomienie Display on
1 + 2
spowoduje wydrukowanie(int) 3
.źródło
http://www.beanshell.org/
http://www.beanshell.org/manual/syntax.html#Standard_Java_Syntax
źródło
Możesz używać stron Eclipse Scrapbook.
W Eclipse utwórz stronę w notatniku. W Twoim projekcie, New-> Other-> Scrapbook page.
W pliku wprowadź tekst, zaznacz go i naciśnij ctrl-U i gotowe.
Aby zarządzać importami, kliknij prawym przyciskiem myszy na stronie i wybierz opcję Ustaw import, gdzie możesz wybrać import pakietu lub pojedynczej klasy. Jest to trwałe i zapisywane wraz ze stroną.
źródło
Stare pytanie, ale teraz jest lepsza odpowiedź (maj 2013) - java-REPL! Jest dostępny na github, a także dostępny na żywo w witrynie java-repl celu szybkiego jednorazowego przetestowania.
Jeśli pobierzesz kod centrum git i uruchomisz,
ant
aby wygenerować artefakty, możesz ułatwić korzystanie z małego skryptu, takiego jak:Odkąd znalazłem ten projekt, prawdopodobnie używam go 5 razy dziennie. Cieszyć się!
źródło
Wydaje się, że nikt jeszcze nie wspomniał, że Java (6, 7) dostarcza konsolę REPL o nazwie
jrunscript
. Jest niezależny od języka (więc może być używany z Jythonem, JRuby itp.). Domyślnie jest to JavaScript (Rhino), który również jest domyślnie dołączony i podobnie jak inne języki, możesz uzyskać dostęp do wszystkich pakietów / obiektów dostępnych w ścieżce klas.źródło
To część OpenJDK 9!
REPL o nazwie JShell (opracowany przez Oracle) został wydany jako część JDK 9.
Po prostu pobierz JDK 9 i uruchom
bin/jshell
.Zasoby
źródło
Jako alternatywę dla Groovy, wypróbuj Beanshell: http://www.beanshell.org/
Jest bardziej podobny do języka Java i umożliwia bezpośrednie użycie składni języka Java.
źródło
Jython to implementacja języka Python, która umożliwia inspekcję obiektów Java i interakcję z nimi.
>>> 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])
źródło
Java-REPL autorstwa Alberta Latacza działa dobrze.
Możesz to wypróbować bezpośrednio z przeglądarki tutaj: http://www.javarepl.com/term.html
Kod źródłowy jest dostępny tutaj i ma przyzwoitą wtyczkę Intelli-J.
https://github.com/albertlatacz/java-repl
źródło
Clojure zapewnia REPL, którego możesz użyć.
źródło
Konsoli Groovy pozwala to zrobić. Właściwie miał na celu przetestowanie świetnego kodu, ale ponieważ groovy jest nadzbiorem Javy, pozwala również na zwykłe rzeczy w Javie.
Właśnie wpisałem to w konsoli:
InetAddress.getAllByName('localhost')
i naciśnij CTRL-R, po czym zwróciło:
groovy> InetAddress.getAllByName('localhost') Result: [localhost/127.0.0.1]
źródło
Scala oferuje również konsolę interaktywną. Udało mi się go użyć, aby uzyskać wynik dla wyrażenia w twoim pytaniu, w pełni kwalifikując InetAddress, jak w:
java.net.InetAddress.getAllByName("localhost")
źródło
Podczas gdy JRuby , BeanShell , Julian Fleischer's REPL są dostępne , REPL Alberta Latacza wydaje się być najnowszym i aktywnym.
Wypróbowałem to z prostą definicją klasy, działa dobrze.
$ 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);
źródło
Dla osób z dostępem do Mathematica JLink umożliwia dostęp do języka Java i skryptu z kodem Mathematica:
Needs["JLink`"] LoadJavaClass["java.net.InetAddress"] InetAddress`getAllByName["localhost"]
Naciśnij Shift-Enter, aby ocenić, a otrzymasz
Następnie możesz użyć funkcji Map Mathematica do wywołania
toString
zwróconych obiektów:#@toString[]& /@ %
aby uzyskać wynik (lub użyć mniej niejasnej składni
Map[Function[obj, obj@toString[]], %]
):{"localhost/127.0.0.1"}
Jeśli zaczniesz traktować to poważnie, zechcesz przeczytać samouczek Todda Gayleya pod adresem http://reference.wolfram.com/mathematica/JLink/tutorial/Overview.html .
źródło
Jeśli znasz już Groovy (co zakładam, że znasz, ponieważ wspomniałeś o Groovy Console), po prostu użyj groovysh lub groovyConsole, które są zawarte w dystrybucji Groovy. Jeśli masz niestandardowe pliki JAR, które chcesz zaimportować, możesz napisać plik wsadowy, który uruchamia groovysh / groovyConsole z tymi dodanymi do ścieżki klas. Ty też możesz to zrobić
this.class.classLoader.rootLoader.addURL(new URL("file:///path to file"))
z wnętrza powłoki, aby załadować inne słoiki.
Kilka lat temu używałem Jythona, aby robić to, o co prosisz. W ramach mojego skryptu kompilacji wygenerowałem niestandardowy plik jython.bat i .py, który zawierał pełną ścieżkę klasy dla projektu, nad którym pracowałem. W ten sposób, kiedy zacząłem Jython, miałby dostępny cały kod i wywołałby Spring, który pozwoliłby mi kręcić rzeczy w systemie na żywo. Możesz zrobić to samo z Groovy, JRuby, BeanShell itp.
źródło
możesz napisać skrypt java używając jruby http://kenai.com/projects/jruby/pages/CallingJavaFromJRuby
źródło
Tak, jest: http://www.scravy.de/blog/2012-02-27/a-read-eval-print-loop-for-java.htm
źródło
Większość IDE ma okno zwane czymś w rodzaju „trybu natychmiastowego”, które pozwala na ocenę kodu java w locie.
źródło
Możesz rzucić okiem na BlueJ, które jest interaktywnym środowiskiem programistycznym Java przeznaczonym do nauczania OOP, a nie jako pełne IDE, takie jak Eclipse lub NetBeans. Zresztą fajnie jest się z tym bawić.
Możesz zobaczyć to w akcji na YouTube w serii samouczków Java.
źródło
DrJava to edukacyjne IDE, które zawiera okienko REPL.
Jest też wtyczka Eclipse, ale nie zadziałała. Myślę, że od jakiegoś czasu nie był aktualizowany. Więc to, co zwykle robię, to pozostawienie otwartego okna DrJava na pytania „co się stanie, jeśli to zrobię”.
EclipseShell też może być dobry, ale jeszcze go nie używałem.
źródło
Skorupa fasoli 2
źródło
Istnieje proste środowisko IDE o nazwie DrJava, które ma konsolę interakcji. Działa dokładnie tak, jak bym się spodziewał. Wystarczy załadować plik i rozpocząć interakcję z zawartymi w nim obiektami.
źródło
Dostępna jest internetowa REPL: http://www.javarepl.com/console.html
Wpisując więcej, aby osiągnąć limit znaków ...
źródło
W przypadku java 8 istnieje nudge4j. zobacz https://github.com/lorenzoongithub/nudge4j
... a piękno polega na tym, że możesz pilotować swoją aplikację z poziomu przeglądarki
źródło
JPad to brudnopis java z wbudowaną 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>
Jest również sprytny w kwestii zrzucania kolekcji, list, map itp. I umożliwia renderowanie ich jako tabeli lub wykresu:
źródło
Java 9 zapewnia JShell.
jshell> println( "Print me!") jshell> Print me!
źródło
Jython, JIRB for JRuby, Groovy (groovyconsole i in.) I Beanshell to dostępne opcje.
Użyłem
InteractiveConsole
dla Jythona, naprawdę dobrze działało w aplikacji.źródło