Questions tagged «jvm»

Java虚拟机(JVM)是​​可以执行Java字节码的虚拟机。它是Java平台的代码执行组件。

2
什么是“阴影” Java依赖项?
JVM开发人员在这里。最近,我在IRC聊天室甚至在我自己的办公室里看到了所谓的“ 阴影 ” Java库的玩笑。使用的上下文将类似于: “ 这样为XYZ提供了一个“阴影”客户端。 ” 完美的例子是针对HBase的Jira问题:“ 发布具有阴影依赖项的客户端工件 ” 所以我问:什么是阴影 JAR,“阴影”是什么意思?
74 java  libraries  jvm 

4
与其他更接近Unix二进制语言的语言相比,使用Java时使用Docker的开发优势是否被否定?
我有一个朋友说: Docker很棒。您可以使用它在本地计算机上复制生产及其所有怪癖。然后,您可以超快速地通过所有登台工作流直接部署该实例。 现在,如果开发人员正在编写Ruby,PHP或Go(存在指向操作系统的定向二进制链接),这将是正确的。 但是当使用Java时 - 操作系统和语言之间已经存在一个虚拟层,无论底层操作系统如何,都可以确保操作的一致性。 可以说,在这种情况下,否定了为本地开发人员运行Docker来复制生产环境的好处。(与Ruby,PHP或Go相比)。 我愿意就此进行讨论,并热切希望听到持异议的观点(有证据)。 与其他更接近Unix二进制语言的语言相比,使用Java时使用Docker的开发优势是否被否定?
53 java  deployment  jvm  docker 

8
将源代码转换为Java字节码有什么用?
如果对于不同的体系结构需要不同的JVM,我无法弄清楚引入这一概念的逻辑是什么。在其他语言中,我们需要用于不同机器的不同编译器,但是在Java中,我们需要不同的JVM,那么引入JVM概念或此额外步骤的逻辑是什么?
37 java  jvm  bytecode 

4
JVM对尾调用优化施加哪些限制
Clojure不会单独执行尾部调用优化:当您具有尾部递归函数并且想要对其进行优化时,必须使用特殊形式recur。同样,如果您有两个相互递归的函数,则只能使用来优化它们trampoline。 Scala编译器能够为递归函数执行TCO,但不能为两个相互递归函数执行TCO。 每当我阅读这些限制时,它们总是归因于JVM模型固有的某些限制。我对编译器一无所知,但这使我有些困惑。让我举一个例子Programming Scala。这里的功能 def approximate(guess: Double): Double = if (isGoodEnough(guess)) guess else approximate(improve(guess)) 被翻译成 0: aload_0 1: astore_3 2: aload_0 3: dload_1 4: invokevirtual #24; //Method isGoodEnough:(D)Z 7: ifeq 10: dload_1 11: dreturn 12: aload_0 13: dload_1 14: invokevirtual #27; //Method improve:(D)D 17: dstore_1 18: goto 2 因此,在字节码级别,只需要一个goto。实际上,在这种情况下,繁琐的工作由编译器完成。 基础虚拟机的什么功能将使编译器更轻松地处理TCO? …
36 scala  clojure  jvm  tail-call 

2
是否可以在Java中捕获StackOverflowError?
我曾经以为不是,但是昨天我不得不这样做。这是一个使用Akka(JVM的参与者系统实现)来处理异步作业的应用程序。其中一位参与者执行了一些PDF操作,并且由于该库存在错误,因此有时会死于StackOverflowError。 第二个方面是,如果捕获到任何JVM致命错误(例如,StackOverflowError),则将Akka配置为关闭其整个actor系统。 第三个方面是该参与者系统被嵌入到Web应用程序中(出于WTF-ish,传统,原因),因此当参与者系统关闭时,Web应用程序就不会被关闭。最终结果是,在StackOverflowError我们的工作处理应用程序上,该应用程序变成了一个空的Web应用程序。 作为快速解决方案,我不得不赶上了StackOverflowError被抛出的问题,以便不会破坏actor系统的线程池。这使我认为也许有时可以捕获此类错误,尤其是在这种情况下?当有一个线程池处理任意任务时?与A不同,OutOfMemoryError我无法想象A如何StackOverflowError使应用程序处于不一致状态。在发生此类错误后将清除堆栈,因此计算可以正常进行。但是也许我错过了一些重要的事情。 另外,请注意,我一开始就是要修复错误(事实上,几天前我已经在同一应用程序中修复了SOE),但是我真的不知道什么时候可能会出现这种情况。 为什么最好重新启动JVM进程而不是捕获StackOverflowError,将作业标记为失败,然后继续我的业务? 有什么令人信服的理由永远不赶上国有企业?除了“最佳实践”,这是一个模糊的术语,什么也没告诉我。


2
Java和JVM许可证
Java许可是否允许其他公司创建自己的Java语言版本或只是准确地实现它?关于JVM的同样问题。 我听说Sun起诉Microsoft更改其.NET版本的Java实现和Java for Google Android,但我只是不能完全理解整个概念。
17 java  licensing  jvm 

