Habe soeben den Java Framework TWNcidSchnittstelle für NCID Server freigegeben. „Java API TWNcidSchnittstelle, für Vodafone Easy-Box“ weiterlesen
Sicheres Java programmieren
Sun hat nun Richtlinien für die sichere Programmierung mit Java herausgegeben. Hier sind die 7 Punkte zu „Sicheres Java programmieren“ weiterlesen
Statische geschachtelte Klassen (static, nested classes)
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
PriorityQueue (Prioritätswarteschlange)
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
String.format
Mit der static Methode String.format kann ab JDK 1.5 leicht eine Formatierung durchgeführt werden. z.B. „String.format“ weiterlesen
Java Autoboxing
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
Neu in JDK 7: „Strings in switch“ möglich
Eine von 7 Änderungen, die auf Java Entwickler zukünftig zukommt sind „String in switch“ Anweisungen.
Wie kann es verwendet werden, hier ein kleines Beispiel. „Neu in JDK 7: „Strings in switch“ möglich“ weiterlesen
Nutze Override Annotation
Ab Java 1.5 gibt es die Annotation @Override
. Diese Annotation kann nur für Methoden „Nutze Override Annotation“ weiterlesen
Twitter zugriff mit java-twitter
Über das API von Twitter kann leicht auf Twitter Informationen zugegriffen werden. Es gibt mind. drei Framworks die diese Funktionalität für Java Kapsel.
Hier ein Beispiel mit java-twitter.
Twitter4J wird noch folgen. „Twitter zugriff mit java-twitter“ weiterlesen
KISS, refactor
Manchmal findet man Code, der den Status eines Flags abfragt:
private boolean flag;
public boolean isFlagSet() {
if (flag) {
return true;
}
else {
return false;
}
}
der kann wie folgt vereinfacht werden „KISS, refactor“ weiterlesen
Programmierer Witz
Der kürzeste Programmierer Witz der Welt:
„Programmierer Witz“ weiterlesen
UML Komposition
Eine Komposition ist ein Sonderfall der Aggregation, er beschreibt die Beziehung zwischen einem Ganzen und seinen Teilen. Ein Teil kann immer nur genau einem Ganzen zugeordnet sein.
In UML kann eine Komposition die an der ausgefüllten Raute am Ganzen, so dargestellt werden:
Eine Komposition in Java kann wie folgt erstellt werden „UML Komposition“ weiterlesen
Regel: BigDecimal
Heute eine wichtige Regel, die häufig nicht angewendet wird und nicht nur zu Cent Abweichungen führen kann.
Nutze nie float
oder double
für „Regel: BigDecimal“ weiterlesen
DRY KISS
Heute mal zwei Möglichkeiten zu entwickeln.
DRY(Don’t-Repeat-Yourself) bedeutet in etwa soviel wie „DRY KISS“ weiterlesen
Verwende Enum anstatt int Konstanten
Vor Java 1.5 gab es noch keine enum
Typen, deshalb wurden Konstanten wie folgt verwendet:
public static final int LECKER_MARZIPAN = 0;
public static final int LECKER_KUCHEN =1;
public static final int LECKER_EIS = 2;
public static final int PFLANZE_BIRKE = 0;
public static final int PFLANZE_EICHE = 1;
public static final int PFLANZE_KAKTUS = 2;
Das geht jetzt besser „Verwende Enum anstatt int Konstanten“ weiterlesen
Wahr oder unwahr, das ist die Frage.
Die Schleife wird genau einmal ausgeführt. Ist die Aussage richtig oder falsch?
for (int i = Integer.MIN_VALUE; i <= Integer.MAX_VALUE; i++) {
System.out.println(i);
}
Wer die richtige Antwort kennt gewinnt „Wahr oder unwahr, das ist die Frage.“ weiterlesen
Wie wird im Eclipse Plugin ein Task dem Progress Monitor hinzugefügt?
Die Task View von Eclipse kann für eigene Task in Eclipse Plug-Ins verwendet werden. Dazu wird die Job
Klasse verwendet. Hier ein Beispiel mit einer anonymen inneren Klasse „Wie wird im Eclipse Plugin ein Task dem Progress Monitor hinzugefügt?“ weiterlesen
Icons im Eclipse Plug-In laden
Einige Methoden sind in Eclipse 3.4 (Ganymed) als deprecated
gekennzeichnet. Wie kann ein Icon in einem Plug-In geladen werden? „Icons im Eclipse Plug-In laden“ weiterlesen
Integer Caching
Schau Dir mal diesen Code an. Was erwartest Du bei dem 3. Vergleich?
public class Test {
public static void main(String[] args) {
Integer wertGleich = 100;
Integer wertAuchGleich = 100;
// Referenzvergleich: Test 1
System.out.println(wertGleich == wertAuchGleich); // ergibt true
// gleicher Test nur mit anderen Wert
Integer wertGleichZwei = 122;
Integer wertAuchGleichZwei = 122;
// Referenzvergleich: Test 2 auch
System.out.println(wertGleichZwei == wertAuchGleichZwei); // ergibt true
// Dreimal ist Bremer Recht: Test 3: Gleicher Test nur mit anderen Wert
Integer wertUngleich = 150;
Integer wertAuchUngleich = 150;
// Was erwartest Du? „Integer Caching“ weiterlesen
Java in 5 Minuten (engl.)
Ein kleines HowTo Video für den Java Einstieg „Java in 5 Minuten (engl.)“ weiterlesen
Exceptions nur für Ausnahmen verwenden
Exceptions sollen immer nur für Ausnahmen und nicht für den normalen Programmablauf verwendet werden.
Also ist dies ein NO GO:
try{
int i =0;
while (true){
range[i].climb();
}catch(ArrayIndexOutOfBoundsException e){
}
Bei eine Endlosschleife die mit einer ArrayIndexOutOfBoundsException
abbricht wird der Programmablauf über die Exception gesteuert. Das ist falsch.
Also Exceptions nur für Ausnahmen verwenden.
Aufgabe: Wie könnte es richtig gemacht werden?
(see Joshua Bloch Item 57)
Quvadis Java
So geht es also mit Java weiter.
Keine unbehandelten Exception
Gefangene Exception müssen immer behandelt werden. Das ist der Sinn von Ausnahmen.
Ein ignorieren der Exception ist so wie das ausschalten eines Brandmelders. Wenn es brennt nützt der dann auch nichts mehr.
So auch die Exception die gefangen werden.
Sie sollen ja ein Ausnahme sein, die auch dem entsprechend behandelt werden soll.
try
{
// ...
}catch(IrgendeineException e)
{
// in Ausnahmefällen kann hier ein Kommentar stehen,
// warum nichts gemacht wird
// aber kein Kommentar und nur ein leerer catch block
// ist ein NO GO!
}
(see Joshua Bloch Item 65)
Java ist auch eine Insel (8. Auflage)
Die Online Referenz für Java, nun auch neu erschienen, am Besten gleich bookmarken (http://openbook.galileocomputing.de/javainsel8/index.htm).