Eclipse Galileo, Yeah! Oder?

Man liest es überall, eine neue Eclipse Version wurde vor kurzem veröffentlicht! Die letzten Jahre immer ein Grund zur Freude, endlich kann man die diversen RCs wegschmeissen und Final installieren. Nur dieses Jahr hat mich das ganze eher kalt gelassen. Nicht weil ich Eclipse nicht benutze, als CDT-User (und ehemaliger Contributor) läuft es jeden Arbeitstag. Ist Eclipse Galileo also kein Grund zur Freude?

Wenn ich mir die sogenannte Top 10 Feature List so anschaue, dann haut es mich nicht aus den Socken.

Nummer 1 ist also die neue bereits vorhandene Update- und Installations-Komponente P2. Ganz ehrlich, wenn das Number 1 Feature das neue Updatesystem sein soll, das ist doch ein Scherz?

OSGi Declarative Services, Improved target platform management, Eclipse Modeling Project refinements, etc. interessieren mich eigentlich auch nicht weiter. Allerdings dann, auf Platz 6, Install into Self! Als (zukünftig bald wieder) Plugin-Entwickler ist das ein Segen, nicht jedes Mal eine neue Eclipse-Instanz starten zu müssen, sondern ein Plugin einfach in die aktuelle Umgebung zu deployen. Das ist für mich ein Killer-Feature, wird aber alle Nicht-Plugin-Entwickler kalt lassen.

Also doch kein Grund zu Klagen? Eclipse Galileo scheint für diverse Anwendungsbereiche neue und interessante Features zu beinhalten, und dieses breite Spektrum zeigt doch auch sehr schön, wie weit und breit Eclipse inzwischen verbreitet ist und was für ein Erfolg es als Plattform hat.

CDT

Auch das CDT hat natürlich einige Neuerungen erfahren, allerdings muss man sich bewusst sein, dass die Version von 5 nach 6 nicht etwa wegen der vielen neuen Features geändert wurde, sondern wegen inkompatibler APIs. Nichtsdestotrotz, Neues hat Einzug gehalten.

Nett ist sicherlich, dass nun auch Operatoren wie andere Funktionen behandelt werden was den Indexer anbelangt. Konkret bedeutet das, dass ein Go To Declaration auf einem Operatoren mich zu seiner Deklaration führt. Das ist sogar relativ oft nützlich, denn die Streaming-Operatoren sind häufig überladen.

Von der Refactoring-Front gibt es (leider) nicht sehr viel zu berichten. Ein Extract Local Variable wurde eingeführt, und es scheint in vielen Situationen zu funktionieren, wie meine Tests bisher ergeben haben. Aus besonders geheimen Quellen weiss ich, dass ein Change Method Signature Refactoring in Arbeit ist, wenn alles klappt werden wir das im nächsten Jahr zu sehen bekommen, wenn es heisst, Helios!

2 comments »

Elvis in JDK7?

Mit JDK 7 könnte folgendes gültiger Java-Code sein:

final String aMember = g?.members?[0]?.name ?: "nobody";

Ein wenig mehr Hintergrund dazu, auf InfoQ. (Hey, das reimt!)

No comment »

Ich liebe Neal Gafter!

Warum? Schaut euch dieses Video an. Meine Lieblingsfolie:

(Nur die Folien gibts auch hier, aber sind ein wenig mager.)

2 comments »

Java 7 Probleme

Ein wunderbares Zitat von Slava Pestov über Sun’s Probleme mit Java 7:

“Shrinking resources” indeed. During the dot-dom era, Sun pumped massive resources into Java, hiring an army of mediocre programmers to crank out feature after feature, half-assed API after half-assed API. Now all those bad design decisions, complete disregard for maintainability, and backwards compatibility is really weighing them down, and they’re having trouble moving forward. [..]

It’s 2009 and only now they’re adding APIs to work with symbolic links, and move and copy files? And no closures? What a joke.

Absolute Zustimmung.

1 comment »

Das beste Editorial

Seit einem Jahr kriege ich alle zwei Monate das Java-Spektrum (ich hatte da mal so einen Wettbewerb gewonnen) und lese es daher auch regelmässiger als früher, wo es einfach im Institut rumlag. Das Java-Spektrum hat für mich ein Highlight, und zwar das absolut beste Editorial aller Magazine die ich lese. Traurigerweise ist es häufig auch der einzige Beitrag, den ich ganz lese. Das liegt wohl nicht an der Qualität der Artikel, die Java-Welt interessiert mich einfach nicht wirklich (zuviel Business und Web Zeugs), und Heinz Kabutzs Beiträge lese ich schon in seinem Newsletter.

Ok, zurück zum Editorial, geschrieben von Michael Stal. Warum ist es so gut? Ein paar Auszüge aus der aktuellen Ausgabe:

