Warum sollten Sie Jython verwenden, wenn Sie einfach Java verwenden könnten?

Die Standardantwort ist, dass es nützlich ist, wenn Sie nur ein paar Zeilen Code schreiben müssen ...

Ich habe beide Sprachen in Eclipse integriert. Da Eclipse das Kompilieren, Interpretieren, Ausführen usw. behandelt, "laufen" beide genau gleich.

Die Eclipse-IDE für beide ist ähnlich - sofortige "Kompilierung", Intellisense usw. Beide erlauben die Verwendung der Debug-Perspektive.

Wenn ich ein paar Java-Zeilen testen möchte, muss ich kein ganz neues Java-Projekt erstellen - ich verwende einfach die Scrapbook Feature innerhalb von Eclipse, was es mir ermöglicht, Java - Ausdrücke auszuführen, ohne ein neues Java - Programm erstellen zu müssen. Dies ist eine gute Möglichkeit, eine vorhandene Klasse schnell zu testen oder zu bewerten Codeausschnitt ".

Jython erlaubt die Verwendung der Java-Bibliotheken - aber dann (per Definition) macht Java!

Welche anderen Vorteile bietet Jython?

0
hinzugefügt bearbeitet
Ansichten: 2
Schade, dass diese Frage geschlossen ist; wie es einen ziemlich guten Punkt gibt, der in keiner der Antworten auftauchte (außer ich habe es übersehen): Mit jython kann ich neuen Code im Kontext eines laufenden jvm ausführen. Das kannst du nicht mit Java machen.
hinzugefügt der Autor GhostCat, Quelle
Ich konnte nicht verstehen, warum diese Frage geschlossen ist.
hinzugefügt der Autor Icche Guri, Quelle
Lustig, ich wollte fragen: "Warum Java benutzen, wenn du einfach Jython benutzen könntest?" Versuchen Sie Swing von Jython und sehen Sie, wie angenehm es ist: btn = JButton ("Klicken Sie mich", actionPerformed = SomeFunction) . Etwas einfacher, als eine ganze Klasse schreiben zu müssen, nur um Klicks auf die Schaltfläche zu behandeln, nein?
hinzugefügt der Autor Cam Jackson, Quelle

14 Antworten

Ich habe gerade Jython entdeckt und als ein bisschen Linguist denke ich, dass es ein bisschen so ist wie "Warum benutzt man Latein, wenn man Französisch kann" (vergisst dabei, dass Latein natürlich vor Französisch kam) .

Verschiedene menschliche Sprachen lassen dich auf unterschiedliche Weise denken. Französisch ist eine großartige Sprache, ich habe lange in Frankreich gelebt und einen Abschluss gemacht. Aber die überraschende Kraft und Prägnanz von Latin versetzt Sie in eine andere Zone, in der die Wortreihenfolge vertauscht werden kann, um z. B. alle möglichen subtilen Effekte zu erzeugen.

Ich denke, durch meine flüchtige Bekanntschaft mit Jython, die übrigens meinen Enthusiasmus wirklich angefacht hat, wird es mich auf unterschiedliche Weise zum Nachdenken bringen. Ich war lange Zeit sehr skeptisch gegenüber Python/Jython und war zum Beispiel ein großer Fan von Java-Generika (die ironischerweise den Umfang des Tippens reduzieren und daher das Französische "latinisieren", wenn Sie möchten). Ich verstehe die vollständigen Implikationen von "dynamisch typisierten" Sprachen wie Jython nicht ganz, aber ich denke, das Beste ist, mit dem Fluss zu gehen und zu sehen, was Jython mir antut!

Es ist lustig, wie Sprachen kommen und gehen. Ein anderes "Latein" könnte als Algol68 mit seiner unendlich rekursiven Syntax betrachtet werden. Aber die Notwendigkeit, massiv rekursiven Code zu entwickeln, und die Fähigkeit, ihn zu lesen und darin zu denken, hat sich (noch) nicht bemerkbar gemacht. Jython scheint eine sehr mächtige und elegante Ergänzung zu sein, wo wir jetzt sind, mit OO-Bibliotheken, der Power von Java-Swing und allem, was in einem sehr eleganten Paket verpackt ist. Vielleicht wird Jython eines Tages auch eine unendlich rekursive Syntax annehmen?

0
hinzugefügt

