Java Sketchbook: The HTML Renderer Shootout, Part 2 Blog

    " hrefaction="pub">

              
    </  tr>                                                 

    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 oneof 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: http://www.xsmiles.orgxsmiles.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.

      
    http://today.java.net/im/a.gif