Welche externen Bibliotheken sind in Java sehr zu empfehlen?

Maik.Neumann

Aktives Mitglied
Hallo !

Ich kenne da bisher nur StringUtils von Apache. Gibt es aber noch andere Bibliotheken, die für die tägliche Arbeit in Java wichtig sien können und es viele in Java vereinfachen können, so dass für uns die Schreiberei von viel Sourcecode ersparen können?

Danke und Gruß
 
Als ich dein Thema gesehen habe, war meine erste Frage: "Für was?"

Je nachdem, was du machen möchtest, können für dich bestimmte Bibliotheken sinnvoll sein.

Ebenfalls sinnvoll finde ich es sich im Laufe der Zeit seine eigene Bibliothek mit Utils zusammenzustellen, die Abläufe in Methoden kapselt, die man immermal wieder benötigt. So habe ich mit der Zeit meine eigene kleine Bibliothek, die mir in meinen Projekten nen Menge schreibarbeit abnimmt und den Code übersichtlicher macht.
 
Da muss ich Natac voll und ganz zustimmen, das kommt immer auf den Anwendungsfall an wenn man z.B wie unter anderem hier oft versucht Fragen beantworten / oder auch im allgemeinen viel unter Swing testet wird man irgendwann , da sich oftmals vieles wiederholt, schreibfaul und erstellt sich wie er auch schon erwähnt hat für viele Dinge Utilityklassen welche einem die Arbeit von ggf. mehreren Zeilen Code auf ein minimum reduzieren :

Hier mal ein kleines Beispiel wie so etwas aussehen könnte :

Java:
public class Foo extends JPanel{
	
	public Foo() {
		setPreferredSize(new Dimension(250,50));
		setBackground(Color.BLUE);
	}

	public static void main(String[] args) {
	
		// Utilityklasse vs. keine Utilityklasse = gleicher Effekt 
		
		
		//Utility ( hier mal ohne Referenz )
		FrameUtil.createFrame("Test", FrameUtil.DISPOSE, null, new Foo()).setVisible(true);
		 
		//keine Utility
		JFrame f = new JFrame("TestOhne");
		f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		f.add(new Foo());
		f.pack();
		f.setLocationRelativeTo(null);
		f.setVisible(true);
		
		//irgendwann wird man halt einfach schreibfaul ^^
	}
	
}

so könnte dann die Klasse an sich aussehen :

Java:
import javax.swing.JComponent;
import javax.swing.JFrame;

public class FrameUtil {
	
	public static final int EXIT	 = JFrame.EXIT_ON_CLOSE;
	public static final int DISPOSE	 = JFrame.DISPOSE_ON_CLOSE;
	public static final int NOTHING	 = JFrame.DO_NOTHING_ON_CLOSE;
	
	public FrameUtil() {}
	
	public static JFrame createFrame(String title, int closeOp, JComponent parent){
		
		JFrame frame = new JFrame(title);
		frame.setDefaultCloseOperation(closeOp);
		frame.setLocationRelativeTo(parent);
		
		return frame;
	}
	
	public static JFrame createFrame(String title, int x, int y, int closeOp, JComponent parent){
		
		JFrame frame = new JFrame(title);
		frame.setSize(x,y);
		frame.setDefaultCloseOperation(closeOp);
		frame.setLocationRelativeTo(parent);
		
		return frame;
	}
	
	public static JFrame createFrame(String title, int closeOp, JComponent parent, JComponent content){
		
		JFrame frame = new JFrame(title);
		frame.setDefaultCloseOperation(closeOp);
		frame.add(content);
		frame.pack();
		frame.setLocationRelativeTo(parent);
		
		return frame;
	}

}

Das Klassendesing hätte man um Redundanz zu vermeiden und den Code noch kürzer zu gestalten dahingehen ändern können die Unterschiedlichen Konstruktoren zu verschachteln und Parameterprüfungen durchzuführen, ist aber nicht zwingend notwendig wenn man diese Klassen nur selber nutzt, allerdings ist saubererer Stil und notwendig insofern man diese Klassen ggf. im Team nutzen sollte !

hier sind es z.b 1 line of Code vs. 6 lines of Code um haar genau ( abgesehen von der Referenz , welche hier aber zu maximal 2 lines of Code führen würde) das selbe Ergebnis.

Auch das mag vielleicht nicht eines der besten Beispiele sein aber es erfüllt seinen Zweck, dies fängt schon beim schließen von Streams an um sich kryptische try/catch konstrukte zu sparen oder halt bei der Initialisierung eines Frames.

Es kommt halt immer auf den Anwendungsfall an , irgendwann entsteht eine nette kleine Sammlung die man dann einfach als lib mit einbindet in neue Projekte
 
Zuletzt bearbeitet:
Auch wenn du keinen Anwendungsfall spezifiziert hast, kann ich dir auf jeden Fall Hibernate empfehlen. Wenn du dir gerne eine Menge Arbeit abnehmen lässt, dann wäre vielleicht auch das Spring Framework etwas für dich.
Ich weiß nicht, ob das vom Kontext so passt aber Maven solltest du auch nutzen, falls du das noch nicht tust.
 
Ich kenne da bisher nur StringUtils von Apache. Gibt es aber noch andere Bibliotheken, die für die tägliche Arbeit in Java wichtig sien können und es viele in Java vereinfachen können, so dass für uns die Schreiberei von viel Sourcecode ersparen können?

Apache Commons und Guava wird viel verwendet. Aber die Antwort auf die Frage worin die tägliche Arbeit besteht, ist alleinig entscheidend für die Antwort auf deine Frage. Meine tägliche Arbeit hat mit SQL und Parsern zu tun, weshalb mir ANTRL meine Arbeit sehr erleichtert. Ansonsten gibt es die üblichen Verdächtigen: log4j, junit, ant, maven. Allerdings sind auch die nicht unbedingt notwendig. Java bring bereits eine Alternative zu log4j mit und junit kann man relativ einfach auch selber schreiben. Ant und Maven sind Build-Werkzeuge, die nur beim Build-Prozess helfen aber der gehört ja zur Programmierung auch dazu.
 

Zurück
Oben