English

ASN.1 Java编译器概述

ASN.1 Java编译器由编译器和一组功能丰富的运行库jar包组成。 编译器翻译ASN.1类型到Java类. 运行库提供编码,解码和各种其它操作应用程序的消息的功能。

ASN.1 Java运行库完全是面向元信息的,所有元信息在运行时加载,使用后可以释放。

ASN.1 Java编译器功能特点

  • ASN.1类型和Java类之间的映射是非常简单和直观

    ASN.1 Java 编译器生成尽可能的原始类型或普通的旧式Java对象(POJO),ASN.1类型和Java类之间的映射是非常简单和直观,你不必学习一些特殊的API为了使用这些代码。这样最大限度地减少您的时间和努力去熟悉所产生的代码。

  • 自定义的映射类型,编码/解码的回调接口

    可扩展的转换器类,消息可以被解码,即使没有消息实体。可定制的应用得到回调时,每一个组件的消息被解码。

  • 完全面向元数据,只有元数据和消息的定义,没有额外的编码/解码的代码生成

    生成ASN.1类型对应的类型安全的Java类和元数据,最大限度地减少生成的代码,从而导致更高的代码重用率。

  • 高速编码/解码与多线程的支持

    一些假设使编码/解码速度大大提高。当然,这些假设也构成一定的局限性。

  • 纯Java实现,可以运行在任何JVM,包括Android Dalvik虚拟机。

    ASN.1 Java运行库是完全用Java写的,因此可以运行在任何JVM上面,包括资源有限的环境,如移动电话,PDA等等。

已知限制

  • ASN.1开发工具限制

    由于ASN.1 C++编译扩展了ASN.1开发工具,它具有ASN.1开发工具的所有限制

  • Tag

    为了编解码优化目的,长整型被用来保存标签tag,因此能支持表示的最大tag值是2097151(221)-1,但这几乎对所有的ASN.1规范都不是问题。

  • Length

    ENUMERATED类型的枚举个数,BIT STRING类型的比特长度,OCTET STRING类型的字节长度,SEQUENCE(OF)/SET(OF)类型或CHOICE类型的成员类型个数都不能超过231-1,这通常对所有的ASN.1规范也不是问题。

  • INTEGER

    INTEGER类型的值必须在 -263~263-1的范围之内,(也就是说,BigInteger等任意大的整数不支持) 。 现在支持任意大的整数BigInteger 。

  • REAL

    REAL类型的值总是作为二进制形式编码和解码,十进制的编码不能正确被解码。REAL类型的值精度不能超过Java语言的double。(也就是,BigDecimal等任意精度的浮点数不支持) 。

  • SET OF

    SET OF类型的值的规范编码中,动态排序不支持,因为它十分耗费内存和CPU。因此,推荐在使用SET OF类型的地方一律改用SEQUENCE OF类型。

下一步...

转至 ASN.1 Java编译器使用入门.