Real-time support in Java SE Embedded

From what I understand, Java SE Embedded is a slimmed down SE JDK/JRE compiled to support different typical embedded processors, ARM etc.
Does Java SE Embedded provide any additional support for handling realtime situations? For example, are there any JVM modifications to guarantee response times and execution times for time critical scenarios?
The reason for asking is that I know a while back there was a specific Real Time Java release - did any of this technology get rolled into the new SE Embedded?
Thanks.

Yes, Java3D or an openGL toolkit such as JOGL or LWJGL is probably the best choice. Bearing in mind that Java3D is on the way out you may want to look at using OpenGL although there is much talk over at javagaming.org of putting together an open-source Java3D-like scenegraph renderer for the openGL toolkits and the guy working on it is very good indeed so it will probably happen. Assuming that it does, time spent learning Java3D is not wasted time.
If you are interested in Java3D download the API and tutorials and see how you get on with it. I put together a fairly gaming oriented tutorial here http://www.newview.co.uk/e/tutorials/java3d/index.jsp which may help you get started.
If you are serious about writing games in Java you will want to get over to the javagaming forums http://www.javagaming.org/cgi-bin/JGNetForums/YaBB.cgi because that is where you can generally find the best advice. There are a number of old threads on this question there and you will probably find it well worth your while to look through the older posts on it.

