Sonntag, 29. Juni 2014

Fragmentierung

Ja, ich habe mir eine LG G bestellt. Angeblich soll das gute Stück kommenden Freitag ausgeliefert werden. Dumm nur, dass ich wahrscheinlich nicht viel darüber werde berichten können.

Screenshot: Kompatibilitätstest Android Wear

Mein treues Fairphone ist dazu nämlich zu alt. Oder zu doof. Oder beides. Die Companion App von Android Wear hätte nämlich gerne Android 4.3, aber die Macher des Fairphone sehen sich derzeit nicht in der Lage, auf Android 4.4 zu aktualisieren. Apple-Jünger, freut euch, ihr habt es besser.

Übrigens gibt es durchaus Gerüchte, dass viele MediaTek-Androiden von kitKat abbeißen dürfen. Nur eben leider nicht mein Fairphone.

Immerhin hat mein Experiment in Sachen Fairness länger gedauert als gedacht.

Donnerstag, 26. Juni 2014

Lektüre-Tipp: Entdecker - Android-Apps und das Web

In der seit heute erhältlichen iX 7/2014 findet sich mal wieder ein Artikel von mir: Entdecker - Android-Apps und das Web. Im World Wide Web warten unerschöpflich viele Informationen auf den Smartphone-Entwickler. Daten und Dienste soll man in die eigene App integrieren. Ich zeige Ihnen, wie Sie sicher und schnell auf Webinhalte zugreifen können.

Sonntag, 22. Juni 2014

Nostalgie: Tomy Arcade Racing (Mini Arcade)

Heute reisen wir ein bisschen in die Vergangenheit. Ich stelle Ihnen ein Tabletop Game vor, mit dem ich als Kind gerne und oft gespielt habe. Ob das Tomy Arcade Racing in den späten 70ern oder frühen 80ern erschienen ist, kann ich leider nicht mehr genau sagen. Ich denke, ich werde wohl so um die zehn Jahre alt gewesen sein. Weiter unten gibt’s ein kleines Video.

Tomy Arcade Racing #1

Tomy Arcade Racing #2

Tomy Arcade Racing #3

Tomy Arcade Racing in Aktion

Unfassbar, wie viel Spaß wir damals mit so wenig hatten. Können Sie sich vorstellen, dass heutige Kids länger als 3 Minuten dran bleiben? Sehr schade, oder?

Mittwoch, 18. Juni 2014

Zurück in die Zukunft

Screenshot: Min Time unter Froyo

Soo, Min Time steht in Google Play nun auch für die etwas älteren Androiden zum Download bereit. Geräte ab Froyo (API Level 8), also Android 2.2, sollten die App nun finden und installieren können. Über Rückmeldungen würde ich mich natürlich freuen.

Montag, 16. Juni 2014

Zeitmaschine

Ein Leser hatte mich gefragt, warum denn ein simples Programm wie Min Time unbedingt Android 4 braucht. Die Frage ist natürlich legitim. Da ich sie aus dem Stegreif nicht beantworten konnte, habe ich versucht, die App unter Android 2.x lauffähig zu bekommen. Das Setzen des Attributs android:minSdkVersion auf 8 (Froyo) war schnell erledigt. Die Android Development Tools haben dann noch (logischerweise) das Setzen des Vollbildmodus android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen" moniert. Dann konnte es losgehen. Mit …Sie ahnen es… rrrrummmmmssss. Es gab ein paar Stellen, an denen Android auf die Nase gefallen ist, weil ich Methoden aufrufe, die es in Android 2.x noch nicht gibt. Das passiert, weil ich das Ziel-SDK (android:targetSdkVersion) auf 19 (KitKat) gelassen hatte. Statt Versuch und Irrtum hätte es natürlich auch das Herabsetzen dieses Wertes getan. Naja. Große Hämmer sind eigentlich gar nicht dabei gewesen: das Abfragen, ob das Gerät einen Vibrationsmotor hat, geht erst ab API Level 11. Das Konfigurieren eines Menüeintrags setShowAsAction() ebenfalls. Und da ist dann noch das Ermitteln der Anzeigegröße. Das von mir verwendete getSize() gibt es erst ab API Level 13, vorher muss man getHeight() und getWidth() verwenden. Das war’s.

