J Addons

From J Wiki
Jump to navigation Jump to search

⬅ Return to 'Welcome to J'

Addons are J script libraries providing additional functionality to the language.
Some are hosted on the JSoftware GitHub repository, but they can also be sourced from independent repositories.


To install all official addons, execute this command in J:


This command will also update any installed official addons which have available updates.

(By default, only the main addons are installed when you first install J.)

(This install command requires an internet connection.)

If you prefer, you could instead install single addons in much the same way. For example, if you wanted to make sure that the 'data/jd' addon was installed and up to date:


Unofficial addons (which begin with github: ) must be installed this way. For example:

   install'github:gottsman63/jwikiviz '


Package Description
regex Regular Expression interface
socket Sockets interface
stdlib Standard Library


Official addons:

Package Description
api/expat (src) libexpat interface

see readme.txt

api/gles (src) OpenGL 4.2 and OpenGL ES 3.1 API definitions

see jwiki http://code.jsoftware.com/wiki/OpenGL%20ES

api/java (src) api language bindings for java use of J shared library

Contributed by Bill Lam

api/jc (src) J bindings to C library (streams/fds/system) amd related utilties
api/jni (src) Java Native Interface

Contributed by Bill Lam

api/ncurses (src) 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 http://pdcurses.sourceforge.net/

api/python3 (src) api language bindings for python3 use of J shared library

Package Description
arc/lz4 (src) Utilities for lz4
arc/zlib (src) Utilities for zlib

Package Description
convert/jiconv (src) auto-detect and convert between different character encodings.
convert/json (src) json encoder/decoder.


convert/misc (src) md5.ijs RSA Data Security, Inc. MD5 Message-Digest Algorithm

vig.ijs Vigenère cipher with optional encoding ascii85.ijs Convert to/from ascii85 representation base64.ijs Convert to/from base64 representations unicode.ijs Unicode utilities

convert/numpy (src) Read and write numpy npy and npz files.

The npy files should contain a single numpy array.

The npz files are zips of one or more npy files.

convert/pjson (src) A json encoder/decoder


Package Description
data/ddmysql (src) 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 http://www.mysql.com/downloads.html

See wiki page http://code.jsoftware.com/wiki/JDD for help.

data/ddsqlite (src) 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 http://code.jsoftware.com/wiki/JDD for help.

data/jd (src) 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 (src) 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 (src) J Memory Mapped File
data/odbc (src) Accessing database using odbc api
data/sqlite (src) Sqlite allows direct access to sqlite databases.

See wiki page: code.jsoftware.com/wiki/Addons/data/sqlite/Overview

data/sqltable (src) 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.

Package Description
debug/dissect (src) dissect runs a sentence after inserting instrumentation at the execution of each primitive.

Then it creates a 2D display showing each word and the results of executing it. The user can click on the display to probe execution.

debug/jig (src) 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/lint (src) lint tries to find errors before a script is run. The idea is for 'lint' to replace 'load'

during debugging. The errors it looks for are the following:

explicit definitions lacking trailing )
undefined names, including names not defined in all paths
verbs used with invalid valences
non-noun results at the end of condition blocks and verbs
syntax errors
sentences with no effect on execution (eg verb verb)

See the program header for description and directives.

debug/tte (src) Addon: tte is an adverb to "explicate" a given tacitly-defined verb by generating an explanatory explicit definition from the given tacit definition. The result is a working verb which will behave the same as the verb being explicated.

Package Description
demos/coins (src) This is a sample project based on the coins demo.
demos/isigraph (src) 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 (src) This is a sample project using Publish.
demos/qtdemo (src) simple demos for qt
demos/wd (src) wd demos using qt and jandroid
demos/wdplot (src) Plot demos using wd emulation

Package Description
dev/eformat (src) message-format code, called from jtjeformat
dev/fold (src) J emulations of the Fold primitives
dev/lu (src) J LU code, called from 128!:10
dev/modular (src) modular arithmetic

Package Description
docs/joxygen (src) Generates html documentation from in-script comments

Inspired by Doxygen and Roxygen.

Contributed by Ric Sherlock & Chris Burke

Package Description
finance/actuarial (src) Various actuarial functions.
finance/interest (src) Various compound interest functions.

Package Description
format/datefmt (src) Various date formatting functions.
format/printf (src) Printf provides verbs and adverbs for formatted printing in the manner of C's printf and sprintf.
format/publish (src) 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 (src) Provides a verb: sbox in locale: 'z'

which corrects the display of boxed nouns containing Unicode glyphs.

format/zulu (src) Addon: zulu - is a set of stringlist conversion verbs

