Addons Library

From J Wiki
Jump to navigation Jump to search

J Addons
Addons Reference

How To Help With This Document

Find a package that hasn't been worked on yet, and

  • Cut the description down to a line or two
    • If the package has its own documentation page, put in a link to that
  • Add appropriate keywords to the third column
  • If you create any new keywords, put them into the list below

After all the packages have been so modified, we will

  • Add a line for each entry point, giving
    • name
    • function
    • arguments
    • example of use
  • Reformat all this information into a set of pages with an index

Details for this next phase are being worked out.

List of keywords used in this document

calculus debug formatting keyvaluepairs miscverbs sampleapp scientific sysadmin

Package Description Keywords
api/expat libexpat interface

see readme.txt

api/gles OpenGL 4.2 and OpenGL ES 3.1 API definitions

see jwiki

api/jni Java Native Interface

Contributed by Bill Lam

api/lapacke LAPACK version 3.X is a comprehensive FORTRAN library that does linear algebra operations including matrix inversions, least squared solutions to linear sets of equations, eigenvector analysis, singular value decomposition, etc. It is a very comprehensive and reputable package that has found extensive use in the scientific community.

This package contains the LAPACKE C Interface to LAPACK

Binary for Linux, install liblapacke (or similar) from your distro repository. For 64-bit windows, it needs 6 dll files, libblas.dll liblapack.dll liblapacke.dll : from libgcc_s_sjlj-1.dll libgfortran-3.dll libquadmath-0.dll : runtime dll files from mingw

api/ncurses CRT screen handling and optimization package

To install shared library/dll, linux: (debian) sudo aptitude install libncurses5 (or libncursesw5 for unicode) win32: download pre-compiled binary from

api/python3 api language bindings for python3 use of J shared library
arc/zip Zip file utilities based on zlib 1.2.3 and minizip libraries.

Interface API is similar to the files package. Includes Win32, Linux and Mac OS X universal binaries. For details see J Wiki.

Copyright 2006-2007 (C) Oleg Kobchenko

arc/ziptrees Zips and unzips directory trees to and from zip files.

Uses the the arc/zip addon.

Contributed by Ric Sherlock

arc/zlib Utilities for zlib
convert/jiconv auto-detect and convert between different character encodings.
convert/json json encoder/decoder.

convert/misc ascii85.ijs Convert to/from ascii85 representation

base64.ijs Convert to/from base64 representations md5.ijs RSA Data Security, Inc. MD5 Message-Digest Algorithm unicode.ijs Unicode utilities vig.ijs Vigenère cipher with optional encoding

convert/pjson Another json encoder/decoder
data/ddmysql Accessing MySQL server with native C API using the data driver (JDD) interface such ddcon and ddfet. Requires MySQL client library or Connector/C.

For Linux, install libmysqlclient (or similar) from your distro repository. Or download from

See wiki page for help.

data/ddsqlite Accessing SQLite database with C API using the data driver (JDD) interface such as ddcon and ddfet. Requires sqlite 3.6.0 or newer.

See readme.txt for shared library installation.

See wiki page for help.

data/jd Jd is a commercial database product from Jsoftware.

Although similar in terminology and features to MySQL, Oracle, DB2, SQL Server, and others, it is closer in spirit and design to Kx's kdb, Jsoftware's free JDB, and old APL financial systems on mainframes in 70s and 80s.

The key difference between Jd and most other systems is that Jd comes with a fully integrated and mature programming language. Jd is implemented in J and lives openly and dynamically in the J execution and development environment. Jd is a natural extension of J and the full power of J is available to the Jd database application developer. The integration is not just available to you, it is unabashedly pushed to you for exploitation.

Jd is a columnar (column oriented) RDBMS.

Jd is particularly suited to analytics. It works well with large tables (100s of millions of rows), multiple tables connected by complex joins, structured data, numerical data, and complex queries and aggregations.

data/jfiles This script contains definitions for the J component file and

keyed file system.

A keyed file is a J component file in which data is accessed using keywords.

data/jmf J Memory Mapped File
data/odbc Accessing database using odbc api
data/sqlite Sqlite allows direct access to sqlite databases.

See wiki page:

data/sqltable High-level interface for accessing database tables.

