Отличия реализаций от IBM и Oracle от Java BigDecimal в Java 8? - PullRequest
0 голосов
/ 26 сентября 2018

Кто-нибудь может мне объяснить отличия реализаций от IBM и Oracle java BigDecimal от java 8?

Я знаю, что реализация BigDecimal в IBM (com.ibm.math.BigDecimal) устарела, и яЯ хочу перейти к реализации Oracle (java.math.BigDecimal), но мне хотелось бы знать основные различия между двумя версиями (начиная с версии java 8).

Спасибо.

1 Ответ

0 голосов
/ 26 сентября 2018

IBM пожертвовал свой код для Java 5.

Реализация BigDecimal в OpenJDK является продолжением и развитием этой оригинальной реализации IBM.Обратите внимание на уведомление об авторских правах IBM в исходном коде OpenJDK .Возможно, история изменений в этом файле может вас заинтересовать.

Со времени их пожертвования я знаю, что были сделаны некоторые серьезные улучшения, хотя я не могу вспомнить детали.На конференциях JavaOne обсуждались эти улучшения, исправления ошибок и математические проблемы.

Мигрировать очень просто:

  • Измените import операторы.
  • Знайте, что любые сериализованные объекты не могут быть прочитаны между двумя реализациями (будучи идентифицированными как происходящие из двух разных классов).

Цитируя IBM:

Расширенный BigDecimal

Начиная с Java ™ 5.0, класс IBM® BigDecimal был принят Oracle как java.math.BigDecimal.Класс com.ibm.math.BigDecimal зарезервирован для возможного будущего использования IBM и в настоящее время устарел.Перенесите существующий код Java для использования java.math.BigDecimal.

В новом java.math.BigDecimal используются те же методы, что и в предыдущем java.math.BigDecimal и com.ibm.math.BigDecimal.Существующий код, использующий java.math.BigDecimal, продолжает работать правильно.Два класса не сериализуются.

Чтобы перенести существующий код Java для использования класса java.math.BigDecimal, измените оператор импорта в начале вашего файла .java с: import com.ibm.math. ;импортировать java.math. ;.

...