Release Notes



JunC++ion/JuggerNET v4 is significantly different from JunC++ion/JuggerNET v3. The old version of the code generator used to bundle a Java Runtime Environment (on some platforms but not on others) and you had to download different install packages for different operating systems.

JunC++ion/JuggerNET v4 does not bundle a JRE anymore and there is one download for all platforms. We recommend that you install a JDK 1.6 or higher before running JunC++ion v4 for the first time.

Download Code Generator

Download the code generator bundle as a platform-independent tar.gz file for all operating systems and processor architectures.


Unpack the archive into a directory of your choice. The archive contains a top-level directory named junc++ion-<major.minor.patch>. Don't be confused by the name if you are interested in JuggerNET: the package contains everything you need.

Download Runtime Library

JunC++ion/JuggerNET v4 does not include operating system- and compiler-specific runtime libraries anymore. We decided to exclude operating system-specific components from the code generator download package. Instead, you can now download the desired operating system-specific components from within the code generator, thereby greatly reducing duplicative and unnecessary downloads.

You need to download at least one runtime library from Codemesh's website before you can successfully link any examples or generated code.

If you run the code generator GUI and it cannot locate your host's operating system-specific runtime library in a subdirectory of the cpp/v3 directory, you will be asked whether you wish to download it. Please make sure that you

  • know your Codemesh download credentials, and
  • have the necessary privileges to modify the code generator's nested cpp/v3 directory.

Alternatively to using the GUI version, you can use the commandline version, for example if you are working in console-only mode. Simply change into the code generator's bin directory and instruct the code generator to download a runtime via:

[alex@z3000] ./xmog -download

Assuming you had the required file system privileges and the download succeeded, you will now have a proper runtime library for your operating system.

Please note that you can download runtime libraries at a later point too. The code generator GUI contains a menu option that allows you to download runtime libraries for any supported operating system.

Recent History

Version 4.8.429         (20200829)

  • [Note] a full release with some additional bugfixes for JDK/JRE identification.
  • [Base] bundles terp® v1.4.382, for many fixes related to modern JDK and JRE structures and fixes to C++ compiler discovery.
  • [Base] Code generator GUI still does not work on MacOS-X due to JIDESoft incompatibility. We are working on a resolution but you are limited to commandline code generation or running with an old JRE.

Version 4.7.423         (20200340)

  • [Note] The first partial Covid-19 quarantine release issued on this 40th day of March 2020. Unfortunately we do not have access to our full build grid, so we're putting out this partial release to make the fixes and updates available to customers who have been waiting for them. Stay healthy everyone!
  • [Base] bundles terp® v1.4.381, for many fixes related to modern JDK and JRE structures and fixes to C++ compiler discovery.
  • [Base] updated JIDESoft GUI components to address issues with modern JREs.
  • [Base] fixed bug related to new classfile format in JDK9+.
  • [Base] updated bytecode importer to handle module files.
  • [C++] fixed bug in namespace header file for unnamed package.
  • [Doc] fixed broken link in C++ tutorial lesson 4.

Version 4.7.414         (20160523)

  • [Base] bundles terp® v1.3.336, for fix recursive code generator invocations when modelfiles reference code generator properties.
  • [Base] added diagnostics for JDK misconfiguration in callback type generators.
  • [.NET] fixed bug in callback function template (potential name clash between method argument name and exception handler argument name).
  • [C++] fixed bug in callback function template (potential name clash between method argument name and exception handler argument name).
  • [Apps] fixed exception in JMS Courier wizard C++ sample programs when no default JVM can be located.

Version 4.7.401         (20151008)

  • [.NET] added full support for code generation against JDK 8 types. Some new language features used to cause compilation problems unless enabled typeset was tweaked. Also adresses PrimitiveIterator and Spliterator problem.
  • [C++] added full support for code generation against JDK 8 types. Some new language features used to cause compilation problems unless enabled typeset was tweaked.
  • [C++] fixed many issues related to nested types. Most Java nested type scenarios will now compile in C++.
  • [C++] fixed many issues related to circular type dependencies by refining type analysis and changing type hierarchies if necessary.
  • [C++] fixed exception thrown in doc generation when multiple @return tags are used in one comment.

