Mittwoch, 15. Oktober 2014

Gut oder nicht gut?

Heute hat das Java-AutoUpdate eine neue Version der JRE installiert. Dabei ist mir zum ersten Mal folgender Dialog begegnet:

Screenshot: Warnhinweis auf zu alte Java-Versionen

Kennen Sie den?

Ein Klick auf Siehe Liste mit Java-Versionen zeigt bei mir:

Screenshot: Liste veralteter Java-Versionen

Tatsächlich gäbe es einen neueren Patchlevel für Java 7. Nur, warum wird nicht einfach angeboten, den zu installieren? Die Aufforderung zur Deinstallation halte ich für verfrüht, zumal in der Oracle Java SE Support Roadmap Stand 16. April 2014 öffentliche Updates bis mindestens April 2015 in Aussicht gestellt werden.

Was denken Sie?

Sonntag, 12. Oktober 2014

Back to … BASIC

Ein kleiner Wochenendend-Spaß. Als die Pixel noch groß wie Bauklötzchen waren.
 10 LET FARBE = 2  
 11 MODE(1) : COLOR FARBE,0  
 12 LET X = 64  
 13 LET Y = 32  
 20 IF X < 0 THEN LET X = 127  
 21 IF X > 127 THEN LET X = 0  
 22 IF Y < 0 THEN LET Y = 63  
 23 IF Y > 63 THEN LET Y = 0  
 24 SET(X,Y)  
 40 LET A$ = INKEY$  
 41 IF A$ < "1" OR A$ > "4" THEN GOTO 50  
 42 LET FARBE = ASC(A$) - 48  
 43 COLOR FARBE  
 44 GOTO 20  
 50 IF A$ = "A" THEN LET X = X - 1 : GOTO 20  
 51 IF A$ = "S" THEN LET X = X + 1 : GOTO 20  
 52 IF A$ = "W" THEN LET Y = Y - 1 : GOTO 20  
 53 IF A$ = "Z" THEN LET Y = Y + 1 : GOTO 20  
 98 IF A$ = " " THEN GOTO 999  
 99 GOTO 40  
 999 END  

Screenshot des Emulators VZEM

Das Malprogramm in Aktion

Ja, damals (1983) konnte man sich als 13-Jähriger gut damit die Zeit vertreiben. Dem Familien-Farbfernsehgerät die drei öffentlich-rechtlichen Kanäle genommen, stattdessen ein Ding namens Homecomputer daran angeschlossen. Und eine völlig neue Welt entdeckt.

Samstag, 11. Oktober 2014

Benachrichtigungen auf Wearables

In meinem vorherigen Post hatte ich Ihnen berichtet, dass Min Time nun Benachrichtigungen zum zeitlichen Verlauf eines Talks ausgibt, und dass diese auch auf Android Wear-Geräten erscheinen. Letzteres ist grundsätzlich unspektakulär, weil es – eigentlich – von Haus aus geschieht. Natürlich wäre dies nicht bloggenswert, wenn es nicht ein entscheidendes Caveat gäbe. Hierzu ein Beispiel:
1:  NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(  
2:      context).setPriority(NotificationCompat.PRIORITY_HIGH)  
3:      .setContentTitle(context.getString(R.string.app_name))  
4:      .setContentText(str)  
5:      .setOngoing(true)  
6:      .setWhen(resumed)  
7:      .setSmallIcon(R.drawable.ic_launcher_mintime)  
8:      .setContentIntent(notificationClickedIntent);  
9:  NotificationManagerCompat notificationManager = NotificationManagerCompat  
10:      .from(context);  
11:  notificationManager.notify(CountdownActivity.NOTIFICATION_ID,  
12:      notificationBuilder.build());  
Fällt Ihnen an diesem Stück Quelltext irgendetwas auf? Wer Android kennt, wundert sich vielleicht, dass nicht mehr der Builder aus der Android-Standardbibliothek verwendet wird. sondern NotificationCompat.Builder. Das ist Absicht. Tatsächlich fordert Google in der Dokumentation ausdrücklich dazu auf. Im Klartext bedeutet dies, dass man die Bibliothek android-support-v4.jar einbinden muss. Obiger Code erzeugt tatsächlich eine Benachrichtigung; dummerweise erscheint die aber nicht auf einem Wearable. Den Grund habe ich nach langer Suche in dem Posting How to Create a Custom Ongoing Notification on Android Wear von Carlos Hwa gefunden. Wohlgemerkt, Google schreibt diesbezüglich (Stand 11.10.14) nichts:
Screenshot der Seite http://developer.android.com/reference/android/support/v4/app/NotificationCompat.Builder.html
Wenn man es weiß, ist die Lösung einfach. Aus meinem Quelltextfragment einfach setOngoing() entfernen, und die Benachrichtigung erscheint wie erwartet auf der Uhr. *AUTSCH* Die Nutzung des Kompatibilitätspakets verläuft zum Glück schmerzfrei. Dass die Größe der App zunimmt (von 0,11 MB auf 0,37 MB im Falle von Min Time) ist unschön, aber vor dem Hintergrund aktueller Bandbreiten sicher zu verschmerzen. Übrigens hatte die Integration des Jars eine Zeitlang den Effekt, dass eine App angeblich für viele (> 30) Sprachen lokalisiert war, obwohl es in der eigentlichen Anwendung gar keine Vorkehrungen hierfür gab (wohl aber im Jar). Das scheint aber behoben worden zu sein.

