- PVSM.RU - https://www.pvsm.ru -
С началом работы над Java 9 было анонсировано удаление критически важных классов из пакетов sun.* (понятное дело Sun, а в последствии и Oracle заявляли, что их использование является собственным риском компаний и проектов), что вызвало шквал критики и недовольства со стороны сообщества (ибо highload решения для которых производительность это все, используют скрытые возможности sun.*). Предыстория началась 15 лет назад с выходом версии языка 1.4, за это время большое количество библиотек, фреймворков, приложений успели внедрить закрытый код в свой.
Вот только не полный перечень проектов, которые у всех на слуху: Scala, Kafka, Akka, Hadoop, Cassandra, Hazlecast и прочие…
Вроде бы новости без году неделя, однако постоянно приходится сталкиваться c тем, что люди не в курсе, и ожидают диких проблем с новым API в java 9 (может быть конечно и не без этого, однако...)
Как ни странно, разработчики как из open jdk, так и из Oracle пошли на встречу сообществу и был принят документ JEP 260 [1], если в двух словах: то решено оставить некоторые критически важные и широко используемые внутренние API, для которых пока не существует замены, однако это не означает, что будет гарантироваться их совместимость.
Таким образом решено оставить следующее API:
sun.misc.Signal
sun.misc.SignalHandler
обеспечивает поддержку работы с сигналами (фактически IRC), может сообщить асинхронное событие вне JVM.
sun.misc.Unsafe
используется для работы непосредственно с памятью (обещают, что частично можно будет воспользоваться API из JEP 193: Variable Handles [2], также поговаривают что часть операций будет более эффективными).
sun.reflect.Reflection::getCallerClass(int)
говорит нам, какие классы находятся в стеке вызов (с выходом java 9, частично возможен переход на JEP 259: Stack-Walking API [3])
sun.reflect.ReflectionFactory.newConstructorForSerialization
фактически master фабрика для создания объектов reflection
Не критическое API, которому уже существует замена, будет помечен как @Deprecated, уже начиная с Java 9, а начиная с Java 10 выводится из языка.
Уже сейчас доступна JDK9 Early Access на 24.02.2017 последний билд b158 (jdk9.java.net/download [4], jdk9.java.net/jigsaw [5]) и если заглянуть внутрь, то можно обнаружить все выше перечисленные классы в модуле jdk.unsupported, также вместе с ними найдены:
com.sun.nio.file.ExtendedCopyOption
com.sun.nio.file.ExtendedOpenOption
com.sun.nio.file.ExtendedWatchEventModifier
com.sun.nio.file.SensitivityWatchEventModifier
обеспечивающие дополнительные возможности при работе с i/o-операциями.
Производители прислушались к сообществу, и в результате переход с пакетов sun.* обещает быть плавным и не критичным, а в случае проблем, можно спокойно спать и с 8 версией, буду рад ответить на вопросы (b.lutovich@socmetr.ru).
Автор: blutovi
Источник [6]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/java/246839
Ссылки в тексте:
[1] JEP 260: http://openjdk.java.net/jeps/260
[2] JEP 193: Variable Handles: http://openjdk.java.net/jeps/193
[3] JEP 259: Stack-Walking API: http://openjdk.java.net/jeps/259
[4] jdk9.java.net/download: https://jdk9.java.net/download/
[5] jdk9.java.net/jigsaw: https://jdk9.java.net/jigsaw/
[6] Источник: https://habrahabr.ru/post/322840/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best
Нажмите здесь для печати.