Processing (programming language)

Short description: Free graphics library

Processing

Paradigm| Object-oriented
Designed by| Casey Reas, Ben Fry
First appeared| 2001; 25 years ago (2001)
Stable release|

4.0b1 / August 9, 2021; 4 years ago (2021-08-09)[1]

License| GPL, LGPL
Filename extensions| .pde
Website| processing.org

Processing is a free graphical library and integrated development environment (IDE) built for the electronic arts, new media art, and visual design communities with the purpose of teaching non-programmers the fundamentals of computer programming in a visual context.

Processing uses the Java language, 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, Wiring and Processing.js.

## Contents

* 1 History
* 2 Features
* 3 Examples
* 4 Awards
* 5 License
* 6 Related projects
* 6.1 Design By Numbers
* 6.2 Processing.js
* 6.2.1 p5.js
* 6.3 P5Py
* 6.4 Processing.py
* 6.5 py5
* 6.6 Wiring, Arduino, and Fritzing
* 6.7 Mobile Processing
* 6.8 iProcessing
* 6.9 Spde
* 6.10 JRubyArt
* 6.11 Quil
* 7 Media
* 8 See also
* 9 Footnotes
* 10 References
* 11 External links

## 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. 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.[2]

Originally, Processing had the URL of proce55ing.net, because the processing domain was taken. Eventually Reas and Fry acquired the domain processing.org.[3] Although the name had a combination of letters and numbers, it was still pronounced processing. They do not prefer the environment being referred to as Proce55ing. Despite the domain name change, Processing still uses the term p5 sometimes as a shortened name (p5 specifically is used, not p55), for example p5.js is a reference to that.[4]

In 2012 the Processing Foundation was established and received 501(c)(3) nonprofit status,[5] 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.[6]

## Features

Processing IDE

Screenshot of Processing's integrated development environment.

Stable release|

3.5.4 / January 17, 2020; 6 years ago (2020-01-17)

Written in| Java, GLSL, JavaScript
Operating system| Cross-platform
Type| Integrated development environment
Website| processing.org

Processing includes a sketchbook, a minimal alternative to an integrated development environment (IDE) for organizing projects.[7]