Ich verwende Jython zum interaktiven Testen von Java-Code. Dies ist oft viel schneller als das Schreiben von Java-Testanwendungen oder sogar einer Skriptsprache. Ich kann einfach mit den Methoden spielen und sehen, wie es reagiert. Von dort kann ich genug lernen, um einige echte Code- oder Testfälle zu schreiben.

0
hinzugefügt

Ein kurzes Beispiel (aus http://coreygoldberg. blogspot.com/2008/09/python-vs-java-http-get-request.html ):

Sie haben ein Backend in Java und müssen HTTP GET-Requests ausführen.

Nativ:

import java.net.*;
import java.io.*;

public class JGet {
    public static void main (String[] args) throws IOException {
        try {
            URL url = new URL("http://www.google.com");

            BufferedReader in = 
                new BufferedReader(new InputStreamReader(url.openStream()));
            String str;

            while ((str = in.readLine()) != null) {
                System.out.println(str);
            }

            in.close();
        } 
        catch (MalformedURLException e) {} 
        catch (IOException e) {}
    }
}

In Python:

import urllib
print urllib.urlopen('http://www.google.com').read()

Mit Jython können Sie die Java-Robustheit und bei Bedarf die Python-Klarheit nutzen.

Was sonst ? Wie Georges sagen würde ...

0
hinzugefügt
Ja, du musst es nur selbst programmieren. Wie alles andere auch.
hinzugefügt der Autor e-satis, Quelle
Erstens, der Java-Code macht nicht viel mehr. Der Python-Code ist voll OO und das open() umschließt ein Dateiobjekt, das streamt. Außerdem sehe ich hier nichts über einen Rahmen. SO ja, es gibt Ausnahmenbehandlung, aber Sie können es auch in Python tun. Das wirkliche Problem hier ist, dass Java es nicht auf eine kürzere Art und Weise tun lässt, selbst mit weniger Features. Es ist kein Angriff auf Java. Mein Punkt ist nur: Du würdest Jython benutzen, weil du manchmal etwas besseres willst.
hinzugefügt der Autor e-satis, Quelle
Sie machen meinen Standpunkt: Deshalb würden Sie Jython und nicht nur Java verwenden.
hinzugefügt der Autor e-satis, Quelle
Der Java-basierte Jython-Code kann so knapp wie Python sein: inStream = URL (" python.org "). openConnection (). getInputStream() result = s = Scanner (inStream) .useDelimiter (" \\ A "). next ()
hinzugefügt der Autor tnorgd, Quelle
Nichts hält Java davon ab, eine Utility-Klasse zu haben, die UrlUtil.open ("www.google.com"). Read ().
hinzugefügt der Autor Marcio Aguiar, Quelle
Das Corey Goldberg-Beispiel, das Java mit Python vergleicht, ist ungefähr so ​​falsch wie ein Vergleich im Internet, und das obige Beispiel ist nicht viel besser. (Außerdem deutet es auf eine Dichotomie von Robustheit/Klarheit hin, die umstritten ist.) Der obige Java-Code ist viel mehr als der Python-Code (OO, gepuffertes Lesen, Ausnahme-Framework usw.). Es gibt Gründe, Jython zu benutzen, aber ein künstliches Beispiel der Kürze ist nicht sehr überzeugend.
hinzugefügt der Autor Glenn, Quelle

Python-Bibliotheken;) Zum Beispiel BeautifulSoup - ein HTML-Parser, der falsches Markup akzeptiert. AFAIK gibt es keine ähnliche reine Java-Bibliothek.

0
hinzugefügt
Du hast recht. Die stabile Version ist Python 2.2 gleichwertig. Es könnte zu alt sein ... und Jython 2.5 ist immer noch im Alpha-Zustand. Nachdem die stabile Version verfügbar ist, sollte es funktionieren.
hinzugefügt der Autor sumek, Quelle
Bist du sicher, dass es unter Jython funktioniert?
hinzugefügt der Autor Cristian Ciupitu, Quelle

Python-Syntax (von Jython verwendet) ist für viele Programmierer deutlich prägnanter und schneller zu entwickeln.

Darüber hinaus können Sie vorhandene Python-Bibliotheken in einer Java-Anwendung verwenden.

0
hinzugefügt

Jython kann auch als eingebettete Skriptsprache in einem Java-Programm verwendet werden. Vielleicht finden Sie es irgendwann nützlich, etwas mit einer eingebauten Erweiterungssprache zu schreiben. Wenn Sie mit Java Jython arbeiten, ist dies eine Option (Groovy ist eine andere).

