поддръжка на кирилица за Java 2 под GNU/Linux
версия 0.6 от 11 февруари 2002 г.
Модулът cyrcho-0.6.jar
е проектиран като стандартно разширение
на Java Runtime Environment (JRE). Копирайте го в директорията
<JAVA-ROOT>/jre/lib/ext
, където
<JAVA-ROOT>
е директорията, където е инсталирана
Java. По-опитните потребители биха предпочели да направят символна връзка,
вместо да копират файла, но това е въпрос на лично предпочитание.
От тук нататък вече можете да стартирате java
със следния
скрипт:
#!/bin/bash export LANG=C <JAVA-ROOT>/bin/java $@
Можете да кръстите този скрипт java
и да го разположите на
подходящо място, така че да се изпълнява по подразбиране когато стартирвате
Java приложения. Точното местоположение на скрипта зависи от конкретната
дистрибуция на GNU/Linux, която използвате.
Остава само да изберете клавишната комбинация, с която ще превключвате
между стандартната клавиатура и кирилицата. Това става чрез контролния панел
на Кирчо, който се появява след като изпълните
cyrcho-0.6.jar
:
java -jar cyrcho-0.6.jar
Предпочитаната клавишна комбинация се пази по отделно за всеки потребител, така че върху една система всеки може да посочи собствените си предпочитания, без да пречи на останалите.
Проблемите по кирилизацията на Java 2 под GNU/Linux могат да бъдат разделени на две:
Както забелязвате от скрипта, текущата локализация на системата се изключва
за обкръжението на Java. Това е необходимо, защото ако имате правилно
локализирана GNU/Linux система, Виртуалната машина на Java изобщо няма да се
стартира. В този случай командата java
връща подобно съобщение за
грешка:
Error occurred during initialization of VM java.lang.NullPointerException
Най-вероятно това става защото в локализираната система по подразбиране се
използва кодиране CP1251, което не се поддържа от новата система за вход/изход
(java.nio
) на Java 2 версия 1.4. Затова Кирчо предлага поддръжка
на CP1251 за java.nio
. В beta 3 на Java 2 версия 1.4 възможността
за добавяне на външни кодери беше временно изключена. При изданието RC тя
отното е включена, и вече правилно да разпознава и използва кодирането CP1251,
което доставя Кирчо. Това обаче не оправя проблема със забиването при
стартиране на Java, затова смяната на локала все още е наложителна. Нищо не ни
остава освен да се надяваме, че в официалното издание на Java 1.4 такава смяна
няма да е необходима. Наистина е абсурдно Виртуалната машина да забива върху
една нормално локализирана система, но тъй като изходният код на Java не е
свободен, не можем да оправим проблема сами и трябва да чакаме височайше
благоволение от Sun да се сети за малка България. :-(
Имайте предвид, че кодерът за CP1251 на Кирчо не е тестван в реални условия, така че евентуално ще изплуват някои грешки. Така че ако имате проблеми или предложения относно Кирчо, пишете в JUG-BG.
Откакто XFree86 4.x и Java 2 се разпространиха из системите GNU/Linux, няма никакъв шанс едно Java приложение да получи вход на кирилица. Опитът да се въведе кирилица в обикновено текстово поле на Swing (JTextField) води до появата на странни клянги. В прозореца отляво е показан резултатът от опита да се въведе "Кирчо" в текстово поле. В по-голямата си част са изобразени еврейски и арабски символи, от което можем да съдим, че Java получава Уникод от XFree86, но кирилицата, която въвеждаме, преминава през някакво станно преобразувание преди да стигне до приложението. Не мога да кажа дали XFree86 грешно говори на Java, или самата Java грешно разбира XFree86, но резултатът е плачевен. Абсурдът е, че Java разполага с правилните шрифтове да изобрази кирилицата, но просто не се разбира с XFree86. Според официалната документация на Sun, такава поддръжка засега не се предвижда.
Тъй като спасението е в ръцете на давещия се, главната цел на Кирчо е да предложи такава поддръжка. От Java 2 версия 1.3 нататък Sun предлагат стандартен API за въвеждане на символи от чужди (сиреч не-английски) езици -- това са т.нар. Input Methods. Кирчо използва този API и застава между XFree86 и Вашето Swing-приложение. Той динамично прекодира тези Уникод-символи, за които подозира че би трябвало всъщност да бъдат интерпретирани като кирилица. Така Swing-приложението получава редовна Уникод кирилица и я визуализира спокойно. За да активирате тази намеса на Кирчо, трябва да изберете "Cyrillic" от менюто "Select Input Methods":
Първата версия на Кирчо (0.5) изискваше промяна в изходния код на приложението, от което желаете да въвеждате кирилица. От версия 0.6 такава промяна не е необходима.
Кирчо се разпространява при условията на GNU Lesser General Public License (GNU LGPL). Това означава, че можете без притеснения да го използвате за както за свободни, така и за несвободни (затворени) приложения. Не е необходимо да отваряте изходния код на Вашето приложение, което използва Кирчо. Но ако правите промени по самия Кирчо, тези промени се поставят под силата на GNU LGPL, така че се задължавате да ги споделите с общността.
Можете да свалите Кирчо по два начина:
Срещате ли проблеми? Пишете до JUG-BG за да ги разгледаме заедно.
11 февруари 2002 г. |