问题标签 [java-platform-module-system]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 当每个人都对 OSGi 进行标准化时,为什么 Sun 还要发明另一个模块系统?
Sun 在以Jigsaw的形式模块化 JDK 方面付出了很多努力,并暗示它也应该是其他 Java 开发人员选择的模块格式。使用它的唯一值得注意的参与者是 NetBeans(和衍生应用程序)。
另一方面,业界围绕 OSGi 进行了标准化,所有主要的应用程序供应商都将其运行时基于模块平台,甚至 Sun 自己的 Glassfish。甚至还有一个 NetBeans 端口可以使用 OSGi 作为模块系统,而不是 NetBeans 自己的模块。甚至 Maven 也在努力成为一个 OSGi 运行时。
仅仅是 NIH、许可还是其他原因?
swing - Java 8 能否发布 Swing 的另一个版本?
考虑到 Java 8 的 Jigsaw 项目(以模块化 JDK),是否可以考虑“新”的 Swing框架?
考虑意味着:
- 有人真正重写它
- 将其包含在 JDK 版本中
我在想,由于可以将模块包含在 JDK 中,因此可以创建一个新的 Swing 框架并将其交付给新的应用程序开发人员使用,而对于遗留应用程序,将包含当前的 Swing 框架。
重写一个新的 Swing 并将其包含到新的 JDK 中是 Java 8 的一个选项吗?(您对这项任务有什么看法和考虑?)
java - OSGi、Java 模块化和拼图
因此,截至昨天早上,我对 OSGi 甚至是什么一无所知。OSGi只是我不断看到的一个流行词,所以我终于抽出一些时间来复习它。
它实际上看起来很酷,所以我想首先声明(记录在案)我在任何方面都不是反 OSGi,这也不是一些“抨击 OSGi”的问题。
归根结底,OSGi 似乎 - 基本上 - 解决了 Java 模块化的JSR 277,它认识到JAR
文件规范存在缺陷,在某些极端情况下可能导致命名空间解析和类加载问题。OSGi 还做了很多其他非常酷的东西,但据我所知,这是它最大的吸引力(或其中之一)。
对我来说——作为一个相当新的(几年前)Java EE 开发人员,我们在 2011 年并且目前生活在 Java 7 时代,而且这些类加载问题仍然存在,这绝对是令人难以置信的;尤其是在企业环境中,一个应用服务器上可能有数百个 JAR,其中许多依赖于彼此的不同版本,并且都(或多或少)同时运行。
我的问题:
尽管我对 OSGi 很感兴趣,并且我想开始学习它以了解它在哪里/是否对我的项目有用,但我只是没有时间坐下来学习那么大的东西,至少现在。
那么当这些问题出现时,非 OSGi 开发人员应该怎么做呢?当前存在哪些Java (Oracle/Sun/JCP) 解决方案(如果有)?Jigsaw为什么会从J7中删减?Jigsaw 明年将在 J8 中实施的社区有多大把握?即使它还不是 Java 平台的一部分,是否有可能为您的项目获取 Jigsaw?
我想我在这里要问的是恐慌、阴谋和面子的结合。现在我终于明白了什么是 OSGi,我只是不“明白”像 Jigsaw 这样的东西是如何用了 20 多年才实现的,然后又是如何从一个版本中删除的。这似乎是基本的。
而且,作为一名开发人员,我也很好奇我的解决方案是什么,没有 OSGi。
另外,注意:我知道这不是一个“纯编程”类型的问题,但在你们中的一些人鼻子弯曲之前,我想声明(再次,为了记录)我故意提出这个问题所以。那是因为我对我的 SOers 同胞表示最大的尊重,我正在从我每天看到的一些“IT 之神”那里寻找架构级别的答案。
但是,对于那些绝对坚持用一些代码段支持 SO 问题的人:
(感谢任何可以权衡这个 OSGi/Jigsaw/classloader/namespace/JAR 地狱的东西的人!)
java - 为什么项目 Jigsaw / JPMS?
Java 的包管理系统在我看来总是简单而有效。它被 JDK 本身大量使用。我们一直在使用它来模仿命名空间和模块的概念。
拼图项目(又名Java 平台模块系统)试图填写什么?
来自官方网站:
该项目的目标是为 Java SE 平台设计和实现标准模块系统,并将该系统应用于平台本身和 JDK。
java - Java 8 模块与 OSGi 有何不同?
带有 Project Jigsaw 的 Java 8 为 SDK 带来了一个模块系统。我认为这是一件好事,因为它是软件包的一部分(内置)。OSGi 也提供了一个模块系统,但需要一个容器。但除此之外,它们之间的主要区别是什么。
如果我使用 OSGi,我能否使用标准 JDK 8 版本运行它?
当默认 SDK 包含此类功能时,OSGi 是否相关?我的理解是 OSGi 和 Jigsaw 都可以用来编写普通的模块化 Java 应用程序,而不仅仅是基于 ser 的应用程序(servlet 等),对吧?
对OSGi、Java Modularity 和 Jigsaw问题的回答说,JRE 可能需要 Jigsaw 模块系统。通过 JRE,我假设 OP 是指 Java 标准库,如 IO、CORBA、RMI,它们是用 Java 编写的,还是作为目标基础的类库实现?通过阅读 Jigsaw 项目页面,我认为是前者。如果是后者,它如何帮助其他编写 Java 代码的 Java 开发人员?类库是用 C/C++ 编写的。有人可以澄清一下吗?
这不是 OSGi vs Jigsaw。我想真正了解使用哪一个。如果我要编写一个新的应用程序(无论是桌面还是服务器),我希望基于可能不会被标准实现过时的技术并放弃软件。我并不是说 OSGi 已经过时,我喜欢 OSGi。我着眼于大局,OSGi 本身的未来方向是什么。
java - 项目拼图/Java平台模块系统
我目前正在评估为桌面应用程序开发插件概念的可能性。
在研究时,我发现了有关 OSGI 和 Java 平台模块系统(或 Project Jigsaw)的信息。
我对 Java 平台模块系统的规范有点困惑。
Java 平台模块系统是否允许像插件一样添加模块?
是否可以声明可选模块并访问它们的服务?模块是否有可能拥有自己的类路径并与应用程序的其余部分分开?
第三方程序员是否有可能实现无缝集成到现有应用程序中的插件?
如果有人能帮助我理解规范,我将不胜感激。
java - Jigsaw for Android 的效果是什么?
当我看到这条评论时,我正在阅读Junit-Lambda wiki最近的变化。
我们应该考虑使用 Jigsaw 进行模块化吗?
[...] 在核心代码中要求 Jigsaw 意味着 JUnit 无法在 Android 上运行
我想知道当 Jigsaw 应用于 Android 时究竟会发生什么问题?
jdk9 之后的库会不再在 Android 上运行吗?
考虑到 Android 开发的库是否可以与“拼图”代码一起使用?
谷歌搜索这会带来各种应用程序,所以这无济于事。
java - 删除(或重命名)gradle java sourceSet
我想重命名默认的 gradle java sourceSet main
。据我所知,这不是直接可能的,但我虽然应该能够创建一个新的 sourceSet 和 delete main
,如:
这运行没有错误,但 gradle 仍然编译所有内容src/main/java
,并忽略src/foo.bar/java
. 我究竟做错了什么?
(如果有人想知道为什么这个奇怪的名字foo.bar
:我正在试验 JDK 1.9 “Jigsaw”,而新的 Java 模块需要带点的目录名。)
java - Java 9 ea 中是否存在启动时间回归?
我听说过
- 每个主要版本都使 JVM 变得更快(在某些方面)
- 9 的模块化将带来更快的启动时间。
为了加快 Maven 构建速度,我下载jdk9-ea
了它并发现它需要更长的时间。此外,感觉在 Maven 启动之前还有更长的延迟。
我尝试使用以下代码粗略测量 JVM 启动时间
从 Java 9 开始需要两倍的时间
注意:最初我使用的是服务器虚拟机(x64),同样的 2x 间隔,Java9 启动时间约为 0.6 秒。
后java -Xshare:dump
使用 Java 8 EA
错误信息:
50 次中的 44 次成功开始是我能得到的最高数字。最低的是 - 13。
java - Java 9 中会出现循环模块依赖吗?
在 Java 9 中,是否允许使用循环模块?如果不是,原因是什么?