ASN.1 Tools for Java — Enhancements History

ASN.1 Tools for Java - version 7.0 (latest version)

  • The ASN.1/Java Tools now include ASN.1 Studio v8.1.0.
  • Support for the JSON encoding rules has been added to the SOED runtime.
    Current limitations of the JSON SOED encoder/decoder:
    • The deferred decoding feature is not supported.
    • The ValueInFile feature is supported only for SET OF and SEQUENCE OF ASN.1 types.
  • The -helperAPI <param> and -noHelperAPI <param> command-line options have been added to the ASN.1 Tools for Java. These options tell the compiler to generate optional helper APIs, or not. A parameter is required that can be a single keyword or a comma-separated list of keywords. The keyword(s) specify the type(s) of helper API; currently, only opentype and pdudecoder are valid.
    • The -helperAPI opentype command-line option affects the representation of open type fields that are constrained by a component relation constraint.
    • The -helperAPI pdudecoder/-noHelperAPI pdudecoder command-line options tell the compiler whether to generate optional PDU and PDU_ID classes that will be used to auto-detect and decode PDUs of unknown types from bits on the wire.
  • The -sampleCode command line option can be specified with both the default -soed and the -toed options. Before the change the -sampleCode option was ignored when specified along with the -toed option.
  • Validation of the following constraints has been implemented in TOED:
    1. Element set specification (x.680 clause 50) - EXCEPT and ALL EXCEPT
    2. Subtype elements (x.680 clause 51)
      • Permitted alphabet
      • Type constraint
      • Pattern constraint
      • Property settings
      • Duration range
      • Time point range
      • Recurrence range
    3. Other constraints
      • Table constraint
      • Component relation constraint
      • Contents constraint
  • The ASN.1/Java SOED/TOED PER encoder-decoder implementation now conforms to the recent X.691 corrigendum (2015): an encoding contained in a BIT STRING should be at least one octet for PER ALIGNED and 1 bit for PER UNALIGNED.
  • New samples:
    • A sample for the 2016-03 version of the J2735 protocol has been created. The sample does not include the J2735:2016 ASN.1 specification due to licensing reasons. Users should obtain it directly from the ITS SAE site.
    • A sample for the 3GPP XwAP (TS 36.463) protocol has been created.

ASN.1 Tools for Java - version 6.3.1

ASN.1 Tools for Java - version 6.3

  • The ASN.1/Java Tools now include ASN.1 Studio v7.5.1. (Windows Only)
  • The ASN.1/Java Time Optimize Encoder/Decoder (TOED) now supports checking the following constraints:
    • Element set specification (x.680 clause 50): UNION and INTERSECTION.
    • Subtype elements (x.680 clause 51):
      • SingleValue
      • ContainedSubtype
      • ValueRange
      • SizeConstraint
      • InnerTypeConstraints (WITH COMPONENTS).
    When the -constraint option is specified and PDUs are present, the compiler generates the validate() method, which enables runtime constraint checking for PDUs.
  • The Java classes for INTEGER types with named numbers now include constants for each of the named numbers. This feature allows the named numbers to be used in Java switch statements.
  • The coder class provides the methods enableCompact() and disableCompact() to enable and disable the generation of whitespace by the XER, E-XER and JSON encoders. The enableCompact() method disables whitespace generation and the encoding is written as a single line of text with no whitespace. The disableCompact() method adds newlines and indentation to improve readability.
  • The Coder class provides methods (available only for TOED) to set the indentation width in the encodings generated by the XER and JSON encoders.

ASN.1 Tools for Java - version 6.2

  • The ASN.1/Java Tools now include ASN.1 Studio v7.4.
  • The ASN.1/Java compiler and the osstoed.jar TOED runtime library now support the JSON Encoding Rules.
  • The formatted string that is returned by the toString() method of the AbstractData can now be customized.
  • The Octet Encoding Rules (OER) and the Canonical Encoding Rules (C-OER) are now available with the -soed compiler option and the oss.jar SOED runtime library.
  • The ASN.1/Java TOED compiler now supports the -limitMethodSize compiler option that enables you to split the generated methods that exceed the 64K size limit into smaller parts. The "number" parameter specifies the number of lines of generated source code.
  • The TOED BER/DER/OER/PER/XER Encoding Rules now support automatic encoding and decoding of values contained in a BIT STRING or OCTET STRING that is encoded by different encoding rules.
  • New methods have been added to the com.oss.asn1.Coder TOED runtime class to enable or disable the Coder options that affect the JSON/ER encoding of SET or SEQUENCE components that are defined using the OPTIONAL or the DEFAULT keyword. By default, optional components that are not present in a SET or a SEQUENCE value are not encoded by the JSON Coder. Alternatively, JSON/ER allows the encoder to identify omitted optional components by using the "null" token, unless the type of the component is NULL or is an open type.