Every Processing sketch is actually a subclass of the `PApplet` Java class (formerly a subclass of Java's built-in Applet) which implements most of the Processing language's features.[8]

When programming in Processing, all additional classes defined will be treated as inner classes when the code is translated into pure Java before compiling.[9] This means that the use of static variables 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 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[10] is a better example of the look and feel of the language.

// Hello mouse.
void setup() {
size(400, 400);
stroke(255);
background(192, 64, 0);

void draw() {
line(150, 25, mouseX, mouseY);

## Awards

In 2005 Reas and Fry won the Golden Nica award from Ars Electronica in its Net Vision category for their work on Processing.[11]

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."[12]

## License

Processing's core libraries, the code included in exported applications and applets, is licensed under the GNU Lesser General Public License, allowing users to release their original code with a choice of license.

The IDE is licensed under the GNU General Public License.

## Related projects

Processing is not a single language, but rather, an arts-oriented approach to learning, teaching, and making things with code. There are several variants and 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.

### Processing.js

Processing.js is a discontinued JavaScript port of Processing, a framework designed to write visualisations, images, and interactive content. It allows web browsers to display animations, visual applications, games and other graphical rich content without the need for a Java applet or Flash plugin.

Processing.js was originally created to allow existing Processing developers and existing code to work unmodified on web. Processing.js used JavaScript to render 2D and 3D content on the HTML canvas element, and was supported by browsers that have implemented this element (the latest versions of Mozilla Firefox, Opera, Internet Explorer, Safari and Google Chrome).

The development of Processing.js was started by John Resig and then picked up by the CDOT group at Seneca College after its initial release in 2008. A team of students and professors finished the porting work to get Processing.js to parity with the Processing v1.0 API, fixing more than 900 bugs, shipping 12 releases, and creating a vibrant community in the process. The project was run through a partnership between the Mozilla Foundation and Seneca College, led by David Humphrey, Al MacDonald, and Corban Brook.

Processing.js development was moved to GitHub in February 2010, receiving contributions from 58 individuals, and 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.

Processing.js is also used to advocate very basic programming to Students of all ages on Khan Academy by creating drawings and animations. Learners showcase their creations to other learners.

#### p5.js

In 2013, Lauren McCarthy created p5.js, a native JavaScript alternative to Processing.js that has the official support of the Processing Foundation.

### P5Py

p5 is a Python library that provides high level drawing functionality to help you 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.[13]

### 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.[14]

### 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.[15]

### 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 microcontrollers.[16] There are now two separate hardware projects, Wiring and Arduino, 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.[17]

### iProcessing

iProcessing was built to help people develop native iPhone applications using the Processing language. It is an integration of the Processing.js library and a Javascript application framework for iPhone.[18]

### 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 and enforces some of the same restrictions such as disallowing static methods, while also allowing more concise code, and supporting functional programming.[19][20][21]

### JRubyArt

JRubyArt (formerly named ruby-processing) is a wrapper for Processing in the Ruby language, that runs on the Java platform using JRuby.

### Quil

Quil is an interactive animation library for Clojure and ClojureScript based on Processing.[22][23]

## Media

The music video for "House of Cards" by Radiohead was created using Processing combined with data from lidar technology, along with using acrylic glass and mirrors to create scenes in which the image appears distorted, partially disappears, or disintegrate as if being carried by wind.[24] Processing has also been used to create illustrations for publications such as Nature and The New York Times , to output sculptures for gallery exhibitions, to control huge video walls and to knit sweaters.[25]

## See also

* Cinder (C++)
* OpenFrameworks (C++)
* JavaFX
* Max
* Codea

## Footnotes

1. ↑ "Download Processing.org". https://processing.org/download/.
2. ↑ "People". https://processingfoundation.org/people.
3. ↑ "Processing 1.0 _ALPHA_ - processing.org". https://processing.org/discourse/alpha/board_Collaboration_action_display_num_1074297082.html.
4. ↑ "What means number 5 in name "p5"? · Issue #2443 · processing/p5.js". https://github.com/processing/p5.js/issues/2443.
5. ↑ Casey Reas; Ben Fry (May 29, 2018). "A Modern Prometheus". https://medium.com/processing-foundation/a-modern-prometheus-59aed94abe85.
6. ↑ "PCD". https://medium.com/processing-foundation/pcd/home.
7. ↑ Ira Greenberg (31 December 2007). Processing: Creative Coding and Computational Art. Apress. pp. 151–. ISBN 978-1-4302-0310-0. https://books.google.com/books?id=TKgfVpWPb0sC&pg=PA151.
8. ↑ Jeanine Meyer (15 June 2018). Programming 101: The How and Why of Programming Revealed Using the Processing Programming Language. Apress. pp. 121–. ISBN 978-1-4842-3697-0. https://books.google.com/books?id=yypgDwAAQBAJ&pg=PA121.
9. ↑ Ira Greenberg (25 March 2010). The Essential Guide to Processing for Flash Developers. Apress. pp. 412–. ISBN 978-1-4302-1980-4. https://books.google.com/books?id=7pVhzd6h20IC&pg=PA412.
10. ↑ Tayste. "Hello Mouse - OpenProcessing". https://openprocessing.org/sketch/1503488.
11. ↑ Meredith Hoy (3 January 2017). From Point to Pixel: A Genealogy of Digital Aesthetics. Dartmouth College Press. pp. 142–. ISBN 978-1-5126-0023-0. https://books.google.com/books?id=r0NwDQAAQBAJ&pg=PA142.
12. ↑ http://cdn.cooperhewitt.org/2011/05/26/Final - CHNDM NDA 2011 Winner Release 5-26-11.pdf [bare URL PDF]
13. ↑ p5, p5py, 2021-09-29, https://github.com/p5py/p5, retrieved 2021-10-12
14. ↑ Allison Parrish; Ben Fry; Casey Reas (11 May 2016). Getting Started with Processing.py: Making Interactive Graphics with Processing's Python Mode. Maker Media, Incorporated. ISBN 978-1-4571-8679-0. https://books.google.com/books?id=ddYlDAAAQBAJ.
15. ↑ py5 documentation, hx2a, 2021-09-13, https://py5.ixora.io/, retrieved 2022-05-10
16. ↑ "Processing, Wiring, and Arduino (EE Tip 101) - Circuit Cellar". 18 September 2013. http://circuitcellar.com/ee-tips/processing-wiring-and-arduino-ee-tip-101/. [yes|permanent dead link|dead link}}]
17. ↑ "Android - Processing". http://wiki.processing.org/w/Android.
18. ↑ "iProcessing Puts Processing.js on iPhone - But What About Browsers? - CDM Create Digital Music". 11 February 2010. http://cdm.link/2010/02/iprocessing-puts-processing-js-on-iphone-but-what-about-browsers/.
19. ↑ "Spde: Spde". Technically.us. http://technically.us/spde/About.
20. ↑ "Coderspiel / Runaway processing". Technically.us. http://technically.us/code/x/runaway-processing/.
21. ↑ "Coderspiel / Flocking with Spde". Technically.us. http://technically.us/code/x/flocking-with-spde/.
22. ↑ "Quil: animation in Clojure". http://www.quil.info/.
23. ↑ "Quil Intro". http://nbeloglazov.com/2014/05/29/quil-intro.html.
24. ↑ Nye, Calley (2008-07-14). "Radiohead Partners With Google For Music Video Launch" (in en-US). The Washington Post. ISSN 0190-8286. http://www.washingtonpost.com/wp-dyn/content/article/2008/07/14/AR2008071402460.html.
25. ↑ Reas, Casey; Ben Fry (2015). Getting started with Processing (Second ed.). San Francisco. p. 183. ISBN 978-1-4571-8708-7. OCLC 905522686.

## References

* Bohnacker, Hartmut; Gross, Benedikt; Laub, Julia; Lazzeroni, Claudius (August 22, 2012), Generative Design: Visualize, Program, and Create with Processing (1st ed.), Princeton Architectural Press, p. 472, ISBN 978-1616890773
* Glassner, Andrew (August 9, 2010), Processing for Visual Artists: How to Create Expressive Images and Interactive Art (1st ed.), A K Peters/CRC Press, p. 955, ISBN 978-1-56881-716-3, http://www.crcpress.com/ecommerce_product/product_detail.jsf?isbn=9781568817163
* Reas, Casey; Fry, Ben (June 17, 2010), Getting Started with Processing (1st ed.), Make, p. 208, ISBN 978-1-4493-7980-3
* Noble, Joshua (July 21, 2009), Programming Interactivity: A Designer's Guide to Processing, Arduino, and Openframeworks (1st ed.), O'Reilly Media, p. 736, ISBN 978-0-596-15414-1, http://oreilly.com/catalog/9780596154141/
* Terzidis, Kostas (May 11, 2009), Algorithms for Visual Design Using the Processing Language (1st ed.), John Wiley & Sons, p. 384, ISBN 978-0-470-37548-8, http://www.wiley.com/WileyCDA/WileyTitle/productCd-0470375485.html
* Reas, Casey; Fry, Ben; Maeda, John (September 30, 2007), Processing: A Programming Handbook for Visual Designers and Artists (1st ed.), The MIT Press, p. 736, ISBN 978-0-262-18262-1, http://mitpress.mit.edu/catalog/item/default.asp?ttype=2&tid=11251
* Fry, Ben (January 11, 2008), Visualizing Data (1st ed.), O'Reilly Media, p. 382, ISBN 978-0-596-51455-6, http://oreilly.com/catalog/9780596514556/
* Greenberg, Ira (May 28, 2007), Processing: Creative Coding and Computational Art (Foundation) (1st ed.), friends of ED, p. 840, ISBN 978-1-59059-617-3, http://friendsofed.com/book.html?isbn=159059617X
* Shiffman, Daniel (August 19, 2008), Learning Processing: A Beginner's Guide to Programming Images, Animation, and Interaction (1st ed.), Morgan Kaufmann, p. 450, ISBN 978-0-12-373602-4, http://www.learningprocessing.com/
* Faludi, Robert (January 4, 2011), Building Wireless Sensor Networks: with ZigBee, XBee, Arduino, and Processing (1st ed.), O'Reilly Media, p. 320, ISBN 978-0-596-80774-0, http://faludi.com/bwsn, retrieved May 18, 2011
* Vantomme, Jan (September 20, 2012), Processing 2, Creative Programming Cookbook (1st ed.), Packt Publishing, p. 291, ISBN 9781849517942, http://www.packtpub.com/processing-2-creative-programming-cookbook/book, retrieved February 25, 2013
* Pearson, Matt (June 1, 2011), Generative Art, A practical guide using Processing (1st ed.), Manning, p. 240, ISBN 9781935182627, http://zenbullets.com/book.php, retrieved February 25, 2013
* Jan, Vantomme (September 20, 2012), Processing 2: Creative Programming Cookbook (1st ed.), Packt Publishing, p. 306, ISBN 978-1849517942, http://www.packtpub.com/processing-2-creative-programming-cookbook/book, retrieved February 25, 2013
* Sauter, Daniel (May 2, 2013), Rapid Android Development: Build Rich, Sensor-Based Applications with Processing (1st ed.), Pragmatic Bookshelf, p. 300, ISBN 978-1937785062, http://pragprog.com/book/dsproc/rapid-android-development, retrieved July 18, 2013
* Gradwohl, Nikolaus (May 20, 2013), Processing 2: Creative Coding Hotshot (1st ed.), Packt Publishing, p. 266, ISBN 978-1782166726, http://www.packtpub.com/processing-2-creative-coding-hotshot/book, retrieved July 18, 2013

## External links

* v
* t
* e

Java

Platforms|

* Java language
* JVM
* Micro Edition
* Standard Edition
* Enterprise Edition
* Java Card
* Android SDK

Oracle technologies|

* Squawk
* Java Development Kit
* OpenJDK
* Java virtual machine
* JavaFX
* Maxine VM

Platform technologies|

* Applets
* Servlets
* MIDlets
* JSP
* JSF
* Web Start (JNLP)

Major third-party technologies|

* Blackdown
* Eclipse
* GNU Classpath
* GWT
* Harmony
* Hibernate
* IcedTea
* Jazelle
* Spring
* Struts
* TopLink
* WildFly

History|

* Java version history
* Java Community Process
* Sun Microsystems
* Free Java implementations

Major JVM languages|

* BeanShell
* Clojure
* Groovy
* JRuby
* Jython
* Kotlin
* Processing
* Rhino
* Scala

Community|

| Conferences|

* JavaOne
* Devoxx

|

Organizations|

* Apache Software Foundation
* Java Community Process
* Oracle Corporation
* Sun Microsystems, Sun Microsystems Laboratories

People|

* James Gosling
* Arthur van Hoff
* Urs Hölzle
* Patrick Naughton

Category

0.00

(0 votes)

|

Retrieved from "https://handwiki.org/wiki/index.php?title=Processing_(programming_language)&oldid=273575"
*[v]: View this template
*[t]: Discuss this template
*[e]: Edit this template