问题标签 [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.
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 吗?
java - 尝试增加 jvm 内存时,您可以将 Xmx 设置为最大数量吗?
有最大值吗?您可以将 Xmx 设置为的大小?我将它设置为 1024m 并且 Eclipse 可以正常打开。当我将其设置为 1024 以上时,eclipse 无法打开,并且出现错误“jvm 已终止。退出代码=-1”...
我这样做是因为我不断收到“java.lang.OutOfMemoryError:Java 堆空间”。我正在读取一个 35.5Mb 的 .txt 文件,当它只是使用“ while((line = reader.readLine()) != null)
”循环读取文件时会发生此错误。我原以为1024mb就足够了。谁能帮我?
java - Java 虚拟机规范的当前版本在哪里?
似乎获得 Java 6 版本的Java 虚拟机规范的唯一方法是采用第二版,合并现有更改,然后在此基础上添加Java 6 提议的更改,这些更改不再真正提议,但实际。
真的吗?
由此产生两个问题:
- 这就是所有的三角洲吗?
- 为什么没有官方的当前版本?
有人知道我想念的任何东西吗?
java - JVM 如何使用给定的 jaas.conf 文件?
如何设置 JVM 以使用我作为 JAAS 设置创建的给定 jaas.conf?也许有一个 JAAS 选择了我可以在启动时设置的配置属性-D
?
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”来准确了解用于运行引擎应用程序的命令行。
真是一团糟!
感谢那些发布答案的人。
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# 编译器呢?
一定有充分的理由。我只是无法为我的生活弄清楚它是什么......
java - 用于 WEPOS 的 JVM
我正在研究在 WEPOS(Windows Embedded for Point of Service)平台上运行 j2se(1.5) 应用程序。我注意到 Sun 为嵌入式 Windows XP 提供了一个 java 运行时(Java SE for Embedded 5.0)。我想知道如果
- 我可以在 WEPOS 平台上使用标准的 Sun Hotspot 吗?
- Java SE for Embedded 5.0 是否也可以在 WEPOS 上运行?(如果是这样,SE for Embedded 将更好地利用有限的资源)
谢谢,迈克
java - 如何在 Java 中编写正确的微基准测试?
您如何在 Java 中编写(和运行)正确的微基准测试?
我正在寻找一些代码示例和注释来说明要考虑的各种事情。
示例:基准测试应该测量时间/迭代还是迭代/时间,为什么?
java - 用Scala隐式包装的Java接口实现的工厂方法?
我正在使用 Scala 隐式为 Java 接口定义一个丰富的包装器:
在伴生对象中,我定义了隐式转换和apply
工厂方法:
有了这个,我可以实例化接口的 Java 实现并像使用它一样RichThing
(由于隐式转换):
我还可以RichThing
使用工厂方法创建一个(由于apply
方法):
我想做的是以相同的方式实例化接口的任意 Java 实现。这不起作用,因为 Scala 然后寻找实现的伴随对象但找不到:
我可以为 Java 实现创建一个 Scala 伴随对象:
但关键是要使该接口适用于任何(特别是未知的)实现。
有没有办法实现这一点?例如,基于对象中的隐式转换为 Java 实现动态创建 Scala 伴生RichThing
对象?
或者从 Java 端创建 Scala 伴生对象,也许在抽象类中?
java - 从 JVM 内部修改 JVM 参数
有没有办法从 jvm 内部修改 jvm args?具体来说,我希望能够从其中更改 jvm 的最大堆大小。这可能吗?
编辑:我想我应该添加我想这样做的原因。我有一些在不同机器/平台上运行的 Java 程序。这些程序具有在运行时获取的配置,并且根据程序运行的机器/环境而有所不同。其中一些配置可以在运行时更改,并且各种程序会随着配置的更改而自动更新。
我希望堆大小是这些配置参数之一,它像配置的其余部分一样在运行时获取。如果是这样,那么程序可以启动(使用一些默认的 jvm args)然后根据检索到的配置进行自我调整。