Ich habe hauptsächlich Jython für die explorative Programmierung auf Java-Systemen verwendet. Ich könnte Teile der Anwendung importieren und die API durchsuchen, um zu sehen, was passiert ist, indem Aufrufe einer interaktiven Jython-Sitzung aufgerufen werden.

0
hinzugefügt

Einige Aufgaben sind in manchen Sprachen einfacher als in anderen. Wenn ich eine Datei analysieren müsste, würde ich im Handumdrehen Python über Java auswählen.

0
hinzugefügt
Ich musste eine Rohdatei lesen und wichtige Daten auslesen. Indem ich jython in die Mitte meiner Java-App einbettle, kann ich die Datei einfach mit regulären Ausdrücken und Listen-Comprehensions scannen und meine Ergebnisse dann an meinen Java-Code zurückgeben.
hinzugefügt der Autor gregturn, Quelle

Die Verwendung von Python ist mehr als "syntaktischer Zucker", es sei denn, Sie genießen schreiben (oder Ihre IDE generieren) Hunderte von Zeilen der Kesselplatte Code. Es gibt den Vorteil der Rapid-Development-Techniken bei der Verwendung von dynamisch typisierten Sprachen, obwohl der Nachteil darin besteht, dass es Ihre API und Integration erschwert, weil Sie keine einheitliche Codebasis mehr haben. Dies kann sich auch auf die Wartung auswirken, da nicht jeder in Ihrem Team Python so sehr liebt wie Sie und nicht so effizient damit ist. Das kann ein Problem sein.

0
hinzugefügt

Analogie: Warum Kaffee trinken, wenn du stattdessen heißes Leitungswasser trinken und geröstete bittere Bohnen kauen kannst. :-)

Bei manchen Aufgaben schmeckt Python einfach besser, funktioniert besser und ist schnell genug (braucht Zeit zum Aufbrühen?). Wenn sich Ihre Programmier- oder Implementierungsumgebung auf die JVM konzentriert, können Sie in Jython Python codieren, ohne die Implementierungs- und Laufzeitumgebung zu ändern.

0
hinzugefügt

Syntax Zucker.

0
hinzugefügt
Ja. Echte Programmierer verwenden eine magnetisierte Nadel und eine ruhige Hand (c) xkcd.com/378 . Alles andere ist eine Syntax Zucker.
hinzugefügt der Autor jfs, Quelle

Keine Notwendigkeit zu kompilieren. Vielleicht möchten Sie etwas schneller ins Rollen bringen als eine kompilierte Sprache wie einen Prototyp.

... und Sie können den Jython-Interpreter in Ihre Apps einbinden. Nettes Feature, ich kann nicht sagen, dass ich es benutzt habe, aber es ist trotzdem cool.

0
hinzugefügt

In Ihrer Situation macht es wenig Sinn. Aber das heißt nicht, dass es nie geschieht. Wenn Sie beispielsweise ein Produkt entwickeln, mit dem Endbenutzer Erweiterungen oder Plug-ins erstellen können, ist es möglicherweise sinnvoll, das Skript zu verwenden.

0
hinzugefügt

Python hat einige Funktionen funktionaler Programmierung, wie Lambda. Java hat keine solche Funktionalität und einige Programme wären wesentlich einfacher zu schreiben, wenn solche Unterstützung verfügbar wäre. Daher ist es manchmal einfacher, den Code in Python zu schreiben und ihn über Jython zu integrieren, um zu versuchen, den Code in Java zu schreiben.

0
hinzugefügt
Java 8 hat Lambdas.
hinzugefügt der Autor Daniel, Quelle

Das Portieren von vorhandenem Code in eine neue Umgebung kann ein Grund dafür sein. Einige Ihrer Geschäftslogik und Domänenfunktionen können in Python vorhanden sein, und die Gruppe, die diesen Code schreibt, besteht darauf, Python zu verwenden. Die Gruppe, die sie einsetzt und wartet, möchte jedoch die Verwaltung eines J2EE-Clusters für die Skalierung. Sie können die Logik in Jython in eine EAR/WAR-Datei einfügen und dann sieht die Bereitstellungsgruppe nur ein weiteres J2EE-Paket, das wie alle anderen J2EE-Bundles verwaltet wird.

es ist ein Mittel, um mit einer Impedanzfehlanpassung fertig zu werden.

0
hinzugefügt