Wann es die Version in Google Play gibt, kann ich noch nicht versprechen. Ich bin auch, das gebe ich offen zu, zwiegespalten, was den Support alter Versionen angeht. Auf der einen Seite gibt es viele Leute, die gerne mit Ihrem “alten” Gerät arbeiten. Das ist lobenswert. Warum sollte man etwas wegwerfen, das prima funktioniert. Und in meinem ganz konkreten Fall ist der Aufwand ja minimal. Auf der anderen Seite sind Tests eine Tortur. Je komplizierter die App, desto aufwendiger die Überprüfung. Und: so viele Geräte kann man eigentlich gar nicht vorhalten…

An dieser Stelle nochmals herzlichen Dank an @timothep.

Sonntag, 15. Juni 2014

Noch einmal Min Time: diesmal mit bbbbbrrrrrummmmmm

Die gestern veröffentlichte Version 1.02 hatte einen kleiner Fehler: beim Auswählen einer Zeitverteilung wurde die Gesamtdauer nicht aktualisiert. Da ich nach der Veröffentlichung schon weiter gebastelt hatte, habe ich mich entschlossen, den Fehler gleich in der neuen Version zu beheben. Die brummt bei Phasenübergängen. Leider ist hierfür eine Berechtigung erforderlich. Ich bin aber zuversichtlich, dass dies nicht zu sehr stört. Und Werbeeinblendungen sind mit ihr ja auch nicht möglich. Zwinkerndes Smiley Viel Spaß also mit Min Time 1.03.

Samstag, 14. Juni 2014

Min Time 1.02 mit Speicherfunktion

Screenshot von Min Time

Min Time hat eine Funktion zum Speichern und einfachen Aktivieren von Zeitverteilungen erhalten. Außerdem zeigt die kleine App nun die Gesamtzeit, also die Summe der dreiPhasen, an.

Montag, 9. Juni 2014

TKWeek 1.7.6

Screenshot von TKWeek 1.7.6

Es gibt eine neue Version von TKWeek. Im Modul Informationen über ein Jahr können jetzt die Jahreszeiten eingesehen werden. Außerdem sind ein paar neue Nationalfeiertage hinzu gekommen. Haben Sie Ideen, Wünsche oder Anregungen? Lassen Sie es mich wissen…

Freitag, 30. Mai 2014

Min Time verfügbar



Seit ein paar Stunden ist Min Time im Play Store verfügbar. Ich freue mich sehr über konstruktive Rückmeldungen.


Donnerstag, 29. Mai 2014

Gestatten…: Min Time

So ziemlich das Nervigste am App-Schreiben ist… das Namen erfinden… Nicht nur, dass es praktisch für jedes Thema schon eine App gibt – nein, auch alle Namen dieser Welt scheinen bereits vergeben zu sein. Ich versuche dann immer aus der Not eine Tugend zu machen und bastle Wörter. Beispiel: Eine App, die Vortragenden in bestimmten Intervallen signalisiert, wie viel Zeit noch zur Verfügung ist, könnte Timer, Stoppuhr, Eieruhr, Countdown, Time Keeper, … heißen. Gibt’s aber alles schon. Deshalb nenne ich meine Min Time. Ich weiß, dass Sie sich jetzt verlegen am Kopf kratzen. WIE?? Sie können es als Abkürzung für Minimalistic Timer lesen, oder als Wortspiel, denn im Englischen heißt In Time rechtzeitig. Und das möchte doch jeder Referent werden, nicht wahr? Hier also Min Time:

Die App "Min Time"