Similar Messages

  • Solaris 10 real-time support on a uniprocessor system

    Hello,
    I've read older documentation stating that Solaris has real-time support on a dual processor system. One of the CPUs is dedicated to the real time tasks. I was wondering
    if this is an absolute requirement. Could one use Solaris 10 as a real-time OS on a uni-processor system?
    Thanks for your help.
    Stephen

    Stephen,
    Solaris is capable of running processes in real-time mode on either a uni- or multiprocessor machine. real-time mode is implemented at the scheduler level, with RT class processes layered on top of TS/IA and SYS processes. This is mostly implemented through priority levels (0-59 for TS/IA, 60-99 for SYS, 100-159 for RT [if used]). For details regarding this, pls. see priocntl(1).
    Be aware of a couple of gotchas, though:
    - RT processes will stay at their priority level, no matter what.
    - They will not be subject to time-sliced scheduling (in fact, they won't be scheduled in normal ways, since the scheduler itself runs at SYS priority level!)
    - They'll not stop running until they either voluntarily give up the CPU by means of something like swtch(), or block on a resource, or any process with an even higher priority becomes runnable.
    In short, they might render your system more or less inoperable, if used without caution.
    Consider it a BAD idea to put your shell into RT mode - and definitely do NOT try to run largely computational tasks (PI to the nth position, as an example) in RT mode, just to get some more performance out of your box! It won't work as you expect it.
    RT is meant to run fairly short routines that require (almost ) deterministic response - such as acting on a signal from a sensor on an assembly line. It's definitely not a way to obtain better response times or outperform your peers.
    Solaris, as any UNIX, is not an outright RT system - it just has some stuff built into it that could help in running it as if it were one.
    Consider well what you're about to do, then reconsider ... ;) Don't say you haven't been warned.
    HIH, kind regards,
    - Tom

  • Is real time support configure visa

    can we use configure visa and other visa's vi's in real time?

    Dear Mr Mazhar,
    Thank you for your post on the discussion forum. Please find the following knowledge base about Visa on a (compact) fieldpoint realtime controller; http://digital.ni.com/public.nsf/allkb/D9DC27C95A6AA9F986256B97005D360C
    So yes, the Visa VI's are available on your realtime target.
    If you are programming a realtime target (with Labview 8 or later) you are able to create a real-time VI; just add your real-time target in your project window, right click => new VI. Labview automatically sets the library's available for your realtime target.
    I hope this will help you further,
    Best regards,
    Martijn
    NINL
    Martijn S
    Applications Engineer
    NI Netherlands

  • Is real time module necessary?

    Hi,
    I want to use cRIO-9073 for simple system control. Do I need Labview Real-time module if I don't need real-time support?
    Thanks in advance.
    Karpis

    Hi Karpis,
    This is the forums for IF-RIO, which is the PCI-5640R and PXIe-5641R devices. Please post your question to the cRIO forums found here:
    http://forums.ni.com/t5/Real-Time-Measurement-and/bd-p/280
    You can get faster response to your question there.
    Best Regards,
    Jignesh P
    Applications Engineer

  • Real time JVM  Implementation

    Hi All,
    We some students of our university would like to implement Real time JVM on Linux.
    We do have a solid idea on linux as well as on Java. But this is a very new and interesting topic.
    Can anyone help me how to start the assignment i.e. implementation of real time jvm on linux.
    Thanks and Regards
    tapas

    Just guessing...
    There are only two impacts to real time processing in java.
    First the garbage collector. Since it runs at odd times. And ties up the rest of the application for unpredictable amounts of time a real time system will need another type of solution.
    Second, threads. Because threads prempt each other this can also produce unpredictable behavior. Some usual solutions involve no threads at all. Or a way to preclude interruption.
    Finally I suspect that if you do a literature search you would be able to find some papers on this subject.

  • Code for a real time program in windows

    I m designing a network monitoring system which uses a client/server system wherein a client application runs as a sensor/actuator which sends system information and snaps of client machines to be monitored on request from server machine.I m stuck with the garbage collection problem and thread synchronization.
    Kindly help me with ideas or code.

    I have no idea what "the garbage collection problem and thread synchronization" means so it's impossible to offer any suggestions.
    This forum is for discussion of the real-time specification for Java and Sun's Java RTS implementation of it.
    David Holmes

  • Scheduling in Real-Time Java

    Hello,
    I have some questions concerning how scheduling in fact is intended to be performed in a RTSJ based Real-Time Java System.
    As far as I understood, RTSJ requires pre-emptive priority-based dispatching of Schedulable objects.
    This means that the execution eligibility of a schedulable entity is mainly its priority.
    That causality is reflected within the specification with the (one-and-only specified) PriorityScheduler, which is the base scheduler for actual Real-Time Java applications.
    Furthermore, there is a notion of extensibility of that PriorityScheduler described by RTSJ,
    in order to provide further scheduling mechanims and feasibility analysis algorithms (please correct me if there are any wrong assumptions).
    This is the point, where everything becomes really weird to me ...
    As far as I could investigate, in most RTSJ implementations based on a POSIX compliant system underneath (like Java RTS does on RTLinux or Solaris)
    each (Realtime)JavaThread is mapped 1-to-1 to a light-weight process on the operating system level (e.g. a pthread).
    So far, we have no "green threads" within the JVM, but real LWPs scheduled by the OS.
    The difference between "normal" and "real-time" threads lies in the scheduling policy used for that mapping.
    While normal Java threads probably map to SCHED_RR or SCHED_OTHER, real-time threads are scheduled by the OS via the SCHED_FIFO policy in order to achieve a better real-time predictability.
    However, the OS's scheduling mechanisms automatically make decisions about the right positioning of a LWP within an appropriate run-queue, due to thread's preemption, blocking or release (even dynamic priority changes) activities and its scheduling policy.
    That's exactly why I ask myself, what is the need of a Scheduler representation within a JVM?
    Furthermore, how a Scheduler extension is able to incorporate with the threading model and the underlying scheduling mechanisms of the OS?
    One point could be a situation where a real-time JVM runs directly on top of the bare hardware and has to perform scheduling decisions on its own.
    The Scheduler API could then be understood as an extension mechanism of a kind of JVM-intern scheduler (e.g. the PriorityScheduler), thereby allowing scheduling decisions to be made even in user defined Scheduler implementations.
    A similar use case for an OS-based scenario could be if a JVM is intended to pass scheduling/threading routines of the underlying OS (eg. a part of the POSIX API)
    up to the Java application level in order to provide the opportunity for a kind of application defined scheduling (like e.g. in the MaRTE OS).
    Unfortunatelly, after introspecting the RTSJ API, both conclusions seem to me to be wrong.
    So far, Java RTS seems not to provide any mechanism for reaction on scheduling events/decisions, neither intra-JVM nor from an underlying OS outside of the JVM.
    Furthermore, there is no notion for incorporation with the base PriorityScheduler for making extended scheduling decisions.
    I hope this post could bring me more light into the scheduling idea behind Real-Time Java systems as intnded by the RTSJ.
    Sincerely,
    Vladimir

    Vladimir.Nikolov wrote:
    That means, that a scheduling policy different to PriorityScheduler can only be assigned to a Schedulable object if it is supported by the OS and the JVM?Well it has to be supported by that implementation of the RTSJ. Howe that is done - ie whether it requires OS support - depends on that VM, the OS and the actual scheduling policy.
    It also seems that at the current state of the art the PriorityScheduler representative within the JVM is intended only for manipulating a feasibility set of Schedulable objects (supporting online feasibility analysis)?
    However, since user-defined scheduling is not intended by the specification, applications have to rely on the feasibility analysis based on the underlying/supported scheduling mechanisms.
    Thus, in the current Java RTS implementation this would be the "default" feasibility mechanism based on the PriorityScheduler.
    Unfortunatelly I can not figure out the need of maintaining a feasibility set, since feasibility, as specified for the PriorityScheduler, is a simple asumption that we have "an adequatly fast machine to handle the periodic and sporadic load"?
    I actually assumed that feasibility analysis performs real cost budgeting taking into account deadlines and so on, but it seems to be specified simply to make a negative statement always when aperiodic tasks are involved ?The RTSJ scheduling framework provides support for feasibility analysis by defining the admission control methods eg setXXXIfFeasible. However the RTSJ does not, and can not, mandate any non-trivial feasibility algorithm because in simple terms no such general algorithms exist. There are some static feasibility tests in the literature and you could apply those offline to your application (assuming you can find the values of all the "magic" numbers in such formulae - which is generally not the case). At present the RTSJ doesn't support even these simple feasibility tests because blocking-time is not recorded in the release parameters - something being addressed in RTSJ 1.1. In any case unless there is a pluggable framework for feasibility tests it would be a waste of time for VMs to implement them given they can (more) easily be done offline using other tools.
    Only dynamic admission control is really of interest and as far as I am aware no such general dynamic admission control policies exist (anything you find in the literature is very context specific). So it is left up to an implementation as to whether they try and define dynamic admission control algorithms - and so far none have because they don't have one.
    In "Getting More Flexible Scheduling in the RTSJ" Wellings and Zerzelidis propose some (more or less) "minor" extensions to the RTSJ API in order to enable hierarchical scheduling within the fixed priority framework.
    Since Andy Wellings is a member of the RTSJ Technical Interpretation Committee, is there any attempt to evolve the specification in a similar direction as described above, in order to support more flexible scheduling mechanisms and feasibility analysis?If there is ever a RTSJ 2.0 then more sophisticated scheduling support is one of the items on the wishlist. But there's no guarantee there ever will be a RTSJ 2.0
    David Holmes

  • Jmx with java real time

    Hi David,
    my question for now is very general.
    can we use jmx with jrts???
    Gabi

    Hi Gabi,
    Some additional information:
    - JavaRTS does support the JMX protocol
    - JavaRTS supports most of the monitoring & management functionalities provided
    by HotSpot MBeans
    - some functionalities are disabled by default because they would create jitter (like
    getting the stack trace of java threads). Default can be changed through the
    realtime.debug MBean)
    - JavaRTS comes with a few additional realtime specific monitoring beans.
    Note that JMX relies on threads to do its work. These threads are not real-time.
    Hence, if the realtime threads (including the RTGC) are consumming all the CPU,
    you may not be able to call MBeans to see what is happening and take corrective actions.
    Bertrand.

  • Java Real-Time System HotSpot(TM) Client VM warning: unable to lock pages i

    Error:
    Java Real-Time System HotSpot(TM) Client VM warning: unable to lock pages into memory
    I'm getting this error, although I have assigned all the needed privilegs to root and I am logged in as root. I have done everything described in the guidelines to get the privilegs, but still this warning occurs.
    But my application still works completely with no appreciable differences.
    So my question is: Does this warning affect the performance of my application?? Or can I live with this warning?
    Gordon

    Determinism is an important issue in my application. That's why page locking should be active in my application. When I'm determining the ScopedMemory size via VM like:
    ... -XX:ScopedSize=500000000 ...Then page locking works with a size of 500 mb very well. But when I try to set the ScopedSize value to 1 gb, then the exception (unable to lock page...) is thrown. So it seems as if I had all the required rights, but the huge size is not supported.
    The System has about 6 gb of DDR2Ram and minimum 5 gb are free during starting the VM. So are there any other parameters except ScopedSize that I can change, to allow the VM to lock memory with a size of about 1 gb? Or where is the problem with locking such big sizes?
    Thanks,
    Gordon

  • Where to find Java Real-Time System Evaluation

    Hello,
    I tried to download an evaluation version of the Java Real-Time System from this page: http://www.oracle.com/technetwork/java/javase/tech/rts-142899.html
    But, when i try to download the "Java RTS 2.2 - Academic Developer Use" for Linux x86 32bit, i get the following message: "The Java Real-Time System evaluation program is closed at this time."
    Is the evaluation program expired? Where could i find an evaluation version of JRTS?
    Thank you all for your attention,
    Greetings.
    Andrea

    Determinism is an important issue in my application. That's why page locking should be active in my application. When I'm determining the ScopedMemory size via VM like:
    ... -XX:ScopedSize=500000000 ...Then page locking works with a size of 500 mb very well. But when I try to set the ScopedSize value to 1 gb, then the exception (unable to lock page...) is thrown. So it seems as if I had all the required rights, but the huge size is not supported.
    The System has about 6 gb of DDR2Ram and minimum 5 gb are free during starting the VM. So are there any other parameters except ScopedSize that I can change, to allow the VM to lock memory with a size of about 1 gb? Or where is the problem with locking such big sizes?
    Thanks,
    Gordon

  • AspectJ with real time java

    Hi
    Does real time java supports aspectJ with Load-time weaving ( LTW ) ? ( compile time weaving )

    Not sure what you mean by "support". AspectJ rewrites bytecodes so the VM will just execute them. You'll probably encounter increased memory usage with load-time weaving as class loading/initialization occurs in Immortal memory. Also load-time weaving won't be compatible with Java RTS's Initialization Time Compilation (ITC) feature ... or at least not the pre-initialization part. It's likely that no-heap threads won't work well running weaved code if there are any references back to heap-allocated AspectJ runtime objects, and similarly (like most libraries) it's not likely to work from scoped memory.
    HTH.
    David Holmes

  • Jave ME Embedded support KEIL MCBSTM32F200 and Raspberry Pi Model B ONLY???

    I am a JEE developer and quite new to Java ME Embedded ( just started 12 hours ago), I am confused in following questions, please help, thanks!
    1. Java ME Embedded 3.3 is support KEIL MCBSTM32F200 and Raspberry Pi Model B ONLY? Or any ARM Cortex M3/RTX and ARM 11/Linux architecture? Does if have supported embedded board/architecture list?
    2. If the answer to #1 is no, does that mean that I the reference implementation KEIL MCBSTM32F200 can be used on any ARM Cortex M3/RTX architecture and Raspberry Pi Model B can be used on any ARM 11 architecture?
    3. if the answer to #1 is no, how should i choose the embedded board for Jave ME Embedded for general purpose (give some recommendation is ok)?
    4. If the answer to #1 is YES, that should be limit usage of Jave ME Embedded on KEIL MCBSTM32F200 and Raspberry Pi Model B; and it can't be used on other embedded device. Or I have to choose Java ME Embedded Client or Java SE Embedded ( this will take more resource, but I only have limitted resource)? Is my understand correct? Does Java ME Embedded has roadmap to support wide embedded device?
    Thanks for your time!
    Best regards
    Michael

    Hi Michael,
    Sorry for the slow reply. Some answers:
    Our officially supported Cortex-M platform for Java ME Embedded 3.3 is the KEIL MCBSTM32F200, which is based on the STM32F207 chip. There is a very similar STMF32407 chip, which is used on KEIL MCBSTM32F400 and we've verified Java ME Embedded 3.3 works there as well. It is likely that Java ME Embedded runs on other platforms using the STM32F207 or 407 chips, but it is impossible for us to verify all these platforms. If you get a chance to try one of those we would love to hear about your experiences.
    For Java ME Embedded on ARM11/Linux: RasPi Mod B is our officially supported platform. Unfortunately, the Linux support for some of the peripherals needed by Java ME Embedded (such as GPIO and I2C) is inconsistent - this is a function of the state of the Linux device drivers, not of Java ME Embedded. We are looking into providing wider support for ARM/Linux platforms in the future, which isn't difficult, but we just haven't gotten around to it.
    Generally, when deciding on specific hardware for a particular use case it very much depends on the details. If it is a customized system based on the STM32F207 or 407 chips then the need for porting/customization of Java ME Embedded should be minimal. If it is a customized system based on ARM/Linux, please contact us as we are already looking into widening support for ARM/Linux. Finally, if you are targeting a system that is very different from the above, then you can work with Oracle or Oracle partners for an optimized port of Java ME Embedded to your platform.
    Finally, we are planning to provide support for additional platforms in the near future - stay tuned for announcements.
    Hope this helps. Let me know if you have more questions.
    Best,
    Terrence Barr
    Product Manager, Oracle

  • Error -1074384569; NI-XNET: (Hex 0xBFF63147) The database information on the real-time system has been created with an older NI-XNET version. This version is no longer supported. To correct this error, re-deploy your database to the real-time system.

    Hello
    I have a VeriStand-Project (VSP) created with my Laptop-Host (LTH) which works with my PXI, while
    deploying it from my LTH. Then I have installed the whole NI enviroment for PXI and VeriStand use on a
    industrial PC (iPC). I have tried to deploy my VSP from the iPC to the PXI but the following error
    message arose on my iPC:
    The VeriStand Gateway encountered an error while deploying the System Definition file.
    Details: Error -1074384569 occurred at Project Window.lvlibroject Window.vi >> Project
    Window.lvlib:Command Loop.vi >> NI_VS Workspace ExecutionAPI.lvlib:NI VeriStand - Connect to System.vi
    Possible reason(s):
    NI-XNET:  (Hex 0xBFF63147) The database information on the real-time system has been created with an
    older NI-XNET version. This version is no longer supported. To correct this error, re-deploy your
    database to the real-time system. ========================= NI VeriStand:  NI VeriStand
    Engine.lvlib:VeriStand Engine Wrapper (RT).vi >> NI VeriStand Engine.lvlib:VeriStand Engine.vi >> NI
    VeriStand Engine.lvlib:VeriStand Engine State Machine.vi >> NI VeriStand Engine.lvlib:Initialize
    Inline Custom Devices.vi >> Custom Devices Storage.lvlib:Initialize Device (HW Interface).vi
    * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * • Unloading System
    Definition file... • Connection with target Controller has been lost.
    The software versions of the NI products (MAX/My System/Software) between my LTH and the iPC are
    almost the same. The only differences are:
    1. LabView Run-Time 2009 SP1 (64-bit); is installed on LTH but missing on iPC. The iPC has a 32-bit system.
    2. LabView Run-Time 2012 f3; is installed on LTH but missing on iPC.
    3. NI-DAQmx ADE Support 9.3.5; something strage on the LTH, because normally I am using NI-DAQmx 9.5.5 and all other DAQmx products on my LTH are 9.5.5. That means NI-DAQmx Device Driver 9.5.5 and NI-DAQmx Configuration 9.5.5.. On the iPC side all three products are 9.5.5.. That means NI-DAQmx ADE Support 9.5.5, NI-DAQmx Device Driver 9.5.5 and NI-DAQmx Configuration 9.5.5..
    4. Traditional NI-DAQ 7.4.4; The iPC has this SW installed. On the LTH this SW is missing.
    In order to fix this problem I have formatted my PXI and I have installed the following SW from the iPC:
    1. LabVIEW Real-Time 11.0.1
    2. NI-488.2 RT 3.0.0
    3. NI_CAN 2.7.3
    Unfortunately the above stated problem still arose.
    What can I do to fix this problem?
    I found a hint on http://www.labviewforum.de/Thread-XNET-CAN-die-ersten-Gehversuche.
    There it is written to deploy the dbc file againt.
    If this is a good hint, so how do I deploy a dbc file?
    I would feel very pleased if somebody could help me! :-)
    Best regards
    Lukas Nowak

    Hi Lukas,
    I think the problem is caused by differenet drivers for the CAN communication.
    NI provides two driver for CAN: NI-CAN and NI-XNET.
    NI-CAN is the outdated driver which is not longer used by new hardware. NI replaced the NI-CAN driver with NI-XNET some years ago, which supports CAN, LIN and the FLEXRAY communication protocol.
    You wrote:
    In order to fix this problem I have formatted my PXI and I have installed the following SW from the iPC:
    3. NI_CAN 2.7.3
    NI CAN is the outdated driver. I think that you should try to install NI-XNET instead of NI-CAN on your PXI-System, to get rid of the error message.
    Regards, stephan

  • Video Output for PXI Embedded Real-Time Controller ?

    I plan to purchase a PXI Embedded Real-Time Controller for security monitoring.
    Is it possible to use the video output of a PXI Controller running RTOS to display messages from a LabVIEW RT application ? According to the documentation, it seems that the use of the video output is only possible for PXI Controllers running Windows XP.
    Does it exist a specific application to do this with LabVIEW RT ?
    Thanx.
    H.L.
    Solved!
    Go to Solution.

    Hi Yann,
    The situation seems a bit confusing as in the link you've given above using the local monitor from a pxi labview rt system as the HMI without a pc attached, two messages (here and here) say that it is possible to display an image on the video output of a PXI RT controller using a function of the NI-IMAQ librarey (namely, the IMAQ RT Video Out VI) !
    I have the NI-IMAQ library but no PXI controller to test if this solution should work or not
    Does anyone have the answer ?
    Thanx,
    H.L.

  • MAX support of SNTP for Real-time controller​s

    Hey everyone,
    I have some PXI systems that allow me to enter a Time Server IP address directly into the MAX setup for the device but I have some other PXI chassis that don't. Does this have to do with the version of Real-time they are running? Can anyone tell me what version of RT and MAX started supporting Time Servers natively through MAX for real-time controllers?
    Thanks,
    Craig

    Hi craige,
    It looks like SNTP synchronization is not fully supported for PXI systems:
    http://forums.ni.com/t5/LabVIEW/Configuring-PXI-81​84-controller-to-synchronize-to-SNTP-server/td-p/1​...
    However, for CompactRIO, synchronization with SNTP servers began with LabVIEW Real-Time 8.6:
    http://digital.ni.com/public.nsf/allkb/F2B057C72B5​37EA2862572D100646D43
    The forum post I linked above does have some links to customer created examples relating to NTP and SNTP Time Servers.
    Please note that those examples are both unsupported and a little bit on the older side.
    Regards,
    Joel I.
    Applications Engineer
    National Instruments

Maybe you are looking for