| January 2010: The JCP 3.0.1 release is available. This is a bugfix release for 3.0. Download here or have a look at the changelog.
December 2009: We have finished the JCP 3.0 release. This is a totally reworked design, offering a more user friendly interface. We have done thorough testing and are confident this is a better and more stable release than ever. The applet is also signed so that it can do IO and is smaller and faster than ever. Downloads and a test page for the applet are available.
JChemPaint (or JCP for short here) is the editor and viewer for 2D chemical structures developed using CDK. It is implemented in several forms: a Java application and two varieties of Java applet.
JChemPaint Editor applet
- An applet is a Java program that runs only within a web page.
- The JCP Editor allows the user to draw chemical structures, and to import and export structure data in plain-text formats (SMILES, Molfile, CML)
- It also allows to programmatically load and display a chemical structure, which can then be edited by the user.
A snapshot of the 3.0 release applet is given below:
To learn how to insert and use the applet within a web page, see JChemPaint Inside Webpages.
JChemPaint Viewer applet
- (An applet is a Java program that runs only within a web page.)
- The JCP Viewer only allows to programmatically display a chemical structure, which the user cannot modify.
- Demo page
To learn how to insert and use the applet within a web page, see JChemPaint Inside Webpages.
- The application is a stand-alone program. It needs an installed Java Virtual Machine for operation. If your system does not have a JVM, get it from Sun's Java website.
- The JCP application has all the functionality of the JCP Editor applet (see below), plus file input and output.
Below a screenshot of the 3.0 release:
These are the most prominent capabilities of the application; most of them are also available in the applets.
- Drawing and deletion of single, double, triple and stereo bonds.
- Ring templates (3-8 atoms) with one-click attachment.
- An extensive template library.
- Colouring of atom types, and other rendering settings.
- Editing of atomic charges, isotopes and hydrogen count.
- Loading and saving of structures in Chemical Markup Language (CML) and as MDL MOL files and SDF files (loading only).
- Automated Structure Layout, also known as Structure Diagram Generation.
- Loading structures from the Internet using CAS or NSC number.
- Normalization of structures, currently limited to aromaticity detection.
- Saving bitmap pictures of the structures.
- Saving structures as graphics (PNG, BMP, Scalable Vector Graphics (SVG)).
- Postscript printing.
In some aspects JChemPaint is different from other 2D editors:
- JChemPaint is open source and free software. We believe that scientific software, especially when its development was publicly funded, should be free. As the GNU people put it: «`Free software´ is a matter of liberty, not price. To understand the concept, you should think of `free speech´, not `free beer´». Everyone can participate in the development of the program. Everyone can download and change the source code, provided that they make the changes publicly available again, according to the GNU Lesser General Public License, LGPL. This ensures that the community can take advantage of any bugfix or enhancement made to the system. It also ensures that a scientist, who needs a standard piece of software like a structure editor as a helper application in his/her new program, does not have to reinvent the wheel over and over again because all the structure editors that have been written before are now proprietary software. If there is a free structure editor, he/she can focus on the real science.
- JChemPaint is in constant development and you can help (see below).
- Since JChemPaint is written in Java, it runs on any computing platform and operating system for which a Java Virtual Machine (of version >= 1.3 up to JCP 2.4 and version >= 1.5 for JCP > 2.4) has been implemented (like Linux, Windows, Solaris, AIX and others).
- JChemPaint is available free of charge.
- JChemPaint is translated into several languages: Dutch, French, German, Polish, Portuguese and Spanish.
Who did it?
JChemPaint was originally written by Christoph Steinbeck, soon after co-developed with Egon Willighagen, and is now developed by the Steinbeck Group group and a team of international developers.
The project was started by Christoph Steinbeck in the late 1990's to be the complementary structure editor to Jmol. It was then co-developed by Egon Willighagen and others. Jmol again is a visualisation and analysis tool for 3D molecular structures, started by Dan Gezelter at Notre Dame University, initiator of the Open Science Project and, like JChemPaint, developed by an international team of opensource programmers.
How can I participate?
There is more than one way to participate:
- You can participate in the dicussion lists, by making recommendations for new features, submitting bug reports, etc. Bugs reports and feature requests can be made with our bugtracker Trac
- You can write documentation.
- You can write source code.
- You can translate the interface into other languages, or help maintain the existing translations.
If you want to write documentation or start coding, please check the SourceForge site documentation on how to access SVN. If you actively want to contribute, please get a SourceForge account, contact the project admin so that he can add you to the developers list. The next step would be to checkout the source code
How can I get it?
The JChemPaint files (application and applet) can be downloaded from the downloads page of the CDK project at SourceForge. The application is a single jar file (executable using Java), while the applet is packed as a zip file containing a set of jar files; unzip them all together to a single folder in your computer.
To get the stable release (JCP3), go for the "JChemPaint, version 3.x" link.
At http://www.ebi.ac.uk/steinbeck-srv/jchempaint-nightly/ you can also find a nightly build of the applet and the application. For the applet, try the html pages, for the application, download jchempaint-xxx.jar.
Tips and Tricks
On Linux, you can use
on startup. This enables font smoothing, giving a better image.
JCP is internationalized and localized. This means that its interface can be shown in different languages (in addition to the English default). Language can be chosen from inside JCP via the View->Language menu
Available translations are (not all are complete): Arabic, Czech, Dutch, German, Hungarian, Norvegian Bokmal, Polish, Portuguese (Brazil), Russian, Spanish, Thai. The status of the translations can be viewed on launchpad.
If needed, the language can be changed in this way:
- You can start the application in a certain language from a command line (or from a shortcut):
java.exe -Duser.language=nl -jar jchempaint-2.3.4.jar
- (you may need to insert the paths to Java and to JCP)
- For the applet, add a parameter tag like
<param name="language" value="de">
- to the
<applet>tag in the html page.
Developers, please refer to the Development_JCP page.
You can find design documentation and information related to the applet version 3 redesign here: Thoughts_on_requirements_for_the_applet.
- To report bugs in JCP or to propose enhancements: go to the Trac system
Using CDK renderer for rendering images
You can also use the renderer classes contained in JCP for rendering images, which can then be written into files, returned in http request etc. For this, you need the jars you get when compiling CDK and the cdk-jchempaint.jar, you get when calling the ant target dist-jars in the classpath of your project. Alternatively, you can also download the jchempaint-lib-X.zip file from the JCP download page, or the jchempaint-X.jar from this Nightly page - the nightly file is newer, but more likely to contain bugs.
Read the Renderer Tutorial about how to use the renderer in your application. ATTENTION: The constructor for Renderer given there is different from that in the JChemPaint classes. You need an additional boolean constructor, which most likely will be false. If true, the settings from the $HOME/.jchempaint/properties file will be used, meaning you do not have full control over what the image looks like, but the user can set options (like use of colors, atom numbers shown etc.).
Literature & Citations
- "An Applet Release of JChemPaint"
- "JChemPaint - Using the Collaborative Forces of the Internet to Develop a Free Editor for 2D Chemical Structures"
- Stefan Krause, Egon Willighagen and Christoph Steinbeck. Molecules 5, 93-98 (2000). Full-text html.
- Other JChemPaint-related citations.
Webpages that use JCP
These are places where you may get a feel of how JCP can be used, and get pieces of html / js source code too.
- NMRShiftDB - choose a structure and then the "J" little icon; you will see a JCP viewer coupled to NMR tabular and graphic data.
- ChEBI - Chemical Entities of Biological Interest at European Bioinformatics Institute, go to "Advanced Search"
- Location of JChemPaint downloads (within CDK site in SourceForge).
- The cdk-jchempaint mailing list:
- Browse source code (SVN):
- Development of JChemPaint 3.
- Four Free 2-D Structure Editors for Web Applications - An article by Rich Apodaca that demonstrates how to interface with JCP from a web page and compares in this respect JCP to other editors.