[..] sah [ein Java-Programmierer, der in den Himmel gekommen ist] plötzlich einen .NET-Entwickler an sich vorüberziehen, und sofort erwachte in ihm die alte Wut [..] und er schrie den Engel an: «Ja, seid ihr auch hier oben, ihr verdammten Brüder?! Schau, dass du Boden gewinnst, sonst setzt es was!» Für alle Fälle gab er ihm ein paar kräftige Hiebe mit dem Netbook.

Der Engel bekam dann den Auftrag, den Brief mit den Lösungen für alle SOA und JEE-Probleme and die Botschafter des JCP auszuliefern, wurde dann aber unterwegs aufgehalten und konnte ihn leider nie überbringen..

Ausserdem scheint Stal ein grosser Fan des Hitchhikers Guide zu sein, wenn Zahlen vorkommen, dann garantiert immer auch eine 42.

So, das wollte ich einfach mal gesagt haben. Noch andere Java-Spektrum-Leser da draussen?

4 comments »

Gelesen: Diverses!

Da sich einige Leute schon sorgen machen um mich, da ich schon lange nichts mehr gelesen hätte, hier ein kleines Update:

  • Worlds: Controlling the Scope of Side Effects, ein Paper unter anderem von Alan Kay (ja der ist immer noch aktiv) über sogenannte Worlds, so was ähnliches wie eine Transaktion, aber für Programmzustand. Ziemlich interessant, kompakt und einfach geschrieben.
  • Verifiable Functional Purity in Java, ein Technik um zu beweisen, ob eine Methode in Java functionally pure ist, das heisst, die Methode darf nichts am Objekt selbst, nichts an den Parametern, gar nichts sonst irgendwo im System und muss für eine (gleiche) Menge Parameter immer dasseble Resultat liefern, darf also auch nicht von der Systemzeit oder so abhängig sein. Sobald man dies beweisen kann, lassen sich interessante Dinge damit anstellen, um beispielsweise zu zeigen, dass etwas reproduzierbar ist oder wenn es sich um Code aus unsicheren Quellen handelt.

Wer sich für solche Dinge interessiert sollte unbedingt den Feed von Lambda the Ultimate abonnieren. Alles was dort kommt ist (für mich zumindest) entweder interessant, oder aber viel zu hoch. :-)

No comment »

Weg mit Java?

Ich bin mal wieder etwas im Rückstand mit Computer (das IEEE Magazin) lesen, und ehrlich gesagt blättere ich es meistens einfach durch. Ab und zu findet man aber auch sehr interessante Dinge, wie in der Juli Ausgabe unter dem Titel In Praise of Scripting: Real Programming Pragmatism:

To me, Java-based CS1 is the single greatest mistake in the history of computing curricula. Students should learn to love their own possibilities before they learn to loathe other people’s restrictions.

Students who learn to script early are empowered throughout their college years, especially in the crucial Unix and Web environments. Those who learn Java and C++ first are stifled by enterprise-sized correctness. Early programmers must learn to be creative and inventive, and they need programming tools that support exploration rather than production.

Recht hat er!

Interessant ist auch, welche Sprachen er verwenden würde:

What scripting language could be used for CS1? [..] an emerging consensus in the scripting community holds that Python is the right solution for freshman programming. Ruby would also be a defensible choice.
Python and Ruby have the enviable properties that almost no one dislikes them, and almost everyone respects them.

Also los, kippen wir Java aus Programmieren 1 und 2. Aber wohin damit? Vielleicht zusammen mit C++ ins Programmieren 3? Oder vielleicht nach Ruby zuerst C++ lernen, denn wenn man C++ und Ruby verstanden hat, sollte Java eigentlich kein Problem mehr sein. Oder?

4 comments »

Jazoon 2008

Tag 0, Tutorial

Für mich hat die Jazoon bereits am Montag mit Angelika Langer’s dreistündigem Generics-Tutorial angefangen. Drei Stunden über Generics? Ja, das ist kein Problem, Java Generics sind nun mal einfach ziemlich mühsam zu verstehen, und ein wirkliches gutes Beispiel, wie man ein Sprach-Feature nicht implementieren sollte—normalerweise sollte man nicht wissen müssen was der Compiler tut um etwas nachvollziehen zu können.

Tag 1, Martin Odersky, Simon Phipps, Neal Ford

Am morgen drei ziemlich spannende Keynotes, leider hatte Martin Odersky zu wenig Zeit und musste die interessanteren Aspekte von Scala—Higher Order Functions—überspringen. Dafür hatte ich später die Gelegenheit ein bisschen mit ihm über IDE-Support von Scala zu plaudern. Mal kucken, eventuell gibts bald mehr darüber ;-) Was ich auch mal noch herausfinden muss ist, was für eine Muttersprache er hat.

Ein Dankeschön an Simon Phipps, dem wir zu veranken haben, dass Sun unterdessen eine richtige Open-Source Firma geworden ist

