|
Ограничения
(Версия
Firmware: 1.02e)
Страничка посвящена
текущим ограничениям ПО
Tini. И хотя это далеко не полный список, надеюсь он
будет интересен всем кто собирается использовать
TINI.
Список основан на фирменном документе “Limitations
of
TINI
Firmware
1.02”, но надеюсь у меня хватит сил и времени перенести сюда все
замеченные ограничения.
► Начнем с загрузчика:
ВНИМАНИЕ !!! При
первом подключении JavaKit к
TINI скорость обмена должна быть установлена на
115200, далее ее можно изменить
-
Multicast Socket поддерживает только 1
локальный интерфейс в текущей группе
·
TINI поддерживает до 24 одновременных соединений
·
TINI не поддерживает фрагментацию/сборку
IP
датаграмм
·
TINI
не
поддерживает
IP
маршрутизацию
·
Пока не
реализована поддержка
java.net.Socket.setSoLinger
·
Я думаю
что вместо перечисления что поддерживается, а что нет , лучше посмотреть
первоисточник -
API_Diffs.txt
·
TINI на данный момент не поддерживает сериализацию
(насколько я понимаю, работы над этим ведутся)
·
Для
printStackTrace()
организована частичная реализация.
Подробнее..
·
Native модули
не могут быть более чем 64 Кб
·
Максимальный размер всех массивов не может превышать 64 Кб
·
TINI
OS
ограничивается максимально 8ю процессами, с 16 «нитками» на процесс. При
этом реально доступно не более 7 процессов, т.к. по умолчанию первым
процессом автоматически становится «сборщик мусора». Ваше приложение
(или
Slush
)всегда будет №2, это полезно помнить при программировании и отладке.
·
Ограничения по длине локальных переменных: Максимальный объем локальных
переменных 64 ячейки. 32х разрядные переменные (int,char,byte
итп) занимают объем в 1 ячейку стека, соответственно 64х разрядные
переменные (long,double)
занимают 2е ячейки.
·
Класс
ограничивается 255ю статическими полями (включая все статические поля «супер
класса») и 255ю
instance
полями (включая все
instance поля «супер класса»)
·
Все
«нитки» живут и работают в текущем приоритете.Thread.setPriority()
не изменяет
runtime
приоритеты для текущей «нитки»
·
Класс
может содержать до 127 методов (включая все методы «супер класса», но не
учитывая
Native
методы). Класс лимитируется 255 «Нативными» методами
·
Метод
ограничен 63-мя локальными переменными
·
ByteToChar ( и CharToByte) по умолчанию поддерживают две кодировки:
UTF8
и
ISO_8859_1,
все остальное нужно делать самим
·
PPP – «Набор по запросу» в данный момент не
поддерживается, не поддерживаются методы
getIdleTimeOut(),
setIdleTimeOut()
·
Стоит
обратить внимание на то, что драйвер
DS2480
работает только с 1м встроенным
UARTом
·
Есть
проблемы при работе с некоторыми
DHCP серверами :
vDHCP,
MagikDHCP,
также существуют проблемы при работе с
Umax
Ugate
3000
ADSL.
·
В
TINI
Java
VM
добавлен
уровень для работы со строковыми константами.
·
Метод
intern()
возвращает не корректный результат
·
Файловая система
TINI поддерживает максимально до 254 файлов на директорию. При превышении
этого ограничения получается
IOException.
Так же к
IOException
приведет попытка создания файла с именем более чем 247 символов.
·
Следует
обратить внимание на процесс записи и модификации файлов. В случае если
во время модификации файла будет снято питание или произойдет «системная
перезагрузка» то значение времени будет соответствовать не реальному, а
тому, что было перед началом модификации.
·
В том
случае если файл датирован ранее чем 1м Января 1970 года, то объекты
Calendar и
Date
будут возвращать неверные значения (хе-хе мой день рождения не попадает
под эти ограничения, можно заставить
TINI поздравлять меня
J).
·
Метод
Date.toLocaleString()
возвращает то же самое значение что и
Date.toString(). Объясняется это тем, что
TINI
не поддерживает классы форматирования даты.
·
Не
стоить открывать на чтение/запись (имеется ввиду
RandomAccessFile)
уже исполненный файл, это вызывает
IOException.
·
Методы
Double.toString()
и
Double.valueOf(String)
возвращают неправильные значения. В описание указано что «что настолько
точны насколько это возможно для
API и общего быстродействия». Например:
o
System.out.println(3.05f);
возвратит
значение
"3.0499999".
Имейте ввиду что это происходит только при преобразовании
String
à “Float
Point”
или обратном преобразовании “Float
Pointӈ
String
·
Статическая инициализация для всех классов будет выполнена, даже в том
случае если не было прямой ссылки на сами классы.
(C)2002-2003 AK
|