2009-03-29 10 views
4

So viele Server-Seite und die mobilen Java-Anwendungen verwenden die systemeigene Java-Sprache für Java. Können wir stattdessen Jython verwenden, um die Unternehmensanwendungen zu erstellen, z. Websites, Anwendungsserver usw.Kann Jython Java ersetzen?

Was halten Sie auch von Java ME-Anwendungen in Jython?

P.S. Kommentare zu Fragen sind ebenfalls willkommen.

Antwort

4

Nein, Jython ist kein geeigneter Ersatz für Java. Betrachten Sie zum Beispiel, dass es keine Möglichkeit bietet, Schnittstellen zu implementieren, ohne die Schnittstelle in Java zu schreiben und dann eine Klasse zu schreiben, die sie in Jython nutzt.

Was benötigt wird, ist ein JVM-zielgerichtetes Äquivalent zu Boo. Boo ist eine Sprache, die auf die .NET CLR abzielt, die in etwa von Python inspiriert ist, aber nicht kompatibel ist und die Funktionalität der CLR vollständig freilegt (wodurch sie mit C# funktionsäquivalent ist). Gegenwärtig gibt es keine Pythonic-Sprache mit Merkmalsparität zu Java - und eine solche Sprache wäre notwendigerweise mit Python inkompatibel, da Python einfach keine Möglichkeit bietet, einige der relevanten Konzepte (z. B. Schnittstellen-Typisierungsinformationen) auszudrücken.


Da gibt es einige Fragen zu diesem Thema gewesen, aber Sie mich klarstellen:

Jython ist kein Ersatz für Java in dem Sinne, dass Sie ein beliebiges Java-Projekt nicht nehmen können, beschließen, ein zufälligen zu implementieren Teil von diesem Projekt in Jython und nicht jemand anderes im Entwicklungsteam wissen oder kümmern. Sicher, Jython eignet sich für viele der gleichen Klassen von Projekten, die Java ist, , außer wenn Sie eine Schnittstelle erstellen, die von Java aufgerufen wird, anstatt umgekehrt. Da "Enterprise-Anwendungen" dazu neigen, viele Komponenten zu haben, die eng miteinander zusammenarbeiten, ist es wichtig, eine Klasse mit einer beliebigen externen Schnittstelle zu erstellen ... und das ist in Jython nicht einfach.

+0

-1 Annahme ohne Unterstützung, dass Schnittstellen erforderlich sind. Nicht, dass Jython Java ersetzen könnte oder sollte, aber das ist willkürliche Argumentation. –

+1

@Jesse - Die Tatsache, dass Java-the-Sprache verwendet werden kann, um eine extern sichtbare Schnittstelle zu erstellen, was Jython nicht bedeuten kann, dass Jython weniger Ausdruckskraft hat, wenn es darum geht, auf alle Funktionen des Java-Objektsystems zugreifen zu können. Wenn Sprache A nur eine Teilmenge der Dinge ausdrückt, die Sprache B ausdrücken kann, wie kann man sie als Ersatz bezeichnen? –

+1

@Charles, Wenn ich Ihnen sagen würde, dass Autos Pferdekutschen nicht ersetzen können, weil Autos keine Gülle produzieren können, noch bieten sie Ihnen eine Möglichkeit, Ihre Vorräte an Pferdefutter zu reduzieren, was wäre Ihre Antwort? –

3

Nein, Jython kann Java nicht ersetzen, da Python dynamisch typisiert ist. Ja, Jython kann für Serveranwendungen verwendet werden.

Jython ist nicht gut für Java ME, da Java ME sehr begrenzte Ressourcen hat. Vielleicht einige Jahre später.

Edit: dynamisch typisiert, nicht schwach

+3

Python ist stark typisiert. Der Unterschied besteht darin, dass seine Variable dynamisch ist, dh Variablen sind wirklich Beschriftungen um die Objekte herum. http://shriphani.com/blog/2008/05/11/python-variables/ – gregturn

0

Sie können Jython für diese Domänen verwenden. Offensichtlich bewegt sich die Welt der Webentwicklung in dynamisch typisierte Sprachen wie Python oder Ruby. Jython ist in dieser Domäne nett, da es erlaubt, den kompletten "Java-Stack" (App-Server, Tomcat, Implementierungs- und Testinfrastruktur, ...) in Unternehmen zu verwenden. Sie können Ihre Geschäftslogik auch in Java implementieren.

Allerdings ist Jython kein Ersatz für Java, da es C# ist. Sie können die Produktivität des Programmierers steigern, aber Sie verlieren Leistung und kompilieren Zeitüberprüfungen. Die Sprachen sind wirklich unterschiedlich und für verschiedene Aufgaben "optimiert". Ich würde vorschlagen, Jython für kleinere, nicht kritische Aufgaben, z. indem Sie damit beginnen, einige Testfälle zu implementieren.

Ich bezweifle, dass Jython ist nützlich für Java ME Entwicklung. Die Gründe sind in den anderen Posts angegeben: Ressourcenbeschränkungen.

+1

"Die Sprachen sind wirklich unterschiedlich und für verschiedene Aufgaben" optimiert "." Welche Aufgaben finden Sie besser? – Xolve

1

Ja. Die dynamischen Sprachen sind die Zukunft. Ich habe das von SUN-Vertretern vor einem Jahr gehört. Der erstaunliche Teil über Jython ist die "native" Verwendung von Java-Bibliotheken. Dienste und andere Komponenten können in Java verbleiben, aber die Integrationsebene wird sich sicher in Richtung der dynamischen Sprachen bewegen. Ich denke, Python ist nativ objektorientiert wie Java, weshalb sie so gut zusammenpassen. Ich erwarte nicht so etwas von anderen Skriptsprachen wie Perl, aber Ruby und Groovy sind auch eine gute Alternative.

4

Es hängt weitgehend davon ab, welche Anforderungen Sie haben. Alle Sprachen haben ihre Stärken und Schwächen. Es gibt keine perfekte Sprache und intelligente Entscheidungen über die Sprachwahl sind eine wichtige Fähigkeit für einen Programmierer.

Ich stimme mit Charles nicht überein, dass Jython Java nicht ersetzen kann, weil Sie Schnittstellen nicht implementieren können. In dynamischen Sprachen wird es als ein Feature angesehen, das Sie nicht Schnittstellen benötigen (siehe Enten tippen).

Jython nutzt die großartigen Sprachfunktionen von Python und kombiniert es mit einfachem Zugriff auf eine riesige Sammlung von Java-Bibliotheken. Es hat jedoch einen Preis in Bezug auf den Overhead, und da es sich um eine ziemlich neue Sprache handelt, haben Sie weniger Programmierer und Unterstützung, um Sie zu unterstützen.

Das Schöne an Jython ist, dass Sie einzelne Module in Java umschreiben können, wenn Leistung ein Problem ist. Das Geschwindigkeitsproblem ist weniger auf Servern bemerkbar, wo Sie Hardware auf das Problem werfen können. Auf Mobiltelefonen ist Leistung immer noch der Schlüssel und ich kann nicht sehen, dass Jython dort in naher Zukunft einen großen Einfluss ausüben wird.

Wird Jython Java ersetzen? Nein, das glaube ich nicht - der Schwung hinter Java ist zu groß. Aber wir werden zunehmend mehr Software mit Teilen in Jython und anderen Sprachen sehen, die auf die JVM abzielen.

+0

Ich stimme zu, dass Schnittstellen ein böser Hack sind. Wenn Sie eine API für die Verwendung von Code erstellen, der in nativem Java geschrieben wurde, wird dieser Hack jedoch häufig erforderlich. Wenn es sich um echte "Unternehmensanwendungen" handelt, möchten Sie schließlich Teile an den günstigsten Bieter auslagern können ... und Niedrigbietende kennen Java eher als Python. –

+0

@Charles, das ist die Schönheit von Jython - die ausgelagerten Komponenten können Java sein, und Sie können sie von Jython ohne zusätzlichen Aufwand verwenden. Wie gesagt, ich glaube nicht, dass es Java ersetzen wird, aber es ist trotzdem nützlich. –

+0

nur, wenn die ausgelagerte Komponente nicht versucht, Jython-Code nativ aufzurufen. Wenn die Aufrufkonvention nicht bidirektional, sondern einseitig ist, gibt es kein Problem. –