JCGO (pronounced as "j-c-go") is a unique tool to
convert Your Java application code to a platform-independent C code...
What is JCGO?
JCGO is an Open Source software product which translates
programs written in Java into platform-independent C code, which
could, further, be compiled (by third-party tools) into highly-optimized
native machine code for the target platform and deployed.
JCGO is a powerful solution that enables your desktop,
server-side and embedded/mobile/wireless Java applications to take full
advantage of the underlying hardware. In addition, JCGO effectively protects
your intellectual property by making your programs when compiled to native
code as hard to reverse engineer as if they were written in C/C++.
The JCGO translator uses some optimization algorithms
that allow, together with optimizations performed by a C compiler, the
resulting executable code to reach better performance if compared with the
traditional Java implementations (based on the Just-In-Time technology). The
produced executable does not contain nor require a Java Virtual Machine to
execute, so its resource requirements are smaller than that required by a
typical Java VM. This also simplifies the process of deployment and
distribution of an application. In addition, the produced native code is
highly resistant to reverse engineering and tampering.
Scope of applicability...
The JCGO project is targeted mainly for the following
- application software developers:
- to get higher performance, smaller memory footprint and smaller start-up
time for an application,
- to protect the code as an intellectual property,
- to allow an application to execute on platforms without the Java VM
- to simplify deployment, distribution and installation of an application,
- to apply time-proven and well-known C/C++ compilation and debugging tools
to a Java application;
- hardware device developers:
- to migrate from C device code to Java,
- to write new device code in Java with nearly the same performance
efficiency as in C,
- to use Java for 8- and 16-bit CPUs with ROM-able code and small amount of
- to reuse existing Java code for small device programming;
- software porters (to execute existing applications on platforms without a
Java VM support);
- software advanced users (to get higher performance for frequently used
applications, to run an application in the 64-bit mode).
JCGO basic blocks...
JCGO consists of the following parts:
- the translator executables (one for every supported development platform);
- the JCGO-specific part of the Java runtime environment;
- the JCGO-specific part of a C runtime environment;
- the precompiled libraries part, the supplementary and JCGO-specific
- miscellaneous and sample source files, and the accompanying documentation.
For more technical information about the JCGO, please
look into the accompanying
What is Not JCGO?
JCGO is not for:
- JCGO does not produce maintainable C
code (but it produces human-readable and debuggable code), so you shouldn't
try to use JCGO to migrate your Java project to a C/C++ one;
- JCGO does not support JDK v1.5+
language (documented in the JLS v3.0) features like Java
generics, primitive types auto-wrapping, for-each cycles and annotations;
- JCGO is unable to tranlate Java class files as it
tranlates only the Java source files;
- JCGO does not support dynamic class loading unless the
class source is added to the translation set (but the Java Proxy classes are
- JCGO does not support separate translation of Java
classes or packages (instead, it translates the whole Java application at
- JCGO does not cypher (protect) character strings
contained in the classes of your application (instead, the strings are placed
in the executable file as ASCII/Unicode ones and accessed
directly by the compiled Java code without any initialization);
- JCGO is not an easy-to-use tool (at least, you should
have the full source code of your Java application and of the libraries it
uses, you should also be familiar with the C/C++ compilation means for your
target platform, and be ready to debug your translated application in case,
e.g., you forget to add some of your dynamic-loaded classes in the translation
Licensing and support policy...
JCGO is an Open Source project released under the terms
of GNU Classpath license.
JCGO could be used in a commercial project. There are no runtime fees.