Нет Голосования За Систему Модулей Java Project Jigsaw


Java 9 имеет шанс быть выпущенной без своей самой большой функции, модулей, из-за голосования Исполнительного комитета JCP. Интересно, что восстание в основном возглавляли две компании, у которых есть альтернативные модульные системы.

Проект Jigsaw, связанный с созданием модульной Java, первоначально планировался как часть Java 7, но был перенесен на Java 8 вместе с Project Coin и Project Lambda вскоре после того, как Oracle взяла под свой контроль Java в 2010 году. Затем в 2012 году мы сообщили в Jigsaw, Отложенном до Java 9:

Oracle сбрасывает Jigsaw с Java 8, чтобы соответствовать запланированной дате выпуска в сентябре 2013 года.

Как мы теперь знаем, для выпуска Java 8 потребовалось до марта 2014 года, а дата выпуска Java 9 уже дважды откладывалась — с сентября 2016 года по март 2017 года и в настоящее время июль 2017 года. Теперь включение проекта Jigsaw в JDK 9 было отклонено 13 голосами против 10, и это, вероятно, вызовет, по крайней мере, задержку до тех пор, пока все не будет улажено. 

Это интересный беспорядок, в котором, похоже, замешаны как политика, так и технологии. В открытом письме Марк Рейнхольд раскритиковал Red Hat и IBM за то, что они не стоят за проектом:

Промежуточное программное обеспечение Red Hat первоначально согласилось с целями и требованиями JSR, но затем последовательно работало над их подрывом. Они попытались превратить этот JSR во что-то другое, чем он должен был быть. Вместо того, чтобы проектировать одну модульную систему, которая является одновременно доступной и масштабируемой, они вместо этого хотели разработать “мета” модульную систему, с помощью которой несколько различных модульных систем могли бы взаимодействовать на интимной основе. Я могу только предположить, что они преследовали эту альтернативную цель, чтобы сохранить и защитить свою домашнюю, нестандартную модульную систему, которая мало используется за пределами экосистемы JBoss/Wildfly.

JBoss имеет свою собственную модульную систему, а IBM является активным сторонником OSGi:

IBM очень мало сказала в ходе этого JSR. После того, как они объявили, что будут голосовать против, они позже отправили список конкретных вопросов в EG, но только в ответ на запрос другого члена EG. Ни один из этих вопросов не является новым, многие из них обсуждались давно, и IBM молчала во время большинства дискуссий.

Недавняя позиция IBM, по-видимому, коренится в смутном стремлении к “более тесному консенсусу” среди членов EG. Я бы тоже предпочел больше консенсуса, но это невозможно, учитывая позицию Red Hat Middleware. Я могу только заключить, что IBM решила, что их интересам лучше всего послужит отсрочка этого JSR, а также JSR 379 (Java SE 9), что вызывает сожаление.

И RedHat, и IBM проголосовали против этого предложения, как и Eclipse, еще один тяжелый пользователь OSGi. Однако дело не столько в существовании кабалы OSGi или JBoss, сколько в том, что именно эти голоса критиковали это предложение. В зависимости от того, кого вы спрашиваете, критика вызывает беспокойство или просто не попадает в цель.

Похоже, что происходит то, что Jigsaw неблагоприятно сравнивается с существующими модульными системами. Например, открытое письмо RedHat начинается с:

Реализация Jigsaw-это новая модульная система, которая успешно работает для модуляции самой Java, но в значительной степени не опробована в более широких производственных развертываниях любых реальных приложений поверх JVM.  Многие варианты использования развертывания приложений, которые широко реализуются сегодня, невозможны в рамках Jigsaw или потребуют значительного изменения архитектуры.

Ни JBoss, ни OSGi не встретили какой-либо широкой поддержки в том смысле, что ни одна из них не является системой модулей defacto для Java. OSGi, более популярный, имеет репутацию плотного и непостижимого и настолько гибкого, что он слишком сложен.  

Вместо того, чтобы быть всеобъемлющим, цель Jigsaw состоит в том, чтобы быть доступным среднему программисту Java, а не только специалисту. Он также предназначен для использования самим JDK, что делает Java модульной изнутри. 

Не имеет значения, насколько сильно это отрицается, запах эгоизма витает вокруг голосования. Рейнхольд пишет в своем письме:

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

Голосование против этого JSR из-за отсутствия консенсуса в EG-это голосование против самого процесса сообщества Java. Этот процесс не требует консенсуса, и на то есть веские причины. Он намеренно предоставляет руководителям широкие полномочия по принятию решений именно для того, чтобы члены EG не препятствовали прогрессу в целях защиты своих собственных узких интересов. Если вы отнимете у себя эту власть, то обрекаете будущих JSR на консенсус корыстных “экспертов».”

К сожалению, большинство высказалось, и у нас есть еще один пример демократического процесса, дающего результаты, которые многим наблюдателям трудно принять. 

Jigsaw был вытеснен с Java 8 на Java 9 из-за трудностей его реализации, но, вероятно, нет особого смысла удалять его из Java 9, так как без него выпуск больше похож на обновление с десятичной запятой.


Добавить комментарий