我听说过Java程序具有严格的延迟要求,其中从来没有-或很少使用“新”指令(因为没有new =>没有对象->没有GC
=>改善了延迟)…而是处理了所有业务逻辑使用原语。
我无法在网上找到对该技术的引用…讨论该技术的网页或代码段的任何链接将不胜感激。
更新(2012年3月):尽管没有公开公告,但看来Oracle已经关闭了其JavaRTS组。
您应该查看的两个主题是Java实时规范(JSR-1,JSR-282)和Java安全关键规范(JSR-302)(aonix页面)。尽管大多数RTSJ用户可能比“全本原”方法所能承受的抖动更大,但RTSJ提供了用于执行您在问题中所讨论的仔细的内存管理类型的资源(并且为了这种容忍,他们得到了通过使用RTGC获得GC的好处)。对于一些有限分配类型的示例(限制您可以使用的时间/位置/次数new
),搜索“
rtsj范围内存规则”,这是该主题的示例学术论文。您还应该查看“
作为尝试以一种(相对)简洁的方式解决Java中这些高频,低延迟约束的示例。
有关在交易环境中使用JavaRTS的特定新故事,请参见此处。有关如何特别从JavaRTS中获得最具确定性的行为的一些说明,请参见此处。
对安全性有严格要求的用户更有可能受到这类约束,并且SC-Java(预期是)是RTSJ的一部分。您可以在JTRES的道格·洛克(Doug
Locke)2007年状态幻灯片中看到专家组正在查看的一些示例。
一些人生产了打算在此环境中使用的JVM。 Aonix /
Atego的PERC;aicas的JamaicaVM
;
Apogee的Aphelion。Sun
/ Oracle JavaRTS的目标更多是可以接受(并受益于)较宽松约束的大型应用程序。
尽管您引用的“全原始”方法是这种编程的一种极端形式,但您最有可能在上述参考文献之一中找到与此主题相关的资源。
对于“原语中的业务逻辑?”
在我上面的反对者中,请注意,大量的IRS税收业务逻辑是在IBM汇编器中实现的,并且正在研究许多像Java的“企业”层来包装(而不是替换!)该逻辑。把它放到你的烟斗里,然后抽烟。
我无法在此处引用任何细节,但是有许多使用Java的防御应用程序(通常是RTSJ风格)对内存分配有非常严格的约束,并且许多代码是静态分配的,原始的。信号处理等…我在我所知道的系统上搜索了开放源材料,并且这些文档(尤其是参考资料部分)为这些应用程序的一些特定示例指明了方向。
请参阅JLS7。第3.2节第16页指出 谢谢
问题内容: 我正在寻找用Java字节码编写一个简短的程序(也许是Hello World)。我只想使用我的文本编辑器编写字节码并运行它。我该怎么做?有一个例子吗?谢谢! 问题答案: 您可以尝试茉莉! 您可以使用以下命令进行编译: 然后像任何类一样运行它: 更新资料 我看到您的问题提到“不使用Javac或Java”。您能说明一下该声明的意思吗?
我在Java有一个小程序,它从. xlsx文件中读取内容并将其中一些写入新的. json文件。在. xlsx单元格中有一些带有德语Umlauts的字符串 ("ä, ö, ü"). 我的问题: 如果程序在MacOS上运行,一切正常。 如果程序在Windows上运行,Umlauts在生成的. json文件上显示为问号。 我的尝试: 1。将我正在使用的IDE(Eclipse)中的项目文本文件的编码设置为
在我之前的问题中,我在JNI调用之间缓存了JNIEnv*。从评论中我知道它是无效的,这导致我学习了JNI本地和全局引用。我做了一些测试程序来理解它。从测试程序中,我无法理解全局引用的使用。因为本地引用本身在多个JNI调用之间工作正常。我有3个测试程序的问题 急于知道原因,本地引用是如何被缓存并正常工作的 ArrayList大小的更改有效,但String对象无效 有理由知道缓存的JNIEnv是如何工
我试图写一个翻译,将内缀转换为前缀。我知道语法,并阅读了“编译器原理,技术, 我不要求整个代码,我只需要一个例子,一个链接或任何东西来理解我应该如何做(不使用数组,动态数组,堆栈和任何在数据结构中教授的东西)。 在书中他们用这种方式将内缀转换为后缀
我对何时使用什么原语有点困惑。如果定义一个数字,如何知道使用、、或?我知道它们是不同的字节,但这是否意味着我只能对某个数字使用其中的一个呢? 所以简单地说,我的问题是,我什么时候使用上面列出的四个原语中的每一个?