Какие проблемы мешают Java-приложениям работать на нескольких платформах? - PullRequest
20 голосов
/ 17 января 2009

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

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

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

Ответы [ 8 ]

31 голосов
/ 17 января 2009
  • Не делайте предположений относительно чувствительности файловой системы к регистру (в)
  • Не делайте предположений относительно пути или разделителя каталогов
  • Не делайте предположений об окончании строки
  • Не используйте кодировку платформы по умолчанию, если вы действительно, действительно уверены, что имеете в виду
  • Не запускайте "cmd.exe" и т. Д. (Я знаю, это звучит очевидно - но я видел, что это вызывает проблемы)
14 голосов
/ 17 января 2009

Мало от области пользовательского интерфейса:

  • Неправильный порядок кнопок, таких как OK / Отмена
  • Использование абсолютных макетов
  • Разные клавиши ускорения
  • Разные размеры / рендеринг шрифтов
  • Предполагается наличие определенных ключей (Windows key, Meta key)

(Это не специфично для Java)

9 голосов
/ 17 января 2009

Я могу говорить только из личного опыта. Это то, что я видел:

  1. Потоки по-разному абстрагируются на некоторых архитектурах, поэтому существуют небольшие различия в задержках и, возможно, упорядочении. (Что может привести к некоторым условиям гонки)
  2. Управление состояниями клавиатуры (caps lock, num lock и т. Д.) Не всегда работает должным образом (Linux не позволял мне в это время отключить caps lock на отключенный v1.5)
7 голосов
/ 17 января 2009

Использование классов из пакетов com.sun.*, поставляемых с Sun JDK.

6 голосов
/ 17 января 2009

При условии, что вы можете написать в каталог, содержащий ваши приложения.

4 голосов
/ 17 января 2009

Использование JNI - это то, на что стоит обратить внимание. Предоставление собственной библиотеки для каждой целевой платформы может уменьшить эту проблему.

1 голос
/ 14 мая 2011

С макушки головы ... некоторые из них действительно случались на работе

  • JNI

  • Представлен инструмент разработки символы в форматированной строке литералы, которые работали под Windows но не работал под Linux (это на самом деле произошло)

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

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

1 голос
/ 17 января 2009

Существует много разных JVM, поэтому в зависимости от того, какой клиент установлен на их компьютере, они могут получить немного разные результаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...