Warum sollte man Java lernen? Weil die Sprache recht abgeschlossen ist. Auf Basis dieser Sprache wurden schon eine Menge Konzepte entwickelt und viele Frameworks geschrieben, auf die wir leicht zurückgreifen können. Um der Sprache herum gibt es Tools, die die Programmierung weg vom Code hin zu konzeptualer Programmierung (das habe ich mir gerade ausgedacht) bringen. Hier ein paar Beispiele.
Hudson
Ein CI Server. CI bedeutet Continuous Integration und ist Teil eines Build Prozesses. Das ist, was wir in Java immer vorfinden werden: Arbeitsprozesse.
Man kann natürlich auch ohne den Kram in die Tasten kloppen und irgendwas erreichen. Aber das macht Java nicht aus.
Hudson horcht auf Quellcode und baut diesen, wenn Änderungen vorhanden sind. Hudson führt Tests aus, schickt Mails zum, wenn man es will, packt das Code Ergebnis irgendwohin, erzeugt die für Apache typischen Webseiten zu Projekten und tut noch eine Menge mehr.
Ant und Maven
Ant baut Software. Man erzeugt eine Ant File, wo drin steht wie was wo und wann kompiliert, kopiert oder sonst gemacht werden soll. Es definiert einen Build Prozess ( wieder dieses Wort!), wie die Software auszusehen hat, wenn Ant einmal durch den Code gerannt ist.
Maven arbeitet auf eine anderen Ebene. Maven ist geil. Maven macht Java erst elegant, Maven ist das Tool, was für dich die Abhängigkeiten deiner Software löst – und die Abhängigkeiten der Abhängigkeiten – und die Abhängigkeiten der Abhängigkeiten der Abhängigkeiten usw. Es ist brutal ohne Maven auf Frameworks zu arbeiten. Maven kontrolliert den Compiler, Maven führt die Tests aus und sorgt für coole Berichte. Maven gibt der Kontrolle über das Projekt, indem du Maven einen mit seiner POM.xml einen Rahmen gibst.
Eclipse vs. Netbeans
Wir benutzen keine Texteditoren sondern IDEs. Diese Dinger nehmen dir wieder viel ab, indem sie Code kontrollieren und dir anzeigen, wo Probleme sein könnten. Sie können keine Probleme lösen, aber sie können dir helfen Probleme zu erkennen. Die großen IDEs für Java sind Eclipse und Netbeans.
Ich sage nicht, dass Eclipse doof ist, aber ich nehme lieber Netbeans. Der Grund ist recht simpel: Netbeans hat Maven drin und Web ist dabei sodass ich direkt loslegen kann.
Mit Eclipse hast du eine Kiste voller Einzelteile und du musst sie zusammenbauen. Maven ist irgendein Modul, dass ich, ehrlich gesagt, nicht so richtig kapiere. Bei Netbeans ist alles für Java schon fertig.
Wenn ich mal Android Dinge tue nutze ich auch Eclipse. Aber es ist die fertig konfigurierte IDE vom SDK und nichts, was ich selbst konfiguriere. Ich gehe den Weg des geringsten Widerstandes – und dass ist bei Java Netbeans und bei Android das konfigurierte Eclipse aus dem SDK.
Spring
Jetzt kommen wir zum Code. Ich liebe Spring. Es ist so einfach. Spring ist ein Konzept, ein modulares Framework und endlich eines, was durchweg Sinn macht. Spring macht Dinge nicht anders, sondern nimmt dir alle nervige Arbeit ab. Wer schon mal eine Datenbankschnittstelle programmiert, weiß, wie ärgerlich es sein kann immer den gleichen Code zu schreiben, der sich nur minimal ändert. Dafür hatte irgendwer mal das CRUD Konzept entwickelt. CRUD reduziert die Schnittstellen erst mal auf das Minimum, was irgendwie alles brauchen : Create, Read, Update und Delete.
Spring baut dir das schon und der Rest wird mit abstrakten, also nicht fertigen, Methoden geregelt. Dabei gilt die Regel: Ist deine Lösung kompliziert, hast du das Problem nicht verstanden.
Spring folgt dabei dem Konzept der aspektorientierter Programmierung. Um zu verstehen, was Aspekte sind, muss man wissen, was wir in der IT unter Objekte verstehen. Um zu verstehen, was Objekte sind, muss man das Konzept der objektorientierten Analyse und Designs verstehen. Leider scheitert viele an diesen Hürden. Ach ja : Man muss noch Java können, aber das ist ein Kinderspiel im Vergleich zu den anderen Themen.
Java ist für mich weniger durch die Sprache ansich, sondern vielmehr durch die Projekte drumherum, interessant.
In Zukunft werde ich auf die einzelnen Themen genau eingehen. Heute morgen um 6 Uhr hatte ich auf einmal Lust irgendwas mit Java zu schreiben und wollte hier einige Dinge bloß anreißen. Bloggen macht mir so langsam wieder echt Spass.