JCGO: Java, C/C++ web developer resources
A comprehensive collection of links useful for Java and C/C++ developers.
Focused on the Java VM implementations and Java compilers. Maintained by
Ivan Maidanski, the developer of JCGO...
The following web resource links may be of interest for
JCGO users - and hopefully useful
for you.
Web resource categories:
- C/C++ compiler suites,
- C/C++ standard "LibC" library implementations,
- C/C++ stand-alone well-known libraries,
- Small C libraries partially implementing standard API,
- C/C++ stand-alone graphics libraries,
- Native executable packers and protectors,
- Archive (de)compression utilities,
- DOS extenders, drivers and DOS clones,
- Java VM with complete SDK suites,
- Stand-alone Java VM implementation,
- Java to native code "through C" static compilers,
- Direct Java to native code static compilers,
- Java-based PC Operating Systems,
- C code to Java translators,
- Multi-language translator suites,
- Java-to-exe wrappers,
- Java class decompilers,
- Java class cross-version converters,
- Java source and code checkers,
- Stand-alone Java source to byte code compilers,
- Java assemblers,
- Java optimizers and obfuscators,
- Java properties converters,
- Java parser generators,
- Java code analysis libraries,
- Stand-alone Java Runtime Standard Environment class libraries,
- OpenJDK integration projects,
- Java class libraries for real-time systems,
- C++ libraries implementing Java API,
- Pure Java CPU emulators,
- Java stand-alone communication and network libraries,
- Java GUI libraries,
- Java stand-alone miscellaneous libraries,
- Java build-automation tools,
- Java-based text editor tools,
- Java benchmarking,
- Some papers on Java,
- Java links collections.
C/C++ compiler suites
- GNU GCC (many targets)
- MinGW GCC (for Win32)
- Cygwin GCC (for Win32)
- DJGPP GCC (for MS-DOS 32-bit)
- EMX GCC (for MS-DOS 32-bit, OS/2 32-bit)
- GNUDE GCC (for ARM/XScale)
- Open Watcom C/C++ (for MS-DOS, Win16, OS/2, MS-DOS 32-bit, Win32, OS/2 32-bit, QNX, Linux on x86)
- Digital Mars C/C++ Compilers (for MS-DOS, Win16, OS/2, MS-DOS 32-bit, Win32, OS/2 32-bit)
- Microsoft Visual C++ Studio/Express (for Win32, Win64)
- Borland C/C++ Compiler/Builder (for MS-DOS, Win16, Win32)
- C++Builder (RAD C++ development environment for Windows)
- Intel C++ Compiler for Windows (for Win32, Win64)
- Pelles C (for Win32, Pocket PC on ARM/XScale)
- CC65 (for 6502 systems)
- Tiny C Compiler (a small and fast C compiler for x86)
- LCC-win32 (for Win32)
- Lad CC386 (for MS-DOS, Win32)
- WinARM (GCC toolchain for ARM processors and BREW platform)
- WinAVR (GCC toolchain for Atmel AVR)
- WinXSCALE (GCC Win32-hosted toolchain for XSCALE targets)
- CeGCC/mingw32ce (GCC cross compiler for Windows Mobile, Windows Embedded, PocketPC, SmartPhone on arm and x86)
- CeGCC (a cross compiler for Windows CE)
- devkitPSP (GCC toolchain for the Sony PlayStation)
- mingw-w64 (GCC for Win64 and Win32)
- Xcode (Apple IDE and GCC for Mac OS X and iPhone)
- Android NDK (toolkit for developing native code components for Android applications)
- Microsoft WDK (Windows Driver Kit and Developer/Debugging Tools)
C/C++ standard "LibC" library implementations
- Diet Libc (a libc optimized for small size)
- NewLib (a C library intended for use on embedded systems)
- uClibc (a C library for embedded Linux)
- musl libc (a C/POSIX library and extensions for next generation of Linux-based devices)
- Bionic libc (derivation of BSD standard C library code developed by Google for Android)
- EGLIBC (a variant of GNU C Library designed to work well on embedded systems)
C/C++ stand-alone well-known libraries
- fdlibm (LibM implementation)
- Linuxthreads (POSIX 1003.1c kernel threads for Linux)
- GNU Pth (The GNU Portable POSIX/ANSI-C Threads)
- BoehmGC/BDWGC (Boehm-Demers-Weiser Conservative Garbage Collector) [development Git repo]
- libatomic_ops (atomic memory operations library, part of BDWGC) [development Git repo]
- Concurrency Kit (C library containing a plethora of concurrency primitives and lock-less data structures)
- OpenPA (portable library providing a consistent C API for performing atomic operations)
- zlib (general purpose data compression library)
- libiconv (charset conversion library)
- unixODBC (Open Source ODBC sub-system)
- SQLite (self-contained serverless zero-configuration transactional SQL database engine library)
- Watt-32 tcp/ip (Waterloo TCP/IP C library)
- XULRunner (a Mozilla runtime package for bootstrapping XUL+XPCOM applications)
- libffi (a portable Foreign Function Interface library)
- FluidSynth (a real-time software synthesizer based on the SoundFont)
C/C++ stand-alone graphics libraries
- GLib/GTK+ (graphics low-level library)
- EFL (collection of libraries that make up the foundation of DR17 window manager)
- cairo (Multi-platform 2D graphics library)
- LibPNG (PNG graphic format library)
- Pango (graphics layout and text rendering library)
- FreeType (font handling library)
- fontconfig (font config and look up library)
- Qt/QML (cross-platform C++ application framework)
- DirectFB (graphics library for embedded systems)
- Nano-X/Microwindows (compact GUI back-end library)
- wxWidgets (cross-platform GUI library)
- Xynth (a portable embedded windowing system, client/server display interface)
- directx (DirectX "minimalist" headers and source)
Native executable packers and protectors
- UPX (Universal Executable Packer)
- ASPack (Win32 executable file compressor)
- PC Guard (Software copy protection and licensing system)
- IntelliProtector (Software protection service)
- PECompact (an advanced Windows executable compressor)
- BoxedApp Packer (utility for converting full-fledged applications to single executable)
- MoleBox (Software Virtualization and Protection Tools)
- DLL to Lib (a converter of a DLL file into equivalent static library)
- Ermine (a tool that allows software to be deployed in a single executable file)
- ELF Statifier (tool for creating from dynamically linked executables and all it's libraries one ELF file)
DOS extenders, drivers and DOS clones
- HX DOS extender (Win32 emulator for MS-DOS)
- DOSLFN (driver for Long File Names in MS-DOS)
- dosppp (PPPD for MS-DOS)
- FreeDOS (free MS-DOS compatible OS)
- RxDOS (fast MS-DOS real-time clone)
- RTOS-32 (Win32 API Compatible Embedded Real-time OS)
- Wine HQ (a program loader running Windows applications on Linux/POSIX)
Java VM with complete SDK suites
- Sun/Oracle J2SE (Java 2 Standard Edition VM and SDK)
- Sun/Oracle J2ME (Java 2 VM and SDK for Mobile Devices)
- Sun/Oracle JavaCardKit (Development Kit for the Java Card)
- IBM JDK for Windows (Java VM and SDK)
Stand-alone Java VM implementation
- Aegis VM (Java VM implementation)
- BeKaffe (Kaffe Java VM for BeOS)
- cacaovm (Java VM with JIT compiler)
- IKVM.NET (Java VM for .NET)
- M-JVM (a KVM written in Java)
- J-Smile VM (Java VM with GUI support)
- JAmiga (Java VM for Amiga)
- JamVM (Java VM implementation)
- Jato VM (JIT-only Java virtual machine that aims to support JVM specification version 2)
- JaOS (Java VM implementation)
- Jelatine (Java ME/CLD VM implementation)
- Jikes RVM (Research Virtual Machine)
- joeq (Java VM written in Java)
- Kaffe VM (Java VM with JIT compiler)
- Kissme (Java VM implementation)
- leJOS (Java system for Lego Mindstorms RCX)
- TinyVM (replacement firmware and VM for Lego Mindstorms RCX)
- MysaifuVM (Java VM for Windows Mobile)
- CrEme (a J2ME/CDC Java VM technology for Embedded platforms)
- phoneME (a J2ME open-source implementation for mobile handsets)
- IBM J9 WEME ppro10 (Java VM for PocketPC and Windows Mobile on ARM)
- NanoVM (a portable tiny Java VM running on microcontrollers with at least 8k code space, especially Atmel AVR)
- simpleRTJ (a small footprint Java VM for embedded and consumer devices)
- JControl (an extremely small and compact embedded Java solution, optimized for systems with low processing power)
- JamaicaVM (a virtual machine and build environment for running realtime Java programs)
- Squawk (an open source virtual machine for the Java written in Java)
- OJI (Open Java VM Integration for Mozilla browsers)
- ORP (Java VM Open Runtime Platform)
- Aonix PERC (Real-time Java VM implementation)
- ajile JME (a silicon-based real-time J2ME platform)
- SableVM (Java VM implementation)
- shuJIT (Java Just-in-Time Compiler for x86 processors)
- teaseme (Linux-kernel Java VM)
- Waba for DOS (Waba VM for MS-DOS with TCP/IP)
- WabaVM (Waba VM and SDK for embedded devices)
- Wonka (Java VM implementation)
- EVE (Eve Virtual Machine and SDK for mobile and desktop PC)
- Maxine VM (a meta-circular research VM)
- Jaune (an ahead of time compiler for small systems)
- VMKit (a framework based on LLVM for building virtual machines)
- IcedRobot (The GNUlization of Android - an attempt to bring the Android API on Linux Desktop)
Java to native code "through C" static compilers
- JCGO (Java source to C code translator) [development Git repo]
- JC (Java class into C source translator)
- Toba (Java code to C code translator)
- I3J2C (Java to C "intentional" compiler)
- j2c (J2C converts Java source into compilable C++ code)
- MCU Java Source (Java source to C source translator targeting MCU firmware)
- Java2C (a translator from Java to C language for embedded and realtime applications)
- Ptolemy II Java-to-C (a Java to C compiler based on Ptolemy 2 framework)
- alcheMo (automated system to port a J2ME application to BREW, Windows Mobile and iPhone)
- J2ME Polish Janus (A toolset for porting J2ME/MIDP applications to different handsets - Windows Mobile, iPhone, Android)
- j2me-brew (porting framework that makes porting of J2ME applications to BREW C++ platform easy)
- Java2CPP (Compilers Project, compiles Java code to C++)
- Java 2 CSharp (an automatic translator of Eclipse Java projects into Visual Studio ones)
- Qs Moka (a Java source to TIGCC project converter)
- Java2C++ (a translator from Java to C++)
- Janus (Java to C++ source code converter without GC and threads support)
- LLVM-DVK (Dalvik-to-native code translator using LLVM optimization framework)
- J2ObjC (A Java to iOS Objective-C translation tool and runtime)
Direct Java to native code static compilers
- GNU GCJ (a portable optimizing ahead-of-time compiler for Java - GCC front-end)
- micro-libgcj (a lightweight version of the GCJ runtime and micro-SWT libraries)
- Excelsior JET (Java to native executable converter)
- JNC (Java to native executable converter)
- Manta (Java to native code compiler)
- Vortex (Java to native code compiler)
- Timber (static whole-program compiler for Spar/Java)
- JFE (a Front End for the Java Language by Edison Design Group allowing native execution of Java code without JVM)
C code to Java translators
- AMPC (C to Java class files translator)
- Novosoft C2J (C-code sources into Java classes translator)
- c2java (the preprocessed C code to Java converter)
- Mips2Java (C to Java source translator through MIPS GCC)
- NestedVM (a tool providing MIPS binary translation for Java bytecode)
- Cibyl (a binary translator that allows compiled C programs to execute on J2ME phones)
Multi-language translator suites
- Octopus (syntax translator between Java, C#, VB.NET, C++)
- XES (an XML-based source converter between Java and C++/C#)
- Tangible Instant (Accurate Source Code Converters between VB, C#, C++, Java)
- xmlvm (Java/.NET/Ruby compiler into Java/.NET/JavaScript/Python/Objective-C/C++)
Java-to-exe wrappers
- Janel (a Java native executable and launcher for Windows)
- J2Exe/J2TrayExe/J2WinService (Java to Win32 executable/service)
- Tanuki Java Service Wrapper (multi-platform Java service wrapper)
- JexePack (Java to Windows EXE/service)
- JEXECreator (Java to Executable wrapper)
- JavaLauncher (Java to Executable toolkit)
- exe4j (a Java exe maker)
- exeJ ("batch-like" executables creator for java applications)
- JarToExe (a tool to convert jar files into EXE files)
Java class decompilers
- Jad (Java Decompiler)
- JadRetro (a Java decompiler helper supporting Java 1.5+ classes) [Maven artifact details]
- JadClipse (a plug-in integrating Jad with Eclipse IDE)
- IdeaJad (IntelliJ IDEA plugin for java class decompilation using Jad)
- JadAlign (source aligner/reformatter for java files decompiled by Jad)
- Jad mode for Emacs (Emacs integration with Jad)
- JD-GUI (Yet another fast Java decompiler)
- Procyon Java Decompiler (Open-source Java decompiler supporting Java 8)
- JODE (Java Optimize and Decompile Environment)
- CupOfJoe (a Java Decompiler supporting Java 5, disassembler and bytecode debugger)
- javad (Java decompiler written in C++ aimed to decompile JDK v1.6 class files)
- JDec (Java Decompiler)
- "dcompiler" (JADO - Java Decompiler and Obfuscator)
- debyte (a Java Decompiler)
- JReversePro (Java Decompiler)
- HBD (The HomeBrew Decompiler)
- Sothink Java Decompiler (SourceTech Java decompiler)
- Dava (Java Decompiler)
- Java Clazz Utils (Java class files manipulation utility which includes Java classes viewer and decompiler)
- Dedexer (a disassembler tool for Android DEX files)
- dex2jar (Decompiler tools to work with Android .dex and java .class files)
Java class cross-version converters
- Retroweaver (Java 1.5 to Java 1.4 class converter)
- JadRetro (Java 1.5+ to Java 1.4 class converter targeting class decompilation)
Java optimizers and obfuscators
- ProGuard (Java class shrinker, optimizer, obfuscator)
- jobfuscate (Duckware Java Class Obfuscator)
- Zelix KlassMaster (Java byte-code optimizer and obfuscator)
- yGuard (a free Java bytecode obfuscator and shrinker)
- GuardIT for Java (an Interpreted Code Protection tool)
- RetroGuard (a general-purpose Java obfuscator)
- Allatori (a second-generation Java obfuscator)
- DexGuard (specialized optimizer and obfuscator for Android)
Stand-alone Java Runtime Standard Environment class libraries
- GNU Classpath (Essential Libraries for Java) [development Git repo]
- OpenJDK (Open-source "Java Development Kit")
- Apache Harmony (Apache Open Source Java SE class library and VM)
- Android libcore (Harmony-based core Java class library for Android)
OpenJDK integration projects
- IcedTea (a harness to build OpenJDK using Free Software build tools)
- openjdk4jikesrvm (bridge to use OpenJDK as JikesRVM class library)
- CVMI (the OpenJDK Common Virtual Machine Interface)
Java stand-alone communication and network libraries
- Sun/Oracle javacomm (Java Communication API) [comm-win32 download]
- rxtx (native interface to serial ports in Java)
- jUSB (a Java API for access to USB)
- dnsjava (an implementation of DNS in Java)
- IvmaiDNS tools (a pure java DNS client library and utilities for looking up the Internet domain names)
Java GUI libraries
- Eclipse SWT (The Standard Widget Toolkit for Java)
- SWTSwing (a port of the SWT graphical toolkit to Swing)
- SwingWT (Swing and AWT API over SWT library)
- IBM J9 WEME ppro10 UI (a standalone AWT implementation over SWT library)
- Java-GNOME (Java bindings for GNOME and GTK libraries)
- Qt Jambi (Qt library for Java)
- QtAWT (Qt-AWT Java bindings for KDE)
- KDEJava/Koala (Qt Java wrapper for KDE)
- Escher (X-Window System library written in Java)
- JCNIX (X-Window AWT CNI back-end)
- PJA (Pure Java AWT back-end)
- sdljava (Java bindings for Simple Direct Media Layer)
- XTC (X-Window protocol implementation in Java)
- GNU win32peer (Win32 AWT back-end for Classpath)
- CHARVA (Java AWT for Text Terminals)
- TUI AWT (a Text User Interface for the Java AWT)
- XP Look and Feel (alternative Swing XP-like "look-and-feel")
- LWUIT (a UI library for Java ME applications)
- LWUIMB (a port of LWUIT on top of the MicroBackend library)
- WeirdX (a pure Java X Window System Server implementation)
Java stand-alone miscellaneous libraries
- JNA (Java library for accessing native shared/dynamic-link libraries with neither JNI nor native code required)
- xFunction (a commercial library for DLL/shared libraries code invocation directly from Java without any JNI programming)
- HSQLDB (a pure Java Database)
- SqliteJDBC (a Java JDBC driver for SQLite)
- Bouncy Castle Crypto (a lightweight cryptography API)
- iText (a library generating PDF files)
- JOrbis (a pure Java Ogg Vorbis decoder)
- MicroEmulator (a pure Java ME implementation in Java SE)
Java build-automation tools
- Apache Ant (a Java-based build tool)
- Apache Maven (a Java-based software project management and comprehension tool)
Java benchmarking
- CaffeineMark (Embedded CaffeineMark Toolkit)
- SciMark (Java Numeric Benchmark)
- LinpackJava (Linpack Benchmark - optimized Java version)
- JCK (Java Compatibility Kit)
- JFCMark (Benchmark suite measuring/comparing performance of JFC/Swing)
- GCBench (a Garbage Collector benchmark)
Some papers on Java
- Convert Java to EXE - Why, When, When Not and How
- Practical embedded Java book
- Why compile Java into native code?
- Open Source Java Virtual Machine (Real-Time Java)
- Java Compilers for Embedded Systems
- Compiling Java with GCJ
- Eclipse Goes Native
- Converting a Java application into an exe file
- How to compile Java application to native code (Windows EXE)
- Java: Too Much for Your System? (Embedded system programming)
- Enriching embedded Java for use in safety-critical military applications
- Java-through-C Compilation: An Enabling Technology for Java in Embedded Systems