Es gibt jetzt eine neue Version von
TWNcid und auch von der Java Schnittstelle. Hat jemand diese Schnittstelle schon in Verwendung?
Bei Heise auf Download Rang 529.
mit Java, Raspberry Pi, SDR, Linux, Arduino, Sicherheit, Blender, Krypto und Blockchain
Es gibt jetzt eine neue Version von
TWNcid und auch von der Java Schnittstelle. Hat jemand diese Schnittstelle schon in Verwendung?
Bei Heise auf Download Rang 529.
Um einen neuen Thread zu starten der ein Ergebniss asynchron liefert, gibt es seit Java 1.5 die Schnittstelle Callable
.
Was muss getan werden?
-Die Klasse mit dem Ergebniss muss Callable
implementieren und V call() throws Exception
überschreiben.
-Evl. im Konstruktor der Ergebniss Klasse Parameter mitgeben.
-Dann den Excecutor anlegen ExecutorService executor = Executors.newCachedThreadPool();
-Einen neuen Überwachungs Thread starten mit Future> erg = executor.submit(ergebnisKlasse)
.
Würde man Future> erg = executor.submit(u).get()
verwenden würde eine synchrone abarbeitung des Threads erfolgen. Das heißt es würde die weitere Bearbeitung solange geblockt, bis der Thread fertig ist.
-Mit erg.get(1, TimeUnit.SECONDS)
wird das Ergebnis des Threads geliefert oder aber wenn die angegebenen Zeit abgelaufen ist wird
eine TimeoutException
geworfen.
-Mit erg.isDone()
kann abgefragt werden ob der Thread fertig ist oder nicht
In der String Klasse gibt es eine Fassaden Funktion matches
die nur die statische Funktion Pattern.matches
aufruft. Es kann so leicht mit regulären Ausdrücken mit Strings gearbeitet werden. Ein Beispiel:
String i = „Wer den Schaden hat, braucht für den Spott nicht zu sorgen“;
System.out.println(i.matches(„.*Schaden.*“));
Was wird ausgegeben? „regulärer Ausdruck mit String.matches“ weiterlesen
3.0 erschienen.
Gem. Joshua Bloch „If in doubt, leave it out!“.
Das heißt soviel wie, nur Methoden in eine API aufnehmen, von denen man sicher ist, dass sie auch benötigt werden. Methoden für die man kein verwender hat, sollte man nicht mit aufnehmen. Den Neues kann man leicht
hinzufügen, Bestehendes aber nicht so leicht verändert oder entfernen. Also sich auf das konzentrieren, was
in den Anforderungen gebraucht wird. Sonst wird das System unnötig komplex.
Siehe diesen Video bei ca. 24 min.
Das einzig seltsame an generischen Methoden ist, das die Type Variable (hier T) vor dem return Typ der Methode deklariert werden muss.
Hier ein Beispiel mit der getKlassenname Methode, die für alle Objekte den Klassennamen als String zurück gibt.
public class GenericMethods {
public static < T > String getKlassenname(T t) {
return t.getClass().getName();
}public static void main(String[] args) {
System.out.println(GenericMethods.getKlassenname(new Integer(1)));
System.out.println(GenericMethods.getKlassenname("String"));
System.out.println(GenericMethods.getKlassenname(new ArrayList
()));
}
}
Wie sieht das Ergebnis aus? „Generische Methoden“ weiterlesen
Auch wer sich nicht das aktuelle Javamagazin 9/10 geholt hat, kann jetzt auf der Seite des Javamagazins unter Quellcodes:
http://it-republik.de/jaxenter/java-magazin-ausgaben/Tomcat-7-000409.html den Java Code für einen Client und Server kostenlos laden und lokal ausprobieren (ist natürlich auf auf der beiligenden CD-ROM drauf).
Läuft auch ohne AVR-NET-IO Board.
Heute mal ein kleines Java Quiz. Schaut Euch mal diese AussenKlasse an, die eine innere Klasse (Innen) in einer Methode definiert hat:
public class AussenKlasse {
private final String aussenVar = "aussenVar";
public void aussenMethode() {
final String innenMethodeVar = "innenMethodeVar";
class Innen {
private final String innenVar = "innenVar";
public Innen() {
printInnen();
}
public void printInnen() {
System.out.println("aussenVar=" + aussenVar);
System.out.println("innenMethodeVar=" + innenMethodeVar);
System.out.println("innenVar=" + innenVar);
}
}
new Innen();
}
public static void main(String[] args) {
AussenKlasse a = new AussenKlasse();
a.aussenMethode();
}
}
Was ist richtig?
1. Die Klasse läßt sich nicht compilieren, da Klassen nicht in Methoden definiert werden dürfen.
2. Es gibt eine ClassCastException.
3. Es wird die printInnnen Methode ausgeführt.
4. Es wird folgendes auf System.out ausgegeben:
aussenVar=aussenVar
innenMethodeVar=innenMethodeVar
innenVar=innenVar
5. Es wird folgendes auf System.out ausgegeben:
aussenVar=
innenMethodeVar=innenMethodeVar
innenVar=innenVar
6. Es gibt eine NullPointerException
Lösung: „Java Quiz“ weiterlesen
Im aktuellen Java Magazin 9.2010 habe ich einen Artikel über die Java-Netzwerkprogrammierung mit dem AVR-NET-IO-Board veröffentlicht.
Auf der beiligenden CD-Rom oder im Download-Bereich kann ein Java Emulator geladen werden. So können Java Programme auch ohne das AVR-NET-IO-Board getestet werden.
Wieviel soll ein Software-Entwickler lesen?
„Wir schlagen daher vor, pro Jahr wenigstens 6 Fachbücher zu lesen. Ferner sollten Periodika regelmäßig gelesen werden und darunter verstehen wir neben Fachzeitschriften auch Blogs.“
Quelle: www.clean-code-developer.de
Was ist richtig?
...
String testString = testobjekt.getTestwertAlsString();
// a:
assertEquals("expected", testString);
// oder
// b:
assertEquals(testString, "expected");
„JUnit – assertEquals“ weiterlesen
Um den XML Stream in lesbare Form zu formatieren,
muss nur das folgende Property gesetzt werde
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
Beim serialisieren von Objekten mit JAXB 2.0 in XML muss das Encoding gesetzt werden, sonst fehlen
die deutschen Umlaute. Dies geht so:
JAXBContext ctx = JAXBContext.newInstance(new Class[] { Exporter.class });
Marshaller marshaller = ctx.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_ENCODING, "ISO-8859-1");
marshaller.marshal(this, new FileWriter(file));
und es gibt auch eine free Java Api „TWNcid 0.2.0 fast unter den TOP 100 bei CT mit Java API“ weiterlesen
Was wird hier ausgegeben?
int dreizehn = 013;
int hundert = 100;
System.out.println(dreizehn + hundert); „Java und Rechnen“ weiterlesen
Jetzt neue Version 0.1.2 veröffentlicht mit Datei export im TXT und XML Format „Ncid Java Client für Easy-Box 802 von Vodafon“ weiterlesen
Heute ein kleiner Test. Was gibt folgender Code aus?
String text = "Ich habe ";
text.concat("Hunger!");
System.out.println(text);
„String concat vs. StringBuffer“ weiterlesen
Seit Java 1.5 gibt es die Annotation (Anmerkung, Beifügung, Hinzufügung).
Java Klassen, Methoden… können z.B. mit @Override zur Strukturierung gekennzeichnet werden.
Wie schreibe ich aber eigene Annotation? Ganz einfach. „Eine Anmerkung (annotationen)“ weiterlesen
Der Balking-Pattern kann verwendet werden, wenn nur ein Objekt eine Aktion starten darf, das in einem bestimmten Zustand ist. Alle anderen weiteren Aufrufe, werden solange ignoriert, bis die Aktion abgeschlossen wurde.
Ein Beispiel zum ansteuern einer Schnittstelle „Balking (sperrt) Pattern“ weiterlesen
Prinzipien für besser Softwarer gibt beim Clean-Code-Developer. Ich trage gerade Orangen.
Soll der String, der von einen Date.toString()
Methode geliefert werden wieder in ein Date
Objekt umgewandelt werden, geht dies mit dieser Methode. „String „Fri Feb 05 17:15:59 CET 2010“ in Date Objekt umwandeln“ weiterlesen
Habe soeben den Java Framework TWNcidSchnittstelle für NCID Server freigegeben. „Java API TWNcidSchnittstelle, für Vodafone Easy-Box“ weiterlesen
Sun hat nun Richtlinien für die sichere Programmierung mit Java herausgegeben. Hier sind die 7 Punkte zu „Sicheres Java programmieren“ weiterlesen
soeben veröffentlicht. Nach dem Start sieht es so aus:
Weitere Infos unter TWNcid
…soll Pablo Picasso gesagt haben.
In Eclipse kann in allen Editoren, Views, Perspectiven, Commandos, Menüs, Preferences, Properties und auch in den vorherigen Suchen gleichzeitig gesucht werden mit „Eclipse: „Ich suche nicht ich finde““ weiterlesen
Ab Java 1.5 kann der aktuelle Methodenname wie folgt ermittelt werden „Dynamisches ermitteln des aktuellen Methodennamen“ weiterlesen
Java bietet mit statischen inneren Klassen die Möglichkeiten, die Lesbarkeit und Wartbarkeit des Codes zu erhöhen.
Auch lässt sich vieles besser logisches Gruppieren (Helper Klassen vor Ort) und Kapseln. Hier ein einfaches Beispiel: „Statische geschachtelte Klassen (static, nested classes)“ weiterlesen
Ab Java 1.5 gibt es die PriorityQueue
im java.util Package und ist somit ein Teil des Java Collections Frameworks. Diese erweiterte Form einer Warteschlange ist ua. für diskreter Ereignissimulationen nützlich. Diese Klasse ist nicht synchronized. „PriorityQueue (Prioritätswarteschlange)“ weiterlesen
Mit der static Methode String.format kann ab JDK 1.5 leicht eine Formatierung durchgeführt werden. z.B. „String.format“ weiterlesen
In Java 1.5 wurde das „autoboxing“ und „auto-unboxing“ zur Sprache hinzugefügt.
Es wird jetzt automatisch von einem „primitiven“ Datentyp wie int, boolean oder double in die korrespondierenden „boxing“ Datentype wie Integer, Boolean oder Double gewandelt. Siehe Beispiel 1. Was kommt aber in Beispiel 2 raus, wenn man die Klasse ausführt?
public class Unmöglich {
private static Integer i;
public static void main(String[] args) {
// Beispiel 1
int x = new Integer(42); // Integer nach int (unboxed)
Integer y = 42; // int nach Integer (boxed)
// Beispiel 2
if (i == 42){
System.out.println("Unmögliches autoboxing!");
}
}
} „Java Autoboxing“ weiterlesen