Technologies and libraries used by Gradient
The Gradient client is the Squiggle SVG browser, with one or two extensions added by me. Squiggle came from the Apache Batik project.
Except for the map of Spain, which was created by Andreas Neuman, the Gradient examples were created with yEd, which is a very cool piece of freeware that also uses Batik for SVG. Although I haven't used them yet, either Sodipodi or Inkscape will probably be used to create & edit SVG graphics in future.
IMPORTANT NOTE
Patches have been made to files from two separate libraries. To try and prevent conflicts I have made available these jar files with the patched classes removed. All distributions on this site contain these two JAR files, but they are also made available here, just in case.
The two files are as follows:
-
smack.jar
- Changes made to:
org.jivesoftware.smack.packet.Messageorg.jivesoftware.smack.packet.Presenceorg.jivesoftware.smack.packet.IQorg.jivesoftware.smack.provider.ProviderManager
The jar file minus these files (which exist in the standard gradient distribution files) is available as minus-patched-smack.jar.
Summary of changes:
- Fixed disconnection issue. The developers know about it and a fix has been included in the latest builds.
- Changed behaviour of ProviderManager, see Changes to IQ-related ProviderManager behaviour.
-
batik-util.jar
- Changes made to:
org.apache.batik.util.ParsedURLDataorg.apache.batik.util.ParsedURLDefaultProtocolHandler
The jar file minus this file (which exist in the standard gradient distribution files) is available as minus-patched-batik-util.jar.
Summary of changes: added the ability to store the user info from the authority part of a URL. This info is stored only when a full URL (parseable by java.net.URL) is provided - partial URLs do not have user info extracted from them.
This is a table of the various technologies used by Gradient and the patched version of Squiggle, which I'm using as a demo Gradient client.
| Technology | Introduction / Tutorial | Specification(s) | Project | License | Download Library |
|---|---|---|---|---|---|
| XML | W3Schools | XML 1.0 ed3 @ W3C | Xerces | Apache License 1.1 | Mirrors |
| XML Namespaces | @ W3Schools | Namespaces in XML 1.1 @ W3C | " | " | " |
| DOM2 | @ W3Schools | WG @ W3C | " | " | " |
| XPath | @ W3Schools | V1 @ W3C | Jaxen | semi-Apache | Releases |
| XMLPull API | Intro @ XMLPull.org | Interface JavaDocs | XMLPull.org | Public domain | Implementation list |
| XMPP / Jabber | Jabber @ Wikipedia | IETF proposed standard | Smack | (equiv. Apache) | <-- |
| SVG | @ W3Schools | SVG 1.1 @ W3C | Batik | Apache License 1.1 | Mirrors |
| ECMAScript (a.k.a. JavaScript/JScript) | @ W3Schools | ECMA-262 | Mozilla Rhino | MPL / GPL | Download page |
Other projects, not linked to above, have saved me a great deal of time:
| Project | Description | License | Download |
|---|---|---|---|
| Jakarta Commons Lang | Utility classes | Apache 1.1 | binary, source |
| Jakarta Commons Collections | Utility classes | Apache 1.1 | binary, source |
Some code was also copied directly from some other projects, specifically:
- Some parsing code was taken from the XMLPull project.
- Some logging code was adapted from the superb Tomcat 5 project.
© 2006. Some rights reserved. Author: Ian Sollars.