This allows accessing database without low-level knowledge of odbc api.

This package is the result of a consultation work done for Anssi Seppälä. Significant changes were also made in data/odbc addon to support this package. This work is released to the public by the request and permission of Anssi Seppälä. Thank you, Anssi.

debug/dissect A visual debugger for individual J sentences. Described here. debug
debug/jig Jig displays an interactive SVG window that allows users to easily see the shape, type and other properties of the results of J sentences. Jig runs in the jqt environment and requires the full version of the QT ide debug
debug/lint Static program analyzer to find errors before execution. Described here. debug
debug/tte Addon: tte is an adverb to "explicate" a tacit verb by generating a readable explicit definition. debug
demos/coins This is a sample project based on the coins demo.
demos/isigraph This package contains isigraph example scripts.

Each script can be run by itself. First enter:

Many of these examples (in particular the ifs examples) are based on work done by Clifford Reiter.

demos/publish This is a sample project using Publish.
demos/qtdemo simple demos for qt
demos/wd wd demos using qt and jandroid
demos/wdplot Plot demos using wd emulation
docs/help J Help Files
docs/joxygen Generates html documentation from in-script comments

Inspired by Doxygen and Roxygen.

Contributed by Ric Sherlock & Chris Burke

finance/actuarial Various actuarial functions.
finance/interest Various compound interest functions.
format/datefmt Various date formatting functions.
format/printf Printf provides verbs and adverbs for formatted printing in the manner of C's printf and sprintf. formatting
format/publish Publish generates a PDF report from source in plain text files in an html-like markup language.

The markup language supports calling J expressions, for example, to allow data to be read in from various sources. Apart from this, reports can be customized without knowledge of J.

format/sbox Provides a verb: sbox in locale: 'z'

which corrects the display of boxed nouns containing Unicode glyphs.

format/zulu Addon: zulu - is a set of stringlist conversion verbs residing in locale 'z' plus a sandbox of sample data in locale 'zulu'.

Converts consistently between 4 supported forms of stringlist: boxed; LF-separated; open; matrix.

format/zulu-bare Addon: zulu-bare - is a set of strings conversion verbs residing in locale 'z'.

A cutdown version of addon: zulu.

format/zulu-lite Addon: zulu-lite - is a set of strings conversion verbs residing in locale 'z'.

A cutdown version of addon: zulu.

games/2048 Implentation of the 2048 game.

An example of how to implement equivalent user interfaces for different environments. User interfaces available for various J environments currently include:

 * jconsole, jQt

Authors: Ric Sherlock

games/minesweeper Implentation of classic Minesweeper game.

Designed as an example of how to implement equivalent user interfaces for different environments. User interfaces available for various J environments currently include:

 * jconsole, jQt

Authors: Ric Sherlock, Bill Lam and Raul Miller.

games/nurikabe Nurikabe puzzle, see wiki Essays/Nurikabe.
games/pousse pousse
games/solitaire solitaire
general/dirtrees Copies and deletes directory trees.

Copyright 2008 (C) Ric Sherlock

general/dirutils Directory utilities in addition to those in dir.ijs.

Including test for existence of directory, create all non-existing directories in a path. Contributed by Ric Sherlock

general/inifiles Reads/writes one (or more) keys from/to files in INI format.

The INI files source can be files stored on disk, or a string read from a database or zip file. Uses regex functionality built into J to parse INI formats and is therefore not dependent on Windows API.

Copyright 2008 (C) Ric Sherlock

general/jod JOD (J Object Dictionary) is a J programming tool. JOD is

a word oriented database for all types of J objects. JOD supports linked dictionary databases and provides tools for documenting and testing J code.

J 7.0x/8.0x JOD requires the (data/jfiles) addon. Prior versions of J make (jfiles) available from system scripts.

If you install JOD it is highly recommended that you install the related addon JODDOCUMENT. JODDOCUMENT installs detailed PDF documentation for JOD.

For more information see the JOD wiki pages (Info Button), run the lab "JOD lab JOD Introduction" - JOD labs are under the General lab category. If you do not see JOD labs listed on the Lab menus use the Lab browse button to access:


More information is available on the JOD Page at:
general/joddocument JOD Document contains (jod.pdf) which documents the JOD system.

