|
|
|
Что можно писать внутри module-info.java ?
|
|||
|---|---|---|---|
|
#18+
Речь, как многие догадались, про java 9: я нашёл примерно такой список - не уверен, что он полный. requires модулю чтобы скомпилиться и запуститься нужен какой-то другой модуль transitive - ? exports - высовываем наружу какие-то пакеты нашего модуля opens to - нашёл только пример с exports to. Высовываем наружу но только для кого-то uses - ? provides - ? and - ? with - ? Просьба знаки вопросы позаменять на описание, а также дополнения и исправления привествуются ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 17:05 |
|
||
|
Что можно писать внутри module-info.java ?
|
|||
|---|---|---|---|
|
#18+
Так это. В JLS же всё написано. opens, это как exports, только без доступа в compile time. Только в runtime. uses и provides with относятся к SPI transitive значит что зависимость транзитивная, то есть, если какой-то модуль requires другой модуль, то он так же неявно requires указанные в нём transitive зависимости. Не получается доходчиво сформулировать. Но вроде из термина должно быть очевидно. Есть ещё static - модуль нужен при компиляции, но опционален в рантайме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 17:21 |
|
||
|
Что можно писать внутри module-info.java ?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 17:24 |
|
||
|
Что можно писать внутри module-info.java ?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Да, я видел JLS но он не человека читаемый Blazkowiczopens, это как exports, только без доступа в compile time. Только в runtime. А зачем такое может быть надо? пример? BlazkowiczЕсть ещё static - модуль нужен при компиляции, но опционален в рантайме. А зачем такое может быть надо? пример? Blazkowiczuses и provides with относятся к SPI Подобные отрывки я читал. Но что это значит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 17:43 |
|
||
|
Что можно писать внутри module-info.java ?
|
|||
|---|---|---|---|
|
#18+
questionerно он не человека читаемый Да, ладно. Только JMM за гранью. А остальное всё просто. questionerBlazkowiczopens, это как exports, только без доступа в compile time. Только в runtime. А зачем такое может быть надо? пример? Ну, это же просто. Есть публичный API, а есть реализация. Публичный API ты используешь в своём коде. А его реализацию, ты не должен трогать. При этом в рантайме без реализации работать же не будет. questionerBlazkowiczЕсть ещё static - модуль нужен при компиляции, но опционален в рантайме. А зачем такое может быть надо? пример? Чтобы не тянуть лишние зависимости в рантайм. Например библиотека какая-нибудь. Для её сборки нужна куча других либ. Но если ты будешь использовать только какую-то ограниченную функциональность тебе не надо все эти либы тянуть. Возможно для позднего связывания что Jigsaw не валидировало наличие в рантайме. Вот с мавеном, например, часто бывает. Подключил зависимость, и оно ещё кучу всякого барахла притащило. А оно тебе и не надо было в проекте совсеи. questionerПодобные отрывки я читал. Но что это значит? Что значит SPI или что? Вы снова опять не можете себя пересилить и задать полноценный вопрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 18:07 |
|
||
|
Что можно писать внутри module-info.java ?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Надо наверное прочитать про SPI сначала ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 19:10 |
|
||
|
Что можно писать внутри module-info.java ?
|
|||
|---|---|---|---|
|
#18+
questionerНадо наверное прочитать про SPI сначала Или хотя бы спросить про SPI, а не писать херню типа "все так говорят". Если читал уже про SPI, то почему бы про него и не спросить? Это ж банальная фигня типа JDBC драйвера. Есть интерфейс. Есть подключаемые реализации. В jar-нике объявление какие сервервисы он реализует. SPI сканирует и находит динамически подключеные реализации в classpath. То есть если раньше объявляения реализаций были а META-INF, то теперь они ещё и на уровне модуля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 20:22 |
|
||
|
Что можно писать внутри module-info.java ?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, В соседней теме обсудили SPI Blazkowiczuses и provides with относятся к SPI BlazkowiczТо есть если раньше объявляния реализаций были а META-INF, то теперь они ещё и на уровне модуля. джарник теперь не нужен? вот допустим написано у модуля авторprovides TypeName with TypeName {, TypeName} ; Модуль предоставляет класс TypeName наружу авторwith TypeName {, TypeName} что этот кусок значит? я так понимаю писать Код: java 1. почему через запятую можно писать после with? в другом модуле я пишу Код: java 1. Код: java 1. и эта запись выдаст мне все доступные имплементации объявленные через provides ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2017, 17:58 |
|
||
|
Что можно писать внутри module-info.java ?
|
|||
|---|---|---|---|
|
#18+
questionerджарник теперь не нужен? Чой-то? questionerавторprovides TypeName with TypeName {, TypeName} ; Модуль предоставляет класс TypeName наружу там везде typename :) который из трех? В общем ты не правильно понял. Это значит ровно то что написано. Модуль предоставляет реализацию сервиса таким-то классом. Точно так же как META-INF/services/com.pck.Service/com.pck.ServiceImpl questionerавторwith TypeName {, TypeName} что этот кусок значит? Почему ты JLS не смотришь, мне не понятно. Там же даже примеры есть. questioner почему через запятую можно писать после with? Несколько реализаций? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2017, 18:37 |
|
||
|
Что можно писать внутри module-info.java ?
|
|||
|---|---|---|---|
|
#18+
Blazkowiczquestionerджарник теперь не нужен? Чой-то? questionerпропущено... Модуль предоставляет класс TypeName наружу там везде typename :) который из трех? В общем ты не правильно понял. Это значит ровно то что написано. Модуль предоставляет реализацию сервиса таким-то классом. Точно так же как META-INF/services/com.pck.Service/com.pck.ServiceImpl questionerпропущено... что этот кусок значит? Почему ты JLS не смотришь, мне не понятно. Там же даже примеры есть. questioner почему через запятую можно писать после with? Несколько реализаций? === BlazkowiczЧой-то? А без джарника это не будет работать?только чисто на модулях. Blazkowiczтам везде typename :) который из трех? Логичным кажется, что наружу показывается интерфейс(родительский класс) который автор provides TypeName with TypeName {, TypeName} ; первый в списке авторНесколько реализаций? Мы ж делаем Код: java 1. Если реализаций много, то кто загрузится? BlazkowiczПочему ты JLS не смотришь, мне не понятно. Там же даже примеры есть. Вот откуда до куда там читать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2017, 11:25 |
|
||
|
Что можно писать внутри module-info.java ?
|
|||
|---|---|---|---|
|
#18+
questioner, http://openjdk.java.net/projects/jigsaw/quick-start For transportation and deployment purposes then it is usually more convenient to package a module as a modular JAR. A modular JAR is a regular JAR file that has a module-info.class in its top-level directory. https://docs.oracle.com/javase/specs/jls/se9/html/jls-7.html#jls-7.7.4 The provides directive specifies a service for which the with clause specifies one or more service providers to java.util.ServiceLoader. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2017, 18:20 |
|
||
|
Что можно писать внутри module-info.java ?
|
|||
|---|---|---|---|
|
#18+
Blazkowiczquestioner, http://openjdk.java.net/projects/jigsaw/quick-start For transportation and deployment purposes then it is usually more convenient to package a module as a modular JAR. A modular JAR is a regular JAR file that has a module-info.class in its top-level directory. Удобно но всё же не обязательно ? https://docs.oracle.com/javase/specs/jls/se9/html/jls-7.html#jls-7.7.4 The provides directive specifies a service for which the with clause specifies one or more service providers to java.util.ServiceLoader. ну я получу эти имплементации через итератор в этом случае? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2017, 19:06 |
|
||
|
Что можно писать внутри module-info.java ?
|
|||
|---|---|---|---|
|
#18+
questioner, замена: авторMETA-INF/services/com.pck.Service/com.pck.ServiceImpl это provide в том модуле где этот сервис есть + uses в том, котором пользуем? в том котором пользуем также пишем ServiceLoader.load(Parent.class)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2017, 19:09 |
|
||
|
Что можно писать внутри module-info.java ?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz , Blazkowicz Ну, это же просто. Есть публичный API, а есть реализация. Публичный API ты используешь в своём коде. А его реализацию, ты не должен трогать. При этом в рантайме без реализации работать же не будет. а можете накидать двустрочный пример где скомпилируется без реализации, но в рантайме Blazkowicz работать не будет не уверен, что правильно Понимаю Вашу мысль ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2017, 17:58 |
|
||
|
Что можно писать внутри module-info.java ?
|
|||
|---|---|---|---|
|
#18+
questionerBlazkowicz Ну, это же просто. Есть публичный API, а есть реализация. Публичный API ты используешь в своём коде. А его реализацию, ты не должен трогать. При этом в рантайме без реализации работать же не будет. а можете накидать двустрочный пример где скомпилируется без реализации, но в рантайме Blazkowicz работать не будет не уверен, что правильно Понимаю Вашу мысль Одной строчки достаточно. Код: java 1. Нужен ли MySQL JDBC Connector чтобы этот код скомпилировать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2017, 18:27 |
|
||
|
Что можно писать внутри module-info.java ?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, авторОдной строчки достаточно. Код: java 1. Нужен ли MySQL JDBC Connector чтобы этот код скомпилировать? Ловко. А если без SPI? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2017, 19:16 |
|
||
|
Что можно писать внутри module-info.java ?
|
|||
|---|---|---|---|
|
#18+
questionerЛовко. А если без SPI? Да, ну ты прикалываешься? Любая зависимость второго уровня. Они не нужны тебя для компиляции, потому что твой код использует только зависимости первого уровня. А они уже скомпилированы. Но при этом зависимости любого уровня тебе нужны в рантайме, иначе зависимости первого уровня упадут с NoClassDefFoundError. Тут, кстати, любопытное отличие в том что NoClassDefFoundError это Error. А SPI и прочие ленивые зависимости тебе дадут Exception. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2017, 19:31 |
|
||
|
Что можно писать внутри module-info.java ?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczquestionerЛовко. А если без SPI? Да, ну ты прикалываешься? Любая зависимость второго уровня. Они не нужны тебя для компиляции, потому что твой код использует только зависимости первого уровня. А они уже скомпилированы. Но при этом зависимости любого уровня тебе нужны в рантайме, иначе зависимости первого уровня упадут с NoClassDefFoundError. Тут, кстати, любопытное отличие в том что NoClassDefFoundError это Error. А SPI и прочие ленивые зависимости тебе дадут Exception. Да нет, не прикалываюсь. А какие зависимости второго уровня бывают ещё? SPI. reflection судя по всему что ещё? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2017, 18:03 |
|
||
|
Что можно писать внутри module-info.java ?
|
|||
|---|---|---|---|
|
#18+
questionerДа нет, не прикалываюсь. OMFG. Вот есть проект. Он использует Apache Commons HTTP Client. Для того чтобы скомпилировать этот проект, нужен только commons-httpclient. Больше ничего. Это зависимость первого уровня. Для того чтобы проект запустить, нужны ещё commons-logging и commons-codec. Это зависимости второго уровня. Они не нужны для компиляции проекта. Но нужны для его работы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2017, 18:11 |
|
||
|
Что можно писать внутри module-info.java ?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczquestionerДа нет, не прикалываюсь. OMFG. Вот есть проект. Он использует Apache Commons HTTP Client. Для того чтобы скомпилировать этот проект, нужен только commons-httpclient. Больше ничего. Это зависимость первого уровня. Для того чтобы проект запустить, нужны ещё commons-logging и commons-codec. Это зависимости второго уровня. Они не нужны для компиляции проекта. Но нужны для его работы. а какие там внутри механизмы делают эти 2 зависимости зависимостями второго уровня? что такое зависимость второго уровня мне понятно -BlazkowiczОни не нужны для компиляции проекта. Но нужны для его работы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2017, 18:18 |
|
||
|
Что можно писать внутри module-info.java ?
|
|||
|---|---|---|---|
|
#18+
questionerа какие там внутри механизмы делают эти 2 зависимости зависимостями второго уровня?Вы используете (чей-то) интерфейс и, соответственно, классы используемого - требуется для компиляции. У используемого есть реализация, которая, в свою очередь имеет право на внешние зависимости. Детали реализации важны для исполнения, но "невидимы" при компиляции. P.S. Историю средних веков прогуливали? "Вассал моего вассала - не мой вассал". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2017, 07:20 |
|
||
|
Что можно писать внутри module-info.java ?
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, Это ж общие слова. Можете пример показать отличный от SPI и reflection? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2017, 13:01 |
|
||
|
Что можно писать внутри module-info.java ?
|
|||
|---|---|---|---|
|
#18+
Любая библиотека с *-api.jar и *-impl.jar. Это если лень простенький пример с тремя классами набросать и откомпилировать/запустить. Технически, с помощью javap и какой-то матери можно создать классы-заглушки (с пустыми телами методов) и успешно использовать эти пустышки для компиляции проекта. P.S. Могу и обратный пример: для компиляции, например, log4j или tomcat требуется больше, чем для работы в типичной/умалчиваемой конфигурации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2017, 13:18 |
|
||
|
Что можно писать внутри module-info.java ?
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovЛюбая библиотека с *-api.jar и *-impl.jar. Это если лень простенький пример с тремя классами набросать и откомпилировать/запустить. Технически, с помощью javap и какой-то матери можно создать классы-заглушки (с пустыми телами методов) и успешно использовать эти пустышки для компиляции проекта. P.S. Могу и обратный пример: для компиляции, например, log4j или tomcat требуется больше, чем для работы в типичной/умалчиваемой конфигурации. Вот именно, что хочется пример с тремя классами сделать, только не знаю как. Но только не SPI и не рефлексия ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2017, 10:41 |
|
||
|
Что можно писать внутри module-info.java ?
|
|||
|---|---|---|---|
|
#18+
questionerВот именно, что хочется пример с тремя классами сделать, только не знаю как. Пишешь класс A. Компилируешь. Пишешь класс B, который использует A. Компилируешь. Удаляешь класс А. Пишешь класс С, который использует только B. Компилируешь. Ошибки компиляции нет. Запускаешь класс С - получаешь NoClassDefFoundError. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2017, 10:44 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39538400&tid=2122483]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
79ms |
get tp. blocked users: |
1ms |
| others: | 215ms |
| total: | 368ms |

| 0 / 0 |
