Java Objekte können leicht nach Json serialisiert und deserialisiert werden mit Gson.
Es braucht nur eine Abhängigkeit in der pom.xml ergänzt zu werden.
Das Beispiel: „Java to Json Beispiel mit Gson“ weiterlesen

Wenzlaff.de – Rund um die Programmierung
mit Java, Raspberry Pi, SDR, Linux, Arduino, Sicherheit, Blender, KI, Statistik, Krypto und Blockchain
Java Objekte können leicht nach Json serialisiert und deserialisiert werden mit Gson.
Es braucht nur eine Abhängigkeit in der pom.xml ergänzt zu werden.
Das Beispiel: „Java to Json Beispiel mit Gson“ weiterlesen
Meistens erzeugt man Objekte in Java mit new. Es gibt aber noch ein paar andere Möglichkeiten.
Wir haben diese Farbe Testklasse:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
package de.wenzlaff.mqtt.client; import java.io.Serializable; /** * Farben Klasse. * * @author Thomas Wenzlaff * */ public class Farbe implements Cloneable, Serializable { private static final long serialVersionUID = 8660877851154300583L; private String farbe = "rot"; public Farbe() { System.out.println("Konstruktor aufruf"); } public String getFarbe() { return farbe; } public void setFarbe(String farbe) { this.farbe = farbe; } @Override public String toString() { return "Farbe: " + farbe + " mit HashCode=" + hashCode() + "\n"; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((farbe == null) ? 0 : farbe.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Farbe other = (Farbe) obj; if (farbe == null) { if (other.farbe != null) return false; } else if (!farbe.equals(other.farbe)) return false; return true; } @Override protected Object clone() throws CloneNotSupportedException { return super.clone(); } } |
und haben diese Möglichkeiten Objekte zu erzeugen. „Welche Möglichkeiten der Java Objekt-Erzeugung gibt es?“ weiterlesen
Fussball? Wie kann man per Java einen MQTT Client mit Paho schreiben, der z.B. die Anzahl Flugzeuge in Hannover anzeigt? Und das innerhalb der ersten Halbzeit, da nur 2 Klassen benötigt werden.
Mein Raspberry Pi sendet an den öffentlichen Testserver test.mosquitto.org unter den Topic /Anzahl/Flugzeuge/Hannover alle 5 Minuten die aktuelle Anzahl, so das dieses Beispiel jeder nachvollziehen kann.
Hier die Architektur:
Wir brauchen zuerst ein Eclipse Maven Projekt mit Java 1.8 mit dieser pom.xml und einen Eintrag des Paho Repo, da es in Maven Central nicht vorhanden ist: „Besser als Fussball: MQTT Java Client mit Paho“ weiterlesen
In Java 1.8 gibt es einen neue schöne static join Methode, es braucht nur ein Begrenzer angegeben zu werden und schon wird ein schöner String zusammengebaut.
Hier mal ein kleines Beispiel:
Was für neue schönen Methoden hast Du entdeckt?
In Java 1.8 gibt es das neue Schlüsselwort default. In Eclipse Neon wird dies auch unterstüzt.
So kann eine default Methode in einen interface erstellt werden:
Sie kann dann so verwendet werden:
In Eclipse ist sie an dem kleinen D erkennbar. Die default implementierung kann auch vererbt werden.
Manchmal möchte man Ereignisse mit Java zeitgesteuert oder wiederholt ausführen. Das geht auch mit Java Mitteln. Die bekannte java.util.Timer Klasse kann schon was. Der Open Source Framework Quartz hat ua. aber diese Vorteile:
Quartz ist ein kleiner Framework der nur quartz-x.y.z.jar im Classpath benögigt (inkl. log sl4j-api.jar, und c3p0.jar). Er kann Standalone oder im Server als J2EE Anwendung verwendet werden. Die wichtigsten drei Klassen sind Task/Job, Trigger und der Listener.
Sie spielen so zusammen:
Wie kann ein Timer in Java mit Quartz erstellt werden? „Wie kann ein Timer in Java mit Quartz erstellt werden?“ weiterlesen
Mit Java ist es nicht schwer, einen REST Client zu erstellen. Das geht mit Jersey und JDom in 3 Zeilen.
Hier nun mal ein Beispiel.
Die Anzahl der Flugzeuge in Hannover wird von mir mit einem Raspberry Pi empfangen und an thingspeak gesendet.

Diese Daten kann jeder leicht abfragen. „Anzahl der Flugzeuge mit 3 Zeilen Java Code ausgeben via REST API mit Jersey und JDom 2.0“ weiterlesen
Oft verwendet man java -version aber warum nicht mal
|
1 |
java -XshowSetting |
um noch mehr Infos zu bekommen?
Default wird für EString eine Länge von 255 Zeichen verwendet. Wie kann die Spalte nun vergrößert werden wenn ein:
Error Code: 1406. Data too long for column … at row …
kommt?
Einfach das Annotationsmodel um diesen Eintrag ergänzen:

Dann das Modell einmal neu generieren, schon ist die Spalte wie gewünscht annotiert:
|
1 2 3 4 5 6 7 8 |
/** * <!-- begin-user-doc --> <!-- end-user-doc --> * * @generated */ @Basic() @Column(length = 1024) private String behandlungen = null; |
Will man Java Programme ausliefern, benötigt man auf einem Apple ein dmg Archive. Das kann wie folgt erstellt werden.
In der pom.xml folgendes Plugin einfügen:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<plugin> <groupId>sh.tak.appbundler</groupId> <artifactId>appbundle-maven-plugin</artifactId> <version>1.0.2</version> <configuration> <mainClass>de.wenzlaff.xmltransform.StartGui</mainClass> <iconFile>${basedir}/src/main/resources/tw.icns</iconFile> </configuration> <executions> <execution> <phase>package</phase> <goals> <goal>bundle</goal> </goals> </execution> </executions> </plugin> |
Die Main Klasse mit der Klasse ersetzen, die gestartet werden soll. Auch der Pfad zum Icon anpassen. Evl. noch eine eigene plist setzen mit:
|
1 |
<dictionaryFile>YourCustomInfo.plist</dictionaryFile> |
Dann das Maven Goal mvn package appbundle:bundle ausführen

und in das target Verzeichnis mit einer Konsole gehen und folgenden Befehl mit hdiutil ausführen:
|
1 2 |
# hdiutil create -srcfolder path/to/archive path/to/YourApplication.dmg z.B.: hdiutil create -srcfolder twcsvtocsv.app/ TW.dmg |
Schon wird das TW.dmg Archive im target Verzeichnis erzeugt. Wer das auch noch als Maven Task automatisieren möchte, trägt noch folgendes ein:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
<plugin> <artifactId>exec-maven-plugin</artifactId> <groupId>org.codehaus.mojo</groupId> <executions> <execution> <id>dmg-distro</id> <phase>package</phase> <goals> <goal>exec</goal> </goals> <configuration> <executable>/usr/bin/hdiutil</executable> <arguments> <argument>create</argument> <argument>-srcfolder</argument> <argument>target/${project.artifactId}-${project.version}</argument> <argument>-format</argument> <argument>UDZO</argument> <argument>-volname</argument> <argument>${project.artifactId}-${project.version}</argument> <argument>target/${project.artifactId}-${project.version}.dmg</argument> </arguments> </configuration> </execution> </executions> </plugin> |
Als Alternative könnte man auch das osxappbundle-maven-plugin verwenden. Das hat Abhängigkeiten zu Apple’s Java launcher, und ist nicht für Java Version 7 und größer.
Aber wer will, kann dann das als Alternative eintragen:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>osxappbundle-maven-plugin</artifactId> <version>1.0-alpha-2</version> <configuration> <mainClass>de.wenzlaff.xmltransform.StartGui</mainClass> <iconFile>${basedir}/src/main/resources/tw.icns</iconFile> </configuration> <executions> <execution> <goals> <goal>bundle</goal> </goals> </execution> </executions> </plugin> |
Wer eine MySQL Datenbank auf seinen Rechner installieren will, muss sich die Packages die zu installieren sind, auf der MySQL Homepage zusammen suchen.
Folgende drei Komponenten müssen für Mac OS X geladen und installiert werden (für Windows analog):
1. MySQL Community Server 5.6.24 von https://dev.mysql.com/downloads/mysql/
Für den Mac OS X 10.9 (x86, 64-bit), DMG Archive 5.6.24 167.6M mysql-5.6.24-osx10.9-x86_64.dmg. Installation.
2. MySQL Workbench 6.3.3 von http://dev.mysql.com/downloads/workbench/
mysql-workbench-community-6.3.3-osx-x86_64.dmg. Installation.
Die Workbench kann dann aus dem Programm Verzeichnis über das folgende Programm-Icon gestartet werden:

3. Connector/J 5.0.8 für Java für alle Betriebsysteme von https://dev.mysql.com/downloads/connector/j/5.0.html
Download mysql-connector-java-5.0.8.zip und z.B. in das Verzeichnis
/usr/local/mysql-5.6.24-osx10.8-x86_64/mysql-connector-java-5.0.8.jar kopieren.
Wenn alles installiert wurde, kann der DB Server über die Systemsteuerung mit dem MySQL Icon unten rechts gestartet werden:
„Wie kann eine MySQL Datenbank auf einem Mac OS X 10.10.3 (Yosemite) (Windows …) installiert werden, um mit Java von Eclipse (Java EE Luna 4.4.2) aus darauf zuzugreifen?“ weiterlesen
Um die Pins per Bash anzusteuern, kann die wiringpi Lib verwendet werden. Die GPIO Homepage oder auch die Pin Belegung des rPi ist hilfreich.
So, jetzt erst einmal alles installieren und testen mit einer LED mit Widerstand an Pin 7 (4. Pin von oben links) und Masse (ganz unten links).
Zuerst alles für die Bash, um von der Konsole auf die Pins zugreifen zu können: „Raspberry Pi: Per Bash mit GPIO Lib wiringpi, per Phyton mit RPi.GPIO und Java mit pi4j ansteuern der Pins auf Kali“ weiterlesen
Java 1.8 gibt es ja nun schon einige Zeit. Warum nicht die neue Time API verwenden?
Vorteil, die meisten Time und Date Klassen sind immutable und thread-safe. Z.B die LocalDateTime, LocalDate und DateTimeFormatter.
Hier mal ein Beispiel, um einen Zeitstempel in der Form 2014-01-31_15:12:00 zu erzeugen:
|
1 2 3 4 5 |
import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; private static final DateTimeFormatter ZEITSTEMPEL_FORMAT = DateTimeFormatter.ofPattern("yyyy-MM-dd_HH:mm:ss"); |
|
1 2 3 4 5 6 |
private static String getZeitstempel() { // 2014-01-31_15:12:00 LocalDateTime heute = LocalDateTime.now(); String zeitstempel = ZEITSTEMPEL_FORMAT.format(heute); return zeitstempel; } |
Wie kann mit der neuen Java 1.8 Time Api einmal am Tag um Mitternacht ein Ereignis erzeugt werden? Natürlich geht auch jeder andere Zeitpunkt, aber hier mal das Beispiel um Mitternacht:
|
1 2 3 4 5 6 |
// Plant die Ausführungen ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); // einmal am Tag um Mitternacht Long mitternacht = LocalDateTime.now().until(LocalDate.now().plusDays(1).atStartOfDay(), ChronoUnit.MINUTES); // und los.. scheduler.scheduleAtFixedRate(new AnzahlProTagAction(flugInfosProTag, parameter), mitternacht, 1440, TimeUnit.MINUTES); |
Hier die Beispiel Klasse.
Wichtig ist das sie von TimerTask ableitet und die run() Methode überschreibt.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
public class AnzahlProTagAction extends TimerTask { private Parameter parameter; private FlugInfosProTag flugInfosProTag; public AnzahlProTagAction(FlugInfosProTag flugInfosProTag, Parameter parameter) { this.flugInfosProTag = flugInfosProTag; this.parameter = parameter; } @Override public void run() { // hier der auszuführende Code } } |

Quelle: Tiobe Index
Habe soeben die 1. Version von dem DUMP1090 Client TWFlug kostenlos 
veröffentlicht.
TWFlug liest die Daten von einem DUMP1090 Server und zeigt sie (optional) in einem Tacho an oder/und schreibt die Daten in eine Logdatei für die Auswertung mit z.B. Fhem. Es kann die Logdatei auch per sFTP an einen entfernten Rechner kopieren.
Das TWFlug Programm ist ein Java Programm und läuft somit auf allen Betriebssystem. Es können mit Fhem dann solche schönen Grafiken in Echtzeit angezeigt werden:

Installation:
Download der twflug-0.1.0.zip.
Dann das Archive auspacken.
Für das Starten gibt es zwei Möglichkeiten mit oder ohne GUI.
Ohne GUI mit Eingabe in der Konsole in dem TWFlug Verzeichnis mit:
|
1 |
java -jar twflug.jar -n --ip IP-VOM-DUMP1090-Server |
also z.B. java -jar twflug.jar -n --ip 192.198.1.2
oder mit GUI
|
1 |
java -jar twflug.jar --ip IP-VOM-DUMP1090-Server |
also z.B. java -jar twflug.jar --ip 192.198.1.2
Dann startet nach einigen Sekunden, die folgenden Anzeige von TWFlug:

Weiter Infos zu den Parametern erhält man durch Eingabe von
|
1 |
java -jar twflug.jar --help |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
[main] DEBUG de.wenzlaff.twflug.TWFlug - Starte TWFlug ... usage: TWFlug -c,--copy-time <arg> copy time in Minuten (default: 60 Minuten) -d,--debug print debugging information (default: false) -dd,--ziel-datei <ziel-datei> destination file name (default: /home/pi/fhem/log/flugdaten-YYYY-MM.log) -dip,--ziel-ip <arg> ip adress for copy destination -dpsw,--ziel-passwort <arg> passwort from destination User -duser,--ziel-user <arg> destination User (default: pi -h,--help print help and exit -height,--window-height <arg> set window hight (default: 600) -i,--ip ip adress from DUMP1090 -k,--copy copy output file to destination (default: false) -max,--max-count <arg> set max count value (default: 50) -min,--min-count <arg> set min count value (default: 0) -n,--no-gui display no GUI. Only logfile output (default: false) -o,--outputfile <outputfile> use given file for DUMP output (default: flugdaten-YYYY-MM.log) -p,--port <arg> port from DUMP1090 (default: 30003) -r,--refresh-time <arg> refresh time in ms (default: 300000 ms = 5 Minuten) -v,--version print the version information and exit -width,--window-width <arg> set window with (default: 600) |
Weitere Anregungen, Bugs, Fix, Likes, Lob und Dank gerne als Kommentar hier auf der Seite.
Viel Spaß beim Planecounting.
Da bei mir ein Fhem Home-Server läuft, hatte ich die Idee, dort doch gleich die Flugdaten die von den Flugzeugtranspondern ausgesendet werden schön graphisch in Echtzeit anzuzeigen.
Also wie kann eine Grafik in Fhem erstellt werden, die die aktuelle Anzahl der gerade empfangenen Flugzeuge anzeigt.
Hier das Ergebniss, wo man deutlich sehen kann, das heute bis ca. 6 Uhr nur ca. 10 Flugzeuge flogen. Dann steigt der Flugverkehr rapide an:

Wie kann nun so eine Grafik, die sich automatisch aktualisiert erstellt werden.
Zuerst einmal die Architektur als BPMN 2.0 Diagramm:

Es werden zwei Raspberry Pi benötigt. Auf dem einen läuft der DUMP1090 Server mit der TWFlug Anwendung unter Java 1.8. Die TWFlug Anwendung läuft ohne Gui, und schreibt alle 5 Minuten die Anzahl der empfangenen Flugzeuge in eine Datei. Diese Datei wird dann jede halbe Stunde per sFTP an den anderen Raspberry Pi gesendet und von Fhem eingelesen und als Grafik ausgegeben.
TWFlug kann auch mit Gui auf einen Rechner gestartet werden und gibt dann als Tacho die Anzahl der Flugzeuge aus.

Das nötige GPlot Script:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
/* myFlug.gplot Version 1.0 vom 17.12.2014 Dieses GNU-Plot Script zeigt die Flugdaten von den empfangenen Transpondern an. Copyright (C) 2014 Thomas Wenzlaff http://www.wenzlaff.de This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see {http://www.gnu.org/licenses/}. */ # Die Logdatei sieht wie folgt aus: # 2014-12-05_07:05:58 flugdaten anzahl:29 # 2014-12-05_07:10:58 flugdaten anzahl:23 set terminal png transparent size <SIZE> crop set output '<OUT>.png' set xdata time set timefmt "%Y-%m-%d_%H:%M:%S" set xlabel " " set title 'Empfangene Flugzeuge' set ytics set y2tics set grid ytics y2tics set ylabel "Anzahl Flugzeuge" set y2label "Anzahl Flugzeuge" #FileLog 4:flugdaten anzahl:0: plot "<IN>" using 1:2 axes x1y2 title 'Anzahl Flugzeuge' ls l0 lw 2 with lines |
TWFlug schreibt die Daten in eine Logdatei mit folgenden Format, z.B.:
|
1 2 3 4 5 6 7 |
2014-12-17_17:31:08 flugdaten anzahl: 39 2014-12-17_17:36:08 flugdaten anzahl: 49 2014-12-17_17:41:08 flugdaten anzahl: 36 2014-12-17_17:46:08 flugdaten anzahl: 34 2014-12-17_17:51:08 flugdaten anzahl: 36 2014-12-17_17:56:08 flugdaten anzahl: 42 2014-12-17_18:01:08 flugdaten anzahl: 41 |
TWFlug kennt bisher die folgenden Parameter:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
usage: TWFlug -c,--copy-time <arg> copy time in Minuten (default: 60 Minuten) -d,--dest-file <ziel-datei> destination file name (default: /home/pi/fhem/log/flugdaten-YYYY-MM.log) -h,--help print help and exit -height,--window-height <arg> set window hight (default: 600) -i,--ip ip adress from DUMP1090 (default: 0.0.0.0) -ip,--ziel-ip <arg> ip adress for copy destination (default: pi-home) -k,--copy copy output file to destination (default: false) -max,--max-count <arg> set max count value (default: 50) -min,--min-count <arg> set min count value (default: 0) -n,--no-gui display no GUI. Only logfile output (default: false) -o,--outputfile <file> use given file for DUMP output (default: flugdaten-YYYY-MM.log) -p,--port <arg> port from DUMP1090 (default: 30003) -psw,--ziel-passwort <arg> passwort from destination User -r,--refresh-time <arg> refresh time in ms (default: 300000 ms = 5 Minuten) -user,--ziel-user <arg> destination User (default: pi -v,--version print the version information and exit -width,--window-width <arg> set window with (default: 600) |
Welche fehlen noch?
Hinweise zu TWFlug
und DUMP1090 können auf diesem Blog gefunden werden.
Nach über 2 Jahren ist nun eine neue Version von JUnit veröffentlicht worden. Die Releasenotes sind auf Github zu finden. In folgenden Bereichen gab es Ergänzungen:
Ok, dann mal gleich das aktuelle Maven Projekt TWFlug auf die neue Version 4.12 angepasst:
|
1 2 3 4 5 6 7 8 9 10 |
<properties> <junit.version>4.12</junit.version> </properties> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> |
Mehr über JUnit oder drei Gründe warum man keine JUnit-Tests schreiben sollte.
Wie kann OpenHab und eine Demo-Anwendung auf einem Raspberry Pi (Debian) installiert werden?
OpenHab läuft auch auf einem Raspberry Pi. Auf Wikipedia gibt es einen kurzen Überblick zu OpenHab.
Um erste Erfahrungen mit OpenHab zu machen, kann man die Demo Anwendung von OpenHab installieren. Als Basis dient die aktuelle Debian 7.6 Version, auf der schon Java installiert ist.
1. Zuerst checken ob Java installiert ist und läuft mit:
|
1 |
java -version |
Ausgabe:
|
1 2 3 |
java version "1.8.0" Java(TM) SE Runtime Environment (build 1.8.0-b132) Java HotSpot(TM) Client VM (build 25.0-b70, mixed mode) |
2.Verzeichnis anlegen
|
1 2 |
mkdir OpenHab cd OpenHab |
3. Von hier die https://openhab.ci.cloudbees.com/job/openHAB/
die aktuelle Version 1.6.0 laden und auspacken (erst die runtime und später die demo)
|
1 2 3 4 5 6 7 |
wget https://openhab.ci.cloudbees.com/job/openHAB/lastSuccessfulBuild/artifact/distribution/target/distribution-1.6.0-SNAPSHOT-runtime.zip # Archiv auspacken unzip distribution-1.6.0-SNAPSHOT-runtime.zip # Optional: Archiv löschen rm distribution-1.6.0-SNAPSHOT-runtime.zip |
4. Usermod für User pi setzen und default openhab.cfg erstellen
|
1 2 3 4 5 6 |
sudo usermod -a -G dialout pi # Konfigdatei erstellen, alle default Einstellungen cd /configurations cp openhab_default.cfg openhab.cfg cd .. |
5. Demo zip laden uns auspacken (eine Readme Datei wird evl. überschrieben)
|
1 2 3 4 5 6 7 |
wget https://openhab.ci.cloudbees.com/job/openHAB/lastSuccessfulBuild/artifact/distribution/target/distribution-1.6.0-SNAPSHOT-demo.zip # Demo Anwendung auspacken unzip distribution-1.6.0-SNAPSHOT-demo.zip # Optional: Archive löschen rm distribution-1.6.0-SNAPSHOT-demo.zip |
6. Starten von OpenHab und im Browser aufrufen (ip anpassen)
|
1 |
./start.sh |
Dann im Browser die folgende URL der Demo Anwendung aufrufen:
|
1 |
http://raspberry-ip:8080/openhab.app?sitemap=demo |
Hier nun einige Fotos, von der Demoanwendung:

Wie nutzt Ihr OpenHab?
Hallo,
soeben ist Eclipse 4.4 Luna erschienen.

Auf die Download-Seite gehen und installieren.
Folgende Plugins sind noch für mich nötig:
Wie in Blogeintrag installieren.
Dieses Jar den Classpath hinzufügen:


Wie hier beschrieben installieren.

Wie hier beschrieben installieren.

Wie hier beschrieben installieren.

Wie hier beschrieben installieren.

Wie hier beschrieben einfach die Kepler Update URL nehmen, die „geht“ auch mit Luna:
http://camunda.org/release/camunda-modeler/update-sites/kepler/latest/site/ die geht, habe es eben mit einem Diagramm validiert:


Welche Plugins sind für Euch essentiell? Bitte als Kommentar.
Wenn wir diese Java Klasse compilieren und ausführen:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
public class RaetselDesMonats { private static final String HALLO_WELT = "Hallo Welt!"; public static void main(String[] args) throws Exception { wieSiehtDieMethodeAus(); String welt = "Hallo Welt!"; System.out.println(welt); System.out.println("Hallo Welt!"); System.out.println(HALLO_WELT); } private static void wieSiehtDieMethodeAus() throws Exception { // nur hier Anpassungen möglich } } |
Welche Lösung bzw. Aussage ist richtig?
1. Es wird immer folgende Ausgabe gemacht, egal was in der wieSiehtDieMethodeAus()
ergänzt wird:
Hallo Welt!
Hallo Welt!
Hallo Welt!
2. Es wird „nichts“ ausgegeben.
3. Es wird Hallo Welt! ausgegeben
4. Es kann durch Anpassung, nur in der Methode wieSiehtDieMethodeAus() folgende Ausgabe erzeugt werden?
Was in Java alles geht!
Was in Java alles geht!
Was in Java alles geht!
Dein Vorschlag in Form von 1,2,3 oder 4 bitte posten. Nur Mut!
Hier nun die Lösung:
„Java Rätsel des Monats“ weiterlesen
Eclipse kann auch in 45 Sprachen und auch auf deutsch umgestellt werden. Es gibt da ein Projekt Babel Language Packs. Habe es mal testweise auf deutsch umgestellt.
Ist in deutsch zu 89 % übersetzt.
Nach restart einmal schauen, und dann gleich wieder zurück auf englisch 😉
Zuerst das System des Raspberry Pi updaten und neu starten mit:
|
1 2 3 4 5 6 |
sudo apt-get update sudo apt-get upgrade sudo apt-get clean sudo rpi-update sudo ldconfig sudo reboot |
Schauen, welche Version jetzt installiert ist mit java -version:
|
1 2 3 |
java version "1.6.0_27" OpenJDK Runtime Environment (IcedTea6 1.12.6) (6b27-1.12.6-1~deb7u1+rpi1) OpenJDK Zero VM (build 20.0-b12, mixed mode) |
Entweder über den den Packetmanager:
|
1 |
sudo apt-get update && sudo apt-get install oracle-java8-jdk |
oder per Hand, dann so:
Dann das JDK 1.8 von der Oracle Seite downloaden. Die Seite wurde nach hier verschoben. Es wird die Linux ARM v6/v7 Hard Float ABI Version mit 83 MB benötigt.

In das Download Verzeichnis wechseln und mit scp die Datei auf den rPi kopieren z.B.:
|
1 |
scp jdk-8-linux-arm-vfp-hflt.tar.gz root@192.0.0.0:/root |
Dann in den rPi wechseln und und das Archive in das /opt Verzeichnis entpacken, das dauert ein paar Minuten:
|
1 |
sudo tar zxvf jdk-8-linux-arm-vfp-hflt.tar.gz -C /opt |
Nun Java aktivieren und das Archive löschen mit:
|
1 2 3 4 5 |
sudo update-alternatives --install /usr/bin/javac javac /opt/jdk1.8.0_33/bin/javac 1 sudo update-alternatives --install /usr/bin/java java /opt/jdk1.8.0_0_33/bin/java 1 rm jdk-8-linux-arm-vfp-hflt.tar.gz sudo update-alternatives --config javac # Auswahl 1 für Version 1.8 eingeben |

sudo update-alternatives --config java
# Auswahl 1 für Version 1.8 eingeben

Und checken ob es geklappt hat mit java -version ergibt nun:
|
1 2 3 |
java version "1.8.0" Java(TM) SE Runtime Environment (build 1.8.0-b132) Java HotSpot(TM) Client VM (build 25.0-b70, mixed mode) |
Java 1.8.0 ist nun erfolgreich installiert.
1. Download eines Image von . Z.b. das 2014-09-09-wheezy-raspbian.zip Archiv. Das zip Archiv entpacken.
2. SD Karte (z.B. 8 GB) in einstecken und ermitteln welches Device es am Rechner ist unter Apple Menu –> Über diesen Mac –> Weitere Informationen… –> Systembericht –> Hardware ->USB –> Unter USB Hochgeschwindigkeits-Bus / Hub / Integrierter Speicherkartenleser dann die Info unter BSD-Name:
In meinem Fall ist es: disk3
Oder mit diskutil list schauen.
3. sudo diskutil unmount /dev/disk3s1
4. sudo dd if=Downloads/2014-09-09-wheezy-raspbian.img of=/dev/disk3 bs=1m
Jetz ca. 60 min warten bis die Meldung
2825+0 records in
2825+0 records out
2962227200 bytes transferred in 2020.681419 secs (1465955 bytes/sec)
kommt. Dann kann die Karte ausgeworfen und in den Raspberry Pi gesteckt werden.
5. Netzwerkkabel anschließen und Strom anschalten.
Per ssh pi@10.1.1.1 (Adresse anpassen)
und Passwort: raspberry im Terminal anmelden.
6. Auf dem Prompt raspi-config eingeben und Konfigurieren der Sprache (de_DE.ISO-8859-15@euro), Erweiterten Speicher, SSH Server, neues Passwort und auf neueste Version updaten. Restart. Alles über diese schöne GUI:

7. Und testen ob Java installiert ist mit java -version, JA sogar die Version 1.8:

8. Und System noch updaten mit:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get clean
# Firmware update
sudo rpi-update
sudo ldconfig
sudo reboot
Das Java Magazin Ausgabe 9-2013 ist jetzt am Kiosk nicht mehr erhältlich erhältlich. Die Ausgabe kann aber noch Online nachbestellt werden.
Das Magazin erscheint in einer Auflage von ca. 20000 Exemplaren und ist damit das am weitesten verbreitet Magazin zum Thema JAVA.
In der Ausgabe findet Ihr einen Artikel vom mir zum Thema „Ansteuerung von USB-Schnittstellen via javahidapi mit Java“ inkl. einem Eclipse Beispielprojekt.
Hier ein Foto meines Belegexemplares:

Wie findet Ihr den Artikel? Würde mich über Feedback freuen.
Das Java Magazin Ausgabe 9-2013 ist jetzt überall erhältlich (Inhalt). Das Magazin erscheint in einer Auflage von ca. 20000 Exemplaren und ist das am weitesten verbreitet Magazin für JAVA.
In der Ausgabe findet Ihr einen Artikel vom mir zum Thema „Ansteuerung von USB-Schnittstellen via javahidapi mit Java“ inkl. einem Eclipse Beispielprojekt zum downloaden.
Hier ein Foto meines Belegexemplares:

Wie findet Ihr den Artikel? Würde mich über Feedback freuen.