For more information see the JOD wiki pages (Info Button) or visit The JOD Page at:

LaTeX document source is available on GitHub at:

John Baker

general/jodsource (jodsource) contains serialized dictionary dump scripts

(joddev,jod,utils). These dump scripts contain all the code, test cases, build scripts, and documentation used to develop and maintain JOD and related systems.

Dump scripts are large J scripts that load dictionary objects into JOD dictionaries when run.

JOD system dictionaries are good examples of how JOD can be used to build complex J systems.

J 7.0x/8.0x JOD requires the (data/jfiles) addon. Prior versions of J make (jfiles) available from system scripts.

JOD source dictionaries can be set up in two ways:

1) Run the J script

  This is the recommended method. (jodsourcesetup.ijs) 
  can take a minute or so to run.

2) Run the JOD lab "JOD Source Code Dump Scripts."

  JOD labs are in the (General) lab category. If you
  do not see JOD labs listed on the Lab menus use the Lab
  browse button to access:

More information is available on the JOD Page at:
general/misc bigfiles.ijs clippaste.ijs evolute.ijs fndef.ijs using a more literate style

fndisplay.ijs Display hooks, forks and other syntax elements font.ijs format.ijs guid.ijs Create guids in various formats ieee64.ijs inverted.ijs Current URL jdll.ijs numeric.ijs Various numeric utilities pack.ijs Package utilities parts.ijs Partition functions prompt.ijs test_bigfiles.ijs data=.bixread f;start0,start1[,len[,dirflag]] indexed read test_clippaste.ijs Test script for clippaste.ijs trace.ijs Execution trace utilities validate.ijs Data validation functions

general/primitives Some users may prefer a more literate form of J using words instead

of the J primitives. We call the words alpha primitives since they use an alphabetic form rather than a graphic or inflected graphic to represent them. This script provides a means of doing this with options for the form of the words used, and verbs to convert a script in alpha form to a script in J primitives so there is no execution time penalty.

general/unittest Implements a unit test framework.

Copyright 2008-2009 (C) Oleg Kobchenko

graphics/afm Adobe Font Metrics
graphics/bmp Utilities for *.bmp files
graphics/cairo cairographics interface and gl2 emulation
graphics/color Color tables and related scripts.
graphics/d3 Addon 'graphics/d3' is a package of D3 interface verbs written for JHS.

D3.js (or "D3 for data-driven documents") is a free JavaScript library to display given digital data into graphic, dynamic forms.

D3 is described here:

graphics/fvj4 The FVJ4 package provides materials for Fractals, Visualization and J, 4th edition including scripts for simple winodws for plotting polygons, working with raster arrays, Also scripts for creating POV-Ray scenes, viewing automata, executing the Game of Life in color are included.
graphics/gl2 Base class for gl2 commands.
graphics/gnuplot The gnuplot addon creates gnuplot graphics from data in J.

This works with gnuplot V4.0 or later, and may work with earlier versions.

The original script was contributed by L. Fraser Jackson.

graphics/graph 2D Graph
graphics/graphviz Graph Visualization.

Based on Graphviz from

Copyright 2006 (C) Oleg Kobchenko

graphics/jpeg Utilities for *.jpg files
graphics/pdfdraw Utilities for drawing to a PDF file or a Publish JPF file.
graphics/pdfdraw/publish This is a sample project using Publish.
graphics/plot 2D Plot
graphics/png Utilities for *.png files
graphics/pplatimg Implementations for Windows, Linux and Mac OS X.

Supports BMP, GIF, JPEG, PNG, TIFF, Exif, ICO, WMF, and EMF formats where available. Returns pixel matrix in ARGB (Alpha most significant) integer format. Expects ARGB, or triples of RGB in any axis of rank 3 array. Good for glpixels. Uses GDI+, Core Graphics (Quartz), The gdk-pixbuf Library from GTK+.

Ported to 64-bit platforms by Bill Lam Based on media/platimg developed by Oleg Kobchenko

graphics/print print text files
graphics/treemap Displays a treemap in an isigraph control.
graphics/viewmat Viewmat displays tables of data graphically.
gui/cobrowser cobrowse - famous SmallTalk tool for J
ide/jhs JHS IDE
ide/qt Qt development
labs/labs LABS
math/cal CAL is a platform-independent engine forming the basis of TABULA, a backfitting scientific calculator.