ASN.1 Tools for Java - version 6.1

  • The ASN.1/Java Tools now include ASN.1 Studio v7.1
  • The ASN.1/Java compiler and the ASN.1/Java TOED runtime library now support Octet Encoding Rules (OER) and Canonical Octet Encoding Rules (C-OER) as defined in "Rec. ITU-T X.696 | ISO/IEC 8825-7", rather than only the subset of ASN.1 types as defined in the "NTCIP 1102:2004 Octet Encoding Rules (OER) Base Protocol" document.
    The Octet Encoding Rules (OER), like the Packed Encoding Rules (PER), produce compact encodings by taking advantage of information present in the ASN.1 schema to limit the amount of information included in each encoded message. However, in contrast to PER, OER favors encoding/decoding speed over compactness of the encodings.
  • Distinguished Encoding Rules (DER), XML Encoding Rules (XER) and Canonical XML Encoding Rules (CXER) are now supported in Java TOED.
  • The ASN.1/Java compiler has been changed to generate the type-safe getXXX() method for each alternative of the CHOICE type.
  • The ASN.1/Java SOED and TOED runtimes now define the name() method of the Enumerated class to easily easily determine the symbolic name of the enumerator.
  • Samples have been added that illustrate use of the SBc-AP, M2AP, and M3AP LTE protocols based on 3GPP Release 11.
  • A sample has been added that illustrates use of the DSRC Message Set Standard, SAE J2735_200911.

Note: OSS ASN.1 Tools for Java version 6.0.0 implement an older verison of OER, specified by NTCIP 1102:2004. If you are using OER we strongly recommend that you upgrade to 6.1.0 or later.

ASN.1 Tools for Java - version 6.0

  • The ASN.1/Java Tools now include ASN.1 Studio v7.0
  • A new runtime library, the OSS ASN.1/Java Time-Optimized Encoder/Decoder (TOED), was implemented. As the name suggests, TOED is optimized for faster encoding and decoding. The new ASN.1/Java TOED runtime (osstoed.jar) uses encoders/decoders generated by the compiler, dramatically speeding up the encoding/decoding process compared to the interpretive ASN.1/Java runtime (oss.jar) - from now on referred to as the ASN.1/Java Space-Optimized Encoder/Decoder (SOED).
    • See the Reference Manual for a complete list of differences between the ASN.1/Java SOED and TOED runtime packages
    • With the exceptions noted in the manual, ASN.1/Java SOED and TOED have the same API. In most cases you can change from using one to using the other with no impact on your application code.
  • Support for the Octet Encoding Rules (OER), as specified by the NTCIP 1102:2004 Octet Encoding Rules (OER) Base Protocol document, was introduced in the ASN.1/Java compiler, the TOED runtime library and ASN.1 Studio. OER messages can generally be encoded/decoded significantly faster than BER and PER messages, while being only slightly less compact than PER messages. Support for OER in ASN.1/Java SOED and ASN.1/Java LED will be provided in the next release.
  • The set of samples provided now includes samples illustrating the use of protocols based on the SAE J2735 Intelligent Transportation standard, as well as the 3GPP Release 10 RRC, S1AP, and X2AP LTE protocols.

ASN.1 Tools for Java - version 5.1.0

  • The ASN.1/Java Tools now include ASN.1 Studio, a powerful new IDE packed with functionality that allows you to compile ASN.1 specs, display, create, modify or encode messages with just a few mouse clicks, and so much more!
  • You can generate code demonstrating how to perform encoding/decoding operation for any type in your ASN.1 specification.
  • Support for new built-in ASN.1 OID-IRI and RELATIVE-OID-IRI types from the ASN.1:2008 standards has been added.
  • On Windows, the ASN.1/Java tools now install under the Program Files\OSS Nokalva\asn1pjav\ folder (whereas before the 5.0 release, they were installed under Program Files\OSS\asn1pjav\).
  • Samples for the Windows platforms are now installed under the folder pointed to by the environment variable %ALLUSERSPROFILE%. By default, on Windows 7 and VISTA, the samples are installed under the C:\ProgramData\OSS Nokalva\asn1pjav\win32\<version-number>\samples folder, and on Windows XP, the samples are installed under the C:\Documents and Settings\All Users\Application Data\OSS Nokalva\asn1pjav\win32\<version-number>\samples folder.

ASN.1 Tools for Java - version 4.1

  • The OSS ASN.1 Tools for Java now support the PATTERN constraint notation. This notation allows you to restrict a character string type to be of a preset sequence of acceptable character patterns. This constraint notation has the general format:
       <TypeName> ::= <RestrictedCharType> (PATTERN <RegularExpression>)

    For example:

      NoZeros ::= NumericString (PATTERN noZero)
      noZero UniversalString ::= "[^0]"

ASN.1 Tools for Java - version 4.0

  • The OSS ASN.1 Tools for Java now support the full range of time types as specified in ISO 8601 (TIME, DATE, TIME-OF-DAY, DATE-TIME, DURATION). These representations of date and time were standardized to avoid misinterpretations when communicating across national boundaries.
  • The ASN.1/Java compiler has been changed to automatically select the -ignoreIncompleteItems option if the -relaxedMode option is specified.
  • The ASN.1/Java runtime introduces the new ossvalidator.jar class library to support runtime constraint checking for use with the J2ME CLDC 1.1 platform. The previous J2ME CLDC 1.1 compatible runtime library, ossmicro.jar, did not include support for runtime constraint checking. With the ossvalidator.jar library, you can now perform runtime constraint checking for ASN.1 JAVA applications developed for resource-constrained environments.
  • The ASN.1/Java runtime provides a new method, decodeWithPositions(), that allows you to save the size/offset information of an encoded PDU component when decoding. The size/offset information is useful in determining the position of any field in the encoded data.

