Java unter Debian #
An sich ist Java ja eine gute Idee: Man ist völlig plattformunabhängig, überall wird die gleiche Sprache gesprochen, Java ist überall vorinstalliert etc. Leider sieht die Realität aus der Sicht eines Nicht-Java-Gurus wie mir etwas trauriger aus. :-( Bereits mehrere Male hatte ich es mit Java-Programmen zu tun, die ich als Laie "mal eben" unter Debian ausprobieren wollte. Dabei musste ich jedes mal Java neu installieren und wusste nicht mehr, woher ich das nun nehmen soll...
Der Grund, dass Java insbesondere unter Debian nicht anständig unterstützt wird, liegt wohl irgendwo in den Lizenzen der Sprache und der benötigten Programme verborgen. Mehr dazu weiter unten.
Anfang 2007 gab es eine DiskussionJavaStart mit jemandem, der neu mit Java anfangen wollte. Dort stehen für Neulinge evtl. auch einige interessante Tips, die hier noch nicht eingearbeitet wurden.
Blackdown Java #
In der offiziellen Debian Distribution gibt es nur freie Implementierungen der Sprache Java, die aber viele Programme bisher nicht ausführen können.
- Update am 13.11.2006:
SUN wird Java unter die GPL stellen
. Damit wird der Weg für Debian frei. (MarkusMonderkamp zitiert aus dem Heise-Ticker)
Es gibt zwei "Debian"-Wege doch zu einem "richtigen" Java zu kommen. Wenn ein Java 1.3 oder 1.4 genügt, kann man die Pakete des Blackdown Projektes benutzen. Dort wird das Java von Sun für verschiedene Linux Plattformen (z.B. auch PowerPC) portiert. Dazu trägt man in die /etc/apt/sources.list zum Beispiel ein:
deb http://ftp2.skynet.be/pub/ftp.blackdown.org/debian/ sarge non-free
Dann ruft man auf
apt-get update apt-get install j2sdk1.4
oder auch
apt-get install j2re1.4
wenn einem die Java-Laufzeitumgebung genügt.
Das Original von Sun #
Der zweite Weg: Man lädt sich das SDK für Linux als .bin-Datei von
http://java.sun.com
herunter.
Dann installiert man das Paket java-package (in Debian/contrib):
apt-get install java-package
Damit wird das Skript make-jpkg installiert, mit dem man aus der .bin-Datei ein Debian-Paket erzeugt. Das wird dann ganz normal installiert. Zum Beispiel:
fakeroot make-jpkg jre-1_5_0_02-linux-i586.bin dpkg -i sun-j2re1.5_1.5.0+update02_i386.deb
Übrigens kann java-package auch die IBM-Implementierung von Java zu einem Paket machen. Diese läuft ebenfalls anstandslos unter Debian Linux. Im Gegenteil ist mir mit dem Java von Sun mein Eclipse auf einem UML-System dauernd abgestürzt - mit dem IBM-Java gehts. -- ThomasBayen
Wirklich Frei #
Unter Linux gibt es mittlerweile eine ganze Anzahl von Java-Virtuellen-Maschinen, die ich für die eigene Programmentwicklung auf jeden Fall empfehle (wir wollen doch freie Software entwickeln, oder?):
Die freien Java-Implementierungen sind mittlerweile durchaus in der Praxis einsetzbar. Ab Kaffe 1.1.3 läuft der Tomcat 4 unter dieser VM und an Eclipse wird heftig gearbeitet: Mit GCJ 4.0 soll Eclipse 3.1 out of the Box funktionieren!
- Mit dem Gnu-Java-Compiler (GCJ) lassen sich viele Java-Projekte in Binär-Code übersetzen. Wenn jemand freie Software mit Java entwickeln will, dann empfehle ich diesen Weg, denn so lassen sich auch Binärprogramme für Windows kompilieren!
- Auch im Debian-Projekt tut sich einiges. Durch die Fortschritte bei Kaffe und beim GCJ können viele Java-Bibliotheken und Programme mit diesen Compilers und Java-VMs übersetzt werden. Sie wandern dann in die Debian-Main-Distribution. Siehe http://wiki.debian.org/Java/MoveToMain
Tips und Tricks im Wiki der Linux User Group Krefeld #
- KategorieJava - Übersicht über alle Seiten, die sich mit Java beschäftigen
- JavaSecurityArchitecture - einiges zum Java Sandbox-Modell und wie man mit ihm programmieren kann
Web-Programme mit Java #
- TomcatUnterDebian - Um Webservices in Java anbieten zu können, empfiehlt sich die Installation von Tomcat.
- JavaWebStart kann ganz normale Swing-Applikationen aus dem Web heraus starten
Links #
- Status Java in Sarge: http://lists.debian.org/debian-devel-announce/2005/06/msg00002.html
- http://ant.apache.org
- Homepage des Java-Buildtools ApacheAnt (vergelichbar mit make)
Sun und IBM liefern Java für Linux #
- http://java.sun.com/
- http://java.sun.com/linux/
- http://www.ibm.com/java/
- http://www.blackdown.org/
- ausführlichere Installationsanleitung: http://serios.net/content/debian/java/
Freie Java-VMs #
Java-Tutorials und Online-Bücher #
- http://www.inventivio.com/help4j.html
- Programm, das eine Java-Hilfe anbietet (kostenlos, aber nicht frei)
- http://www.galileocomputing.de/openbook/javainsel4
- Buch "Java ist auch eine Insel" (deutsch)
- http://www.softwareacademy.de/Java/001%20JAVA.htm
- Buch "Java 2 Magnum" (deutsch)
- http://www.informit.de/books/java2_komp/data/start.htm
- Buch "Java 2 Kompendium" (deutsch)
- Javadoc
- Anleitung zum Javadoc-Tool, um automatisch API-Dokumentationen zu erstellen
Java-Template-Engines
- http://java-source.net/open-source/template-engines
- Übersicht über Template-Engines
- Velocity
- Das, was alle benutzen. erprobt und stabil, hat aber Grenzen, wenn es an komplexe Probleme geht<br>(Nachtrag von Markus) - Aufnahme von Velocity in Debian-http://packages.debian.org/unstable/web/velocity Pool
laut http://www.debian.org/News/weekly/2005/17/ Debian-Weekly-News
Nr. 17/2005
- FreeMarker - Erweiterte Möglichkeiten als Velocity, Doku etwas unübersichtlich. Kann auch esoterische Probleme lösen, wobei dann die Syntax etwas leidet
- Jamon
- scheint sehr gut Komponenten zu unterstützen, inspiriert von http://teatrove.sourceforge.net/ Mason
- Tea
- Template-Sprache von Disney. gute Doku, aber letzte Version von 2002
- JasperReports
- Reportgenerator (kein echte Template-Engine), macht einen sehr guten Eindruck
- http://java-source.net/open-source/jsp-tag-libraries
- Übersicht über JSP Tag Libraries
- http://www.zope.org/Wikis/DevSite/Projects/ZPT/FrontPage
- ZOPE Templates sehen sehr interessant aus, zwei Java-Implementierungen:
- Struts
- Das, was alle benutzen: Alt, ausgereift, große Nutzerbasis, etwas angestaubt und wenig innovativ
- Turbine
- Jakarta-Projekt, das behauptet, etwas moderner zu sein als Struts
- Tapestry
- hat einen interessanten objektorientierten (statt aktionsorientierten) Ansatz
- Spring
- intelligente Idee, um Objekte lose zu koppeln (aber IMHO seltsam umgesetzt), umfangreiche Doku, alles in allem etwas aufgebläht
- Jodd
- Schlanker als Struts, sieht nützlich aus, aber letzte Version von Oktober 2004, Update: es gibt eine neue Version von Januar 2007
- Niggle
- Servlets-Framework, das Freemarker und Velocity unterstützt, nichts Neues seit 2002
- Rife
- Soll mit dem berühmten http://www.rubyonrails.org/ Ruby on Rails
vergleichbar sein
- GRails
- darf nicht Groovy on Rails heißen ;-) und schon die Version 0.1 sieht sehr verheißungsvoll aus
- Wicket
- Klare Trennung von HTML und Java
- VRaptor
- Nutzt Java5-Annotations und Velocity oder Framemaker, sieht interessant aus
- Vergleiche von Web-Frameworks
- Hibernate
- Persistenz-Framework - deutsche Artikel z.B.
- Mr. Persister
- J2EE 1.5
enthält eine standardisierte Persistenz API, die Glassfish-Implementierung steht unter einer Opensource-Lizenz (der CDDL
). Die API wird auch von Hibernate unterstützt.
Swing
- http://www.jgoodies.com/
- freie Swing-Bibliotheken, insbesondere der LayoutManager Forms
- Unit-Testing unter Swing
- http://www.java-source.net/open-source/testing-tools
- Übersicht über Testing Tools
- http://www.javaworld.com/javaworld/jw-11-2004/jw-1115-swing.html
- guter Artikel, wie man es selber machen kann
- http://www.uispec4j.org/
- uispec4j hat eine sehr schöne API (die Tests sind einfach zu lesen). Es arbeitet, ohne echte Fenster zu öffnen, das ist schneller, kann aber nicht alles (z.B. Focus)
- http://jfcunit.sourceforge.net/
- jfcunit wird oft genannt, es funktioniert bei mir sehr gut. Es steuert "live" Fenster und man kann sogar mit dem Debugger zusehen, wie die GUI sich bewegt
- http://www.devx.com/Java/Article/9614/0/page/2
- Artikel über jfcunit
- http://www.devx.com/Java/Article/9614/0/page/2
- https://swingunit.dev.java.net/
- swingunit arbeitet mit XMl-Dateien zur Testkonfiguration
- http://jemmy.netbeans.org/
- Jemmy (wird in Netbeans verwendet)
- http://www.java-source.net/open-source/testing-tools
- http://www.junit.org
- Die erste Anlaufstelle, wenn es um Tests in Java geht
- http://www-128.ibm.com/developerworks/java/library/j-cwt02095/
- Artikel über Hansel (Code Covering). Interessant auch unten die Links zu anderen Tools.
- http://www.junit.org
- Kategorien
- KategorieJava, KategorieDebian