= Java =

Dies ist eine Übersichtsseite über die Programmiersprache __Java__, die sich in der LUG Krefeld einiger Beliebtheit erfreut.

In diesem Wiki sind die folgenden Seiten mit dem Schlagwort __Java__ markiert:\\
[{HasTagOf output='comma' Java}]

LUG Mitglieder mit Java-Know-How sind:\\
[{HasTagOf JavaProgrammierer}]

Hier eine Einführung über Java zu schreiben, wäre wohl der falsche Platz. Ich verweise dazu besser auf [http://de.wikipedia.org/wiki/Java_(Programmiersprache) Wikipedia] und natürlich auf die [Java-Seite von Sun|http://java.sun.com/].

== Tips und Tricks im Wiki der Linux User Group Krefeld ==

Hier eine kurze Liste mit den Highlights hier im Wiki:

* JavaUnterDebian - Besonderheiten unter Debian Linux
* [JUnit] - automatisches Testen von Java-Programmen
* JavaSecurityArchitecture - einiges zum Java Sandbox-Modell und wie man mit ihm programmieren kann
* JavaGrafik - 3D-Grafik in Java
* EclipseIDE - sehr empfehlenswerte Entwicklungsumgebung
* LinuxMit64Bit - Hinweise zum Browser-Plugin auf 64-Bit-Rechnern
* JavaMultithreading - Programmierung von Threads in Java
* JavaPerformance - Überlegungen zu Geschwindigkeit, Speicherverbrauch etc.
* JavaTipsUndTricks - Sammlung kleinerer Tips
* SwingTips - Sammlung von Tips speziell zu [Swing]
* JavaMail - Mails senden, empfangen und verarbeiten in Java

=== Web-Programme mit Java ===

* [Tomcat] - Java-Webserver (bzw. Application Container)
* 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
* JavaServerFaces bieten ein MVC Framework für Web-Programme mit Standard-Komponenten

== externe Links ==

=== Java in den Schlagzeilen ===

* JavaNews - Neuigkeiten zur Programmierung aus der Java-Community

=== Sun und IBM liefern Java für Linux ===

* http://java.sun.com/
* http://java.sun.com/linux/
* http://www.ibm.com/java/

=== Freie Java-VMs ===

* http://www.kaffe.org/
* http://gcc.gnu.org/java/
* http://www.pro-linux.de/berichte/gnu-classpath1.html

=== 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)
* [http://java.sun.com/j2se/javadoc/ Javadoc] - Anleitung zum Javadoc-Tool, um automatisch API-Dokumentationen zu erstellen
* http://tutorials.jenkov.com/ - Tutorials zu einigen interessanten und komplexeren Themen 

=== Java-Template-Engines ===

* JavaServerFaces bieten ein MVC Framework für Web-Programme mit Standard-Komponenten
* http://java-source.net/open-source/template-engines - Übersicht über Template-Engines
* [http://jakarta.apache.org/velocity/index.html 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 aber auch komplexere Probleme lösen
* [http://www.jamon.org/Features.html Jamon] - scheint sehr gut Komponenten zu unterstützen, inspiriert von
[http://teatrove.sourceforge.net/ Mason]
* [http://teatrove.sourceforge.net/ Tea] - Template-Sprache von Disney. gute Doku, aber letzte Version von 2002
* [http://jasperreports.sourceforge.net/index.html 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:
** http://christophermrossi.com/jpt/
** http://javazpt.sourceforge.net/
* http://jodreports.sourceforge.net/ - Openoffice-Dokumente als Templates (mit Freemarker-Syntax)
* http://www.jopendocument.org/ - Bearbeitung von OpenOffice-Dokumenten
* http://wiki.eclipse.org/Mylyn/WikiText - Wiki Engine, die "standalone" per Aufruf oder als Ant Task benutzt werden kann (ohne daß man einen Webserver dafür starten muss)
* http://groovy.codehaus.org/ - Groovy besitzt mit den sog. GStrings eine eingebettete Template-Engine. Benutzt man Groovy sowieso im Projekt, ist das u.U. auch einen Blick wert.


=== Web-Frameworks ===

* [http://struts.apache.org Struts] - Das, was alle benutzen: Alt, ausgereift, große Nutzerbasis, etwas angestaubt und wenig innovativ
* [http://tagonist.tigris.org/ Tagonist] ist eine einfach zu vertehende Alternative zu Struts
* [http://jakarta.apache.org/turbine/index.html Turbine] -
Jakarta-Projekt, das behauptet, etwas moderner zu sein als Struts
* [Tapestry|http://tapestry.apache.org/] - hat einen interessanten objektorientierten (statt aktionsorientierten) Ansatz
** [Tapestry 5 Tutorial|http://tapestry.apache.org/tapestry5/tutorial1/]
** [Tapestry for Nonbelievers|http://www.infoq.com/news/2008/05/tapestry-article]
** [TapestryQuickstart]
* [http://springframework.org Spring] - intelligente Idee, um
Objekte lose zu koppeln (aber IMHO seltsam umgesetzt), umfangreiche
Doku, alles in allem etwas aufgebläht
* [http://jodd.sourceforge.net/ Jodd] - Schlanker als Struts, sieht
nützlich aus, aber letzte Version von Oktober 2004, Update: es gibt eine neue Version von Januar 2007
* [http://niggle.sourceforge.net/ Niggle] - Servlets-Framework, das
Freemarker und Velocity unterstützt, nichts Neues seit 2002
* [http://rife.dev.java.net/ Rife] - Soll mit dem berühmten
[http://www.rubyonrails.org/ Ruby on Rails] vergleichbar sein
* [http://grails.org/ GRails] - darf nicht [Groovy] on Rails heißen
;-) und schon die Version 0.1 sieht sehr verheißungsvoll aus
* [Wicket|http://wicket.sourceforge.net/] - Klare Trennung von HTML und Java
* [VRaptor|http://www.vraptor.org/] - Nutzt Java5-Annotations und Velocity oder Framemaker, sieht interessant aus
* Vergleiche von Web-Frameworks
** http://www.dynabean.de/download.html
** http://bdn.borland.com/article/borcon/files/6000/paper/6000.html
** http://www.oreilly.de/catalog/javaebp/chapter/ch03.html

=== Persistenz-Frameworks ===

*[Hibernate|http://hibernate.org] (hier im Wiki: JavaHibernate) - Persistenz-Framework - deutsche Artikel z.B.
**[bei Thorsten Horn|http://www.torsten-horn.de/techdocs/java-hibernate.htm]
**[Im Javamagazin|http://www.javamagazin.de/itr/online_artikel/psecom,id,596,nodeid,11.html]
*[Mr. Persister|http://www.jenkov.com/mrpersister/introduction.tmpl]
*[J2EE 1.5|http://glassfish.dev.java.net/javaee5/persistence/] enthält eine standardisierte Persistenz API, die
Glassfish-Implementierung steht unter einer Opensource-Lizenz (der [CDDL|http://www.opensource.org/licenses/cddl1.php]). Die API wird auch von Hibernate unterstützt.
**[JPA Implementierung|http://oss.oracle.com/toplink-essentials-jpa.html] von Oracle auf Basis von ~TopLink
**[OpenJPA|http://incubator.apache.org/openjpa/] ist die Persistenz API der Apache Foundation, wird kommerziell z.B. im BEA Weblogic Server verwendet.
** http://www.clientjava.com/blog/2005/12/26/1135631690852.html - Artikel mit einer Liste von Databinding-Frameworks
* [JPA] offizielle Persistenz-API seit Java6, wird z.B. unterstützt von JavaHibernate oder OpenJPA

=== [Swing] (graphische Oberflächen) ===

* http://www.jgoodies.com/ - freie Swing-Bibliotheken, insbesondere der [LayoutManager Forms|http://www.jgoodies.com/freeware/forms/index.html]
** http://www.ociweb.com/jnb/jnbMar2005.html - Artikel zu JGoodies Forms
* http://www.miglayout.com/ - ~LayoutManager, sehr einfach zu bedienen aber sehr mächtig
* https://sam.dev.java.net/ - Swing Action Manager - "Actions auf Speed"
* https://appframework.dev.java.net - Swing Application Framework, kommt in Java 7
* http://www.swingwiki.org/ - Wiki mit interessanten Tips und Tricks
* http://buoy.sourceforge.net/ - Eine vereinfachte API für Swing, ~LayoutManager und Events.
* http://joda.org/ - ich ordne Joda mal hier unter Swing ein, auch wenn es ausser einem Binding von Swing-Eingabefeldern an Bean-Properties nicht damit zu tun hat. Joda liefert interessante Ideen zu den Themen Date/Time, Collections von Basistypen und generische Beans ohne Reflection (über die Java-Proxy-Klasse)
* http://www.javareference.com/jrexamples/viewexample.jsp?id=83 - Anzeigen von Images in Tooltips
* http://www.java.de/article/view/144/1/14 - Artikel über Capture & Replay mit Swing (deutsch)
* http://www.datadosen.se/riverlayout - Der River Layout-Manager scheint sehr intuitiv über Strings konfigurierbar und ideal für Formulare geeignet zu sein
* http://www.leepoint.net/notes-java/GUI/misc/80gui-generator.html - Interessante Übersicht über Alternativen zur Swing-Programmierung
* [BeansBinding|https://beansbinding.dev.java.net/] ist das neue Stichwort, um Objekte mit GUIs (und anderem) zu verbinden. Es soll in Java7 enthalten sein. Da es noch keine offizielle Doku zu ~BeansBinding gibt, hier ein paar Links:
** [Blog des Entwicklers|http://weblogs.java.net/blog/zixle/archive/2006/05/ease_of_swing_d.html]
** [Artikel auf netbeans.org|http://www.netbeans.org/kb/60/java/gui-binding.html]
** [Screencast auf netbeans.org|http://www.netbeans.org/kb/60/java/swing-app-beans-binding-screencast.html]
** SwingTips - einige Tips und Tricks hier im Wiki
* [WindowBuilder Pro|http://code.google.com/intl/de-DE/javadevtools/download-wbpro.html] ist ein GUI-Builder für EclipseIDE, mit dem man sich seine Oberfläche zusammenklicken kann. Es wurde von Google gekauft und freigegeben.



=== Link-Sammlungen zu Java und OpenSource ===

* [http://www.tutego.com/java/java-open-source.htm] - Bekannte OpenSource Java Projekte
* [http://java-source.net] ist eine umfangreiche Sammlung von freien Java Projekten

=== Sonstige Links ===

* http://profiler4j.sourceforge.net - einzeln lauffähiger Profiler (Alternative zu EclipseIDE mit TPTP-Profiler)
* http://www.jnode.org/ - Java als Betriebssystem auf dem nativ Java-Binaries laufen sollen (freeX 5'2008 - 14.08.2008)
* [Wiimote|http://en.wikipedia.org/wiki/Wii_Remote] [unter|http://www.wiili.org/Wiimote_driver] [Java|http://de.wikipedia.org/wiki/Java_(Programmiersprache)]: [1|http://code.google.com/p/wiimote-simple/], [2|http://code.google.com/p/jwiimote/wiki/JWiimote], [3|http://motej.sourceforge.net/] oder [4|http://code.google.com/p/wiiusej/] - ist alles so schön [bunt|http://www.short-link.de/7978] hier. (01.09.2008)
* [Java und Perl zum OO-Einstieg?|http://stackoverflow.com/questions/4462048/learning-perl-or-java-for-object-oriented-programming-oop-closed] - von Java zu Perl-Moose - OO-Paradigmen (17.12.2010)
* [Groovy] - Skriptsprache basierend auf der Java-VM. Homepage: http://groovy.codehaus.org/ (29.08.2011)
* [ScalaProgrammierung] - Skriptsprache mit funktionsorientierten Elementen, entweder für JVM (Java) oder CLR (Microsoft.Net). Laut Groovy Erfinder gäbe es kein Groovy, hätte Scala bereits früher existiert. (29.08.2011)
* [Kotlin|http://confluence.jetbrains.net/display/Kotlin/Welcome] - Alternativer und kompatibler Java-Ersatz mit dem besten aus Groovy und Scala und ohne [Null-Pointer-Exceptions|http://stackoverflow.com/questions/218384/what-is-a-null-pointer-exception] - Review: http://www.drdobbs.com/jvm/language-of-the-month-kotlin/232600836