Processing is a
free graphics library and
integrated development environment
An integrated development environment (IDE) is a Application software, software application that provides comprehensive facilities for software development. An IDE normally consists of at least a source-code editor, build automation tools, an ...
(IDE) built for the electronic arts,
new media art
New media art includes artworks designed and produced by means of new media, electronic media technologies. It comprises virtual art, computer graphics, computer animation, digital art, interactive art, sound art, Internet art, video games, robo ...
, and
visual design communities with the purpose of teaching non-programmers the fundamentals of
computer programming
Computer programming or coding is the composition of sequences of instructions, called computer program, programs, that computers can follow to perform tasks. It involves designing and implementing algorithms, step-by-step specifications of proc ...
in a visual context.
Processing uses the
Java programming language
Java is a high-level, general-purpose, memory-safe, object-oriented programming language. It is intended to let programmers ''write once, run anywhere'' ( WORA), meaning that compiled Java code can run on all platforms that support Jav ...
, with additional simplifications such as additional classes and aliased mathematical functions and operations. It also provides a graphical user interface for simplifying the compilation and execution stage.
The Processing language and IDE have been the precursor to other projects including
Arduino
Arduino () is an Italian open-source hardware and open-source software, software company, project, and user community that designs and manufactures single-board microcontrollers and microcontroller kits for building digital devices. Its hardwar ...
and
Wiring.
History
The project was initiated in 2001 by
Casey Reas and
Ben Fry, both formerly of the Aesthetics and Computation Group at the
MIT Media Lab
The MIT Media Lab is a research laboratory at the Massachusetts Institute of Technology, growing out of MIT's Architecture Machine Group in the MIT School of Architecture and Planning, School of Architecture. Its research does not restrict to fi ...
. In 2012, they started the Processing Foundation along with
Daniel Shiffman, who joined as a third project lead.
Johanna Hedva joined the Foundation in 2014 as Director of Advocacy.
Originally, Processing had used the domain proce55ing.net, because the ''processing'' domain was taken; Reas and Fry eventually acquired the domain processing.org and moved the project to it in 2004. While the original name had a combination of letters and numbers, it was always officially referred to as ''processing'', but the abbreviated term ''p5'' is still occasionally used (e.g. in "p5.js") in reference to the old domain name.
In 2012 the Processing Foundation was established and received 501(c)(3) nonprofit status, supporting the community around the tools and ideas that started with the Processing Project. The foundation encourages people around the world to meet annually in local events called
Processing Community Day.
Features
Processing includes a ''sketchbook'', a minimal alternative to an
integrated development environment
An integrated development environment (IDE) is a Application software, software application that provides comprehensive facilities for software development. An IDE normally consists of at least a source-code editor, build automation tools, an ...
(IDE) for organizing projects.
Every Processing sketch is actually a subclass of the
PApplet
Java class
Java is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea (a part of Pacific Ocean) to the north. With a population of 156.9 million people (including Madura) in mid 2024, pro ...
(formerly a subclass of Java's built-in Applet) which implements most of the Processing language's features.
When programming in Processing, all additional classes defined will be treated as
inner classes when the code is translated into pure Java before compiling.
This means that the use of
static variable
In computer programming, a static variable is a variable that has been allocated "statically", meaning that its lifetime (or "extent") is the entire run of the program. This is in contrast to shorter-lived automatic variables, whose storage is ...
s and
methods in classes is prohibited unless Processing is explicitly told to code in pure Java mode.
Processing also allows for users to create their own classes within the PApplet sketch. This allows for complex
data types
In computer science and computer programming, a data type (or simply type) is a collection or grouping of data values, usually specified by a set of possible values, a set of allowed operations on these values, and/or a representation of these ...
that can include any number of arguments and avoids the limitations of solely using standard data types such as:
int (integer),
char (character),
float (real number), and color (RGB,
RGBA, hex).
Examples
The simplest possible version of a "Hello World" program in Processing is:
// This prints "Hello World." to the IDE console.
println("Hello World.");
However, due to the more visually oriented nature of Processing, the following code
is a better example of the look and feel of the language.
// Hello mouse.
void setup()
void draw()
Awards
In 2005 Reas and Fry won the Golden Nica award from
Ars Electronica
Ars Electronica Linz GmbH is an Austrian cultural, educational and scientific institute active in the field of new media art, founded in Linz in 1979. It is based at the Ars Electronica Center (AEC), which houses the Museum of the Future, in t ...
in its Net Vision category for their work on Processing.
Ben Fry won the 2011 National Design Award given by the
Smithsonian Cooper-Hewitt National Design Museum in the category of Interaction Design. The award statement says:
"Drawing on a background in graphic design and computer science, Ben Fry pursues a long-held fascination with visualizing data. As Principal of Fathom Information Design in Boston, Fry develops software, printed works, installations, and books that depict and explain topics from the human genome to baseball salaries to the evolution of text documents. With Casey Reas, he founded the Processing Project, an open-source programming environment for teaching computational design and sketching interactive-media software. It provides artists and designers with accessible means of working with code while encouraging engineers and computer scientists to think about design concepts."
License
Processing's core libraries, the code included in exported applications and applets, is licensed under the
GNU Lesser General Public License
The GNU Lesser General Public License (LGPL) is a free-software license published by the Free Software Foundation (FSF). The license allows developers and companies to use and integrate a software component released under the LGPL into their own ...
, allowing users to release their original code with a choice of license.
The IDE is licensed under the
GNU General Public License
The GNU General Public Licenses (GNU GPL or simply GPL) are a series of widely used free software licenses, or ''copyleft'' licenses, that guarantee end users the freedom to run, study, share, or modify the software. The GPL was the first ...
.
Related projects
Design By Numbers
Processing was based on the original work done on
Design By Numbers project at MIT. It shares many of the same ideas and is a direct child of that experiment.
p5.js
In 2013,
Lauren McCarthy created p5.js, a native
JavaScript
JavaScript (), often abbreviated as JS, is a programming language and core technology of the World Wide Web, alongside HTML and CSS. Ninety-nine percent of websites use JavaScript on the client side for webpage behavior.
Web browsers have ...
alternative to Processing.js that has the official support of the Processing Foundation. p5.js gained over 1.5 million users.
Since April 2022, p5.js has been led by Qianqian Ye, an Adjunct Associate Professor of Media Arts at USC.
ml5.js
ml5.js is a p5.js library developed by NYU's ITP/IMA with funding and support provided by a Google Education grant.
Daniel Shiffman has made videos demonstrating ml5 and is a notable code contributor.
Processing.js
Processing.js is a discontinued
JavaScript
JavaScript (), often abbreviated as JS, is a programming language and core technology of the World Wide Web, alongside HTML and CSS. Ninety-nine percent of websites use JavaScript on the client side for webpage behavior.
Web browsers have ...
port that enabled existing Processing Java code to run on web.
It was initially released in 2008 by
John Resig. The project was later run through a partnership between the
Mozilla Foundation and
Seneca College, led by David Humphrey, Al MacDonald, and Corban Brook. Processing.js was kept at parity with Processing up to its API version 2.1 release.
The project was discontinued in December 2018, two years after its active development had stopped.
P5Py
p5 is a Python library that provides high level drawing functionality to quickly create simulations and interactive art using Python. It combines the core ideas of Processing — learning to code in a visual context — with Python's readability to make programming more accessible to beginners, educators, and artists.
Processing.py
Python Mode for Processing, or Processing.py is a Python interface to the underlying Java toolkit. It was chiefly developed by Jonathan Feinberg starting in 2010, with contributions from James Gilles and Ben Alkov.
py5
py5 is a version of Processing for Python 3.8+. It makes the Java Processing jars available to the CPython interpreter using JPype. It can do just about everything Processing can do, except with Python instead of Java code.
Wiring, Arduino, and Fritzing
Processing has spawned another project,
Wiring, which uses the Processing IDE with a collection of libraries written in the
C++ language as a way to teach artists how to program
microcontroller
A microcontroller (MC, uC, or μC) or microcontroller unit (MCU) is a small computer on a single integrated circuit. A microcontroller contains one or more CPUs (processor cores) along with memory and programmable input/output peripherals. Pro ...
s. There are now two separate hardware projects, Wiring and
Arduino
Arduino () is an Italian open-source hardware and open-source software, software company, project, and user community that designs and manufactures single-board microcontrollers and microcontroller kits for building digital devices. Its hardwar ...
, using the Wiring environment and language.
Fritzing is another software environment of the same sort, which helps designers and artists to document their interactive prototypes and to take the step from physical prototyping to actual product.
Mobile Processing
Another spin-off project, now defunct, is Mobile Processing by Francis Li, which allowed software written using the Processing language and environment to run on Java powered mobile devices. Today some of the same functionality is provided by Processing itself.
iProcessing
iProcessing was built to help people develop native
iPhone
The iPhone is a line of smartphones developed and marketed by Apple that run iOS, the company's own mobile operating system. The first-generation iPhone was announced by then–Apple CEO and co-founder Steve Jobs on January 9, 2007, at ...
applications using the Processing language. It is an integration of the Processing.js library and a Javascript application framework for iPhone.
Spde
Spde (Scala Processing Development Environment) replaces Processing's reduced Java syntax and custom preprocessor with the off-the-shelf
Scala programming language which also runs on the
Java platform
Java is a set of computer software and specifications that provides a software platform for developing application software and deploying it in a cross-platform computing environment. Java is used in a wide variety of computing platforms fr ...
and enforces some of the same restrictions such as disallowing static methods, while also allowing more concise code, and supporting
functional programming
In computer science, functional programming is a programming paradigm where programs are constructed by Function application, applying and Function composition (computer science), composing Function (computer science), functions. It is a declarat ...
.
JRubyArt
JRubyArt (formerly named ''ruby-processing'') is a
wrapper for Processing in the
Ruby
Ruby is a pinkish-red-to-blood-red-colored gemstone, a variety of the mineral corundum ( aluminium oxide). Ruby is one of the most popular traditional jewelry gems and is very durable. Other varieties of gem-quality corundum are called sapph ...
language, that runs on the Java platform using JRuby.
Quil
Quil is an interactive animation library for
Clojure
Clojure (, like ''closure'') is a dynamic programming language, dynamic and functional programming, functional dialect (computing), dialect of the programming language Lisp (programming language), Lisp on the Java (software platform), Java platfo ...
and ClojureScript based on Processing.
Sketch
Sketch is a
Common Lisp
Common Lisp (CL) is a dialect of the Lisp programming language, published in American National Standards Institute (ANSI) standard document ''ANSI INCITS 226-1994 (S2018)'' (formerly ''X3.226-1994 (R1999)''). The Common Lisp HyperSpec, a hyperli ...
library highly inspired by Processing.
Media
The music video for "
House of Cards" by
Radiohead
Radiohead are an English rock band formed in Abingdon-on-Thames, Abingdon, Oxfordshire, in 1985. The band members are Thom Yorke (vocals, guitar, piano, keyboards); brothers Jonny Greenwood (guitar, keyboards, other instruments) and Colin Gre ...
was created using Processing combined with data from
lidar
Lidar (, also LIDAR, an acronym of "light detection and ranging" or "laser imaging, detection, and ranging") is a method for determining ranging, ranges by targeting an object or a surface with a laser and measuring the time for the reflected li ...
technology, along with using
acrylic glass and
mirror
A mirror, also known as a looking glass, is an object that Reflection (physics), reflects an image. Light that bounces off a mirror forms an image of whatever is in front of it, which is then focused through the lens of the eye or a camera ...
s to create scenes in which the image appears distorted, partially disappears, or disintegrate as if being carried by wind. Processing has also been used to create illustrations for publications such as ''
Nature
Nature is an inherent character or constitution, particularly of the Ecosphere (planetary), ecosphere or the universe as a whole. In this general sense nature refers to the Scientific law, laws, elements and phenomenon, phenomena of the physic ...
'' and ''
The New York Times
''The New York Times'' (''NYT'') is an American daily newspaper based in New York City. ''The New York Times'' covers domestic, national, and international news, and publishes opinion pieces, investigative reports, and reviews. As one of ...
'', to output sculptures for gallery exhibitions, to control huge video walls and to knit sweaters.
See also
*
Cinder (C++)
*
OpenFrameworks (C++)
*
OpenRNDR (Kotlin)
*
JavaFX
*
Max (software)
*
Codea
Footnotes
References
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
External links
*
{{Authority control
Programming languages
Animation software
Computer graphics
Cross-platform software
Educational programming languages
Free computer libraries
Java platform
Java programming language family
JVM programming languages
Object-oriented programming languages
Physical computing
Software using the GNU Lesser General Public License
2001 software
Cross-platform free software
Programming languages created in 2001
Creative coding