Freitag, 10. Oktober 2014

Neues von Min Time

Ich hatte Lust, mal wieder an Min Time zu schrauben. Hier zwei Teaser-Fotos; die App landet demnächst in aktualisierter Version im Store.

Min Time auf einer LG G

Screenshot: Min Time-Benachrichtigung

Dabei “durfte” ich auch wieder ein paar Android-Merkwürdigkeiten kennenlernen; lassen Sie sich überraschen.

Sonntag, 5. Oktober 2014

Geschichte der Homecomputer. Spielen.

Für meinen Vortrag Geschichte der Homecomputer habe ich heute ein paar Fotos gemacht. Hier das Spiel Dragonriders of Pern aus dem Jahr 1983. Leider kann ich keine Bilder des laufenden Spiels zeigen, weil ich zwar einen 800XL, aber kein Diskettenlaufwerk, habe.

Dragonriders of Pern 1

Dragonriders of Pern 2

Dragonriders of Pern 3

Hier nun das Spiel Crossbow. Diesmal als Modul.

Crossbow 1

Crossbow 2

Crossbow 3

Zum Schluss noch zwei Joysticks. Ein Competition Pro, und ein eher seltenes Stück, ein Speedking.

Competition Pro

Speed King

Applets mit selbst signierten Zertifikaten wieder ausführbar machen

Seit Java SE 7 Update 51 (also schon eine ganze Weile) werden Applets und Web Start-Anwendungen mit selbst signierten Zertifikaten blockiert. In einer idealen Welt könnte ich mich beim Hersteller als Entwickler registrieren, würde mich entsprechend legitimieren, und bekäme dafür im Gegenzug ein “echtes” Code Signing-Zertifikat für meine Java-Anwendungen. …es soll ja Plattformen geben, auf denen es tatsächlich so läuft.

Smiley

Leider ist der von Sun vor vielen Jahren begonnene Java Store nie weiter verfolgt worden (für die Nostalgiker unter uns: ich meine Project Vector). Deshalb bleibt Entwicklern eigentlich nur, sich selbst ein Zertifikat zu besorgen. Aber mal ehrlich, unter 150 EURO geht gar nichts, und das nur für ein paar Open Source-Programme? Ich gebe zu, mir ist das zu viel. Deshalb hier noch ein kurzer Walkthrough, wie man die Java-Client-Sicherheit entsprechend rekonfiguriert. Ausgangspunkt ist das Java Control Panel:

Screenshot: Java Control Panel

Auf der Registerkarte Sicherheit befindet sich die zunächst leere Liste der ausgenommenen Websites:

Screenshot: Registerkarte Sicherheit

Die Schaltfläche Siteliste bearbeiten öffnet einen weiteren Dialog, Liste der ausgenommenen Websites.

image

Nach dem Anklicken von Hinzufügen geben Sie die URL der Seite, die ein Applet enthält, ein. Falls die Adresse “nur” http als Protokoll verwendet, erscheint folgende Warnung:

Screenshot: Sicherheitswarnung - HTTP Websites

Klicken Sie auf Fortfahren. Danach schließen Sie den Dialog Liste der ausgenommenen Sites mit OK. Das Java Control Panel sieht nun folgendermaßn aus:

Screenshot: Java Control Panel mit einer Site-Ausnahme

