Donnerstag, 18. Dezember 2008

Chaosradio - Ein Überblick über die Java-Plattform

Schon etwas betagter aber dennoch interessant. Der Chaosradiobeitrag zum Thema Java. Interessant auch die Teile, in denen es um die üblichen Vorurteile ala "Java ist langsam" geht. Besonders geeignet für Leute, die sich ansich weniger mit der Entwicklung unter Java beschäftigen oder eben gerade den Einstieg versuchen.

chaosradio.ccc.de

Dienstag, 9. Dezember 2008

PDF-Renderer

Inzwischen bin ich auch mal dazu gekommen die kommerzielle Library Aspose Pdf Kit zu testen. Der erhoffte Erfolg ist ausgeblieben. Der Kunde scheint da einige faule, also nicht konforme PDFs erzeugt zu haben. Ansich macht die Library von Aspose einen ganz ordentlichen Eindruck. Für die PDF-Verarbeitung ist eigentlich alles da, was man so brauchen könnte. Besonders interessant ist die Möglichkeit, Manipulationen an bestehenden PDFs vorzunehmen, also zum Beispiel ein Wasserzeichen über die Dokumente zu legen. Ob das noch notwendig wird, wird sich zeigen. Die Library kann für Einzelentwickler für 599$ lizensiert werden, danach wird es dann deutlich teurer.

Donnerstag, 4. Dezember 2008

PDF Renderer

PDF-APIs gibt es für Java ja so einige. Für ein aktuelles Projekt benötige ich da was, was PDFs als Image rendern kann. Der Kunde will PDFs in seine Webapplikation hochladen und anschließend einzelne Seiten per Klick als Bild im Browser dargestellt bekommen. Mit den meisten APIs lassen sich PDFs zwar erzeugen, aber nicht einlesen bzw. rendern. Ein Test über eine vielzahl von Dokumenten lässt böses ahnen. Keine API schafft es alle Dokumente darzustellen. Am besten schneidet noch der PDF Renderer von Sun ab. An zweiter Stelle, mit einer etwas geringeren Erkennungsrate, liegt die jPodRenderer API, gefolgt von JPedal. Alle APIs haben ein großes Manko: ist beim Renderprozess etwas unklar bzw. entspricht nicht den Standarspezifikationen von Adobe, wird das Rendern sofort abgebrochen. Acrobar Reader, Evince und Foxit Reader schaffen es übrigens ohne Fehlemerldung die betroffenen Dokumente darzustellen.

Recht vielversprechend fand ich übrigens den Freeware Java Reader von Adobe. Leider wollte der sich nicht einmal auf anhieb starten lassen. Irgendwelche MacOS Klassen machen da gewaltig ärger. Die Zeit ist knapp und ich kann nicht wirklich abschätzen, ob dieses Urgestein von Software wirklich den erhofften Erfolg bringt. Ansonsten hätte man das Ding sicher dazu bringen können, in eine Imagedatei zu rendern. Mit einigen unschönen Hacks würde ich da allerdings schon rechnen.

Eine nützliche Linksammlung mit PDF-APIs habe ich übrigens hier gefunden.

[Update]
Eine weitere (kommerzielle) Library ist noch die Asprise Java PDF Library http://asprise.com/product/javapdf/index.php

