Java vs. Python

In den letzten Tagen habe ich mich mal wieder intensiver mit Java beschäftigt. Da ich plattformunabhängig programmieren will, ist Java neben Python natürlich ein wichtiger Kandidat. Leider gab es in diesem Battle keinen eindeutigen Sieger.

Java punktet bei der IDE (Netbeans rocks!) und zwischenzeitlich auch bei der GUI - da SWING inzwischen auch mit nativem Look & Feel dargestellt werden kann. Die statische Typisierung ist Segen und Fluch in einem - mächtig viel Programmier-Mehraufwand, dafür aber solide und stabile Klassen. Einem Programmierer, der dynamische Sprachen benutzt, ist die Notwendigkeit von Konstrukten wie JLabel label = new JLabel("Hallo Welt"); schwer zu vermitteln (”… ist doch logisch, welchen Typ ‘label’ erhält :-) …” )

Hinzu kommt die riesige Klassenbibliothek, der man nur unter Einsatz einer guten IDE (hier nochmal Netbeans!) Herr wird. Auch ist Java ohne Zweifel derzeit im professionellen Umfeld ‘in’, was ein Blick in die einschlägigen Stellenanzeigen beweist.

Python hingegen ist Rapid Application Development pur - dynamisch typisiert und mit einer beinahe primitiv anmutenden Syntax. Diese führt aber zu einer vergleichsweise extremen Einsparung an Programmzeilen. Während Java für ein simples “Hello World” Programm mindestens 5 Codezeilen benötigt, reicht in Python eine. Logische Blöcke werden einfach eingerückt - damit entfällt die in anderen Sprachen notwendige Einklammerung. Auch Pythons Modulbibliothek ist riesig - hier gibt es auch so nette Sachen wie Panda3D, die 3D Grafikengine der Disney-Studios.

Schwierig ist die Nutzung von Python für GUI-Programme. Es gibt zwar zahlreiche Wrapper (u.a. für GTK+, QT), aber “fest eingebaut” ist nur das furchtbar steinzeitlich aussehende Tk.

Fazit: Jede Sprache hat ihre Berechtigung. Aber da man sich ja irgendwie entscheiden muss, fällt diesmal die (alte und neue) Wahl auf Python. Denn eines habe ich noch vergessen: Python ist so unheimlich cool…

Andere Einträge der Rubrik Programmierung lesen…
Geschrieben am 01.11.2007 von Frank | RSS 2.0-Feed | Kommentieren | Trackback

4 Kommentare über “Java vs. Python”

Winfried Maus am 24.03.2008 um 16:57 Uhr

Für plattformunabhängige GUI-Entwicklung unter Python empfiehlt sich am ehesten wxPython, was sogar zum Standardlieferumfang von Mac OS X gehört. -Das- Buch zu dem Thema ist “wxPython in Action”, erschienen bei Manning, ISBN 1-932394-62-1.

Java hat mit Sicherheit einen festen Platz in der IT-Welt und wird diesen auch noch auf Jahrzehnte behaupten — genauso wie COBOL auch. Und Java ist definitiv in der COBOL-Phase angekommen. Natürlich gibt es dort Unmengen von Jobs - aber wieviele davon haben mit etwas interessantem zu tun? Oder gar mit einem —neuen— Projekt und nicht nur der Pflege einer gigantischen, über Jahre gewachsenen Codebasis? Java lebt in der Welt der Banken, Finanzen und Versicherungen. Keine Welt, in der man arbeiten will, wenn man kreativ sein möchte.

Swing liest sich toll, aber wenn man die Performance von Netbeans auf OS X sieht, fragt man sich unweigerlich, warum das Programm bei jedem Mausklick ein bis zwei Sekunden braucht, bis es reagiert. Außerdem sieht Swing auf OS X nach wie vor wie ein Fremdkörper aus und wem Plattformunabhängigkeit wichtig ist, der wird an der zweitgrößten Desktop-Plattform (OS X) nicht vorbeikommen und dafür sorgen müssen, daß seine Applikation sich dort ‘richtig’ anfühlt. Das läßt sich mit wxWidgets/wxPython wesentlich besser umsetzen als mit Swing, das bestenfalls unter Windows und GTK+ passabel aussieht. Selbst Eclipse mit SWT ‘fühlt’ sich auf dem Mac wesentlich besser an als Swing. QT Jambi sieht ebenfalls ganz nett aus, ist aber gnadenlos überteuert, wenn man nicht gerade GPL-lizenzierte Software schreiben möchte.

Kurz: Java ist keine geeignete Sprache für GUI-Anwendungen. Anwender wollen native Anwendungen und nicht solche, die mehr schlecht als recht so tun als ob. (wx)Python ist hier tatsächlich die bessere Wahl.

