Die wichtigsten Entwicklungen aus meiner persönlichen Sicht als Java Programmierer.
1. IDE Wechsel. Ralf Petter hat die Probleme von Eclipse auf seinem Blog erwähnt.
http://petterralf.blogspot.de/2013/11/eclipse-quo-vadis.htmlIch war auf der im Heise Artikel angesprochenen Eclipse.con.
Warum?
a) Die Konferenz war günstig.
b) Fahrkilometer mit dem Auto machten aus steuerlichen Gründen Sinn.
c) Ich hab vor Jahren ein größeres Eclipse RCP Projekt massgeblich entwickelt. Seitdem programmier ich in Projekten öfters kleinere Eclipse-plugins, um bestimmte Arbeitsschritte zu automatisieren. Das bringt nicht viel, oft aber aus meiner Sicht schon etwas, wobei die Meinungen meiner Kollegen über die Jahre geteilt war.
d) In meinen Projekten fix ich schonmal die kaputt-gespielten Eclipsen von Kollegen. Insbesondere das Unterprojekt Web Tools Platform ist von seiner Natur aus ein Unruheherd.
Ich hatte aber bereits vorher dabei, meine Arbeit zu Hause auf InteliJ Produkte umzustellen. Das war weniger nervig als gedacht. Auf youtube gibts genug Videos, um den Umgang mit dem Tool zu lernen. Kostet für indidivuelle Entwickler mit Webstorm ca. 230 Euro im ersten Jahr und danach knapp über 100 pro Jahr. Und ich kann das von der Steuer absetzen. Wenn man sich überlegt, was Handwerker für ihre Werkzeuge ausgeben, ist das ein Witz.
Ich arbeite mit InteliJ Idea entspannter und auch schneller (geschätzt ca. 20%) als mit Eclipse. Hab dann auch meinem Auftraggeber angeboten, dass ich fortan mit InteliJ arbeite und die entsprechende Zeit des Einrichtens nicht in Rechnung stelle. Das wurd abgelehnt. Ich leg mich nicht mit Auftraggebern an und ich mag langlaufende Projekte. Halte es aber für sehr wahrscheinlich, dass es in den nächsten Jahren eine stärkere Bewegung hin zu InteliJ oder auch Netbeans weg von Eclipse gibt. Auf Entwickler-Konferenzen geht der Trend deutlich in diese Richtung. Gilt sowohl für Java als auch für JavaScript-Leute (hier InteliJ Webstorm). Entwickler-Konferenzen bilden einen guter Frühindikator für die folgenden Jahre auch in Großkonzernen.
IBM Rational Produkte benutze ich seit Jahren sowieso nicht, obwohl 80% der Projekte der letzten 5 Jahre produktiv auf WebSphere laufen. Dazu deshalb kein Kommentar.
2. Backend Spring/JEE 7
Der Unterschied empfind ich in meinen Projekten als nicht so groß. Ich mach beides. Für neue Projekte würd ich z.Zt. für JEE argumentieren. Hängt aber von Details ab.
Man kann beides heute mit XML oder Annotations konfigurieren. Annotations sind signifikant besser. In meinem aktuellen Projekt werden leider viel XML verwendet, aber ich streite mich wie gesagt nicht mit Auftraggebern.
3. Subversion oder Git
Git ist bestimmt besser, aber irgendwie hab ich mich bisher noch nicht ausserhalb der Basics wirklich mit Git beschäftigt. Subversion ist eigentlich schon ok, aber da gibts halt diese blöden .svn Dateien überall im Projekt. Git wirkt konzeptionell da einfach besser. Mein Auftraggeber schreibt svn vor.
4. JSF
Ist sehr beliebt bei meinen Auftraggebern. Halte mich da mittlerweile für wirklich fit. Hab mit Trinidad, RichFaces, IceFaces und Primefaces gearbeitet. Letzteres gefällt mir am besten. RichFaces ist auch ok.
Meine Bedenken haben sich verschoben. Erst glaubte ich, dass Request-Response Frameworks wie Spring MVC - mit denen ich ebenfalls gearbeitet hab - vielleicht doch besser sind. Inzwischen halt ich aber komponenten-basierte Frameworks zumindest in meinen Projekten für überlegen. Nun glaub ich aber, dass alternative komponenten-basierte Frameworks noch besser sind. Beschäftige mich mit Vaadin (basiert heute auf Google Web Toolkit), grails (basiert auf groovy s.u.) und der JavaScript Lösung AngularJS (von Google). AngularJS zieht JavaScript afine Java-Programmierer magisch an. Auf der Devoxx konnte ich sehen, dass ich mit der Haltung nicht alleine bin. Gab viele AngularJS Veranstaltungne und alle waren voll.
5. JavaScript Frameworks
Als low-level Framework hat sich jQuery durchgesetzt. Darüber gibts höherlevrige Frameworks wie AngularJS. Daneben gibts noch so eine Bewegung Sprachen zu entwickeln, die zu JavaScript kompilieren. Dart etwa oder Coffee-Script. Interessant, aber auf meiner Agenda gibts zuviel Zeugs mit einer höheren Priorität.
6. HTML5 und CSS3
Hoch auf meiner Agenda.
7. Funktionale Sprachkonstrukte in und rund um Java (z.B. Groovy, Scala, Java8)
Funktionales programmieren macht ziemlich Sinn. Die Gründe können sich Interessierte auf google mit 'Venkat functional' suchen. Da gibts einige youtube Videos. Ihr seht dann den zur Zeit unterhaltsamste Konferenz-Sprecher rund um Java. Wirkt wie Ranjid von Kaya Yanar auf Speed. Neulich meinte jemand aus twitter, dass er das erstemal erlebt hat, dass im Hotel ein Feueralarm losgegangen ist. Antwortete jemand anders, dass man merkt, dass er noch nie mit Venkat in einem Hotel war. Vermutlich übertrieben, aber denkbar, das was dran ist.
Seit 2006 mag ich groovy, leider gibt mir keiner ein groovy Projekt. Wenn ich vorschlage, dass wir das ins Projekt nehmen, lachen alle laut auf. In fast jedem Büro gibts ein anderes Projekt, in dem gestöhnt wird, dass der und der Teilbereich von Entwickler x damals in Groovy programmiert wurde. Ich schlag denen vor, dass ich das übernehmen kann. Daraufhin lachen die laut und sagen, dass ich ja in einem ganz anderen Projekt bin.
Schreib kleinere Tools für zu Hause in Groovy. Zum Beispiel ein Ding, dass mir die Kursdaten von Pensionsfonds, in die ich investiert bin, aus einem Finanzportal herausschnibbelt, in eine mySQL schreibt und graphisch auswertet. Extrem wenig code. Auch mit grails (s.o.) , gradle (s.u.) und griffon beschäftige ich mich.
Spiel schon mal mit Scala rum. Allerdings müsste ich mich da wohl 6 Monate in eine Berghütte in den Anden einschliessen, um das wirklich in den Griff zu bekommen. Auf der Devoxx fand die Polemik "Scala als Perl des 21 Jahrhunderts" eine begeisterte Anhängerschaft.
Java8 hat funktionale Aspekte in die Sprache eingearbeitet. Mit sehr großer Sorgfalt und in einem langen Prozess. Es ist schwer, solche fundamental neuen Dinge in eine bestehenden Sprache einzubringen. Dazu gabs einen hochinteressanten Talk auf der Devoxx. Generics und Annotations haben gezeigt, dass die Verantwortlichen dem alten Pferd Java noch neue Tricks beibringen können.
8. NoSQL
Die aus meiner Sicht unsympathischeren Teile der Notes-Community hängen an dieser Argumentation, Domino wäre eine NoSQL Lösung. Ich halt das für konstruiert. NoSQL besitzt gute Argumente im Bereich der Verarbeitung großer Datenmengen und schneller Responsivität. Beides sind nun vorsichtig gesprochen nicht gerade Stärken von Domino. Und wenn ich etwas nicht mag, dann ist das pseudo-rationale Rum-Argumentiererei, die bewusst oder unbewusst signifikante Nebenbedingungen ausser Acht lässt.
MongoDB war auf Konferenzen die Lachnummer von Seiten der Java- und der JavaScript Community. Quintessenz: Die haben eine sehr gute Marketing-Abteilung.
CouchDB gilt als der seriöse Bruder. Allerdings sagt ein JavaScript Experte, dem ich sehr traue, dass MySQL irgendwelche Module hat, die überlegen wären.
Nicht meine Baustelle. Das ist der Stand meiner (Vor-) Urteile.
9. Android
Nicht meine Baustelle.
10. Big Data
Hab ich leider keine Zeit für. Datenanalyse und Statistik interessiert mich eigentlich. Ich kann auch ein bischen 'R'. Als volkswirtschaftlich studierter und insbesondere entwicklungsökonomisch nach wie vor sehr interessierter Mensch würde das vielleicht Sinn machen.
11. Build Tools
Maven wurd über die Jahre besser. Ich les aber mit wachsender Begeisterung Gradle in Action. Gradle basiert auf groovy.