Die Idee ist, einen Vortrag in drei Bereiche zu teilen: in die lange Komfortzone, die Zielgerade und die “Der letzte Satz”. Man stellt die drei Werte ein, tippt auf Start und unterhält das Publikum. Am ende des Vortrags tippt man einmal auf den Bildschirm. Fertig. Das Ding ist winzig klein, schnell und vor allem unkompliziert. Haben Sie Lust bekommen, es herunterzuladen? Bald, nur noch ein paar letzte Pinselstriche. Smiley

Mittwoch, 7. Mai 2014

Ein kurzer Blick auf den 7. Meilenstein von Eclipse 4.4

Seit Anfang Mai ist der siebte Meilenstein von Eclipse 4.4 verfügbar. Damit ist Luna feature complete. Hier ein paar Dinge, auf die wir uns freuen können (nicht alles kam mit M7). Zunächst ist da natürlich das dark theme. Gefühlt hat der Trend ja in der Ecke der Kreativ-Software begonnen und hat dann (Achtung, grottenschlechtes Wortspiel) auf die IDEs abgefärbt. Ich weiß nicht, wie es Ihnen geht, aber ich werde mit dem dunkel-düsteren Ambiente nur langsam warm.

dark theme #1

dark theme #2

Was wirklich schön ist: die Icons wurden auf das .png-Format umgestellt und wirken weniger kantig. Sehen Sie sich doch mal den obigen Screenshot in Originalgröße an.

Eine prima Sache ist die neue geteilte Ansicht in Editoren:

geteilte Ansicht in Editoren

So macht das gleichzeitige Arbeiten von weit auseinander liegenden Abschnitten im Quelltext endlich Spaß.

Nett ist auch die Unterstützung von Java 8-Sprachfeatures. *** Update: *** Zum Beispiel kann Eclipse aus anonymen Klassen lambda-Ausdrücke machen:

Codebeispiel im "alten" Stil

Aufruf von Quick Assist

Code nach der Umwandlung

Damit das funktioniert, muss ein Java 8 als “Standard VM” hinzugefügt werden.

Installed JREs

Anschließend müssen Sie den Compiler compliance level auf 1.8 setzen. Vorsicht: ggf. projektspezifische Einstellungen beachten.

Compiler compliance level

Sonntag, 4. Mai 2014

Lese-Tipp: Digital Adaptation

Cover von Digital Adaption
Was ist nötig, um Unternehmen fit für das digitale Zeitalter zu machen? Wie müssen Strukturen in Organisationen oder Firmen beschaffen sein, um gut im adressierten Markt aufgestellt zu sein? Welchen Herausforderungen müssen sich Management und Mitarbeiter stellen, um ihre Produkte erfolgreicher als Mitbewerber verkaufen zu können? Das Buch Digital Adaptation von Paul Boag möchte Web Professionals bei der Transformation ihres Unternehmens helfen. Dabei ist dem Autor durchaus bewusst, dass die eigentlichen Macher ohne umfassende Unterstützung des Managements nur begrenzt erfolgreich sein können. Was bleibt ist, dort Einfluss zu nehmen, wo es möglich ist.

Das Buch ist in lockeren, leicht zugänglichen Englisch geschrieben. Es ist hübsch gemacht, viele Bilder und Grafiken lockern den Text auf. Das Lesebändchen ist gut gemeint, ich habe es aber nicht gebraucht und Digital Adaptation in einem Rutsch durchgelesen. Oft bringt Paul Boag seine lange Erfahrung in Gestalt von Beispielen ein, das macht seine Erklärungen und Schlussfolgerungen stichhaltig und nachvollziehbar. Gelegentlich sind Szenarien bewusst konstruiert, skizzierte Personen wirken dann plakativ. Natürlich dient die Nutzung von Stereotypen dem Zweck, das “Deshalb klappt es hier gut, dort nicht” zu verdeutlichen. Hätte für meinen Geschmack weniger sein können. Unbenommen davon ist das Bändchen ein tolles Buch. Selbst wer nicht direkt Einfluss auf die digitale Umgestaltung einer Firma oder einer Organisation Einfluss nehmen muss, profitiert von der Darstellung des wachsenden Einflusses, den Digitalisierung auf alle Bereiche auswirkt. Fazit: kaufen!