1
如何改进Java,使其不再需要执行类型擦除?
关于泛型的官方Java教程介绍了类型擦除以及将其添加到编译器的原因: 当实例化泛型类型时,编译器会通过一种称为类型擦除的技术来转换这些类型,在该过程中,编译器将删除与类或方法中的类型参数和类型参数有关的所有信息。通过类型擦除,使用泛型的Java应用程序可以维护与泛型之前创建的Java库和应用程序的二进制兼容性。 这很可能是一种务实的方法,或者也许是最不痛苦的方法。但是,既然泛型已在整个行业得到广泛支持,那么为了使我们不需要类型擦除,该怎么办?不需要破坏向后兼容性是否可行,或者如果可行,是否可行? 上面引用中的最后一个语句是否已成为自我参照?也就是说:“类型擦除使使用泛型的Java应用程序能够与Java库和使用执行类型擦除的Java版本创建的应用程序保持二进制兼容性。”
16 java  jvm 

4
接近Java / JVM内部结构[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 我已经用Java编程了大约8年,作为一名开发人员,我对该语言非常了解,但是我的目标是加深我对内部语言的了解。我上过PL设计的本科课程,但它们是非常广泛的学术概览(在Scheme,IIRC中)。 有人可以建议一条路线来开始研究细节吗?具体来说,是否有一些特定的主题(例如垃圾回收)更容易解决或成为一个好的起点?是否有关于JVM内部和Java编程语言设计的不错的高级书籍?我当前的方法是从JVM规范开始,并根据需要进行研究。
15 java  books  jvm 

3
创建对象时,是将新的内存分配给实例字段和方法,还是仅分配给实例字段
我有一个下课 class Student{ int rollNumber; int marks; public void setResult(int rollNumber, int marks){ this.rollNumber=rollNumber; this.marks=marks; } public void displayResult(){ System.out.println("Roll Number= "+this.rollNumber+" Marks= "+this.marks); } } 现在,我创建两个类型为Student的对象,如下所示 Student s1=new Student(); Student s2=new Student(); 现在,为实例字段分配了两组不同的内存。现在我的问题是为方法(setResult和displayResult)分配内存两次还是一次? 请参见下图,您能帮我说一下哪个图提供了正确的信息。

1
Clojure与Scala中的模式匹配
这两种语言的模式匹配之间的主要区别是什么?我不是在指语法,而是功能,实现细节,用例范围和必要性。 Scala应用程序(例如Lift和Play)自豪地谈到了语言模式匹配能力。另一方面,Clojure具有一个库core.match,并内置了解构功能,该功能似乎也很强大。 *注:之所以被问到这个问题,是因为我看到了一篇博客文章,其中的一个程序员作为实验,使用Scala和Clojure构建了一个Lisp解释器。他说,克洛瑞尔(Clojure)比赛在经过一定长度后就中断了,但无法解释原因,但我真的很想知道。您可以在以下位置找到此帖子:http : //www.janvsmachine.net/2013/09/writing-simple-lisp-interpreter-in-clojure.html

4
Java虚拟机如何执行用其他语言编写的代码?
从Java 1.6开始,JVM不仅可以运行Java,还可以运行多种编程语言。我从概念上了解Java如何在Java VM上运行,但其他语言也无法在Java VM上运行。在我看来,这一切都像黑魔法。您是否有任何文章可向我指出,以便我可以更好地理解它们之间的关系?
12 jvm 

5
JVM和Java的WORA与其他高级语言有何不同?
在Java世界中,我们经常谈论JVM,而Java刚发布时,它具有所谓的杀手级功能:“一次编写,在任何地方运行”。 从人们的交谈和书写方式来看,这似乎与Python的工作方式不同。但是我还没有发现我编写的Python代码在另一台机器上可以有不同的工作方式。(尽管我没有写太多的Python。) 那我想念什么呢?JVM与Python解释器有何不同?有没有办法使Python缺乏Java的平台独立性?还是仅仅是文化差异?

2
JVM如何处理main方法抛出的异常?
我了解异常,将其抛出,处理它们,并将其传播到调用堆栈中较低的方法(即throws)。 我不明白的是: public static void main(String[] args) throws Exception { ... } 现在,我假设在main抛出的情况下,ExceptionJVM将对其进行处理(对吗?)。如果是这样,那么我的问题是: JVM如何处理引发的异常main?它有什么作用?
10 java  exceptions  jvm 

3
进行较小的JVM升级有多安全?
我从事JVM已有多年的经验,很少遇到JVM崩溃的情况,直到大约6个月前。 从那以后,我经历了大约2个JVM缺陷导致的5个JVM崩溃。Oracle的解决方案始终是相同的...升级。 每次升级始终是从一个点发布到另一个发布的……也就是说,Oracle的最新建议(在确认他们确实修复了该错误之后)是从1.6u20升级到1.6u26。 我应该如何关注JVM的次要版本? 这是否是需要进行大量回归测试的大事件,还是应该接受的安全升级?
10 java  oracle  jvm  upgrade 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.