Skip to main content

Java Sketchbook: The HTML Renderer Shootout, Part 2

June 14, 2004









Contents
Commercial HTML Renderers
   WebWindow
   Clue Web Browser
   WebRenderer
   Espial Escape
   Grand Rapid
   IceBrowser
Renderers That Didn't Make the Cut
   Java Extensible Web Browser
   X-Smiles
   Massive
   BlackWood WebClient
   Calyente
The Rest
Conclusion

In part one of this series, we looked at five free or nearly-free Java HTML renderers, evaluating them in terms of support for modern standards (XHTML and
CSS1/CSS2 support), support for legacy pages, hackability, and speed. In this second
part, we turn our attention to commercial products. We still have the same
requirements: the code must be callable from Java (meaning the product is either
100 percent Java or a Java wrapper to native code), and the package must show some
amount of recent activity.

We evaluated each against a control: a recent build of Mozilla Firebird, running on Windows. Its handling
of the front pages of Amazon, Slashdot, and the CSS Zen Garden are shown in part one. Also see part one for a discussion of why these sites were used as the controls.

Commercial HTML Renderers

WebWindow

Company: Javio
License: Commercial, downloadable demo
URL: www.javio.com/webwindow/webwindow.html
Type: 100 percent Java

This 100-percent-Java web browser comes in two versions, one for Swing and one
for AWT (mainly for support of older JDKs). It provides basic
customization and access to the underlying document tree. JavaScript support is
provided via Rhino, Mozilla's JavaScript-in-Java project, and it has built-in support for searching and printing. It
doesn't look too hackable in terms of messing with the internals, but there
are a lot of callbacks for different events.

The renderer is quite fast, and it has a nifty zooming feature that scales both text and images. It handled Amazon and Slashdot (see Figures 4 and 5) very well, but choked on most of the CSS Zen Garden (as you can see in Figure 6). The speed for Hamlet was almost as fast as a native browser. For a Java browser, it's quite good. I would recommend it for anything that doesn't require advanced CSS. Hopefully they will continue to update it in the future.

Click for larger view
Figure 4. Amazon in WebWindow (You can click on the screen shot to open a full-size view.)

Click for larger view
Figure 5. Slashdot in WebWindow (You can click on the screen shot to open a full-size view.)

Click for larger view
Figure 6. CSS Zen Garden in WebWindow (You can click on the screen shot to open a full-size view.)

Modern Compliance: Weak
Legacy Web: Good
JavaScript: Yes (via Rhino)
Hackability: Decent
Speed: Good

Clue Web Browser

Company: NetClue
License: Commercial, downloadable demo.
URL: www.netcluesoft.com
Type: 100 percent Java

The Clue Web Browser is a completely Java-based browser designed
primarily for the device (PDA and set-top box) space, though their desktop
version runs quite well. My tests show it to be quite speedy, and it renders
standard web sites very well, almost identically to Netscape and IE. They
sell several versions, from Basic to the X-Edition, which includes advanced
XML, XSLT, and XHTML. Support for JMF and SVG (with extra plugins) is also
nice. They claim to support CSS2, but when I brought up the Zen Garden, it
only showed the default layout with no style. This may be an artifact of
the way the Zen Garden degrades to older browsers, which probably wouldn't
be an issue in a custom application.

On the hackability scale, Clue provides callbacks for virtually every
event and has an API for writing plugins and new scripting languages. Net Clue
has also implemented direct DOM access, allowing developers to generate and
manipulate content entirely from within Java. JavaScript 1.5 support is
provided by Rhino.

All in all, I would say that Clue is a quality commercial implementation.
My only wish is for greater support of forward-looking layouts with complete
CSS2 support.

Figures 7, 8, and 9 show NetClue's rendering of our control sites.

Click for larger view
Figure 7. Amazon in NetClue (You can click on the screen shot to open a full-size view.)

Click for larger view
Figure 8. Slashdot in NetClue (You can click on the screen shot to open a full-size view.)

Click for larger view
Figure 9. CSS Zen Garden in NetClue (You can click on the screen shot to open a full-size view.)

Modern Compliance: Decent
Legacy Web: Excellent
JavaScript: Excellent
Hackability: Excellent
Speed: Excellent

WebRenderer