[Update]
Eben bin ich noch absolut zufällig über die Big Faceless Java PDF Library (http://bfo.co.uk/products/pdf) gestoßen. Ob die was taugt, weiß ich nicht. Der Kunde - der, der die PDFs als Bilder generiert haben wollte - ist jedenfalls nicht weiter auf das Thema zu sprechen gekommen. Entweder er benutzt die Funktionalität schlicht nicht oder er ist zufrieden.

[Update]
Noch eine Kommerzielle PDF API, die auch rendern kann. Diesmal aus Indien. PDFOne: http://www.gnostice.com. Eine Free-Version gibt es auch, die aber keine Viewer und Printer Komponenten enthält. Aktuelle Version 3.1

[Update]
Ich hab "Java Reader von Adobe" zum Laufen gebracht, dafür du brauchst eine MacOS jar, die "MRJToolkitStubs-1.0.jar" heißt. Du kannst von hier herunterladen: http://mirrors.ibiblio.org/pub/mirrors/maven/mrj/jars/MRJToolkitStubs-1.0.jar

[Update]
Weitere Bibliothek, die inzwischen auch unter LGPL verfügbar ist: http://www.icepdf.org/
Rendert rattenschnell und alles, was mir bisher unter die Finger geraten ist. Leider ist die Font Engine kommerziell und ohne sind die Ergebnisse dann auch wieder durchwachsen.

[Update]
API die Nächste: Ghost4J. Komplett frei ist Ghost4J ein Java Wrapper für die Ghostscript API. Da es Ghostscript für Linux / OSX und Windows gibt, ist das Gängigste an Betriebssystemen soweit abgedeckt. Das Projekt ist von ende 2008 und somit recht neu. Sourcen und Download gibt es hier: http://sourceforge.net/projects/ghost4j/

[Update]
Die Firma Foxit Software vertreibt neben dem Foxit-Reader auch eine Programmier-API. Scheinbar gibt es zwar keine Java-Schnittstelle, aber da sollte sich via JNI in überschaubaren Zeitraum etwas machen lassen: http://www.foxitsoftware.com/pdf/reader/ Leider ein ziemlich teurer Spaß. Also nix für Opensource-Software.


[Update]
Eben angetestet und für gut befunden. Das JMuPdf-Projekt verwendet die native Bibliothek von MuPDF. Das Ergebnis ist überzeugend. Derzeit für Linux32/64 und Windows32/64 verfügbar.

[Update 3.5.2013]
Es gibt da noch das gnujpdf-Projekt, dass komplett auf Java basiert.

Mittwoch, 3. Dezember 2008

Java Decompiler

Besten Dank an Christian Ullenboom, der in seinem Blog auf einen neuen Java Decompiler hinweist. Das Teil ist zwar nicht Open Source sondern Freeware und nur für nicht kommerzielle Zwecke kostenlos, aber hat einiges zu Bieten. Unterstützt werden auch neuere Sprachkonstrukte wie Annotations, Generics und Enums. Den decompilierten Code finde ich durchweg überzeugend. Die mitgelieferte GUI ist mehr zwecknah als komfortabel, bietet aber ein paar features, die mir gut gefallen haben. So kann man, wie in Netbeans oder Eclipse auf Klassennamen klicken und erhält so gleich die decompillierte Klasse zur Ansicht. Auch sehr nützlich ist die inkrementelle Suche, wie man sie inzwischen aus verschiedenen Anwendungen, wie Firefox etc. gewohnt ist.



Sehr schön auch, das nicht nur Windows, sondern auch Linux und Mac mit GUI unterstützt werden.







Das gute Stück wird auf jeden Fall weiter von mir ausprobiert. Einen Decompiler habe ich in der Vergangenheit zwar selten benötigt, aber irgendwie gefällt mir das Tool.

Montag, 1. Dezember 2008

Fluent-Oberflächen mit der Flamingo API

Wer eine Swing-GUI mit Fluent- oder Ribbon-Oberflächen (Swing) bauen will, sollte mal einen Blick auf die Flamingo-API werfen. Für GUI-Schrauber könnte das recht interessant sein. Zu finden unter flamingo.dev.java.net/


Zwar finde ich die Ribbons nicht für alle Anwendungsfälle günstig, aber darüber lässt sich bekannter maßen streiten. In MS Office und vor allem Access, was ich hin und wieder benutzen muss, finde ich diese GUI ehr lästig. Für Bunteknöpfchenklicker ist das ganze aber sicher sehr nett. In einer professionellen Anwendung haben Ribbon-Oberflächen meiner Meinung nach nichts zu suchen. Viel Platz geht dabei verloren, den geübte Anwender besser verwenden können. Besonders negativ ist mir das bei AutoCAD 2009 aufgefallen. Für Businessanwendungen mit klarem Workflow kann ich mir aber eine geschickt gestaltete Ribbon-Oberfläche durchaus gut vorstellen.

Samstag, 18. Oktober 2008

Links

Der Blogeintrag "In den Speicher geschaut..." auf blog.linkwerk.com beschreibt sehr anschaulich den Umgang mit dem Java eigenen Analysetool jconsole.

Lesenswertes zum Thema Java und Performance auf www.bastie.de. Die Performancetipps würde ich allerdings nicht überbewerten. Codelesbarkeit würde ich im Zweifel immer den paar Einsparungen im Millisekundenbereich vorziehen.