Подтвердить что ты не робот

Какие проблемы не позволяют приложениям Java работать на нескольких платформах?

Предполагается, что Java "пишет один раз, запускается где угодно", и это действительно может быть, но в некоторых случаях он превращается в "писать один раз, отлаживать всюду".

Каковы наиболее распространенные причины проблем при перемещении приложения Java с одной платформы на другую?

Каковы неочевидные, но интересные причины?

4b9b3361

Ответ 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 (это фактически произошло)

  • Несоответствия файловой системы (плотное соединение приложения с одной средой)

  • Базовое оборудование, такое как доступная память или ядра, может привести к изменению поведения