Critically dependent on math/uu.

math/calculus differentiation and integration, by analysis of the verb argument if possible, otherwise by approximation calculus
math/deoptim Differential Evolution is a form of evolutionary algorithm. It is relatively robust, simple and fast.

DE finds the global minimum of a multidimensional, multimodal (i.e. exhibiting more than one minimum) function with good probability.

Contributed by Ric Sherlock.

math/eigenpic eigenpicture
math/fftw FFTW (Fastest Fourier Transform in the West) is a collection of fast C routines for computing the Discrete Fourier Transform in one or more dimensions. It includes complex, real, and parallel transforms, and can handle arbitrary array sizes efficiently. The FFTW Addon consists of a DLL incorporating the FFTW routines, plus supporting J scripts and labs. FFTW and the FFTW package are distributed under the terms of the GNU General Public License. For more information on GNU, see the GNU web page.

FFTW is available under Windows, Mac and Linux.

math/lapack LAPACK (Linear Algebra Package) is a set of routines for solving systems of simultaneous linear equations, least-squares solutions of linear systems of equations, eigenvalue problems, and singular value problems. The associated matrix factorizations (LU, Cholesky, QR, SVD, Schur, generalized Schur) are also provided, as are related computations such as reordering of the Schur factorizations and estimating condition numbers.

Binary for Mac is provided by the veclib framework.

Binary for Linux, install liblapack3 (or similar) from your distro repository. If available, install libopenblas-base or libatlas3-base which provides an optimized version of BLAS.

For 64-bit windows, a prebuilt jlapack64.dll is provided by David Hotham and is included in this addon. Note that this jlapack64.dll requres a msvc runtime which can be downloaded from .

For Android, run install_jlapack_ to install the shared library.

Reference BLAS implementation may be orders of magnitude slower than optimized implementations.

math/misc amoeba.ijs Nelder-Mead multi-dimentional minimization, aka the amoeba method

bigpi.ijs Calculate several digits of pi brent.ijs Brent's method in J build.ijs cheby.ijs Chebyshev approximation contfrac.ijs Continued fraction utilities det.ijs Definitions for determinants fermat.ijs Fermat factorization gamesolver.ijs Find optimal mixed strategies for 2-person games gcd.ijs Calculate GCD integer.ijs Verbs to generate various integer sequences integrat.ijs Various methods for numeric integration jacobi.ijs Jacobi's method for eigenvalues and vectors legendre.ijs Legendre symbol and quadratic residues linear.ijs Solve linear equations makemat.ijs Make various standard matrices matfacto.ijs Matrix factorization mathutil.ijs Math utilities matutil.ijs Matrix utilities mean.ijs Various means numbers.ijs Various number definitions (Stirling, Euler ...) odeint.ijs Solve initial value ordinary differential equations pollard.ijs Pollard factorizations poly.ijs Polynomial functions primutil.ijs Primes - prime testing programs quatern.ijs Definitions for quaternions rsa.ijs Examples of RSA encryption simplex.ijs Simplex method simplexnr.ijs Simplex method (after Numerical Recipes in C) spline.ijs Spline utilities svd.ijs Singular value decomposition trig.ijs Trigonometric functions

math/mt Library to solve some problems in matrix algebra:

transforming, decomposing, reducing to condensed form, factorization, equation solving, function applying, condition number estimating. Is based mostly on LAPACK algorithms, but doesn't require LAPACK.

linear algebra, matrix
math/tabula A backfitting scientific calculator which handles calculations with different but compatible units of measurement.

Essentially a jqt topend to math/cal.

sampleapp scientific
math/uu UU (units-to-units) is a user-extendable scientific units conversion package based on SI units (Système Internationale).

Many pre-defined scientific, technical and trade constants. Used heavily by math/cal.

media/imagekit The image kit package provides utilities for accessing 24-bit jpeg, png image files in J. The core functions allow reading and writing image files as 3-dimensional J arrays.