plus a sandbox of sample data. Converts consistently between 4 supported forms of stringlist,

 boxed        eg: 'alpha';'bravo';'charlie'
 LF-separated eg: 'alpha',LF,'bravo',LF,'charlie'
 open         eg: 'alpha bravo charlie'
 matrix       eg: 3 7$'alpha  bravo  charlie'
format/zulu-bare (src) Addon: zulu-bare - is a set of strings conversion verbs in _z_.

For more details, refer to the description of addon: zulu. This is the "bare" version, without the "trivials" patch and with no aliases, just the *2* verbs.

format/zulu-lite (src) Addon: zulu-lite - is a set of strings conversion verbs in _z_.

For more details, refer to the description of addon: zulu. This is a "strict" version, with the "trivials" patch, and with verbs: a2*, and aliases: *4*, *4a. This addon differs from addon: zulu by OMITTING the "sandbox" (locale: _zulu_) with its test data and handy utilities.

Package Description
games/2048 (src) 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/bagofnouns (src) Lets people play a game over Zoom
games/minesweeper (src) 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 (src) Nurikabe puzzle, see wiki Essays/Nurikabe.
games/pousse (src) pousse
games/solitaire (src) solitaire

Package Description
general/dirtrees (src) Copies and deletes directory trees.

Copyright 2008 (C) Ric Sherlock

general/dirutils (src) 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 (src) 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 funtionality built into J to parse INI formats and is therefore not dependent on Windows API.

Copyright 2008 (C) Ric Sherlock

general/jod (src) JOD (J Object Dictionary) is a J programming and refactoring

tool. JOD supports linked dictionary databases and provides tools for building, documenting and testing J systems.

JOD requires the (data/jfiles) addon.

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 and GitHub at:

general/joddocument (src) JOD Document contains (jod.pdf) which documents the JOD system.

JOD Document also contains pdf versions of Jupyter notebooks that show how to use various JOD facilities. See the directory:

jpath '~addons/general/joddocument/pdfdoc'

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 bakerjd99@gmail.com

