Einrücken von mit XMLStreamWriter geschriebenen XML-Dokumenten
0 Kommentar(e). Veröffentlicht von Christian Ullenboom am Montag, Februar 22, 2010.- http://www.koders.com/java/fidF88DABC620B5E39687C12D2D8DC430C647EB8A74.aspx und
- http://www.koders.com/java/fidCF4610BDDF4735D0241551D1955CF8F238C2FB0D.aspx
StringWriter stringWriter = new StringWriter(1024);
XMLOutputFactory factory = XMLOutputFactory.newInstance();
XMLStreamWriter writer = new IndentingXMLStreamWriter( factory.createXMLStreamWriter( stringWriter ) );
writer.writeStartDocument( "utf-8", "1.0" );
...

Labels: Java SE
Java 6 Update 18
1 Kommentar(e). Veröffentlicht von Christian Ullenboom am Mittwoch, Januar 20, 2010.Die Änderungen http://java.sun.com/javase/6/webnotes/6u18.html sind vielfältig. Zum einen für die Systemkonfigurationen:
- Ubuntu 8.04 LTS Desktop Edition for both JFB and Java SE (x86) in 32-bit
- SLES 11
- Windows 7 support is now available
- Red Hat Enterprise Linux 5.3
Dann:
Im JDK gibt es ein Update der Datenbank
Aus dem Bereich XML:
- JSR-173 StAX 1.2 API Upgrade. In erster Linie JavaDoc Korrekturen aber auch Änderungen, da der richtige Klassenlader nun genutzt wird. http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6861589
Und vieles mehr im Bereich Tuning und Fehlerbehebung.
Labels: Java SE
Frage: Kann man alle Instanzen einer Klasse ermitteln?
0 Kommentar(e). Veröffentlicht von Christian Ullenboom am Samstag, August 01, 2009.Das geht nicht wirklich und wenn, dann nur mit großen Umwegen etwa über die Java Debugging API, mit der man sich an die JVM hängen kann. Auch ein Blick auf den Quellcode von jconsole und jmap/jhat helfen hier, weil die Tools genau das machen und Zahlen geben.
Der Objektgraf verändert sich ständig und so könnte man auch die Objekte stark referenzieren und den GC am Löschen hindern. Das würde zu einer großen Anzahl von Problemen führen. (Schwache Referenzen könnte das Problem abmildern, aber der GC muss hier Zusatzarbeit machen und die Laufzeit würde sich (messbar) verschlechtern.) Die Objekte sind ja immer eine Momentaufnahme. Da kämen ja Millionen von Objekten raus, wenn man etwa nach "Gib mir alle Strings" fragt. Laufend ändert sich diese Menge.
Wenn der Nutzer diese Instanzen wirklich braucht, kann er sie an einer Objekt-Registry anmelden.
- Von Hand kann man Exemplare etwa in eine Map<Class,List<?>> setzen. Das muss man nicht unbedingt manuell machen, sondern man kann hier einen Aspekt schreiben, der Bytecode in den Konstruktor für solch ein Anmelden einfügt. Dann ist das Abmelden aber noch so eine Sache. Das kann aber eine PhantomReference übernehmen und so meldet man das Objekt an der Registry wieder ab.
- Wenn man Spring benutzt, deklariert ListableBeanFactory (implementiert etwa von XmlBeanFactory) eine Methode Map getBeansOfType(Class type) für genau diesen Fall.
- Sind die Exemplare alle MBeans, ist es einfach, dann sind sie schon an einem Container registriert, und Query liefert sie sogar nach gewissen Kriterien.
Labels: Java SE
Update JDK 1.6.0_14 (6u14)
3 Kommentar(e). Veröffentlicht von Christian Ullenboom am Freitag, Mai 29, 2009.Änderungen listet http://java.sun.com/javase/6/webnotes/6u14.html auf. Interessant sind meines Erachtens: Compressed Object Pointers und Garbage First (G1) Garbage Collector, weil diese Dinge sind, die für Java 7 vorgesehen waren. Aber nun kann man die schon mal “in the wild” testen, was eine gute Sache ist. Dann noch JAX WS 2.1.6 and JAXB 2.1.10 und ein Update von JavaDB (wobei Derby schon deutlich weiter ist, komisch).
Labels: Java SE
Vom VisualVM (https://visualvm.dev.java.net/) gibt es eine erste 1.0 Version.
May 6th, 2008: VisualVM 1.0 RC released. This is mainly a stabilization release: many bugs have been fixed and performance and memory management have been significantly improved. The only new feature is the Start Page which contains useful links to VisualVM documentation and JDK monitoring and troubleshooting guides. Sources for this release are available in
release10branch.

Es sieht so aus, als ob VisualVM in Java 7 als weiteres Tool neben der JConsole einzieht. (Oder vielleicht auch VisualVM sich die JConsole einverleibt und dann VisualVM das "Hauptprogramm" wird. VisualVM erlaubt -- genauso wie auch die JConsole -- Plugins, und eines ist eben für MBeans.)

Labels: Java SE, Open Source
