Java XMPP library
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
PortingProgress.txt Revert pessimistic allocation of collection members in VCard. Aug 13, 2015


Stroke is a port of the C++ Swift library ( ) The source is available from the Git repository at

For XML parsing, Stroke depends on the Aalto XML Parser and the STAX2 API, from

It also depends upon, which is passed to ant in the jzlib-dir parameter. The passed folder should contain a jar called jzlib.jar.

It also depends upon icu4j from

It also depends upon dnsjava from

To build, run: ant -Dxpp-dir=third-party/xpp -Djzlib-dir=third-party/jzlib -Dicu4j-dir=third-party/ -Dstax2-dir=third-party/stax2/ -Daalto-dir=third-party/aalto/ Changing the paths to the relevant paths for the dependencies on your system

Easy version: The included Makefile should, on Unixes with make/curl installed, grab the dependencies (once only) and build.

For development: If you want to commit changes to Stroke, first run make .git/hooks/commit-msg to download a script that will generate change-ids needed by our review system.

Differences from Swiften

Stroke tries to be a clean and accurate port of Swiften, in order to facilitate mirroring changes. Sometimes differences are either necessary or desirable.

  • VCard.getPhoto() returns null instead of an empty ByteArray when there is no photo.

  • VCard does not allocate empty collections for unused members. The way a VCard is used, pessimistic allocation puts an undue load on the Java GC. Callers have to check for null not just isEmpty().