Thema des Monats: Programmieraufgaben / JavaBLOG Pause
5 Kommentar(e). Veröffentlicht von Christian Ullenboom am Mittwoch, Dezember 10, 2008.Aufgabe 1
Brainfuck (http://de.wikipedia.org/wiki/
$ java BrainfuckC Application.bf
Successfully generated Application.class
$ java Application
Aufgabe 2
Gegeben ist eine potenziell sehr große ASCII-Datei mit Ganzzahlen im Wertebereich +-1000000, die durch Leerzeichen, Tab oder Return getrennt sind. Über die Datei soll eine Statistik gefahren werden, sodass am Ende die größte und kleinste Zahl sowie die maximale Teilsumme ausgegeben wird. Gesucht ist das schnellste Programm.
$ java Stat numbers.txt
Min: 3, Max: 199933, Maximale Teilsumme 4785
PS: Die maximale zusammenhängende Teilsumme von zum Beispiel
{-18,5,-3,9,4,-12} ist 5 + -3 + 9 + 4 = 15.
Aufgabe 3
Microsoft PowerPoint kann Folien im XML-Format speichern. Dazu verwendet Microsoft Zip-Dateien mit der Endung pptx. Im Zip-Archiv befindet sich ein Order ppt/slides und jede PowerPoint-Folie liegt dort als XML-Datei vor. Schreibe ein Swing-Programm, mit dem man einfache Text-Folien darstellen kann. Der Rückgriff auf beliebige Java-OpenSouce-Bibliotheken ist ausdrücklich gewünscht.
Lösungen können gerne in dem Blog gepostet werden (oder Verweise auf die Lösungen).
Blog-Pause
In den letzten Wochen gab es keine Posts, da ich auf den Philippinen, Brunei und Indonesien (ja, auch Java) war. Nach der Reise habe ich interessante Java-Neuigkeiten in den Blog nachgetragen. Nun wird es voraussichtlich für einige Wochen wieder keine weiteren Einträge geben, da ich nach Afrika fliege und Namibia, Südafrika, Swaziland, Lesotho, Botswana, Zambia, Mozambique, Malawi, Tansania, Kenia, Ruanda besuchen werde. Wollen wir hoffen, dass dies hier nicht der letzte Blog-Eintrag ist ;)
Labels: Die wöchentliche Dosis Java
Apache Jackrabbit 1.5
0 Kommentar(e). Veröffentlicht von Christian Ullenboom am Mittwoch, Dezember 10, 2008.- The standalone Jackrabbit server component. The runnable jackrabbit-standalone jar makes it very easy to start and run Jackrabbit as a standalone server with WebDAV and RMI access.
- Simple Google-style query language. The new GQL query syntax makes it very easy to express simple full text queries.
Labels: Open Source
SpringSource und Groovy/Grails und SpringSource mit Adobe
0 Kommentar(e). Veröffentlicht von Christian Ullenboom am Mittwoch, Dezember 10, 2008.SpringSource,Nun arbeitet SpringSource auch mit Adobe zusammen und Flash näher an Spring zu setzen. Das Spring-Framework integriert dazu BlazeDS (http://opensource.adobe.com/wiki/display/blazeds/BlazeDS/), eine unter LGPL stehende Remoting- und Messaging-Technologie. Mit BlazeDS kann Flex auf Java-Methoden auf der Serverseite zugreifen, so wie es auch JavaScript über DWR (http://directwebremoting.org/) kann. Die Ankündigung zur Zusammenarbeit:
the maker of the Spring framework have just announced they are acquiring G2One, Inc.,
the Groovy/Grails company. You can learn more about this announcement here:
- Announcement on SpringSource's site
- Overview and FAQ regarding the acquisition
- Official press release
Guillaume Laforge's post
and Graeme Rocher's post
going into details about the key benefits of this acquisition.
- http://www.springsource.com/node/1077
Labels: Open Source, Spring
Android GUI-Builder
0 Kommentar(e). Veröffentlicht von Christian Ullenboom am Mittwoch, Dezember 10, 2008.Labels: Open Source
XStream mit JSON-Serialisierung
1 Kommentar(e). Veröffentlicht von Christian Ullenboom am Mittwoch, Dezember 10, 2008.XmlBeans einer der bekanntesten XML-Serialisierer. Nun haben die Entwickler die Bibliothek erweitert, dass XStream auch als XML-JSON-Serialisierer (http://xstream.codehaus.org/json-tutorial.html) arbeitet. Die Methodenamen sind mit toXML() und fromXML() zwar nicht so passend, aber der Aufruf dennoch einfach:
Product product = new Product("Banana", "123", 23.00);
XStream xstream = new XStream(new JettisonMappedXmlDriver());
xstream.setMode(XStream.NO_REFERENCES);
xstream.alias("product", Product.class);
System.out.println(xstream.toXML(product));Der andere Weg:
String json = "{\"product\":{\"name\":\"Banana\",\"id\":\"123\"" +
",\"price\":\"23.0\"}}";
XStream xstream = new XStream(new JettisonMappedXmlDriver());
xstream.alias("product", Product.class);
Product product = (Product)xstream.fromXML(json);
System.out.println(product.getName());Labels: Open Source
Grammatikalische Struktur vom Java-Programm visualisieren
0 Kommentar(e). Veröffentlicht von Christian Ullenboom am Sonntag, Dezember 07, 2008.Unter http://www.antlr.org/wiki/display/ANTLR3/Tool+showing+grammatical+structure+of+Java+code gibt es ein hübsches Gui-Tool, welches nach der Java Grammatik vom Openjdk javac compiler project with ANTLR-based Java grammar die Struktur aufzeigt:

Labels: Open Source
JavaFX 1.0 offiziell veröffentlicht
0 Kommentar(e). Veröffentlicht von Christian Ullenboom am Samstag, Dezember 06, 2008.
Sun hat Anfang Dezember 2008 JavaFX veröffentlicht. Es ist als Alternative zu MS Silverlight und Flash + Flex für Rich Internet Applications gedacht. Einige Links dazu:
- http://en.wikipedia.org/wiki/JavaFX
- http://en.wikipedia.org/wiki/JavaFX_Script
- http://en.wikipedia.org/wiki/JavaFX_Mobile
- http://www.theregister.co.uk/2008/01/24/javafx_tools_adobe/
- http://www.oreillynet.com/onjava/blog/2007/05/javafx_im_still_not_impressed.html
Zentrale Punkte von JavaFX 1.0 sind: (Zitiert von http://blogs.sun.com/javafx/entry/javafx_1_0_is_live)
- Fast and easy to use 2D graphics
- PerspectiveTransform for 3D effects
- KeyFrame animation
- Video and Audio support using both native and cross-platform codecs
- Swing Integration
- XML & JSON web services
- Pixel-filters and visual effects with GPU hardware acceleration
- CSS styling (more on that later)
- Windows XP+ and Mac 10.4+ support with Linux & Solaris in the works (more on that later too)
- The new JavaFX Script language with binding and animation built in, running 10->20x faster than Javascript
- Visually rich applets that you can drag to your desktop and save for later
- Integration with Photoshop and Illustrator
- Access to the world's huge library of Java code and APIs
- A new website with docs, tutorials, and tons of BSD licensed sample code and as a nice bonus:
- A sneak-peek beta of JavaFX on mobile devices
Der Punkt Support with Linux & Solaris in the works macht sicherlich nicht jeden in der Community glücklich, aber gut...
Sun hat die schöne Seite http://javafx.com/ aufgebaut, um mehr über JavaFX zu lernen. Die NetBeans IDE 6.5 bringt volle Unterstützung für JavaFX (http://www.netbeans.org/features/javafx/index.html) mit. Für Eclipse gibt es bisher keine große Unterstützung.

http://www.reportmill.com/jfx/ bringt passend ein Tool auf Markt. Zentrale Elemente sind (Zitiert von der Webseite):
- Powerful Visual Designer
- Animation, Illustration and Page Layout
- Video, Sound and Image Effects
- Drag & Drop Application Components
- JDBC and POJO Data Binding
- HTTP Form Generation and Binding
- Navbar Generation, Page Transitions
- Graphs, Charts, Tables and Reports
- Full Featured Player/Document Reader
- Extension Plugins with Internet Directory

Labels: Open Source
Groovy-Eclipse Plugin mit Refactoring Unterstützung
0 Kommentar(e). Veröffentlicht von Christian Ullenboom am Samstag, Dezember 06, 2008.Ein Studentenprojekt der HSR University of Applied Sciences Rapperswil, Institute for Software hat dem Groovy-Eclipse Plugin Refactoring Möglichkeiten beschert:

Zu den Refactorings zählen
- Extract Method
- Inline Method
- Rename Local
- Rename Method
- Rename Class
- Rename Field
Ein neuer Formatter gehört ebenfalls zum Tool.
Labels: Eclipse, Entwicklungsumgebung
JBoss 5 ist fertig + Application Servers 2008 Rankings
0 Kommentar(e). Veröffentlicht von Christian Ullenboom am Samstag, Dezember 06, 2008.Nach 3 Jahren gibt es nun (endlich) den JBoss 5 AS. Einige Meldungen und Meinungen dazu:
- http://www.heise.de/newsticker/JBoss-5-ist-nach-drei-Jahren-Entwicklungszeit-fertig--/meldung/120010
- http://www.jboss.org/feeds/post/as_5_0_0_we_are_done_next
- http://sourceforge.net/project/shownotes.php?release_id=645033&group_id=22866
JBoss 5 taucht aber (noch) nicht als zertifizierter Java EE 5 Container unter http://java.sun.com/javaee/overview/compatibility.jsp auf, obwohl http://sacha.labourey.com/2008/09/15/jboss-as-is-now-ee5-certified/ davon berichtet.
Unter http://www.theserverside.com/news/thread.tss?thread_id=51008 wird der EDC report - "Application Servers 2008 Rankings" (http://www.evansdata.com/reports/viewRelease_download.php?reportID=20) diskutiert. Die Kommentare sind lesenswert. Der Download des Papers verlangt ein Login, ist aber ansonsten frei.
Labels: Java EE, Open Source
Inselraus: getContextClassLoader() vom Thread
0 Kommentar(e). Veröffentlicht von Christian Ullenboom am Donnerstag, Dezember 04, 2008.Entwickler von Java-Enterprise-Applikationen haben oft damit zu kämpfen, dass immer der falsche Klassenlader eine Klasse bezieht und die Typen dann nicht zusammenpassen. In unserem Beispiel mit dem statischen Initialisierungsblock ist gut zu erkennen, dass durch das zweimalige Laden die Laufzeitumgebung auch zweimal die Anweisungen ausführt. Hätten wir Singletons definiert, würden ihre statische Anfragemethoden unterschiedliche, nicht kompatible Objekte liefern, obwohl es laut Defini-tion eines Singletons der Fall sein müsste. Allgemein gesprochen: Besonders Fabrikfunktionen liefern bei mehreren Versionen der Klasse unterschiedliche Objekte, die nicht zusammenpassen. Zwei Lösungen gibt es hier: Zum einen bekommen die Fabrikfunktionen einen Klassenlader, in dessen Kontext sie die Klassen erzeugen können, oder sie nutzen den Klassenlader, der mit einem Thread ver-bunden ist.
Jeder Thread ist mit einem Klassenlader assoziiert, der standardmäßig mit dem Standardklassenlader identisch ist. getContextClassLoader() auf dem Thread-Objekt bezieht diesen Klassenlader:
Listing 8.13 com/tutego/insel/lang/ThreadClassLoader.java, main()
ClassLoader loader = Thread.currentThread().getContextClassLoader();
System.out.println( loader ); // sun.misc.Launcher$AppClassLoader@a12a00
loader = ThreadClassloader.class.getClassLoader();
System.out.println( loader ); // sun.misc.Launcher$AppClassLoader@a12a00
Soll der assoziierte Klassenlader geändert werden, bewerkstelligt dies setContextClassLoader().
Labels: Insel
Inselraus: Ein flexibles Tabellenlayout mit JGrid
1 Kommentar(e). Veröffentlicht von Christian Ullenboom am Donnerstag, Dezember 04, 2008.Eine JTable ist zwar eine einfache Komponente, doch schon in der HTML-Tabelle gibt es Eigenschaften, die die JTable nicht abbilden kann: Zellen, die über mehrere Zeilen und Spalten gehen. Hier ist einiges an Programmieraufwand nötig, der jedoch für diejenigen unnötig ist, die auf die freie Komponente JGrid zurückgreifen. Die Swing-Komponente gehört zu Pepper (http://jeppers.sourceforge.net/), einer Komponente für Tabellenkalkulationen, die sogar eine Formelauswertung ähnlich Excel versteht. Pepper selbst untersteht zwar der GPL, doch JGrid ist LGPL und lässt sich somit in eigene kommerzielle Anwendungen einbinden.

PS: tutego bietet nun auch ein GWT-Seminar an:
Labels: Open Source
Thema der Woche: SwingX
1 Kommentar(e). Veröffentlicht von Christian Ullenboom am Dienstag, Dezember 02, 2008.Die Anzahl Swing-Komponenten ist nicht besonders groß und seit dem Swing in Java 1.2 fest eingeführt wurde, hat sich wenig an Swing verändert. Im Laufe der Zeit sind diverse Projekte mit Zusatzkomponenten und Swing-Erweiterungen entstanden, wobei SwingX (http://swinglabs.org/) zu den bekannteren gehört.
- Lies über das Angebot der Webseite http://swinglabs.org/, http://swinglabs.org/projects.jsp
- Verfolge die Präsentationen unter http://swinglabs.org/docs.jsp
- Lade das SwingX-Jar und binde es ein. Hole http://swinglabs.org/hudson/job/SwingX%20Continuous%20Build/javadoc/index.html?org/jdesktop/swingx/package-summary.html vor.
- Nutze in einem Beispiel JXDatePicker, JXMonthView, JXHyperlink, JXImagePanel, JXMultiSplitPane, JXStatusBar, JXTreeTable
- Was unterschiedet JXTable, JXTree, JXList von den Standard Swing-Komponenten?
- Entwickle ein Beispiel mit Klassen aus org.jdesktop.swingx.autocomplete
- Was ist die Aufgabe von org.jdesktop.swingx.action?
SwingX wurde in den letzten Tagen mit mehr Aufmerksamkeit bedacht, seit dem Sun angekündigt hat, dass SwingX-Projekt nicht mehr zu unterstützten. Zusammen mit diversen Blog-Einträgen ergibt sich der Eindruck, dass Swing für Sun keine besondere Rolle spielt, sondern Sun stattdessen Geld und Entwicklerkapazität in JavaFX steckt. Lese dazu
- http://forums.java.net/jive/thread.jspa?threadID=52665&tstart=0
- http://www.pushing-pixels.org/?p=758
Labels: Die wöchentliche Dosis Java
Neuer Java Decompiler
1 Kommentar(e). Veröffentlicht von Christian Ullenboom am Dienstag, Dezember 02, 2008.Jad (http://www.kpdus.com/jad.html) gehört immer noch zu den Klassikern der Java-Decompiler. Nun gibt es etwas neues, den “Java Decompiler” (http://java.decompiler.free.fr/). Mit dem Screenshot der Gui sieht das schon mal vielversprechend aus.

Labels: Open Source