Version 4.7.393         (20150921)

  • [Runtime] finally bundles the complete set of Windows xmogrt.dll's. Silly typo in build script prevented latest versions from building in automated build. New runtime version is 3.8.189. No changes in functionality.
  • [.NET] fixed bug when exactly one model is referenced by derived model.
  • [.NET] fixed bug in wizards that prevented NuGet package from being generated..
  • [.NET] added a generated RunnableThreadStart type that allows easy use of .NET ThreadStart delegates with Java threads.
  • [.NET] added optionally generated Codemesh.JuggerNET.Forms.JavaFrame type allowing the embedding of Java GUI components in Windows Forms.
  • [.NET] added wizard for NASA World Wind API to embed Java World Wind GUIs in .NET Forms applications.

Version 4.6.390         (20150907)

  • [.NET] fixed string literal bug when text contained a doublequote.
  • [.NET] fixed bug in function override analysis that caused duplicate function to be generated under rare inheritance scenarios when original function returns Object and implementation returns an interface.
  • [.NET] fixed many annoying compiler warnings relatd to generated private support fields hiding other private support fields.
  • [.NET] java.util.Spliterator sub-types from Java8 will cause compilation error unless java.util.Spliterator.OfPrimitive is also enabled.

Version 4.6.389         (20150820)

  • [C++] fixed type generation failure when lots of callback types are generated.
  • [.NET] fixed type generation failure when lots of callback types are generated.

Version 4.6.388         (20150714)

  • Official release including all the changes from preliminiary 4.6.387 release plus the missing HP-UX runtime library ( build machine had dropped off the grid). No further code changes.

Version 4.6.387         (20150621)

  • [Runtime C++] added runtime libraries built using old VC6 and new MSVC++ 18.
  • [Runtime C++] fixed small per-proxytype memory leak in C++ runtime.
  • [Runtime C++] several small changes to runtime headers.
  • [Runtime .NET] fixed rare problem in .NET to Java string translation in heavily multithreaded apps.
  • [Runtime .NET] fixed rare problem in accessing array elements of reference types in heavily multithreaded apps.
  • [C++] added limited support for generating VC6 compatible code.
  • [C++] fixed memory leak related to C++ proxy strings that had their characters queried when compiled with latest Microsoft compiler.

Version 4.4.362         (20150406)

  • [Runtime .NET] fixed rare race condition that returned objects as Object proxy type instead of better suited proxy type.
  • [C++] fixed infinite recursion for escaped names containing underscore.

Version 4.4.361         (20140908)

  • [Base] bundles terp® v1.3.331, for fix to ANT executor and other enhancements.
  • [.NET] fixed/added support for JDK 8 feature of static interface methods. Caused compilation errors in previous versions.
  • [.NET] added a NuGet package support for JMS Courier .NET wizard.

Version 4.3.352         (20131206)

  • [.NET] added a NuGet package for the JuggerNET runtime, located in dotnet/v3 folder.
  • [.NET] added support for the generation of NuGet packages, including proper dependency management for the JuggerNET runtime package.
  • [.NET] added GUI support for the AssemblyInfo attributes that could already be configured as model properties.
  • [.NET] changed .NET runtime netrt.dll to be strongly named.
  • [.NET] changed type template file to make generation timestamp suppressable.
  • [.NET] fixed VisualStudio version selection in GUI.
  • [.NET] removed obsolete VisualStudio versions from list and added newer ones. Also added solution and project file templates to support those later versions.

Version 4.2.320         (20131106)

  • [Base] added code analysis support for Java7 constant pool entries like MethodHandle, MethodHandle, and InvokeDynamic.
  • [Base] added implementation stripper to allow customers to send jar files that only contain signatures and no implementation to Codemesh for support cases. The implementation stripper processes the classes on the user class path and creates copies of Java types that only contain the type signatures with all constant field values set to null or 0 and all method bodies removed. This allows many of our customers to share otherwise confidential source code with us to reproduce and debug code generation problems.
  • [C++] fixed code generation error for nested exception types.
  • [.NET] changed type template to include JRE version number in type comment.
  • [.NET] changed inheritance generation for types with multiple super interfaces to make sure that we always have the same super interface Impl type (for consistency not correctness sake).
  • [.NET] added new attribute to constant fields in Impl types that override values of same-name fields in super types (for example SerialVersionUID) to get rid of compiler warning.