Das Buch kann bei Smashing bestellt werden.

Donnerstag, 1. Mai 2014

Eclipse Trivia

Am 25. Juni 2014 möchte die Eclipse Foundation mit Luna ihr neuntes Simultaneous Release bereit stellen. Die Grundidee, die Veröffentlichungstermine von mehreren Schlüssel-Projekten zu bündeln, um ein problemloses Zusammenspiel der Komponenten zu gewährleisten, ist seit Callisto beibehalten worden. Die Zahl der teilnehmenden Projekte ist seit 2006 stetig gestiegen.

Callisto 3.2 30.06.2006 10
Europa 3.3 29.06.2007 21
Ganymede 3.4 25.06.2008 23
Galileo 3.5 24.06.2009 33
Helios 3.6 23.06.2010 39
Indigo 3.7 22.06.2011 62
Juno 4.2 / 3.8 27.06.2012 71
Kepler 4.3 26.06.2013 72
Luna 4.4 25.06.2014 ??

Auf der offiziellen Simultaneous Release-Seite werden für die ersten beiden Sammelreleases andere Daten genannt (Callisto: 26.06.2006 und Europa: 27.06.2007). Ich habe im Web recherchiert und gebe die aus meiner Sicht korrekten Werte an. Sieht man sich die Datumswerte an, stellt man fest, dass sich der Veröffentlichungstag auf den vierten Mittwoch im Juni eingependelt hat. Juno sollte ursprünglich 72 Projekte beinhalten, es wurden letztlich aber nur 71, wie Wayne Beaton in einem Post erklärt. Eine Besonderheit an diesem Release war auch, dass zum ersten Mal die Plattform-Version 4 ausgerollt wurde. Zusätzlich stand aber auch eine Version auf der Basis von Eclipse 3.8 zum Download bereit. Zum Schluss noch etwas (sehr wahrscheinlich bekannte) Namenskunde: Kallisto, Europa und Ganymed sind Jupitermonde. Dieser Planet könnte noch oft Namensgeber für Eclipse-Versionen sein, denn ihn umkreisen (mindestens) 67 natürliche Satelliten. Apropos Namensgeber: der Entdecker mehrerer Jupitermonde wird mit Eclipse 3.5 geehrt. Auf Galileo folgen Helios, Indigo und Juno – die Reihenfolge der Buchstaben im Alphabet ist ja auch für Android-Versionen beliebt.

Kennen Sie noch mehr Fakten über Eclipse? Schreiben Sie doch einfach einen Kommentar. Ich freue mich darauf.

Mittwoch, 30. April 2014

Sonntag, 27. April 2014

Pimp my FairPhone

In meinem Post über 100 Tage FairPhone hatte ich das Dilemma mit dem zu kleinen internen Speicher beklagt. Dabei ist die Lösung eigentlich simpel: in dem von mir ebenfalls verlinkten Foren-Thread wird mehrfach auf die Damen und Herren von xda developers verwiesen. Dort findet sich eine Schritt-für-Schritt-Anleitung. Diese enthält den Link zu einer Software, die das FairPhone umpartitioniert. Man muss sich nur trauen, die App zu installieren und zu starten. In einer Auswahl kann man zwischen mehreren Speicherzuteilungen wählen. Ich habe mich für 4 GB internen Speicher entschieden. Nach dem obligatorischen Boot in den Recovery Mode von Android folgt man ein paar Anweisungen. Und hat dann ein frisch aufgesetztes System ohne Speichersorgen. Ganz wichtig: bei der Prozedur gehen alle Daten verloren, ein Backup auf eine SD-Karte ist also angeraten. Da ich ein frisches System wollte, habe ich mich dagegen entscheiden.

Android-Bootoptionen

Mein FairPhone nach der Umpartitionierung

Für mich hat sich dieser kleine Eingriff gelohnt; mein FairPhone hat wieder die Apps drauf, die ich brauche. Man darf gespannt sein, was nach dem angekündigten Softwareupdate passiert. Ich werde natürlich berichten.