ASN.1 Tools for Java - version 3.1

  • OSS ASN.1 Tools for Java version 3.1 supports the J2ME CLDC 1.1 platform. Specifically, a new command line option -microedition, and new runtime library ossmicro.jar, are available to generate Java classes which are compatible with J2ME CLDC 1.1. Now you can develop ASN.1 applications in Java for resource-constrained environments.
  • A new compiler option, -ignoreIncompleteItems, instructs the compiler to ignore incomplete ASN.1 definitions that appear within ASN.1 modules and directly or indirectly reference undefined types or values. This allows you to successfully utilize specs that have unresolved references that don't affect your application.
  • Two new performance tuning parameters are available for optimization of the PER decoder when decoding ASN.1 types OCTET STRING, BIT STRING and open type. These parameters, settable via the Java system properties, affect the internal buffering strategies used when decoding large byte arrays. Now you can control the size of the initial buffer for the decoder output, as well as the size of additional buffer allocations, when decoding fragmented byte array content.
  • The new utility class com.oss.util.Benchmark has been introduced to simplify encoder/decoder performance timing. See the runtime API documentation for more information about the Benchmark class.

ASN.1 Tools for Java - version 3.0

  • The OSS ASN.1 Tools for Java version 3.0 includes support for Extended XML Encoding Rules (E-XER), allowing you to enjoy the best of both ASN.1 and XML.
  • A powerful new XER encoding feature allows the user application to generate customized XER encodings. User-defined XER encodings will be placed in the output stream instead of the standard encodings that would have been generated by default methods of the XER coder class.
  • The ASN.1/Java Tools have been performance-optimized. The BER decoder's performance has been improved to now run up to 2.5 times or 150% faster.

ASN.1 Tools for Java - version 2.2

  • The OSS ASN.1 Tools for Java version 2.2 includes support for special REAL values -0 and NOT-A-NUMBER, as well as changes to the ASN.1/Java compiler to XML value notation to allow plain textual identifiers for some values.

ASN.1 Tools for Java - version 2.1

  • When a decoding fails in the midst of decoding a message, a partial value can now be caught and examined.
  • Both the XER and CXER encoders were optimized to run up to 100% faster than in the previous version.
  • An additional package in the runtime is now available. It is called com.oss.metadata and provides access to the tags, Java class names, ASN.1 names, flags (such as extensibility), and constraints.

ASN.1 Tools for Java - version 2.0

    The OSS ASN.1 Tools for Java version 2.0 supports the XML additions to ASN.1 described in the ASN.1:2002 standards documents.

  • The ASN.1 compiler supports the XML value notation that provides a means of representing ASN.1 values using eXtensible Markup Language (XML) with the ASN.1 type definition as the schema. The XML value notation may be present within the same input ASN.1 file as other ASN.1 components.
  • The encoder/decoder has been enhanced to allow you to encode/decode any PDU in the input using the XML encoding rules (XER) or the Canonical XML encoding rules (CXER). You can now add visibility to your ASN.1-described messages via XML.
  • New compiler command-line options are now available, -xer and -cxer. These options are similar to the -ber/-der/-per/uper options in that they allow the associated set of encoding rules (namely, the XML encoding rules (XER) and the canonical XML encoding rules (CXER)) to be available to the encoder/decoder during runtime.
  • A new ASN.1 compiler command-line option called "-xsl" has been added to allow you to automatically generate multiple default stylesheets, one for each PDU. Stylesheets allow you to have greater control over the visual aesthetic quality of an XML encoding.
  • A new compiler directive OSS.Stylesheet has been introduced to allow you greater control over the default stylesheets which are produced by the ASN.1 compiler. Using this directive, you can instruct the ASN.1 compiler to generate a separate stylesheet with your own desired filename for any particular PDU.
  • The ASN.1 compiler can now automatically generate XML DTD's (Data Type Definitions). Your application via the runtime XERDocument class can produce XML output. That output can be viewed and edited by any XML tool.

ASN.1 Tools for Java - version 1.5

  • XML support in the compiler
  • JIA API included
  • A GUI interface for the OSS ASN.1/Java compiler
  • Contents Constraint support
  • The Lean Encoder/Decoder runtime included
  • New hashCode() method

ASN.1 Tools for Java - version 1.5

  • New Feature: ValueInFile (for OSS C users this is NOCOPY or OBJHANDLE) provides support for processing values or components of values that are a huge size. In particular, the runtime no longer assumes that the value is stored in RAM but allows the value to reside in any external storage such as a disk file. The value can also be written to or read from a TCP/IP socket.
  • This release uses JDK 1.2.2. We found that switching to this version improved performance. We encourage our customers to use JDK 1.2.2 or higher as well. If you use the ValueInFile feature, using JDK 1.2.2 or higher is a requirement.