JunC++ion v3.0

JunC++ion Release 3.1

Release Focus

This release represents a quantum leap for our JunC++ion product. We have tried to minimize breaking changes in generated code, but the runtime library has been completely redesigned and reimplemented. While there was nothing "wrong" with the JunC++ion 2.x design, it proved too inflexible to go in the direction in which we wanted to take it.

A large amount of work went into consolidating the native C/C++ parts of the JuggerNET and JunC++ion runtime libraries. JuggerNET now uses the JunC++ion runtime library to interact with the Java side. This has the benefit of creating a much more uniform user experience across our products line and it eases our maintenance work (very often a bugfix on the JunC++ion side will also be a bugfix on JuggerNET side).

Another nearly invisible focus of redesign was the "backend." JunC++ion 2.x had essentially a "JNI++" runtime design, i.e. it took the Java Native Interface and wrapped it in a more convenient C++ API. The generated code would then use that C++ abstraction rather than the low-level JNI API. That was fine while JNI was the only "backend" for the generated proxy classes. It just didn't hold up when we decided that we also wanted to be able to use the same generated code with different backend implementations, for example our out-of-process Shared JVM. Consequently, we abstracted the runtime library along different lines.

Major areas of user-visible enhancement include:

  • a mature configuration framework.
    You can choose between four different major styles of configuring your integration module at runtime. The choices range from explicit configuration in code, over configuration files (both XML and old-style JunC++ion), to configuration hooks.
  • a mature string conversion framework.
    Conversions between Java strings and C++ strings were a little ad-hoc'ish in the previous release. Now you can choose default encodings on a global, local, or per-thread basis.
  • performance enhancements in various areas.
  • a mature tracing feature for enhanced debugging.
  • improved code portability.

Change history

Version Module Issue
3.0.6 Code Generator #656     Fields with '$' symbols in name are generated without name mangling.
Runtime #655     Environment variable overrides are not working.
Runtime #654     Comparison of array elements with null leaks a reference.
3.0.5 Runtime #653     Reference leak in object arrays.
Runtime #652     Reference leak in callbacks.
3.0.4 Code Generator #648      Generated classes don't have a placement new operator.
Runtime #645     setSecurityManager() method interprets empty string differently than expected.
3.0.2 - 3.0.3 n/a only .NET bugfixes.
3.0.1 Runtime #641     operator == () not working as expected.
3.0.0 Major Release Completely redesigned product.

JunC++ion Release 3.1


Copyright 2006 by Codemesh, Inc., ALL RIGHTS RESERVED

:
release 3.0
home products support customers partners newsroom about us contact us