2010-05-07 2 views
5

Я имею в виду, могу ли я использовать классы com.sun.org.apache (все подпакеты), поскольку я использую их из org.apache (в любой Apache lib)?Является ли com.sun.org.apache таким же, как у пакета org.apache?

Будет ли OpenJDK поддерживать этот пакет в актуальном состоянии с обновлениями apache?

И JDK7 сохранит этот пакет?

Где я могу найти информацию об этом?

ответ

6

Это очень плохая идея использовать его. Когда-то Солнце взяло копию Xerces, переполненную ошибками. Они внесли некоторые изменения. Возможно, они вычитали ошибки. Мы знаем, что есть много очень серьезных ошибок, которые они не вычлили.

И они переименовали его в com.sun .... по одной причине: , чтобы сообщить вам не использовать его. В любой момент, в любом выпуске точки, в любом патче они могут сменить эти классы несовместимо или удалить их.

Кроме того, эти классы могут не находиться в копии IBM JRE, или Apple, или (ха-ха) Microsoft, или JRocket.

Если вы хотите использовать Xerces, используйте Xerces. Чтобы найти информацию об этом, прочитайте архив списка рассылки Xerces-j для многих серьезных предупреждений разработчиков Xerces о версии, раздвоенной Sun.

Тот факт, что классы являются формально «общедоступными», означает ничего, кроме того, что Солнцу необходимо было иметь new из другого пакета.

1

Err Я бы не хотел, основываясь только на том, что они являются внутренними классами и существует риск их изменения со временем. Вместо этого используйте классы org.apache.

Никакая идея о намерениях держать их в курсе, может попытаться разместить сообщение на OpenJDK форуме:

http://mail.openjdk.java.net/mailman/listinfo

0

Если документация для этого пакета говорит, что он является открытым, то это нормально использовать.

В противном случае они могут объединить пол под вами, когда они решают не поддерживать его в будущем.

Обычно вы не должны полагаться на что-либо кроме java и javax в JDK.

+2

или org.w3c ... не забывайте об этом. – bmargulies

1

Я понимаю, что это вилка кода apache. В какой-то момент они были такими же, но не более. Таким образом, вы не можете рассчитывать на те же исправления ошибок, присутствующие в обеих версиях.