Company: Jade Liquid
License: Commercial, downloadable 30-day trial version
URL: www.webrenderer.com
Type: Native wrapper

WebRenderer is a wrapper library from Jade Liquid Software. They support
Windows, Mac OS X, Linux, Solaris, and the Java Desktop System. The wrapper can launch
the real browser internally and gives the developer access to virtually
any kind of event you can imagine. There is a slew of preferences to
control the browser, but since it's really Mozilla or IE underneath, you
can't extend it very much. For preview applications, however, this
should be fine, and I found it quite easy to create a demo program.

Figures 10, 11, and 12 show our test pages as handled by WebRenderer.

Click for larger view
Figure 10. Amazon in WebRenderer (You can click on the screen shot to open a full-size view.)

Click for larger view
Figure 11. Slashdot in WebRenderer (You can click on the screen shot to open a full-size view.)

Click for larger view
Figure 12. CSS Zen Garden in WebRenderer (You can click on the screen shot to open a full-size view.)

Modern Compliance: Excellent
Legacy Web: Excellent
JavaScript: Excellent
Hackability: Decent
Speed: Excellent







Espial Escape

Company: Espial
License: Commercial
URL:
www.espial.com
Type: 100 percent Java

Escape is an all-Java web browser for embedded devices, though they have
a downloadable demo for Windows. It supports standard web pages very well,
and had support for some of the advanced layout in the CSS Zen Garden: a
few of the images were off, but it performed pretty well. Speed on the
Hamlet test is quite good (even with anti-aliasing turned on by default).
Though highly configurable, it's not clear how useful it would be for
embedding in a Swing application. Still, for a small device target, its
features are quite impressive. You can create different profiles to lower
your memory usage or increase features, (and running a 300K browser in 3.6MB is just plain cool). Once it's licensed, you can hack it to do pretty much
anything you want, even adding JNI hooks to access native device features
(such as the Address Book on a PalmOS device). If you need an embedded browser
for small devices, then this is definitely one to check out.

Figures 13, 14, and 15 show Escape's rendering.

Click for larger view
Figure 13. Amazon in Escape (You can click on the screen shot to open a full-size view.)

Click for larger view
Figure 14. Slashdot in Escape (You can click on the screen shot to open a full-size view.)

Click for larger view
Figure 15. CSS Zen Garden in Escape (You can click on the screen shot to open a full-size view.)

Modern Compliance: Some
Legacy Web: Excellent
JavaScript: Yes
Hackability: Excellent
Speed: Excellent

Grand Rapid

Company: Grand Rapid
License: Commercial (free download with registration)
URL: www.grandrapid.com
Type: 100 percent Java

Like most of the commercial renderers reviewed here, Grand Rapid
provides excellent support for the general web and comes with a variety of
customization features. Speed is good and standards support for HTML, CSS,
XHTML, and JavaScript are of production quality. It is targeted for embedded use
with a focus on speed and low memory overhead, though it is certainly
capable on the desktop.

Figures 16, 17, and 18 show Grand Rapid's rendering of our sites.
The only glaring error was the advanced CSS in the
Zen Garden (Figure 18). It failed completely, showing only a blank page. Other than
that, it's top-notch.

Click for larger view
Figure 16. Amazon in GrandRapid (You can click on the screen shot to open a full-size view.)

Click for larger view
Figure 17. Slashdot in GrandRapid (You can click on the screen shot to open a full-size view.)

Click for larger view
Figure 18. CSS Zen Garden in GrandRapid (You can click on the screen shot to open a full-size view.)

Modern Compliance: Poor
Legacy Web: Excellent
JavaScript: Excellent
Hackability: Good
Speed: Excellent

IceBrowser

Company: IceSoft
License: Commercial (free download with registration)
URL: icesoft.com
Type: 100 percent Java

IceBrowser is one of the oldest Java web browsers and has a mature
product set. You can purchase either the full browser or a slimmed-down
version (called ICEReader) for when you don't need security or dynamic
capabilities. IceSoft provides a complete SDK for total customization, and their
product has been used in several web integration and development tools.
The speed is good, and rendering on the general web is excellent. Like
every 100-percent-Java browser in this article, it has problems with the CSS Zen
Garden, but it did better than all of the other renderers. I personally tested
their product about three years ago and found it lacking in rendering
fidelity; today, however, it's an excellent product that I would recommend
if it fits your technology and licensing needs.