Und Neal Ford über DSLs war auch nicht schlecht, auch wenns irgendwie schade ist, dass ich seine Beispiele alle schon gekannt habe. Und nach dem Talk ist er mir leider entwischt, ich wollte ihn noch nach seinem neusten Buch fragen. Im Dezember hatte er mir noch geschrieben, dass es “within the
next few weeks for Beta book” erscheinen sollte.

Tag 2, Ted Neward, Roy T. Fielding, Stefan Tramm, Dierk König

Die Keynote von Ted Neward war super, man merkt, dass er das nicht zum ersten Mal tut, sondern, nach eigener Aussage, rund ein Mal pro Woche—er sei rund 200 Tage pro Jahr unterwegs, und das obschon er eine Frau und zwei Kinder hat; deren Fotos er im Kaffee natürlich prompt auf seinem iPhone herumzeigen musste :-) Im Gegensatz zu Ted war Roy Fielding eher etwas entäuschend, allerdings war er auch nicht ganz gesund.

So, mal ein unbekannter Name—Stefan Tramm von Netcetera—welcher eine sehr unterhaltsame und erfrischende Präsentation mit dem Thema Unix survival guide for Java programmers gehalten hat. Eigentlich nicht beschränkt auf Java programmers—also eigentlich genau das, was ich auch versuche, nämlich die Leute “aus ihrer IDE (oder ihren GUIs) zu locken” und zu lernen, effizient mit ihrem System umzugehen. Er war auch der erste Speaker, der das Publikum mit mehr als nur Hände hochhalten miteinbezog, indem wir alle regelmässig read the man page sagen mussten.

Am Nachmittag habe ich dann noch Dierk König kennengelernt und mit ihm etwas über IDEs und speziell natürlich auch Refactoring Plug-ins geplaudert (er ist Experte für unsere Groovy-Refactoring Bachelorarbeit, welche ich co-betreue).

Tag 3, Joshua Bloch, Joshua Bloch und nochmals Joshua Bloch

Der letzte Tag war eindeutig mein Joshua-Bloch-Tag. Am Morgen die Keynote über sein neues Buch, später eine Stunde lang Java-Puzzles und dann noch seine Meinung zum Thema BGGA Closures. Ziemlich interessante Geschichte, aber wahrscheinlich für viele Leute etwas zu viel. Man hat den Eindruck, dass Java als Sprache das einfach nicht verkraftet. Glücklicherweise wird Scala von vielen als Nachfolger von Java gehandelt—eine sehr schöne Vorstellung! Vielleicht zusammen mit Ola Bini’s Vision?

Ausserdem habe ich noch Heinz Kabutz zugehört, welcher eine Zusammenfassung seiner letzten zehn Newsletter zum Thema Concurrency präsentierte (hier der letzte). Ich bin ehrlich gesagt froh, dass ich keine multithreaded Programme in Java schreiben muss, da ich eigentlich nicht so begierig darauf bin zu lernen, wie der Memory-Manager der JVM funktioniert.

Generell

war alles sehr gut organisiert, und den ganzen Tag im Kino zu sitzen macht irgendwie auch viel mehr Spass als vermutet; entweder sind die Sitze dort viel bequemer als in anderen Kinos oder man sitzt beim Hören eines Talks anders als beim Schauen eines Filmes. Ich freue mich auf nächstes Jahr!

No comment »

Was ist eigentlich OSGi?

Alle die schon mal mit Eclipse gearbeitet haben sind schon in den Kontakt mit OSGi gekommen, vielleicht ohne das zu Wissen. Auch alle, die Eclipse Plug-ins schreiben haben definitiv auch mit OSGi gearbeitet. Was OSGi genau ist erklärt Neil Bartlett in seinem Blog sehr schön:

In a nutshell, OSGi is a module system for Java, but what does that
really mean?

Etwas mehr und ausführlicher in Neil’s Blog.

Und wer dann immer noch nicht genug hat, sollte sich das SE-Radio Interview mit Peter Kriens and BJ Hargrave zum Thema OSGi anhören.

No comment »

JRuby Deployment mit Java Web Start

Aufgrund der Erfahrungen, die ich beim Dynamic Languages Shootout mit JRuby und Web Start gemacht hatte, habe ich für InfoQ einen Artikel darüber geschrieben.

Ich erkläre anhand einer kleinen (und witzigen) Applikation, dem Ruby ObjectSpace Browser, die Grundlagen der JRuby/Swing Interaktion und natürlich auch das Packaging und Deployment des ganzen als Jar mit Hilfe von Web Start. Aber bevor ich jetzt den ganzen Artikel hier zusammenfasse, so lang ist er nämlich gar nicht, lest ihn besser gleich selbst.

Vielen Dank auch noch an Werner, der mich überhaupt darauf gebracht hat für InfoQ zu schreiben!

No comment »