问题标签 [jvm]

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.

0 投票
5 回答
4153 浏览

java - 有没有令人信服的理由不使用 Groovy?

在离开平台很久之后,我正在用 Java 开发一个 LoB 应用程序(在过去 8 年左右的时间里,我一直在 Fortran、C、C++ 和后来的 .Net 中根深蒂固)。

Java,这门语言,与我记忆中的相比并没有太大变化。我喜欢它的优势,我可以解决它的弱点——平台已经发展壮大,并且决定无数不同的框架似乎做同样的事情是另一回事;但这可以再等一天——总的来说,我对 Java 很满意。然而,在过去的几周里,我已经迷上了 Groovy,这纯粹是出于自私的观点:但不仅仅是因为它使针对 JVM 的开发变得更加简洁和有趣(而且,嗯,“groovy”)命题比Java(语言)。

Groovy 最让我印象深刻的是它固有的可维护性。我们都(我希望!)努力编写有据可查、易于理解的代码。然而,有时我们自己使用的语言会打败我们。一个例子:2001 年,我用 C 语言编写了一个库,用于将 EDIFACT EDI 消息转换为 ANSI X12 消息。这不是一个特别复杂的过程,如果稍微涉及的话,我当时认为我已经正确地记录了代码 - 我可能已经 - 但大约六年后,当我重新访问该项目时(并且在适应 C# 之后)我发现我自己迷失在如此多的 C 样板(malloc、指针等)中,以至于我花了三天的时间进行深思熟虑的分析,才终于明白了六年前我一直在做什么。

今天晚上我写了大约 2000 行 Java 代码(毕竟是休息日!)。我已经尽我所知记录了最好的文档,但是,在这 2000 行 Java 中,很大一部分是 Java 样板。

这就是我看到 Groovy 和其他动态语言通过可维护性和后来的理解而获胜的地方。Groovy 让您专注于您的意图,而不会陷入特定于平台的实现;它几乎是但不完全是自我记录。当我在几年后重新审视我当前的项目(我将尽快移植到 Groovy)时,我认为这对我来说是一个巨大的福音,对我的继任者来说,他们将继承它并继续做好工作。

那么,有什么理由不使用 Groovy 吗?

0 投票
4 回答
118934 浏览

java - 尝试增加 jvm 内存时,您可以将 Xmx 设置为最大数量吗?

有最大值吗?您可以将 Xmx 设置为的大小?我将它设置为 1024m 并且 Eclipse 可以正常打开。当我将其设置为 1024 以上时,eclipse 无法打开,并且出现错误“jvm 已终止。退出代码=-1”...

我这样做是因为我不断收到“java.lang.OutOfMemoryError:Java 堆空间”。我正在读取一个 35.5Mb 的 .txt 文件,当它只是使用“ while((line = reader.readLine()) != null)”循环读取文件时会发生此错误。我原以为1024mb就足够了。谁能帮我?

0 投票
2 回答
2314 浏览

java - Java 虚拟机规范的当前版本在哪里?

似乎获得 Java 6 版本的Java 虚拟机规范的唯一方法是采用第二版,合并现有更改,然后在此基础上添加Java 6 提议的更改,这些更改不再真正提议,但实际。

真的吗?

由此产生两个问题:

  1. 这就是所有的三角洲吗?
  2. 为什么没有官方的当前版本?

有人知道我想念的任何东西吗?

0 投票
1 回答
1884 浏览

java - JVM 如何使用给定的 jaas.conf 文件?

如何设置 JVM 以使用我作为 JAAS 设置创建的给定 jaas.conf?也许有一个 JAAS 选择了我可以在启动时设置的配置属性-D

0 投票
4 回答
7512 浏览

java - 当文件确实存在时抛出 FileNotFoundException

我正面临这个奇怪的问题。

我正在尝试将位于另一台机器中的文件作为共享资源读取:

当我运行一个独立的应用程序(一个 16 行的 java 文件)时,一切都很好。但是,当我尝试从服务器“引擎”(这是一个应用程序引擎,非常类似于可以运行 Java 程序的 Java EE 应用程序服务器)使用相同的类和相同的方法读取相同的文件时,“FileNotFoundException”被抛出。

我虽然我会获得某种权限,所以我将资源映射为驱动器:K:\

重新运行我的java文件,读取,很好。

在“引擎”-> FileNotFoundException 中重新运行我的 java 文件。

当我将文件复制到本地机器( C:\MyFileHere.txt )时,不会引发异常。

问题

什么可能导致此 FileNotFoundExcecption?

我正在使用 Java 1.5

据我所知,引擎几乎透明地使用了 java。

有人遇到过类似的事情吗?

附加问题?解决此问题的好方法是什么?我开始考虑为这些文件提供服务并通过http读取它们的tomcat安装,但我认为这太过分了,这就是为什么首先使用SMB协议不是吗?而且可能我无论如何都无法打开套接字。

安全管理器是否可能是原因(我以前从未使用过,但我知道它存在)

如果是这种情况,是否会抛出 SecurityException ?

非常感谢。

编辑

解决了。谢谢史蒂夫·W。

事实证明,这个引擎是用 ZeroG 的“LaunchAnywhere”启动的。因此,将创建一个 .exe,然后将运行具有指定应用程序的 JVM。

这个应用程序本身就是 Launcher。当它启动引擎时,以某种方式(我不知道为什么或如何)拥有 JVM 进程的用户是 SYSTEM。正如史蒂夫指出的那样,该用户没有网络访问权限,因此无法从共享资源或映射驱动器中读取。

解决方法(当我向制造商报告时)是创建一个 .cmd 文件来手动启动引擎。由于它将手动启动,因此用户确实可以访问网络。

我使用 SysInternals 的“Process Explorer”来准确了解用于运行引擎应用程序的命令行。

真是一团糟!

感谢那些发布答案的人。

0 投票
18 回答
11844 浏览

c# - 为什么 Sun 不做 C# 到 Java 字节码编译器?

我们想在 JVM 上运行我们的 C# 代码

我的公司拥有庞大的 C# 代码库。超过一半的代码是我们创建、读取、修改、计算和编写 Excel 工作簿的核心引擎。我们经常收到来自客户和潜在客户的问题,询问我们是否要构建我们引擎的 Java 版本——他们中的许多人对 UI 根本不感兴趣。我们甚至有一些客户不厌其烦地从他们的 Java 应用程序中使用我们的 .NET 库。

因此,我们希望构建我们核心引擎的 Java 版本,最好不要维护单独的 Java 源代码库。

Eric Sink很好地描述了这个问题。除了我们的软件许可包括免版税部署这一事实之外,我处于类似的位置,这使得 Eric 选择 Mainsoft 对我们来说是不可能的。

几年来,我每隔几个月就在谷歌上搜索“c# to jvm”之类的东西,但没有任何乐趣。我花了大约 7 年时间为 Java 开发类似的软件,我相信我们在核心引擎中使用的 .NET API 可以很容易地封装,并且我们可以使用 Java 库完成我们需要的一切。因此,如果我们只有一个 C# -> JVM 编译器,我们就可以为 Java 构建我们的核心引擎,并且我们不再需要拒绝想要使用它的 Java 开发人员。

我不是问 Sun 不做 C# 编译器的技术原因。我认识到 Java 没有属性或无符号的 64 位长等......为了论证,假设所有这些技术问题都可以通过扩展 JVM 和/或其他方式来处理。

而且我并不是要求就为什么一种语言/堆栈可能比另一种更好进行另一次辩论。我们业务的实际情况是,每个都有大量潜在客户使用。

Sun 为什么要做 C# 编译器?(当然是国际海事组织)

更容易在 Java 平台上运行 C# 代码意味着更多的开发人员和更多的平台软件。平台的成功还有什么比这更重要的吗?Jonathan Schwartz是一名软件专家。我会让比我更聪明的人来决定他是否担任 Sun 总裁兼首席执行官这一不可能的工作,但在乔纳森加入 Sun 后不久与他会面,我的印象是他了解软件以及对大型软件的需求开发人员的基础。

那么为什么 Sun 不做 C# 编译器呢?

  1. 美国国立卫生研究院综合症?
  2. 斯科特麦克尼利的幽灵?
  3. 太多 Java 开发人员不喜欢或不信任与 Microsoft 相关的任何东西?
  4. 他们同意不作为花大价钱的一部分?
  5. ???

一定有充分的理由。我只是无法为我的生活弄清楚它是什么......

0 投票
1 回答
382 浏览

java - 用于 WEPOS 的 JVM

我正在研究在 WEPOS(Windows Embedded for Point of Service)平台上运行 j2se(1.5) 应用程序。我注意到 Sun 为嵌入式 Windows XP 提供了一个 java 运行时(Java SE for Embedded 5.0)。我想知道如果

  1. 我可以在 WEPOS 平台上使用标准的 Sun Hotspot 吗?
  2. Java SE for Embedded 5.0 是否也可以在 WEPOS 上运行?(如果是这样,SE for Embedded 将更好地利用有限的资源)

谢谢,迈克

0 投票
11 回答
128965 浏览

java - 如何在 Java 中编写正确的微基准测试?

您如何在 Java 中编写(和运行)正确的微基准测试?

我正在寻找一些代码示例和注释来说明要考虑的各种事情。

示例:基准测试应该测量时间/迭代还是迭代/时间,为什么?

相关:秒表基准测试是否可以接受?

0 投票
1 回答
826 浏览

java - 用Scala隐式包装的Java接口实现的工厂方法?

我正在使用 Scala 隐式为 Java 接口定义一个丰富的包装器:

在伴生对象中,我定义了隐式转换和apply工厂方法:

有了这个,我可以实例化接口的 Java 实现并像使用它一样RichThing(由于隐式转换):

我还可以RichThing使用工厂方法创建一个(由于apply方法):

我想做的是以相同的方式实例化接口的任意 Java 实现。这不起作用,因为 Scala 然后寻找实现的伴随对象但​​找不到:

我可以为 Java 实现创建一个 Scala 伴随对象:

但关键是要使该接​​口适用于任何(特别是未知的)实现。

有没有办法实现这一点?例如,基于对象中的隐式转换为 Java 实现动态创建 Scala 伴生RichThing对象?

或者从 Java 端创建 Scala 伴生对象,也许在抽象类中?

0 投票
7 回答
3071 浏览

java - 从 JVM 内部修改 JVM 参数

有没有办法从 jvm 内部修改 jvm args?具体来说,我希望能够从其中更改 jvm 的最大堆大小。这可能吗?

编辑:我想我应该添加我想这样做的原因。我有一些在不同机器/平台上运行的 Java 程序。这些程序具有在运行时获取的配置,并且根据程序运行的机器/环境而有所不同。其中一些配置可以在运行时更改,并且各种程序会随着配置的更改而自动更新。

我希望堆大小是这些配置参数之一,它像配置的其余部分一样在运行时获取。如果是这样,那么程序可以启动(使用一些默认的 jvm args)然后根据检索到的配置进行自我调整。