See Figures 19, 20, and 21 for an idea of IceBrowser's accuracy.

Click for larger view
Figure 19. Amazon in IceBrowser (You can click on the screen shot to open a full-size view.)

Click for larger view
Figure 20. Slashdot in IceBrowser (You can click on the screen shot to open a full-size view.)

Click for larger view
Figure 21. CSS Zen Garden in IceBrowser (You can click on the screen shot to open a full-size view.)

Modern Compliance: Decent
Legacy Web: Excellent
JavaScript: Excellent
Hackability: Excellent
Speed: Excellent

Renderers That Didn't Make the Cut

Java Extensible Web Browser

Company: N/A
License: Apache Software License
URL: sourceforge.net/projects/jxwb
Type: 100 percent Java

This is a very new project on SourceForge. I did not include it because I
wasn't able to get it to run. Perhaps with the next release.

X-Smiles

Company: Telecommunications Software and Multimedia Laboratory at The Helsinki University of Technology
License: Open source
URL: xsmiles.org
Type: 100 percent Java

I didn't include X-Smiles because, well, it's not really a web browser.
They call it "an open XML browser for exotic devices," and it supports a
range of standards from XSLT and XHTML to XSLT-FO, X3D, and SVG. Pretty
much any XML-based rendering technology is a target for X-Smiles. As a
research project at the Helsinki University of Technology, it is constantly
improving. It now supports multiple XML languages in a single document via
XML Namespaces. Since it only supports valid XHTML with CSS, pretty much any
normal page on the web will look horrible. The built-in demos looked great,
but the CSS Zen Garden only loaded the text, showing that they still have
work to do. Since building a complete web browser really isn't their goal, I
don't know how useful this would be for projects that need general web
fidelity, but it's still an interesting piece of software and definitely
one to watch.

Massive

Company: Platespiller Software
License: Open source
URL: www.platespiller.com/products/massive.jsp
Type: 100 percent Java

Massive is another wrapper around the Swing HTML pane, though it does
have support for XHTML via a transcoding mechanism. Other than that, it has
the same flaws as the HTMLEditorKit.

BlackWood WebClient

Company: Mozilla
License: MPL
URL: www.mozilla.org/projects/blackwood/webclient
Type: Native wrapper

This was a project started some years ago to embed the normal C-based
Mozilla into a Java component. Interest seems to have fizzled out in recent
years, though there was an update last September, if only for Linux. I was
unable to get it to run on my computer, so I left it off of the list. Since the
quite active JRex is also listed on mozdev, BlackWood may have been
superceded by it.

Calyente

Company: N/A
License: unknown
URL: calyente.dev.java.net
Type: 100 percent Java

Calyente is a new open source project on java.net. Information is sparse,
but considering that the download is a mere 6K, this appears to be a wrapper
around the standard Swing HTML pane. The rendering bugs seem to be the
same. It has had a few updates recently, but nothing major. This is one
I'll keep an eye on.

The Rest

Browser G is another wrapper project based on the Blackwood WebClient that appears to have died.

I wasn't able to get IECanvas (based on an article at The Code Project) to run, but it might be another place to start if you want to create your own wrapper for IE or Mozilla (or any other application, for that matter).

The NetBeans NetBrowser, JBrowser, and XRenderer have all been discontinued and integrated into Jazilla, so I took them off of the list.

HotJava was once a cutting-edge browser; it has fallen by the wayside. Sun has long since EOL'ed it.

The French browser NetPisture (Google translation from French) required a login to run the application, so I was unable to load anything. It appears to be a dead project.

Conclusion

I hope this article has shown that there is quite a variety of HTML
rendering options beyond what's built into Swing. If you can use a
commercial license, then there are several excellent options available. I
would choose a package based on your own price point and customization needs. On the
open source side, JRex has the potential to be a great native wrapper
solution, and I would say that MultiValent is the best 100-percent-Java project. My
biggest disappointment is the lack of advanced CSS support. Some of the
commercial browsers do pretty well, but none has the full CSS2
compliance of Mozilla. Hopefully, in the future all of these projects will
continue to grow and get better.

Josh Marinacci first tried Java in 1995 at the request of his favorite TA and has never looked back.
Related Topics >> GUI   |   Swing   |