The addon includes several scripts. The main script, imagekit.ijs, provides J functions for the basic image reading, writing, and viewing images through other J addons. Another script, html_gallery.ijs, provides J functions that create thumbnails and image galleries under J program control. Sample scripts and a rotation form script are also included.

media/videolabs The multimedia framework of the jqt environment allows this package to incorporate audio and video into the tradional J labs, retaining the interactive development environment.

This viewer allows access to sections and chapters via dropdown menus, as well as providing users capabilities to make personal notes for sections

Affordances such as pause, replay and scan are also provided for the videos. A script file as a text version allows search through nuvoc and google on the web.

Internet connectivity is required for the first run of the video lab to allow for video resource downloads to the '~user/videolabs/lab_name' folder.

Personal notes are stored in the '~user/videolabs/lab_name/notes' folder.

media/wav Implementation for Windows.

Includes samples of creating musical notes.

Copyright 2006 (C) Oleg Kobchenko

misc/classroom Automates keeping multiple user profiles synced to a master profile debug sysadmin
misc/miscutils A miscellany of functions, mostly tacit

langexten contains basic extensions to J. klutils contains function for 'keyed lists', which are tables where specified columns are 'key' and the rest are 'data' utils contains a grab-bag of definitions

keyvaluepairs miscverbs
net/clientserver Simple client server.
net/jcs This is a J client/server built on zeromq.
net/websocket This is websocket server which allows a web browser to make calls to J.
net/zmq This is a J interface to ZeroMQ distributed messaging,

Client/server examples and labs are in ~addons/net/jcs

profiles/profiles When one of these files is loaded, the user's config is updated.

explorer.ijs sets up to update packages, loads visualization and debug tools, and sets PF keys for debugging.

sockets/socklib sockmux creates a socket in its own locale and manages multiple such sockets.

sockconnxactn calls sockmux and mediates transfer of data to an application, using callbacks to tell the application when data has been received. Suitable for things like email or HTTP transactions. There is also a file-server.

sockets/sockutils Routines to process transactions using the socket system
stats/base Basic statistics package.

Migrated from system/packages/stats.

stats/distribs Verbs for working with statistical distributions.

Currently covers normal and uniform distributions.

Addon compiled by Ric Sherlock & Fraser Jackson from many contributions by the J community.

stats/r This addon has interfaces to the R statistical package.

R is the most widely used program in the statistical research community and has a vast range of statistical tools available. It is freely available on all common platforms.

For more information, see wiki page .

stats/jserver4r This addon is an interface to J from the R statistical package.

For more information, see wiki page Jserver4R.

stats/rlibrary This addon supports various R libraries using the Rserve interface.

For more information, see wiki page

tables/csv Reads/writes/appends Comma-separated value (CSV) files and strings.

Generally better performance than the base library CSV script.

Note: requires that the tables/dsv addon also be installed.

Contributed by Ric Sherlock.

tables/dsv Reads/writes/appends Delimiter-separated value (DSV) files and strings.

Supports user-defined field and string delimiters.

Contributed by Ric Sherlock.

tables/tara Tara reads and writes files in Excel format. It supports the biff8 format used in Excel 97/2000/xp/2003. It also reads older formats used in earlier versions of Excel. It can also work with spreadsheets like OpenOffice and Gnumeric that support Excel formats. It runs on Windows, Linux and Mac OSX. MS Excel or OpenOffice are not required to use Tara.

After it is installed, run lab 'Tara and Excel' for examples of using the system.

Tara was developed and is copyrighted by Bill Lam,, but may be used freely, even for commercial purposes.

tables/taraxml The TaraXML addon reads files in Microsoft Excel's OpenXML format. For reading and writing older non-XML Excel formats see the Tara addon.

TaraXML depends on a command line transformation utility. Linux: xsltproc which should be available in various linux distro. Windows: msxsl.exe available from

 msxsl.exe depends on msxml4 (not msxml6!)

TaraXML was developed by Ric Sherlock and Bill Lam.

types/datetime Convert between day number and dates including times.

Custom date/time formating. Date/time arithmetic.

Extends the `dates.ijs` system script.

web/gethttp J interface to Wget/cURL for retrieving files using http, https or ftp protocols.

Retrieve file contents or save to file.

Learn about SSL/TLS before use

You could get a more recent cert file from