Какие проблемы не позволяют приложениям Java работать на нескольких платформах?
Предполагается, что Java "пишет один раз, запускается где угодно", и это действительно может быть, но в некоторых случаях он превращается в "писать один раз, отлаживать всюду".
Каковы наиболее распространенные причины проблем при перемещении приложения Java с одной платформы на другую?
Каковы неочевидные, но интересные причины?
Ответы
Ответ 1
- Не делайте предположений о чувствительности файловой системы (в)
- Не делайте предположений о разделителе пути или каталога
- Не делайте предположений о терминаторе линии
- Не используйте кодировку платформы по умолчанию, если вы действительно не уверены, что вы имеете в виду
- Не запускайте "cmd.exe" и т.д. (я знаю, это звучит очевидно - но я видел, что это вызывает проблемы).
Ответ 2
Немногие из области пользовательского интерфейса:
- Неправильный порядок кнопок, таких как OK/Отмена
- Использование абсолютных макетов
- Различные клавиши ускорителя
- Различные размеры/рендеринг шрифтов
- Предоставление определенных ключей для присутствия (ключ Windows, мета-ключ)
(Это не специфично для Java)
Ответ 3
Я могу говорить только из личного опыта. Это вещи, которые я видел:
- Threading абстрагируется по-разному на некоторых архитектурах, поэтому есть небольшие различия в задержках и, возможно, упорядочивании. (Что может привести к некоторым условиям гонки).
- Управление статусами клавиатуры (блокировка замков, блокировка номера и т.д.) не всегда работает должным образом (Linux не позволял мне менять блокировку блокировок на отключенный v1.5 в то время)
Ответ 4
Использование классов из пакетов com.sun.*
, которые поставляются с Sun JDK.
Ответ 5
Предполагая, что вы можете писать в каталог, содержащий ваши приложения.
Ответ 6
Использование JNI - это то, что нужно изучить. Предоставление собственной библиотеки для каждой целевой платформы может уменьшить эту проблему.
Ответ 7
Существует много разных JVM, поэтому в зависимости от того, какой клиент установил на своем поле, они могут получить несколько разные результаты.
Ответ 8
Сверху моей головы... некоторые из них на самом деле произошли на работе
-
JNI
-
Разработан инструмент разработки
символов в форматированную строку
литералы, работающие под Windows
но не работает под Linux (это
фактически произошло)
-
Несоответствия файловой системы (плотное соединение приложения с одной средой)
-
Базовое оборудование, такое как доступная память или ядра, может привести к изменению поведения