Version 4.1.318         (20131029)

  • [C++] fixed race condition causing missing output files when nested destination directories do not exist.
  • [C++] fixed type set calculations related to primitive types.
  • [C++] fixed code generation errors for missing types.
  • [C++] fixed code generation error for callback types that rely on types that are on system classpath but not by default referenced by javac (for example javax.jnlp types).
  • [C++] fixed compilation error for nested callback types.
  • [C++] fixed compilation error for some combinations of interdependent nested types.
  • [C++] fixed compilation error for remote _Stub type with period in type name.
  • [C++] fixed compilation error for a nested types' instance fields of outer type.
  • [.NET] fixed race condition causing missing output files when destination directories might not exist.
  • [.NET] fixed code generation error for callback types that rely on types that are on system classpath but not by default referenced by javac (for example javax.jnlp types).
  • [.NET] fixed inheritance analysis exception for some cases related to non-proxy mix-in types from the .NET framework.
  • [.NET] fixed dependent model issue where dependent model's imports were not generated.
  • [.NET] fixed missing target directory creation when generating from GUI.
  • [.NET] fixed compilation error for naming conflict between and (name clash of nested function and type).

Version 4.1.316         (20130827)

  • [Applications] Added ability to configure keyfile for building strongly named assemblies to wizards (invokable from commandline with -DdotnetAssemblyPrivateKeyFile=<file> property).
  • [C++] fixed code generation exceptions when missing types are marked as enabled.
  • [.NET] fixed doc generation exception for functions with altered return types.
  • [Runtime .NET] changed behavior of JuggerNETProxyException.Message property to be more in line with default .NET behavior.

Version 4.1.315         (20130509)

  • [Java] fixed case-insensitivity bug for Java fields and methods. Fields (or methods) with names that only differed in case were effectively dropped from the model.
  • [C++] fixed rare race condition resulting in malformed sourcecode in multithreaded source code emitter.
  • [C++] added OVERFLOW=OVERFLOW_Java and UNDERFLOW=UNDERFLOW_Java to reserved identifiers (clash with MSVC++ on Windows).
  • [C++] fixed compilation issue with mutually dependent inner types. Some work remains to be done in this area, but common cases are handled correctly now.
  • [C++] fixed compilation issue with static fields of inner class type (was only forward declared instead of included).
  • [.NET] fixed callback runtime bug when natural sort order of Java methods is different from natural sort order of corresponding .NET functions.
  • [.NET] fixed issue where a callback method returns a callback object.

Version 4.1.314         (20130214)

  • [Base] bundles terp® v1.3.323, for fix to generic C++ compiler option.
  • [.NET] ANT build script now stages a version of xmogrt.dll for platform-specific builds (not for 'AnyCPU').
  • [.NET] Template changes to fix runtime issue with callbacks in arrays.
  • [.NET] Template changes to fix compiletime issue with callbacks extending other callbacks.
  • [.NET] Template changes to fix compiletime issue when using non-public dotnetTargetAccessibility.
  • [Runtime] added support for $(varname) environment variables and trailing '/*' wildcard in classpath roots.
  • [Applications] small bug fixes in JMS Courier wizard examples.
  • [Applications] added display of generated readme file to wizard execution.

Version 4.0.311         (20130127)

  • [Base] bundles terp® v1.3.322, for enhancement to ^ant() and ^msvc() executors.
  • [.NET] improved support for dependent models in .NET code generation. Added query support for names of functions in base model types.
  • [Applications] added ".NET leading 'I'" naming policy to list of preconfigured naming policies of .NET targets.
  • [Applications] added x86 and x64 platform builds. Now building all three flavors of binaries in .NET targets.
  • [Applications] added .NET sample applications (publisher and subscriber) as well as generated documentation to JMS app.

Version 4.0.309         (20130123)

  • [Base] bundles terp® v1.3.321, for fixes to ^junction() and ^juggernet() executors.
  • [Examples] fixed broken Lesson 12 in C++ v3 tutorial.
  • [C++] fixed native implementation templates that were generating #include directives for primitive types.

Version 4.0.308         (20130112)

  • [Runtime] fixed issue with .NET deserialization support of user-defined types.
  • [Runtime] fixed crash for 64bit .NET applications. Was general problem but only exhibited on Windows 2012 Server.
  • [Runtime] added support for Microsoft VisualStudio 2012 (MSVC++ 17).
  • [Runtime] all Microsoft VisualStudio-built debug runtimes now use the Microsoft C++ runtime release versions.
  • [Runtime] fixed issue with .NET deserialization support of ser-defined types.
  • [Runtime] fixed OriginalFileName property in runtime libraries.
  • [Runtime] changed codebase for injected classes.
  • [Runtime] changed object instance entry points in both netrt and xmogrt libraries to facilitate better debugging.
  • [.NET] fixed code generator to support callback types derived from empty interfaces.