general/jodsource (src) (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.

JOD requires the (data/jfiles) addon.

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 (src) trace.ijs Execution trace utilities

fndisplay.ijs Display hooks, forks and other syntax elements font.ijs format.ijs parts.ijs Partition functions validate.ijs Data validation functions jdll.ijs guid.ijs Create guids in various formats pack.ijs Package utilities ieee64.ijs test_clippaste.ijs Test script for clippaste.ijs inverted.ijs Current URL http://code.jsoftware.com/wiki/Essays/Inverted%20Table prompt.ijs bigfiles.ijs numeric.ijs Various numeric utilities evolute.ijs clippaste.ijs test_bigfiles.ijs data=.bixread f;start0,start1[,len[,dirflag]] indexed read fndef.ijs Using a more literate style

general/primitives (src) 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 (src) Implements a unit test framework.

Copyright 2008-2009 (C) Oleg Kobchenko

Package Description
graphics/afm (src) Adobe Font Metrics
graphics/bmp (src) Utilities for *.bmp files
graphics/cairo (src) cairographics interface and gl2 emulation
graphics/color (src) Color tables and related scripts.
graphics/d3 (src) 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: http://en.wikipedia.org/wiki/D3.js

graphics/freeglut (src) Demo of the open source freeglut library usage on J.

Library from: http://freeglut.sourceforge.net/

Based on https://rosettacode.org/wiki/OpenGL/Utah_Teapot

Ubuntu will need libglut.so.3.10.0

graphics/fvj4 (src) 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/gnuplot (src) 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 (src) 2D Graph
graphics/graphviz (src) Integrated with J, a popular graph drawing visualization library.

Includes user interface Graph View and a utility to visualize sequential machines (finite automata) in testsm folder. See help.html for furter details. See also companion cluster analysis Essays/Dendrite on J Wiki. Based on Graphviz from http://www.graphviz.org/

Copyright 2006 (C) Oleg Kobchenko

graphics/jpeg (src) Utilities for *.jpg files
graphics/pdfdraw (src) Utilities for drawing to a PDF file or a Publish JPF file.
graphics/plot (src) Plot package
graphics/png (src) Utilities for *.png files
graphics/pplatimg (src) 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 (src) print text files
graphics/treemap (src) Displays a treemap in an isigraph control.
graphics/viewmat (src) Viewmat displays tables of data graphically.

Package Description
gui/cobrowser (src) cobrowse - famous SmallTalk tool for J

Package Description
ide/jhs (src) JHS IDE
ide/jnet (src) JNET IDE *not* supported by Jsoftware.

Copy one of the three jnet.exe files to your j bin directory.


install .net framework 4.0 or later
(already pre-installed on Windows 8 or 10)
start J by double click jnet.exe


sudo apt-get install mono-complete
start J by typing mono jnet.exe

Read data/migration.txt for differences with J6 wd commands.

ide/qt (src) Qt development

Package Description
labs/labs (src) LABS

Package Description
math/arrayfire (src) cd bindings and utilities for ArrayFire shared library


"ArrayFire is a high performance software library for parallel computing with an easy-to-use API. Its array based function set makes parallel programming more accessible."

J-ArrayFire cd bindings make it easy to have high performance computing for things like matrix multiply with cpu cores, Nvidia gpus, and opencl.

math/cal (src) CAL is a platform-independent engine.

It forms the basis of TABULA, a backfitting scientific calculator.

math/calculus (src) Conjunctions to perform differentiation and integration of J verbs, and secant-slope approximation for verbs that cannot be handled symbolically
math/deoptim (src) 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 (src) eigenpicture
math/fftw (src) 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 Add-On 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/lapack2 (src) 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.

This addon is a leaner version of another math/lapack addon which is no longer maintained.

Binary for Mac/iOS 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 Windows, run getbin_jlapack2_ to install the shared library.

Both Windows and Android binary provided here use reference BLAS.

Reference BLAS implementation may be orders of magnitude slower than optimized implementations. Build your own optimized BLAS if speed performance is critical.

See wiki page: code.jsoftware.com/wiki/Vocabulary/LAPACK

math/lbfgs (src) The Limited Memory Broyden-Fletcher-Goldfarb-Shanno (BFGS) method to solve an unconstrained nonlinear optimization problem.

L-BFGS-B is a code for solving large nonlinear optimization problems with simple bounds on the variables.

The code can also be used for unconstrained problems and is as efficient for these problems as the earlier limited memory code L-BFGS.

See wiki page: code.jsoftware.com/wiki/Addons/math/lbfgs

math/misc (src) 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 (src) 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.

math/tabula (src) TABULA is a backfitting scientific calculator.

It has many built-in physical constants and knows about units of measurement.

math/uu (src) UU (units-to-units) is a scientific units conversion package

based on the SI system of units.

Package Description
media/imagekit (src) 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 (src)
media/wav (src) Implementation for Windows.

Includes samples of creating musical notes.

Copyright 2006 (C) Oleg Kobchenko

Package Description
misc/classroom (src) remoteprofile loads a class profile from the web and executes it

studentinit sets startup to point to remoteprofile They allow you to manage the profile of all your students

misc/miscutils (src) 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

Package Description
net/clientserver (src) Simple client server.
net/jcs (src) This is a J client/server built on zeromq.
net/websocket (src) This is a websocket server which allows a web browser to make calls to J.
net/zmq (src) This is a J interface to ZeroMQ distributed messaging, http://zeromq.org.

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

Package Description
profiles/profiles (src) 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.

Package Description
stats/base (src) Basic statistics package.

Migrated from system/packages/stats.

stats/distribs (src) 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/jserver4r (src) This library provides a J server for the R statistical package.

For more information, see wiki page http://code.jsoftware.com/wiki/Interfaces/R/Jserver4R .

stats/r (src) 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 http://code.jsoftware.com/wiki/Interfaces/R .

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

For more information, see wiki page http://code.jsoftware.com/wiki/Interfaces/R/Rserve/Library.

Package Description
tables/csv (src) 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 (src) Reads/writes/appends Delimiter-separated value (DSV) files and strings.

Supports user-defined field and string delimiters.

Contributed by Ric Sherlock.

tables/excel (src) Reads Excel worksheet data using OLE.

The worksheets can be read as a whole, or by range.

Excel was developed by Anssi Seppala and Chris Burke.

tables/tara (src) 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, bbill.lam@gmail.com, but may be used freely, even for commercial purposes.

tables/taraxml (src) 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 http://www.microsoft.com/en-us/download/details.aspx?id=21714

 msxsl.exe depends on msxml4 (not msxml6!) http://www.microsoft.com/en-us/download/details.aspx?id=19662

TaraXML was developed by Ric Sherlock and Bill Lam.

tables/wdooo (src) ole automation client.

This program only works on windows.

Contributed by Bill Lam

Package Description
types/datetime (src) Convert between day number and dates including times.

Custom date/time formating. Date/time arithmetic.

Extends the `dates.ijs` system script.

Package Description
web/gethttp (src) 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 https://curl.haxx.se/docs/sslcerts.html

You could get a more recent cert file from https://curl.haxx.se/docs/caextract.html

Some unofficial addons:

Package Description
github:gottsman63/jwikiviz (src) Interactive visualization of the J wiki and forums.

Package Description
github:zerowords/tgsjo (src) A "modern" openGL turtle graphics/turtle geometry system