Samstag, 26. April 2014

Tipp: Was es mit NPEs in updateInputState() auf sich hat

Ich wurde von einer Firma angeschrieben, die im Auftrag eines Geräteherstellers Fehlern in Android-Apps nachgeht. Die Fehlerbeschreibung schien zunächst unspezifisch; nachstellen konnte ich das Problem nicht. Allerdings liefert die Developer Console ja zum Glück tiefere Einblicke in die Abstürze:

 

java.lang.RuntimeException: Unable to pause activity {com.thomaskuenneth.android.birthday/com.thomaskuenneth.android.birthday.TKBirthdayReminder}: java.lang.NullPointerException
at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3204)
at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3159)
at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:3137)
at android.app.ActivityThread.access$900(ActivityThread.java:165)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1337)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5450)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at android.widget.TimePicker.updateInputState(TimePicker.java:846)
at android.widget.TimePicker.onSaveInstanceState(TimePicker.java:561)
at android.view.View.dispatchSaveInstanceState(View.java:13117)
at android.view.ViewGroup.dispatchSaveInstanceState(ViewGroup.java:2822)
at android.view.ViewGroup.dispatchSaveInstanceState(ViewGroup.java:2828)
at android.view.ViewGroup.dispatchSaveInstanceState(ViewGroup.java:2828)
at android.view.ViewGroup.dispatchSaveInstanceState(ViewGroup.java:2828)
at android.view.ViewGroup.dispatchSaveInstanceState(ViewGroup.java:2828)
at android.view.View.saveHierarchyState(View.java:13100)
at com.android.internal.policy.impl.PhoneWindow.saveHierarchyState(PhoneWindow.java:1930)
at android.app.Dialog.onSaveInstanceState(Dialog.java:405)
at android.app.TimePickerDialog.onSaveInstanceState(TimePickerDialog.java:216)
at android.app.Activity.saveManagedDialogs(Activity.java:1269)
at android.app.Activity.performSaveInstanceState(Activity.java:1187)
at android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:1240)
at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3185)
... 12 more

Warum sollte eine interne Methode meine App abstürzen lassen? Erstaunlicherweise liefert die Suche nach updateInputState hilfreiche Treffer, unter anderem diesen. Dort steht:

When running on an ICS device, but using against an old build target the TimePicker shows the older AM/PM button instead of the newer spinner. This is dealt with in code for backwards compatibility - TimePicker.java attaches listeners either to mAmPmButton or mAmPmSpinnerInput accordingly. There are checks in most applicable to handle the appropriate case. The function updateInputState() however has no check and is blindly assuming mAmPmSpinnerInput isn't null. This will cause a force close on apps using it that have an active InputMethodManager at the time (line 553 in TimePicker.java).

TKBirthdayReminder ist in der noch aktuellen Version 2.0.6 tatsächlich auf API Level 7 eingestellt, läuft also im Kompatibilitätsmodus. Ich werde den jetzt mal auf 17 setzen und sehen, was passiert. Haben Sie ähnliche Phänomene beobachtet? Schreiben Sie mir…

Donnerstag, 24. April 2014

100 Tage FairPhone

Am 15. Januar 2014 wurde nach einer gefühlten Ewigkeit mein FairPhone geliefert. Ich hatte meine ersten Eindrücke in diesem Post mit Ihnen geteilt. Seitdem sind etwa 100 Tage vergangen. Ich habe das Gerät jeden Tag intensiv genutzt: als Telefon, als Adressbuch, als Notizspeicher, als Kamera… Dabei hat sich das nicht ganz leichte Klötzchen als durchweg alltagstauglich erwiesen. Die Verarbeitung ist gut, die Laufzeit des Akkus passt gerade noch (man übersteht einen Tag ganz gut), die Kamera ist ok, die Software halbwegs stabil.

Ein ganz dickes Problem gibt es aber:

Screenshot_2014-04-23-10-45-58

