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 ()?
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 ()?
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:
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
.
BeanShell to mały, darmowy, wbudowywalny interpreter kodu źródłowego Java z funkcjami obiektowego języka skryptowego, napisany w języku Java. BeanShell dynamicznie wykonuje standardową składnię Java i rozszerza ją o typowe udogodnienia skryptowe, takie jak luźne typy, polecenia i zamknięcia metod, takie jak w Perlu i JavaScript. Możesz używać BeanShell w sposób interaktywny do eksperymentowania i debugowania języka Java, a także do rozszerzania aplikacji na nowe sposoby. Skrypty Java nadaje się do wielu różnych aplikacji, w tym do szybkiego prototypowania, rozszerzenia skryptów użytkownika, silników reguł, konfiguracji, testowania, dynamicznego wdrażania, systemów wbudowanych, a nawet edukacji w języku Java.
http://www.beanshell.org/manual/syntax.html#Standard_Java_Syntax
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ą.
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:
#!/bin/sh
java -jar /home/rdahlgren/scripts/javarepl-dev.build.jar
Odkąd znalazłem ten projekt, prawdopodobnie używam go 5 razy dziennie. Cieszyć się!
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.
REPL o nazwie JShell (opracowany przez Oracle) został wydany jako część JDK 9.
Po prostu pobierz JDK 9 i uruchom bin/jshell
.
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.
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])
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.
Clojure zapewnia REPL, którego możesz użyć.
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]
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")
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);
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
{<<JavaObject[java.net.Inet4Address>>}
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 .
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.
możesz napisać skrypt java używając jruby http://kenai.com/projects/jruby/pages/CallingJavaFromJRuby
Większość IDE ma okno zwane czymś w rodzaju „trybu natychmiastowego”, które pozwala na ocenę kodu java w locie.
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.
Dostępna jest internetowa REPL: http://www.javarepl.com/console.html
Wpisując więcej, aby osiągnąć limit znaków ...
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
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:
Java 9 zapewnia JShell.
jshell> println( "Print me!")
jshell> Print me!