Version 4.0.302         (20120728) beta

  • [Base] bundles terp® v1.3.320, for ^cpp executor enhancements required by MinGW port.
  • [Base] Cosmetic changes to wizards.
  • [Runtime] fixed C++ runtime library's timestamp implementation for tracing with MinGW compiler.
  • [Runtime] Bundling both g++ 4.4 (QtSDK MinGW) and g++ 4.6 (MinGW) support. Version number now v3.5.149.
  • [.NET] fixed code generation for dependent models (required by "applications" feature).

Version 4.0.292         (20120724) beta

  • [Base] fixed platform portability bug introduced with "applications" feature. Bundled applications still undergoing improvements, but should be useful now.

Version 4.0.288         (20120722) beta

  • [Base] added runtime library staging to ANT build scripts. Managed or unmanaged runtime libraries are now copied to target folder.
  • [Base] updated built-in wizard functionality.
  • [Base] enhanced bundled JMS Courier® and JDBC wizards.
  • [Base] bundles terp® v1.3.314, for ^codegen executor enhancements required by "applications" feature.
  • [.NET] added several name clash detection rules (type with namespace, field and function with framework identifier).

Version 4.0.286         (20120717) beta

  • [Base] fixed broken command constants for .NET documentation generation actions.
  • [Base] bundles terp® v1.3.313, for ^shell executor enhancements required by "applications" feature.
  • [Base] added support for bundled "applications" like JMS Courier®.
  • [.NET] default-enabled .NET documentation generation and added related settings to properties view.
  • [.NET] fixed array type name overwriting cached base type name.
  • [.NET] fixed missing D>1 proxy array types.
  • [.NET] fixed name clash detection between type-named function and type.
  • [Java] removed array types from tree view.
  • [Java] changed fiter pattern to regard '[' array marker as terminator for match-all sequence.

Version 4.0.275         (20120614) beta

  • [Base] fixed nested type pattern selection (e.g. java.util.Map$Entry)
  • [Base] fixed outer type enablement when nested type is enabled.
  • [Base] fixed issues with constant value display in Java tree model.
  • [.NET] fixed constant values of string type that contain non-ASCII characters.
  • [Base] added support for manually added modelDir property in file arguments (model-relative jar file imports).
  • [.NET] added optional object serialization support enabled via dotnetGenerateSerializationSupport property. Relies on added functions in managed and unmanaged runtime libraries.

Version 4.0.274         (20120611) beta

  • [Runtime] fixed regression in .NET field setters (value truncation).

Version 4.0.273         (20120516) beta

  • [Base] fixed several bugs in inheritance analysis.
  • [Base] bundles terp® v1.3.312, for MinGW support on Windows.
  • [.NET] changed initial inspection of assemblies for proxy types to JvmLoader.Load() to allow configuration of blacklist/whitelist.
  • [.NET] implemented callback support.
  • [Runtime] fixed very rare race condition in .NET field getters/setter.

Version 4.0.270         (20120327) beta

  • [Base] added command support for force-enable variant of enablefields and enabletypes commands.
  • [Base] bundles terp® v1.3.307, for added trim transformer and empty and startswith() selectors.
  • [Runtime] changed logging/tracing in several ways:
    • added timestamp to log message.
    • changed log file from append mode to overwrite mode.
    • added ability to retain a configurable number of old log file(s) ( new parameter in setTraceFile()).
  • [.NET] added optional IConvertible integration governed by dotnetGenerateConvertibleSupport model property.

Version 4.0.268         (20120315) beta

  • [Base] fixed field enablement/disablement not working when opening
    model from disk.
  • [Runtime] added support for JVM agent options to C++ runtime.
  • [C++] fixes target name in generated ANT buildscripts.
  • [C++] fixes several callback-related issues (primitive return type missing, malformed code in callback stub, return value not being set).
  • [C++] fixes several declspec-related issues in generated project files.
  • [.NET] removed hardcoded native properties from type template.
  • [.NET] fixes missing primitive array types (dimension > 1).
  • [.NET] fixes array type naming conventions (intArrayArray issue).

Version 4.0.265         (20120216) beta

  • [.NET] fixes regression in lookup of .NET function by Java method selector.
  • [.NET] fixes code generation bug in byte-typed properties..
  • [.NET] fixes duplicate synthetic GetEnumerator() function for IEnumerable support.
  • [.NET] fixes compilation error when argument names include '$' character.
  • [Base] bundles terp® v1.3.306, for small bugfix related to token end in expression node qualifiers.