Das FairPhone hat zu wenig Speicher. Das mag sich merkwürdig anhören, wenn man liest, dass es mit 16 GB ausgestattet ist. Der so genannte interne Speicher ist 1 GB groß. Und der macht Kummer. Denn man kann viele Apps in den so genannten Telefonspeicher verschieben, aber nicht alle. Schon bei wenigen installierten Apps tauchen bei mir regelmäßig Meldungen auf, dass dieser oder jener Dienst aufgrund von Speichermangel gestoppt wird. Im Forum gibt es hierzu einen laaaaaangen Thread, in dem der Tenor der FairPhone-Angestellten ist, dass das alles ja gar nicht so schlimm sei. Ist es aber leider. Es scheint, dass sich im Laufe der Zeit Müll ansammelt, weil z. B. Logfiles anschwellen. Die Option, den internen Speicher bei einem Software-Update zu vergrößern, wurde bisher nicht genutzt.

Für mich schränkt das die Nutzbarkeit des Geräts leider ziemlich ein. Zumal ich kein App-Junkie bin, der unzählige Programme hortet.

Hergeben werde ich das FairPhone deshalb aber nicht. Das Experiment geht weiter…

Dienstag, 22. April 2014

Sonntag, 20. April 2014

WinMerge-Tipp: Vergleichen von Word-Dateien

Nach dem Buch ist vor dem Buch. Bevor die eigentliche Arbeit losgeht, bringt man seine Werkzeuge auf den aktuellen Stand. Früher hieß dies Bleistift spitzen oder neues Farbband in die Schreibmaschine einlegen. Und heute? Hardware aktualisieren. (Kleiner Scherz) Da ich mir erst vor kurzem einen der letzten Vaio Pro 13 gegönnt habe, fehlt dem guten Stück noch die eine oder andere Software. WinMerge ist seit langem eine der Perlen, die auf keinem Rechner fehlen sollte. In der stabilen Version 2.14.0 ist ein Plug-in zum Vergleichen von Word-Dateien enthalten. Hier ein Screenshot:

eingebautes WinMerge-Plug-in

Seit wann dem so ist, weiß ich offen gesagt nicht. Ich hatte bislang nämlich xdocdiff von S. Kohno verwendet. Heute bin ich eher zufällig über das eingebaute Modul gestolpert. An dem ist praktisch, dass es (wie auf dem Screenshot zu sehen ist) bestimmte Attribute wie Autor und Beschreibung der Worddatei anzeigt. Dies tut xdocdiff nicht. Allerdings geht dieses meiner Wahrnehmung nach erheblich schneller zu Werke. Die Installation von xdocdiff ist schnell erledigt. Nach dem Entpacken des Archivs werden die beiden Dateien xdoc2txt.exe und zlib.dll in das WinMerge-Installationsverzeichnis kopiert. Die Datei amb_xdocdiffPlugin.dll muss in das Unterverzeichnis MergePlugins.

Tipp: Achten Sie darauf, dass vor dem Vergleichsvorgang im Plugins-Menü das automatische Entpacken aktiviert ist. Und: um xdocdiff zu deaktivieren, einfach amb_xdocdiffPlugin.dll in .dl_ umbenennen und Plugins neu laden auswählen.

Sonntag, 13. April 2014

Tipp: bessere Vorschläge in Eclipse

Vor einigen Wochen bin ich über die Bing Code Search für Visual Studio gestolpert. Die Idee dieses Plug-ins ist, die klassischen “Wie geht denn das?”-Fragen direkt aus der IDE heraus zu stellen. Fundstellen können dann unmittelbar übernommen werden. Auf Channel 9 gibt es ein Video dazu. Natürlich kann man darüber streiten, ob auf diese Weise bessere oder schlechtere Programme entstehen. Ob man aber Code direkt aus Stack Overflow kopiert oder dafür ein Tool nutzt, ist egal. Wie bei allen Werkzeugen ist es am Nutzer, es maß- und sinnvoll zu verwenden.