Schließen Sie das Kontrollfeld mit OK. Wenn Sie die Website besuchen, erscheint wieder eine Warnmeldung:

Screenshot: Warnmeldung Nummer 2

Setzen Sie ein Häkchen vor Ich akzeptiere das Risiko und möchte diese Anwendung ausführen, und klicken dann auf Ausführen.

Nicht schön, aber immerhin kann man auf diese Weise seine Applets und Web Start-Anwendungen weiter benutzen.

Freitag, 3. Oktober 2014

Eclipse DTP

DTP steht hier (ausnahmsweise) nicht für Desktop Publishing, sondern für Data Tools Platform. Das Einbinden von Datenbanken in Eclipse ist mit wenigen Handgriffen erledigt. Welche dies sind, zeige ich Ihnen in der folgenden Bilderstrecke.

Zu installierende Pakete auswählen

Zu installierende Pakete auswählen

Treiber-Definition auswählen oder erstellen

Treiber-Definition auswählen oder erstellen

Einen Treiber wählen; hier für Derby bzw. JavaDB

Einen Treiber wählen; hier für Derby bzw. JavaDB

Korrespondierendes Jar auswählen

Korrespondierendes Jar auswählen

In die Perspektive Database Development wechseln

In die Perspektive Database Development wechseln

Neues Verbindungsprofil anlegen (1/2)

Neues Verbindungsprofil anlegen (1/2)

Neues Verbindungsprofil anlegen (2/2)

Neues Verbindungsprofil anlegen (2/2)

Neues Derby-Verbindungsprofil anlegen (1/2)

Neues Derby-Verbindungsprofil anlegen (1/2)

Neues Derby-Verbindungsprofil anlegen (2/2)

Neues Derby-Verbindungsprofil anlegen (2/2)

Mit einer Datenbank verbinden oder die Verbindung trennen

Mit einer Datenbank verbinden oder die Verbindung trennen

Ein Schema anlegen

Ein Schema anlegen

Eine .sql-Datei anlegen (1/2)

Eine .sql-Datei anlegen (1/2)

Eine .sql-Datei anlegen (2/2)

Eine .sql-Datei anlegen (2/2)

SQL-Anweisungen absetzen

SQL-Anweisungen absetzen

Eclipse-Tipp: Schriftgröße bequem einstellen

Man traut es sich ja kaum zu schreiben, aber auch im Jahre 2014 muss man in Eclipse einen Einstellungsdialog öffnen, um die Schriftgröße in einem Editor zu verändern. Naja, man müsste, wenn es nicht findige Entwickler gäbe, die solche Probleme mit einem Plug-in lösen. eclipse-fonts gibt es schon eine Weile, und sehr wahrscheinlich kennen es Viele auch schon. Trotzdem hier der Link auf die Projekthomepage auf Google Code.

Donnerstag, 2. Oktober 2014

Java 9 und JSON

Ich bin eigentlich eher durch Zufall über die Ankündigung gestolpert, dass in Java 9 eine leichtgewichtige JSON-API Einzug halten soll: JEP 198: Light-Weight JSON API. Im aktuellen Early Access Releases Build b32 konnte ich noch nichts davon entdecken. Was mich hierbei vor allem umtreibt, ist die Frage “Warum?”. Mit JSR 353: Java API for JSON Processing und der zugehörigen Referenzimplementierung gibt es doch eine durch den JCP legitimierte JSON-Bibliothek. Und die ist ja sogar in Java EE 7 enthalten. Im Netz findet man derzeit relativ wenig Infos zu den Hintergründen. Haben Sie etwas darüber gelesen? Teilen Sie Ihre Links mit mir…

Mittwoch, 1. Oktober 2014

…was da wohl drin ist…?

Ein neues Spielzeug?

Ein neues Spielzeug?

Auch die 5. Auflage macht einen Autor noch stolz.

Auch die 5. Auflage macht einen Autor noch stolz.

Ich freue mich sehr, Ihnen eine neue Ausgabe von Einstieg in Eclipse zeigen zu können.

Ich freue mich sehr, Ihnen eine neue Ausgabe von Einstieg in Eclipse zeigen zu können.

Ich bin sicher, auch alte Eclipse-Hasen finden hier frisches Futter ;-)

Ich bin sicher, auch alte Eclipse-Hasen finden hier frisches Futter ;-)

Samstag, 27. September 2014

