Wie kann bei JAXB marshal verhindert werden das „ “ geschrieben wird?

Das geht mit der Property: Marshaller.JAXB_FRAGMENT
Wenn die auf true gesetzt wird, erscheint der XML Tag nicht mehr.

Hier ein komplettes Beispiel für die Serialisierung:


JAXBContext jaxbContext = JAXBContext.newInstance(Map.class);
Marshaller marshaller = jaxbContext.createMarshaller();

// Verhindern des tags:
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);

marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
marshaller.marshal(freemindMap, outFile);

Java Api für den Karotz

Natürlich kann der Karotz auch per Java angesteuert werden.

Mit dieser Karotz Java API kann leicht, innerhalb von ca. 1 Stunde per Java auf den Karotz zugeriffen werden.

Anleitung:

Nach dem download, einen Maven import nach Eclipse machen. Es werden 3 Projekte erstellt.

In der KarotzCLI Klasse den API_DEFAULT und den SECRET_KEY_DEFAULT anpassen.

Die Install ID, Api Key und Secret Key bekommt man im Dashboard angezeigt, nachdem die eigene Anwendung erstellt wurde. Dazu ist es auch notwendig die descriptor.xml Datei entsprechend anzupassen und aus dem karotz/app Verzeichnis in ein ZIP Archive zu packen und hochzuladen. Nur dann erhält man die Anwendungs bzw. die Install ID.

Dann im Karotz Projekt die POM auswählen, und ein install ausführen.
Dies erzeugt im karotz-cli/target Verzeichnis das nötige jar.

In dies Verz. wechseln und auf der Kommandozeile folgendes eingeben:

java -jar karotz-cli-0.1-SNAPSHOT.jar -i Install id

Das Programm startet und der Client Prompt erscheint. Mit dem Kommando: led off „geht“ die Lampe des Karotz aus.

Hier das Log: „Java Api für den Karotz“ weiterlesen

Welche Java Version gibt es für Mac OS X?

Eine gute Liste der Java Versionen gibt es hier. Oder das Orginal von Apple mit Java Code zur ermittlung der Version.

Die Java Version kann man im Terminal wie folgt ermitteln:


java -version

Es wird dann z.B. geliefert:

java version "1.6.0_29" Java(TM) SE Runtime Environment (build 1.6.0_29-b11-402-11D50)
Java HotSpot(TM) 64-Bit Server VM (build 20.4-b02-402, mixed mode)

Umlaute in Java Programmen

Damit die Umlaute nicht nur auf Windows sondern auch auf dem Mac OS X richtig dargestellt werden, müssen sie als Unicode angegeben werden.


Zeichen Unicode
------------------------------
Ä, ä \u00c4, \u00e4
Ö, ö \u00d6, \u00f6
Ü, ü \u00dc, \u00fc
ß \u00df

JDK 7 „Diamanten sind für immer“

In Java 7 gibt es jetzt den „diamond Operator“. Nun müssen bei generics keine Typen doppelt deklariert werden.

Hier ein Beispiel vorher und nachher:

List<Integer> liste = new ArrayList<Integer>(); // vor JRE 7

List<Integer> diamantListe = new ArrayList<>(); // ab JRE 7, ja Diamonds are forever

Java 7 ist DA!

So, jetzt ist Java 7 da. Was braucht man zum ausprobieren?

Eine Eclipse Version die Java 7 unterstützt. Das geht noch nicht mit Helios. Deshalb einen „Nightly Build“ herunterladen.
Dann über Update neue Software über diese URL den JDK 7 patch herunterladen.

Was dann noch fehlt ist das JDK 7 von Oracle.

In den Projekt Einstellungen unter Java Compiler die 1.7 auswählen und nun der erste Test.

In Java 1.7 sind jetzt Unterstriche (_) in Literalen möglich, um besser zu gliedern z.B.

Das Ergebnis:
Telefonnummer 1: 11223344
Telefonnummer 2: 1122.33

Weitere Neuerungen mit Beispielen wie „String in switch“ kommen hier dann demnächst.

Eclipse 3.7 da!

Ab jetzt gibt es eine neue Eclipse 3.7 Version genannt Indigo. Mal sehen was es neues gibt. Download über die Eclipse Seite.

Habe das Java Package geladen, und das erste Projekt ins Git Repo geschoben.
Die Home Variable war nicht gesetzt auf das User Verzeichnis, dann lief es.
Hier die EGit-Anleitung.

Maven, da musste ich in den Settings auch die setting.xml setzen, und im Pom einige Goals auskommentiern, da sie mit der neuen Version nicht zusammen passen.

Das Explorer-Plugin läuft auch unter Indigo, super.

Indigo scheint auch schneller zu laufen 🙂

Bedingungen einkapseln

Da boolesche Logik auf den ersten Blick schwer lesbar und zu verstehen ist,

können (sollten) Funktionen extrahiert werden um eine bessere Lesbarkeit zu erhalten.

Z.B.

if (sollGeloeschtWerden(timer)){…

ist besser als:

if (timer.isGueltige() && !timer.isAktuell() || timer > heute){…

Keine negativen Bedingungen verwenden

In if Abfragen verwendete Bedingungen immer positiv formulieren. Das ist besser zu verstehen.

Z.B.
if ( speicher.isLeer() )

ist besser als
if (!speicher.isNichtLeer() )
da pos. formuliert.

Also müsste die Überschrift „Positive Bedingungen verwenden“ heißen. Das wird dann mal später mal geändert. So heißt es immer, und bleibt für immer 😉