Da ich die Idee grundsätzlich sehr gut finde, habe ich mich gefragt, ob es so etwas ähnliches auch für Eclipse gibt. Dabei bin ich auf das Projekt CODE RECOMMENDERS gestoßen. Dieses Plug-in integriert sich in die Content Assist-Funktion von Eclipse. Um Code Recommenders in der aktuellen Version verwenden zu können, muss mindestens Eclipse 4.2 installiert sein. Öffnen Sie über Help, Install new Software den Dialog Install und fügen im Eingabefeld neben Work with die URL der Plug-in-Update Site (http://download.eclipse.org/recommenders/updates/stable/) ein. Drücken Sie Enter, um die Liste der Plug-ins zu aktualisieren.

Installation des Plug-ins

Nach dem Download und dem obligatorischen Neustart steht das Plug-in zur Verfügung.

Die Einstellungsseite des Plug-ins

Um das Plug-in auszuprobieren, legen Sie am besten ein einfaches Java-Projekt mit einer beliebigen Klasse an. Fügen Sie dieser eine main()-Methode hinzu und tippen dann:

Date

Mit Steuerung-Leertaste rufen Sie Content Assist auf.

Aktivierung des Plug-ins

Aktivieren Sie die intelligente Vervollständigung, indem Sie den entsprechenden Eintrag mit Doppelklick oder Enter auswählen. Weiteres Durchblättern mit Steuerung-Leertaste öffnet Eclipse-typisch verschiedene Proposals-Arten. Code Recommenders fügt unter anderem die folgenden hinzu:

  • Call Completion schlägt wahrscheinliche Methoden vor. Bei den Vorschlägen wird berücksichtigt, was andere Entwickler in einem vergleichbaren Quelltextumfeld an Methoden aufgerufen haben
  • Override Completion schlägt die Methoden vor, die am wahrscheinlichsten überschrieben werden sollten
  • Subwords Completion unterstützt alle anderen Vorschlagsmechanismen oder arbeitet für sich alleine; hiermit werden Vorschläge auch auf Basis von Teilwörtern innerhalb eines Worts gemacht, nicht nur von Beginn an

Lassen Sie uns nun etwas ausprobieren. Wir haben gehört, dass die Klasse Calendar Instanzen von Date-Objekten erzeugen kann. Nur, wie? Tippen Sie Date date = Calendar.get und drüclen dann Steuerung-Leertaste.

Ist Ihnen aufgefallen, dass die ersten drei Buchstaben (get) eine andere Farbe haben? Wählen Sie die parameterlose Variante von getInstance() und drücken Enter. Außer einem hinzugefügten import (und das würde Eclipse auch ohne das Plug-in tun) ist noch nichts passiert. Geben Sie nun einen Punkt ein.

Relevanz-basierte Vorschlagsliste

Im Gegensatz zur früher erscheinenden alphabetisch sortierten Methodenliste sehen Sie nun eine nach Relevanz sortierte Vorschlagsliste. Mit ihr ist unsere fiktive Fragestellung schnell geklärt.

Wie finden Sie die Idee dieses Plug-ins. Schreiben Sie mir. Ich werde jedenfalls weiter damit experimentieren.

Montag, 24. März 2014

Updates

Mit dem Erscheinen von Java 8 möchte der Entwicklungsrechner mit neuer Software gefüttert werden. Auf meinem Mac war das NetBeans 8, Java 8 JDK, und natürlich der Scene Builder. Haben Sie schon aktualisiert? Schreiben Sie mir Ihre Erfahrungen...

Donnerstag, 20. März 2014

MATHEMA Campus

Liebe Leserinnen, liebe Leser, die Zeit rast. Morgen beginnt der MATHEMA Campus. Ich freue mich riesig auf zwei interessante, lehrreiche, spannende und sicher auch anstrengende Tage. Natürlich bin ich aufgeregt, ob den Zuhörerinnen und Zuhörern mein Vortrag gefällt. Eins ist klar: einer für alle, alle für einen. :-)

Mittwoch, 5. März 2014

Ein paar JavaFX Scene Builder-Screenshots

