Kategorie-Archiv: Allgemein

Portfolio Update April/Mai 2013

Ich definiere mich selbst als Java Entwickler und Linux Administrator.

Java

Programmiersprachen decken Felder ab. “Ich kann Java” ist eine unzureichende Aussage. “Ich kann kochen” würde bei einem Koch auch nicht viel Sinn ergeben – Kochen können alle Köche.

Deswegen unterscheiden wir hier mal zwischen Server, Web, Ui, Frameworks Meine “Skills” :

  • “Server”. Kenne mich einigermaßen mit dem JBoss und dem Tomcat aus. Ich bin in der Lage Middlewares zu schreiben, die als Schnittstellen SOAP, HTTP oder vergleichbares anbieten. Zeitgesteuerte Services sind kein Problem.
  • Web. Ein Wort: Spring. Ich bin kein Designer, sondern Entwickler und kann mit Spring schnell Webseiten Systeme zusammenschustern.
  • UI. Ich bin halt kein Designer. Meine bisherigen Aufgaben beinhalteten bisher leider keine klassische Programmerstellung mit Java. Ich möchte aber hier weitere Erfahrungen sammeln
  • Frameworks. Spring, Hibernate, JPA – mehr sag ich nicht :D

Linux Administrator

Hier die Standard Aufgaben. Wartung, Installation, Absicherung, Backup von Daten und so weiter. Nebendran habe ich Nagios recht lieb gewonnen und arbeite vorwiegend mit Subversion.

So far.

Evernote – für alles

Evernote

Notizen zentral speichern. Diese Funktion hab ich eine echt rudimentäre Notizenfunktion zuerst in irgendeinem KDE gesehen, aber da wars Thema Cloud und Internet nicht so Thema.
Später gab es auch in Outlook so eine Art Notizenverwaltung. Alle hatten sie es gemein, dass sie sich an diesen gelben Klebezetteln orientierten.
(In den Filmen kleben die Dinger immer an Monitoren. Bei mir fielen sie immer ab.)

Als IT Mensch, hat man mit vielen Technologien, Konzepte und Problemen zu tun. Leider, so meine Erfahrung, schreiben die Leute keine oder nur wenige Notizen auf. Es ist, alsob jemand etwas entdeckt hat, aber sich keine Notizen macht un dann nach einigen Wochen die gleiche Sache wieder zu entdecken. Weiterlesen

Es ist unglaublich

Microsoft bekommt nicht mal nach einem halben Jahrhundert Mail Protokoll seine Cloud Exchange Server stabil.
Seit Tagen kämpfe ich mich Outlook.com. Mal lässt IMAP mich durch, SMTP aber nicht. Dann geht überhaupt nichts mehr. Die Web Oberfläche ist genauso stabil- mal geht das Einloggen, mal geht es nicht und eine weiße Seite erscheint (ja, auch im Internet Explorer).

Die Würze: Es geht nicht um den Free Mail Quatsch, sondern richtiges Paid Enterprise Gedöns. Und Infos bekommt man von denen auch nicht. Ich habe ja bei Microsoft angerufen, ich wollte den Fehler melden. Und was ist das Ergebnis? Microsoft hört einem ohne Support Vertrag nicht mal zu. Vielleicht bin ich zu naiv. Meine Vorstellung Cloud Diensten ist, dass sie funktionieren müssen, weil ich dafür bezahle.

Jetzt muss ich die Unit Tests umschreiben und andere Email Adressen nehmen, damit ich Prozesse ordentlich testen kann. Aber das sind, dank Spring, nur 4 Zeilen in einer Konfigurationsdatei

Why Java?

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.