TKWeek ab sofort kostenlos

Als ich 2009 mit der App-Entwicklung angefangen habe, wollte ich in erster Linie eigene Erfahrungen sammeln. Das ist gelungen. Auch die Monetarisierung von Apps konnte ich so erproben. Dass sich das ganze finanziell nur selten rechnet, habe ich 2011 in meinem Vortrag Für eine Handvoll Dollar dargestellt. Seitdem sind die Verpflichtungen, die ein Entwickler eingeht, nicht kleiner, sondern größer geworden. Wer neugierig ist, kann sich beispielsweise eine der vielen Hilfsseiten zum Thema Steuern ansehen. Das ist nur einer von vielen möglichen Fallstricken.

Ich jedenfalls habe genug gelernt. Smiley Spannend wird sein, wie sich ab jetzt die Download-Zahlen entwickeln. In der Zeit, in der TKWeek kostenpflichtig war, haben etwas mehr als 1000 Leute die App heruntergeladen.

Dienstag, 23. September 2014

Unboxing Microsoft Dock für Surface 3 Pro

Unboxing #1

Unboxing #2

Unboxing #3

Unboxing #4

Unboxing #5

Unboxing #6

Unboxing #7

Unboxing #8

Das Dock für das Surface 3 Pro macht einen sehr wertigen Eindruck. Um das Surface einzulegen, muss man das Dock ein Stück auseinander ziehen. Dann das Tablet auf das Dock legen und zusammen schieben. Fertig. Der Mechanismus arbeitet präzise und leichtgängig. Top. Praktisch finde ich, dass die linke Seite des Docks magnetisch ist.Man “dockt” den Stylus einfach an. Schön finde ich, dass ein zusätzliches Netzteil mitgeliefert wird. Geht man auf Reisen, muss man nicht erst das Netzteil vom Boden unterhalb des Schreibtisches aufsammeln, sondern nimmt einfach das mit, das beim Surface mitgeliefert wurde.

Sonntag, 14. September 2014

Energie sparen schwer gemacht

Mein Surface 3 Pro wollte nicht in den Energiesparmodus wechseln. Tatsächlich war nicht einmal die korrespondierende Option im Ein-/Ausschalten-Menü vorhanden. Des Rätsels Lösung: Connected Standby verträgt sich nicht mit Hyper-V, was beim Installieren von Visual Studio 2013 aktiviert wird. Ausführliche Infos finden sich auf The Connected Home.

.Net-te Konvertierungen

Das Umwandeln von Quelltexten, die in einer bestimmten Sprache vorliegen, in eine andere hat eine lange Tradition. Einen schönen Überblick liefert der Wikipedia-Artikel Source-to-source compiler. Gründe für die Konvertierung von Sprache A nach B gibt es viele. Sei es die Notwendigkeit, eine wichtige Bibliothek nutzbar zu machen, das Fehlen eines geeigneten Entwicklers, oder reine Neugier. Spaß macht es auf jeden Fall.

Da ich mich ein bisschen für C# interessiere, habe ich nach einem Umwandlungstool von dieser Sprache nach Java gesucht. Meine Wahl fiel auf den C# to Java Converter von Tangible Software Solutions. Den gibt es als kommerzielle Variante sowie in einer (eingeschränkten) Free Edition. Für das Experimentieren reicht die kostenlose Ausgabe vollkommen aus. Der Anbieter ist beileibe nicht alleine – eine entsprechende Recherche listet zahlreiche Produkte und Frameworks. Meine Auswahl ist deshalb auch keine Wertung, sondern, wenn Sie so möchten, reiner Zufall.

Lassen Sie uns nun einen Blick auf das Tool werfen:

Screenshot: C# To Java Converter

Screenshot: Einstellungen

Das Ergebnis sieht ja recht schick aus, und kann bzgl. Formatierung an die eigenen Bedürfnisse angepasst werden. Auffälig ist eigentlich nur, dass wir an der main()-Methode Anpassungen vornehmen müssen.

Übrigens gibt es unter http://compileonline.com/ die Möglichkeit, Code direkt ausführen zu lassen. Wie bei allen Online-Diensten muss man sich nur überlegen, welche Daten man an einen Server schickt.

Online-Übersetzung des C#-Originals

Auch Online-Compiler gibt es wie Sand am Meer. Haben Sie diesbezügliche Favoriten? Schreiben Sie mir…