Für einen Vortrag habe ich mir die JavaFX Scene Builder 2.0 Early Access installiert. Hier ein paar Screenshots:

Installation 1/4

Installation 2/4

Installation 3/4

Installation 4/4

Scene Builder nach dem Start

Der Scene Builder ist in NetBeans integrierbar. Hier die entsprechende Registerkarte in NetBeans 7.4:

Die Registerkarte JavaFX in NetBeans 7.4

Leider klappt das aufgrund eines Bugs in NetBeans derzeit nicht mit dem Scene Builder 2.0:

Ein installierter Scene Builder wird trotz richtiger Pfadauswahl nicht erkannt

Ich werde versuchen, in den Tiefen der NetBeans-Konfigurationsdateien den passenden Eintrag zu finden. Vielleicht lässt er sich händisch setzen…

Update: Offenbar legt NetBeans die Datei scenebuilder.properties an. Unter Windows befindet sie sich im Heimatverzeichnis des Benutzers unter AppData\Roaming\NetBeans\7.4\config\Preferences\org\netbeans\modules\javafx2. Sie sieht nach meiner Änderung auf den Scene Builder 2.0 folgendermaßen aus (drei Zeilen):

saveBeforeLaunch=true
selectedHome=C:\\Program Files (x86)\\Oracle\\JavaFX Scene Builder 2.0#1.0
userDefinedHomes=C:\\Program Files (x86)\\Oracle\\JavaFX Scene Builder 2.0#JavaFX Scene Builder 2.0.exe#app/scenebuilder.properties#1.0

Der hier eingetragene Pfad wird auf der Registerkarte korrekt angezeigt. Kurioserweise muss man den Dialog aber nach jedem Programmstart einmal geöffnet haben, damit nach einem Rechtsklick auf eine .fxml-Datei im Kontextmenü ein open erscheint. Leider also nur ein halber Fix…
Smiley

Montag, 24. Februar 2014

Und noch ein Appstore

Als Android-Entwickler hat man es ja nicht mit einem Appstore zu tun, sondern (wenn man möchte) mit einer ganzen Armada. Die brandneuen Nokia X wollen nicht via Google Play befüttert werden, sondern über einen Nokia-eigenen Laden. Wie vermutet, ist bei den Geräten Android zwar der Unterbau, wird aber nicht von Google-Diensten begleitet, sondern von Pendants von Nokia (Karten) und Microsoft (Suche, Cloudspeicher). Prinzipiell könnte das Konzept aufgehen – die Kindle Fire von Amazon dürfen in diesem Zusammenhang als gelungene Beispiele gelten. Ob die offenkundig anvisierten emerging markets Interesse an der neuen Gerätefamilie haben, muss die Zukunft zeigen. Auch, ob Entwickler willens sind, einen weiteren Store zu betanken und aktuell zu halten. Nokia hat jedenfalls schon seine Entwicklerseiten aktualisiert. Dort kann man seine App auf Kompatibilität testen und Erweiterungen zum Android SDK herunterladen.

Screenshot: Kompatibilitätstest für das Nokia X

Das Installieren der Erweiterungen für das Android SDK ist ausführlich beschrieben. Nach dem Laden der Pakete Nokia X System Image, Nokia X Device Definitions, Nokia X services und Nokia X USB Driver kann ein geeignetes AVD erzeugt werden. Offenbar nutzt das Nokia X ein Android 4.1.2 (API-Level 16), also ein frühes Jelly Bean.

Screenshot: Android Virtual Device Manager (Device Definitions)

Screenshot: Create new Android Virtual Device

Screenshot: Start des Emulators

Screenshot: Homescreen

Screenshot: Einstellungen

Screenshot: Kalender

Die Screenshots zeigen einen eigenen Look. Ich finde ihn ganz hübsch. Auf die Reaktionen der Tester und Käufer bin ich sehr gespannt. Wie bereits weiter oben angedeutet, scheint sich Nokia ein weiteres Standbein im Niedrigpreissegment schaffen zu wollen. Es bleibt spannend, wie nachhaltig dieses Engagement sein wird.