Winfried Maus am 24.03.2008 um 17:04 Uhr

Ach ja: BlitzMax ist zwar nicht Open Source, aber auch ein sehr guter Kandidat für plattformunabhängige Programmierung. BlitzMax benutzt auf jedem Zielsystem native GUI-Elemente und benutzt beispielsweise unter OS X ein Cocoa-Backend. Schnell ist der erzeugte Code auch noch. Leider nur positionieren die Entwickler die Sprache als reine Spiele-Sprache, was sie aber schon lange nicht mehr ist.

Frank am 24.03.2008 um 20:06 Uhr

Danke für die Kommentare.

“Java lebt in der Welt der Banken, Finanzen und Versicherungen. Keine Welt, in der man arbeiten will, wenn man kreativ sein möchte.” … und genau in dieser Welt arbeite ich :-/

Vielleicht hätte ich “plattformunabhängig” ein bisschen genauer eingrenzen sollen: OS X ist für mich kein Thema. Nicht dass es mir nicht zusagt (hätte erst gestern beinahe so einen coolen iMac bei ebay ertickt), aber mein Hauptaugenmerk liegt auf Linux mit GNOME (was gut angepasst einer OS X-Oberfläche sehr nahe kommt). Daneben muss ich nolens volens auch noch Windows bedienen, das vermutlich 99% der Kundschaft einsetzt.

Netbeans hat auf meinen Systemen (1,6GHz Centrino Notebook und E6400 DualCore-PC) eine sehr gute bis ausreichende Performance. Wo das Problem beim Mac liegt kann ich auch nicht sagen. Jedenfalls ist es für meine Java-Projekte eine beinahe geniale IDE.

Eine Lizenz für BlitzMax und PureBasic besitze ich auch. Wer will aber ein grosses Projekt aufziehen, welches zudem noch über einen längeren Zeitraum gewartet werden muss, wenn nicht wirklich sicher ist, dass die Sprache selbst über diesen Zeitraum hinweg existiert. PureBasic ist m.E. das Werk eines Einzelnen, BlitzMax ebenso. Eine nennenswerte Community für die Weiterentwicklung der Sprachen selbst existiert m.E. nicht. Das ist mir zu unsicher, auch wenn ich beide Sprachen eigentlich mag.

Markus Majer am 02.06.2008 um 09:56 Uhr

Hallo! Du solltest dir eventuell auch mal Eclipse anschauen..

Die IDE kann nochmal um einiges mehr - außerdem ist die Erweiterbarkeit spitze, man kann aus einer primären Java-IDE mit einem Klick eine Python-IDE, C(++)-IDE, Perl-IDE, PHP-IDE, HTML/CSS/JS-IDE etc. machen - in den meisten Fällen absolut konkurrenzfähig mit Einzelprodukten zu diesen Sprachen.

Gerade wenn man ein Programmierer ist, der sich primär/privat für Python entschieden hat, und sekundär/beruflich für Java (plus der netten Option auch im Job Python per Jython nutzen zu können *g*) hat in Eclipse die ideale IDE.

Die exzellente Python-IDE für Eclipse heißt PyDev - pydev.sf.net - und ist wirklich klassse. Einfach den passenden Update-Link hinzufügen und die Erweiterung ist ohne Probleme installiert.

NetBeans kann da mit Alibi-Programmiersprachen-Plugins wie (nur) für Ruby und Ruby on Rails nicht mithalten und alleine Syntax Highlightning besitzt außer dem Texteditor von Windows eigentlich jeder Editor :)

Eclipse passt sich zudem besser an das jeweilige Betriebssystem an, und wirkt nicht dauerhaft fremd wie NetBeans.

NetBeans rockt nur so lange bis man sich mal ausgiebig mit Eclipse und seinen Möglichkeiten auseinandergesetzt hat.

Die Installation ist allerdings nicht so einfach wie bei NetBeans, es sei denn, man nimmt das Riesenpaket von der Eclipse-Seite, in dem alles drin ist. Alternativ sei auch die Zusammenklick-Möglichkeit von “Yoxos on Demand” und die Seite EasyEclipse erwähnt.

Für die GUI-Entwicklung kann man bei simplen GUIs TkInter nehmen, das sieht zumindest unter Windows nativ aus. Für die professionelle GUI-Entwicklung ist speziell das neuen Qt4 dank eines tollen UI-Editors und der großen Portabilität einen Blick wert, ansonsten kann man natürlich auch wxPython und PyGTK und viele weitere nehmen - einfach mal eine kleine GUI in jedem Projekt ausprobieren und dann entscheiden was einem am besten liegt.

Einen Kommentar schreiben