Version 4.0.263         (20120214) beta

  • [Base] fixes model property evaluation problem for directories on E: drive (erroneously evaluates to Euler number).
  • [Base] bundles terp® v1.3.305, for part of above fix.

Version 4.0.262         (20120210) beta

  • [.NET] added IEnumerable support for java.lang.Iterable types.
  • [.NET] added ICollection support for java.util.Collection types.
  • [.NET] added tutorial lessons.
  • [Runtime] fixed bug in file-based configuration reader for .config files (did not look in Codemesh/Runtime, only in Codemesh/JuggerNET section).

Version 4.0.257         (20120130) beta

  • [Base] fixes covariant method override analysis to correctly handle java.lang.AbstractStringBuilder.append() methods.
  • [.NET] disabled warnings 28 and 1607 in generated build support files.
  • [.NET] added overloaded Main(string[]) entry point if proxy method Main(StringArray) is present. This allows the use of proxy types as an entry point.
  • [.NET] fixed NPE in NameTransformer when referenced types are missing from model classpath.

Version 4.0.256         (20120127) beta

  • [Base] bundles terp® v1.3.304, which allows the use of installname in C++ compilation <target> element without specifying a version.
  • [Base] fixes issue where Java methods or fields could go missing from model when there are duplicate types on model classpath (problem due to rt.jar and alt-rt.jar).
  • [Runtime] fixed AgentLib, AgentPath, JavaAgent, and Splash configuration options..
  • [.NET] added tutorial lessons.

Version 4.0.255         (20120123) beta

  • [Base] bundles terp® v1.3.303, which fixes the ^file().lines accessor and the mechanism for severe error message suppression.
  • [Base] fixes model open issue where GUI closes when saved model is opened with just one model open.
  • [Runtime] bundles updated native runtime library v3.5.119, which contains additional .NET entry points for Windows.
  • [.NET] added large amounts of JuggerNET® .NET proxy generation functionality.

Version 4.0.238         (20111209) beta

  • [Base] bundles terp® v1.3.296, which adds the namefy formatter and fixed a bug in the ^guid() type.
  • [C++] fixed several bugs in generated VisualStudio projects. Introduced VisualStudio project GUID model property.
  • [C++] changed several model property default values (cppDeclspec, cppProjectName)
  • [.NET] added more JuggerNET® .NET proxy generation functionality.

Version 4.0.235         (20111206) alpha

  • [Base] bundles terp® v1.3.295, addressing a few non-critical bugs.
  • [Base] changes method pattern behavior: when no open-parenthesis is part of pattern, the pattern matches all methods of the given name.
  • [Base] fixed typo in pattern selector property protected.
  • [Base] workaround for GUI exit when model opened from File Open menu with only one model open.
  • [C++] added storage class option to C++ options that are configurable in model settings pane.
  • [.NET] laying groundwork for integration of JuggerNET® .NET proxy generation functionality.

Version 4.0.225         (20111007) alpha

  • bundles terp® v1.3.292, addressing MacOS-X C++ compilation and JDK/JRE discovery issues.
  • bundles new JIDE release for GUI components.
  • fixes several MacOS-X GUI issues.
  • fixes several model property editor problems.


The v4 release has a lot of new features and feature enhancements. They include:

  • brand-new, completely redesigned code generator GUI.
  • completely terp®-based, allowing powerful expressions in all commands.
  • powerful selection expressions for types, methods, and fields.
  • template-based code generation, allowing for extensive code customization by user.
  • ability to add more templates to code generation.
  • modelfiles can reference other modelfiles for dependent projects.
  • configurable name transformations.
  • brand-new tutorial.
  • generates ANT projects for flexible builds.


This is still pre-release software, so there are a few areas where JunC++ion v4 does not yet implement a feature that is present in JunC++ion v3. These limitations include:

  • class callbacks.
    JunC++ion v4 currently only supports interface callbacks.
  • remote JVM.
    The remote JVM server has not yet been added to the build.
  • AIX support.
    We currently don't have an AIX build machine in-house, so there is no AIX runtime.
  • makefiles.
    Makefiles are not yet being generated. Use ANT scripts if possible.
  • HTML doc.
    The generated HTML documentation is not yet complete.

Copyright 1999-2020 by Codemesh, Inc., ALL RIGHTS RESERVED

release notes home gui cli tutorial runtime reference about us contact us download