The current specification of Charset.forName does not distinguish between canonical names and aliases. If a name is available as both a canonical name and an alias, it is not specified, which Charset is returned.
It would be better to specify that canonical names take precedence over aliases. Apart from making logical sense, this would also help us in the transition from the current JavaSoft-provided character converters to platform-vendor-provided converters. When, say, removing the Cp949 converter from our runtime, we could leave behind an alias for the (similar, but not identical) MS949 converter for compatibility. When then IBM provides a new Cp949 converter (using that canonical name), this converter would take precedence over our MS949 converter.
It would be better to specify that canonical names take precedence over aliases. Apart from making logical sense, this would also help us in the transition from the current JavaSoft-provided character converters to platform-vendor-provided converters. When, say, removing the Cp949 converter from our runtime, we could leave behind an alias for the (similar, but not identical) MS949 converter for compatibility. When then IBM provides a new Cp949 converter (using that canonical name), this converter would take precedence over our MS949 converter.