Spec-Zone .ru
спецификации, руководства, описания, API
|
Глобальный Интернет требует глобальное программное обеспечение - то есть, программное обеспечение, которое может быть разработано независимо от стран или языков его пользователей, и затем локализовано для многократных стран или областей. Платформа Java обеспечивает богатый набор API для того, чтобы разработать глобальные приложения. Эти API интернационализации основаны на стандарте Unicode и включают возможность адаптировать текст, числа, даты, валюту, и определяемые пользователем объекты к соглашениям любой страны.
Этот документ суммирует API интернационализации и функции Платформы Java, Standard Edition. Для того, чтобы кодировать примеры и постепенные инструкции, см.
Для дополнительной информации см.
Язык программирования Java основан на наборе символов
Примитивная случайная работа типа данных в языке программирования Java является 16-разрядным целым числом без знака, которое может представить кодовую точку Unicode в диапазоне U+0000 к U+FFFF, или элементы кода UTF-16. Различные типы и классы в платформе Java, которые представляют символьные последовательности - случайная работа [], реализации java.lang. CharSequence (такой как Строковый класс), и реализации java.text. CharacterIterator - являются последовательностями UTF-16. Большинство исходного кода Java пишется в ASCII, 7-разрядной кодировке символов, или ISO-8859-1, 8-разрядной кодировке символов, но преобразовывается в UTF-16 перед обработкой.
Класс символов как объектная обертка для типа примитива случайной работы. Класс символов также содержит статические методы, такие как isLowerCase () и isDigit () для того, чтобы определить свойства символа. Начиная с J2SE 5, у этих методов есть перегрузки, которые принимают любого случайная работа (который позволяет представление кодовых точек Unicode в диапазоне U+0000 к U+FFFF), или интервал (который позволяет представление всех кодовых точек Unicode).
На платформе Java локаль является просто идентификатором для определенной комбинации языка и области. Это не набор специфичных для локали атрибутов. Вместо этого каждый чувствительный к локали класс поддерживает свою собственную специфичную для локали информацию. С этим проектом нет никакого различия в том, как пользователь и системные объекты поддерживают их специфичные для локали ресурсы. Оба используют стандартный механизм локализации.
Программы Java не присваиваются единственная глобальная локаль. Все секретные операции локали могут быть явно заданы локаль как параметр. Это значительно упрощает многоязычные программы. В то время как глобальная локаль не осуществляется, локаль по умолчанию доступна для программ, которые не хотят управлять локалями явно. Локаль по умолчанию также позволяет влиять на поведение всего представления с единственным выбором.
Локали Java действуют как запросы на определенное поведение от другого объекта. Например, французская канадская локаль, которую передают к Календарному объекту, просит, чтобы Календарь вел себя правильно для таможни Квебека. Это до объекта, принимающего, что локаль делает правильную вещь. Если объект не был локализован для определенной локали, он попытается найти "близкое" соответствие с локалью, для которой он был локализован. Таким образом, если бы Календарный объект не был локализован для французской Канады, но был локализован для французского языка вообще, то это использовало бы французскую локализацию вместо этого.
Объект Локали представляет определенную географическую, политическую, или культурную область. Работу, которая требует, чтобы локаль выполнила свою задачу, вызывают чувствительная к локали и использует объект Локали адаптировать информацию для пользователя. Например, отображение числа является секретной операцией локали - число должно быть отформатировано согласно таможне и соглашениям собственной страны пользователя, области, или культуры.
На платформе Java не должно быть единственного набора поддерживаемых локалей, так как каждый класс поддерживает свои собственные локализации. Однако, есть непротиворечивое множество локализаций, поддерживаемых классами Платформы Java. Другие реализации платформы Java могут поддерживать различные локали. Поддерживаемые Java Sun Среды выполнения SE получаются в итоге в веб-странице
Все чувствительные к локали классы должны быть в состоянии получить доступ к ресурсам, настроенным для локалей, которые они поддерживают. Чтобы помочь в процессе локализации, это помогает иметь эти ресурсы, группировался локалью и отделился от нейтральных локалью частей программы.
Класс ResourceBundle является абстрактным базовым классом, представляющим контейнеры ресурсов. Программисты создают подклассы ResourceBundle, которые содержат ресурсы для определенной локали. Новые ресурсы могут быть добавлены к экземпляру ResourceBundle, или новые экземпляры ResourceBundle могут быть добавлены к системе, не влияя на код, который использует их. Упаковка ресурсов как классы позволяет разработчикам использовать в своих интересах механизм загрузки класса Java, чтобы найти ресурсы.
Пакеты ресурса содержат специфичные для локали объекты. Когда программа нуждается в специфичном для локали ресурсе, Строковый объект например, программа может загрузить ее из пакета ресурса, который является подходящим для локали текущего пользователя. Таким образом программист может записать код, который в значительной степени независим от локали пользователя, изолирующей больше всего, если не все, специфичной для локали информации в ресурсе связываются.
Это позволяет программистам Java писать код, который может:
ResourceBundle. Управление является вложенным классом ResourceBundle. Это определяет методы, которые вызовут методы фабрики ResourceBundle.getBundle так, чтобы поведение загрузки пакета ресурса могло быть изменено. Например, специализированные форматы пакета ресурса, такие как XML, могли поддерживаться, переопределяя методы.
ListResourceBundle является абстрактным подклассом ResourceBundle, который управляет ресурсами для локали в удобном и удобном списке.
PropertyResourceBundle является конкретным подклассом ResourceBundle, который управляет ресурсами для локали, используя ряд статических строк от файла свойств.
java.util. Класс даты представляет определенный момент вовремя с точностью миллисекунды, независимой от часовых поясов и локалей.
Класс Даты содержит несколько методов для интерпретации дат как год, месяц, день, час, минута, и вторые значения, и для форматирования и парсинга строк даты. Эти методы являются несовместимыми с интернационализацией, и большинство из них поэтому осуждается. Вместо них, приложения должны использовать Календарный класс, чтобы преобразовать между датой и полями времени, и классом DateFormat формата и строк даты синтаксического анализа.
Календарь класса является абстрактным базовым классом, который может преобразовать между моментом времени (представленный как миллисекунды с 0:00:00 GMT, Ян 1, 1970) и рядом целых чисел, представляющих год, месяц, неделю и так далее. GregorianCalendar является конкретным подклассом Календаря, который делает это согласно правилам Григорианского календаря.
Календарь и его подклассы полезны для выполнения различных манипуляций с временными стоимостями. Арифметика может быть выполнена на Календаре поля объекта и получающаяся определенная дата. Календарный объект может произвести все время значения полей, должен был реализовать разовое датой форматирование для определенного языка и календарного стиля. Отошлите к веб-странице Поддерживаемые Календари для деталей.
Абстрактный класс TimeZone инкапсулирует смещение часового пояса от GMT (Среднее время по Гринвичу) и возможное смещение летнего времени. Метод фабрики TimeZone.getTimeZone можно вызвать, чтобы получить экземпляр TimeZone какое-то время зональный ID. Метод фабрики TimeZone.getDefault автоматически обнаруживает часовой пояс платформы и возвращает экземпляр TimeZone, который соответствует часовой пояс платформы.
Календарный класс и его подклассы используют класс TimeZone, чтобы преобразовать между местным временем и UTC, который является внутренним представлением, используемым объектами даты. Большинство программ не должно будет иметь дело с объектами TimeZone непосредственно.
Именно в форматировании данных для вывода много местных представлений применяются. Числа, даты, времена, и сообщения могут все потребовать форматирования прежде, чем они смогут быть выведены на экран. Платформа Java обеспечивает ряд гибких классов форматирования, которые могут обработать и стандартные форматы локали и программиста определенные пользовательские форматы. Эти классы форматирования также в состоянии проанализировать отформатированные строки назад в их составляющие объекты.
Формат класса является абстрактным базовым классом для того, чтобы отформатировать уязвимую информацию локали, такую как даты, времена, сообщения, и числа. Обеспечиваются три основных подкласса: DateFormat, NumberFormat, и MessageFormat. Эти три также обеспечивают собственные подклассы.
Даты и времена сохранены внутренне независимым от локали способом, но должны быть отформатированы так, чтобы они могли быть выведены на экран чувствительным к локали способом. Например, та же самая дата могла бы быть отформатирована как:
Класс DateFormat является абстрактным базовым классом для форматирования и парсинга даты и временных стоимостей независимым от локали способом. У этого есть много статических методов фабрики для того, чтобы получить стандартные форматы времени для данной локали.
Объект DateFormat использует объекты Календаря и TimeZone, чтобы интерпретировать временные стоимости. По умолчанию объект DateFormat для данной локали будет использовать соответствующий Календарный объект для той локали и объект TimeZone системы по умолчанию. Программист может переопределить эти варианты при желании.
Класс SimpleDateFormat является реальным классом для форматирования и парсинга дат и времена чувствительным к локали способом. Это учитывает форматирование (миллисекунды к тексту), анализируя (текст к миллисекундам), и нормализация.
Класс DateFormatSymbols используется, чтобы инкапсулировать локализуемые разовые датой данные форматирования, такие как имена месяцев, имена дней недели, времени суток, и данных часового пояса. Классы DateFormat и SimpleDateFormat оба используют класс DateFormatSymbols, чтобы инкапсулировать эту информацию.
Обычно, программисты не будут использовать DateFormatSymbols непосредственно. Скорее они реализуют форматирование с методами фабрики класса DateFormat.
Класс NumberFormat является абстрактным базовым классом для форматирования и парсинга числовых данных. Это содержит много статических методов фабрики для того, чтобы получить различные виды специфичных для локали числовых форматов.
Класс NumberFormat помогает программистам отформатировать и проанализировать числа для любой локали. Код используя этот класс может быть абсолютно независимым от соглашений локали для десятичных точек, тысячи разделителей, определенные десятичные цифры, используемые, или является ли числовой формат даже десятичным. Приложение может также вывести на экран число как нормальное десятичное число, валюту, или процент:
Числа сохранены внутренне независимым от локали способом, но должны быть отформатированы так, чтобы они могли быть выведены на экран чувствительным к локали способом. Например, при использовании "#,###.00" как образец, то же самое число могло бы быть отформатировано как:
Класс DecimalFormat, который является конкретным подклассом класса NumberFormat, может отформатировать десятичные числа. Программисты обычно не будут инстанцировать этого класса непосредственно, но будут использовать обеспеченные методы фабрики.
У класса DecimalFormat есть возможность взять строку образца, чтобы определить, как должно быть отформатировано число. Образец определяет атрибуты, такие как точность числа, должны ли начальные нули быть напечатаны, и какие обозначения денежной единицы используются. Строка образца может быть изменена, если программа должна создать пользовательский формат.
Класс DecimalFormatSymbols представляет набор символов (таких как десятичный разделитель, группирующийся разделитель, и так далее) необходимый DecimalFormat, чтобы отформатировать числа. DecimalFormat создает для себя экземпляр DecimalFormatSymbols от его данных локали. Программист, бывший должный изменить любой из этих символов, может добраться, объект DecimalFormatSymbols от DecimalFormat возражают и затем изменяют это.
Класс ChoiceFormat является конкретным подклассом класса NumberFormat. Класс ChoiceFormat позволяет программисту присоединять формат к диапазону чисел. Это обычно используется в объекте MessageFormat для того, чтобы обработать множественные числа. См. "раздел" Класса MessageFormat, который следует для получения дополнительной информации.
Программы часто должны создавать сообщения из последовательностей строк, чисел и других данных. Например, текст сообщения, выводящего на экран число файлов на дисководе, изменится:
Если сообщение, созданное из последовательностей строк и чисел, трудно кодируется, оно не может быть преобразовано на другие языки. Например, отметьте различные позиции параметров "3" и "G" в следующих преобразованиях:
Класс MessageFormat обеспечивает средство произвести связанные сообщения нейтральным языком способом. Объект MessageFormat берет ряд объектов, форматирует их, и затем вставляет отформатированные строки в образец в соответствующих местах.
Класс ParsePosition используется классом Формата и его подклассами, чтобы отследить текущую позицию во время парсинга. parseObject () метод в классе Формата требует объекта ParsePosition как параметра.
Класс FieldPosition используется классом Формата и его подклассами, чтобы идентифицировать поля в отформатированном выводе. Одна версия формата () метод в классе Формата требует объекта FieldPosition как параметра.
Программы часто должны управлять строками. Общие операции на строках включают поиск и сортировку. В некоторых задачах, таких как сопоставление строк или обнаружение различных границ в тексте, удивительно трудно разобраться и являются еще более трудными, когда многократные языки нужно рассмотреть. Платформа Java обеспечивает классы для того, чтобы они обработали многие из этих общих обработок строк чувствительным к локали способом.
Класс Сортировально-подборочной машины выполняет чувствительное к локали сравнение строк. Программисты используют этот класс, чтобы создать поиск и алфавитные программы сортировки для текста естественного языка. Сортировально-подборочная машина является абстрактным базовым классом. Его подклассы реализуют определенные стратегии сопоставления. Одному подклассу, RuleBasedCollator, в настоящий момент предоставляют Платформу Java и применим к широкому набору языков. Другие подклассы могут быть созданы, чтобы обработать более специализированные потребности.
Класс RuleBasedCollator, который является конкретным подклассом класса Сортировально-подборочной машины, обеспечивает простую, управляемую данными, табличную сортировально-подборочную машину. Используя RuleBasedCollator, программист может создать специализированную основанную на таблице сортировально-подборочную машину. Например, программист может создать сортировально-подборочную машину, которая проигнорирует (или уведомление) прописные буквы, диакритические знаки, и комбинированные символы Unicode.
Класс CollationElementIterator используется в качестве iterator, чтобы идти через каждый символ международной строки. Программисты используют iterator, чтобы возвратить приоритет упорядочивания расположенного символа. Приоритет упорядочивания символа, или ключ, определяет, как символ сопоставляется в данном объекте Сортировально-подборочной машины. Класс CollationElementIterator используется сравниванием () метод класса RuleBasedCollator.
Объект CollationKey представляет строку по правилам определенного объекта Сортировально-подборочной машины. Сравнение двух объектов CollationKey возвращает относительный порядок строк, которые они представляют. Используя объекты CollationKey сравнить строки обычно быстрее чем использование Collator.compare () метод. Таким образом, когда строки должны быть сравнены многократно, например сортируя список строк, более эффективно использовать объекты CollationKey.
Класс BreakIterator косвенно реализует методы для того, чтобы найти позицию следующих типов границ в строке текста:
Соглашения по тому, где повредить строки, предложения, слова, и символы, изменяются от одного языка до другого. Так как класс BreakIterator чувствителен к локали, он может использоваться программами, которые выполняют текстовые операции. Например, рассмотрите программу обработки текста, которая может выделить символ, сократить слово, переместить курсор в следующее предложение, или переход на новую строку при окончании строки. Эта программа обработки текста использовала бы повреждение iterators, чтобы определить логические границы в тексте, позволяя этому выполнить текстовые операции чувствительным к локали способом.
Класс StringCharacterIterator обеспечивает возможность выполнить итерации по строке символов Unicode двунаправленным способом. Этот класс использует курсор, чтобы переместиться в пределах диапазона текста, и может возвратить отдельные символы или их индексные значения. Класс StringCharacterIterator реализует символ iterator функциональность интерфейса CharacterIterator.
Интерфейс CharacterIterator определяет протокол для двунаправленной итерации по символам Unicode. Классы должны реализовать этот интерфейс, если они хотят переместиться в пределах диапазона текста и возвратить отдельные символы Unicode или их индексные значения. CharacterIterator для того, чтобы искать, полезно, выполняя символьные поиски.
Класс Normalizer обеспечивает методы, чтобы преобразовать текст Unicode в эквивалентную составленную или анализируемую форму. Класс поддерживает Формы Нормализации Unicode, определенные стандартом Unicode.
Локаль чувствительные услуги, предоставленные классами в java.text и java.util пакетах, могут быть расширены, реализовывая Локаль Чувствительные SPI Служб для локалей Среда выполнения Java, еще не поддерживала. В дополнение к локализованным символам или именам для Валюты, Локали, и классов TimeZone в java.util пакете, реализации следующих классов в java.text пакете могут быть включены с SPI.
Платформа Java использует Unicode в качестве своей собственной кодировки символов; однако, много программ Java все еще должны обработать текстовые данные в других кодировках. Java поэтому обеспечивает ряд классов, которые преобразовывают много стандартных кодировок символов в и от Unicode. Программы Java, которые должны иметь дело с текстовыми данными не-Unicode, преобразовывают те данные в Unicode, обрабатывают данные как Unicode, затем преобразовывают результат назад во внешнюю кодировку символов. Классы InputStreamReader и OutputStreamWriter обеспечивают методы, которые могут преобразовать между другими кодировками символов и Unicode.
InputStreamReader, OutputStreamWriter, и Строковые классы могут преобразовать между Unicode и набором кодировок символов, перечисленных в веб-странице Поддерживаемые Кодировки.
Платформа Java обеспечивает функции в java.io пакете, чтобы улучшить обработку символьных данных: Классы чтения и Классы для записи, и улучшение к классу PrintStream.
Иерархии Класса чтения и Класса для записи обеспечивают возможность выполнить операции ввода-вывода на символьных потоках. Эти иерархии параллельны иерархиям классов InputStream и OutputStream, но работают на потоках символов, а не потоках байтов. Символьные потоки облегчают писать программы, которые не зависят от определенной кодировки символов, и поэтому легче интернационализировать. У Классов чтения и Классов для записи также есть возможность преобразовать между Unicode и другими кодировками символов. Пожалуйста, сошлитесь на Символьный Потоковый документ для получения дополнительной информации об иерархиях Класса чтения и Класса для записи.
Класс PrintStream производит вывод, используя кодировку символов системы по умолчанию и разделитель строки. Это изменение позволяет методам, таким как System.out.println () действовать более разумно с данными неASCII.
java.nio.charset пакет обеспечивает основы для преобразования кодировки символов. Приложения могут использовать его классы, чтобы подстроить поведение встроенных символьных преобразователей. Разработчики могут также создать пользовательские преобразователи для кодировок символов, которые не поддерживаются встроенными символьными преобразователями, используя java.nio.charset.spi пакет.
Входные методы являются компонентами программного обеспечения, которые позволяют пользователю вводить текст способами кроме простого ввода на клавиатуре. Они обычно используются, чтобы ввести японский, китайский, или корейский - языки, используя тысячи различных символов - на клавиатурах с гораздо меньшим количеством ключей. Однако, платформа Java также поддерживает входные методы для других языков и использования полностью различных входных механизмов, таких как почерк или распознавание речи.
Платформа Java включает использованию собственных входных методов, обеспеченных операционной системой узла, таких как Windows или Солярис, так же как реализация и использование входных методов, записанных в языке программирования Java.
Входные методы термина не обращаются к методам класса языка программирования Java.
Текстовые компоненты Swing обеспечивают интегрированный пользовательский интерфейс для текстового ввода, используя входные методы. В зависимости от локали используется один из двух входных стилей. Со (встроенным) вводом на месте, стиль, используемый для большинства локалей, входные методы вставляют текст непосредственно в текстовый компонент, в то время как текст составляется. С вводом ниже пятна, стиль, используемый для китайских локалей, используется отдельное окно состава, который располагается автоматически, чтобы быть около точки, где текст должен быть вставлен, фиксируясь.
Приложение, используя текстовые компоненты Swing не должно скоординировать взаимодействие между текстовыми компонентами и ввести методы. Однако, это должно вызвать InputContext.endComposition, когда весь текст должен фиксироваться, такой как тогда, когда документ сохраняется или печатается.
Входная платформа метода обеспечивает сотрудничество между компонентами редактирования текста и входными методами во вводе текста. Программисты, которые разрабатывают компоненты редактирования текста или вводят методы, используют эту платформу. Другие разработчики приложений обычно делают только минимальное использование этого. Например, они должны вызвать InputContext.endComposition, когда весь текст должен фиксироваться, такой как тогда, когда документ сохраняется или печатается.
Входная веб-страница Платформы Метода содержит ссылки к документации API и спецификациям.