5 Replies Latest reply: Mar 18, 2008 7:20 AM by 807557 RSS

    J2SE with some RTSJ features

    807557
      Hello! I'm new to RTSJ but I've been working on Java for many years now. I'd like to know if there are any plans to provide some of the very same features available in RTSJ in standard Java? High-end (non-real time) Java servers might not need the hard real-time scheduling, but some of the other memory management features look very useful even for J2SE apps. Somehow it feels good to have more control over memory allocation.

      Do these real-time JVMs have to run on special OS Kernels? Won't they run on regular Kernels?

      Are there any plans for a Windows version?

      How come these JVMs are not free? :-) Can we expect a free version sometime in the near future?

      Sorry, that's a long list of questions. Thanks anyway.

      Ashwin.
        • 1. Re: J2SE with some RTSJ features
          807557
          Ashwin.Jayaprakash wrote:
          Hello! I'm new to RTSJ but I've been working on Java for many years now. I'd like to know if there are any plans to provide some of the very same features available in RTSJ in standard Java?
          Well we're always looking at how our technology might get shared across products. ;-) But many of the RTSJ features tend to group together - one in all in.

          What in particular do you think might work in Java SE ?
          Do these real-time JVMs have to run on special OS Kernels? Won't they run on regular Kernels?
          I assume you mean "linux" when you say "OS kernels" because we don't need a special Solaris :) The Linux distribution must support the real-time POSIX extensions for Java RTS to run. In theory any linux kernel can do so, but only the real-time kernels will actually enable the enhanced determinsm and predictability that you would want from Java RTS.
          Are there any plans for a Windows version?
          No. Windows does not support any of the real-time capabilities that the VM needs. (Yes it has what it calls a real-time priority level, but that in itself is not enough. But if you want to have some fun rebooting your PC you can try setting the Java SE options that allow the real-time priority to be used and then set your Threads to Thread.MAX_PRIORITY :-) )
          How come these JVMs are not free? :-) Can we expect a free version sometime in the near future?
          You didn't really expect an answer for this did you? :-) Such decisions come from much higher up the food-chain.

          Hope this satisfies your curiosity a little.

          David Holmes
          • 2. Re: J2SE with some RTSJ features
            807557
            What would be really useful would be some kind of control over the GC interruption. What's really frustrating about the GC is when we use JVMs with multi-Gigabyte Heaps (which are very common these days), some critical time dependent functionality like "Cluster heartbeat timers" get interrupted and such delays mess up the whole setup, even though the JVMs are still up and running. I'm sure such modules can use the non-Heap Threads - even Soft-realtime would suffice.

            The "direct memory access" also sounds very good - especially if someone is planning to build some kind of Paging system for pure Java Databases/Caches etc. Explicit memory management is good, sometimes.

            Just my 2 cents, but it would save us Java guys from being called sissies :-)
            • 3. Re: J2SE with some RTSJ features
              807557
              Ashwin.Jayaprakash wrote:
              What would be really useful would be some kind of control over the GC interruption. What's really frustrating about the GC is when we use JVMs with multi-Gigabyte Heaps (which are very common these days), some critical time dependent functionality like "Cluster heartbeat timers" get interrupted and such delays mess up the whole setup, even though the JVMs are still up and running. I'm sure such modules can use the non-Heap Threads - even Soft-realtime would suffice.
              It may be that such systems could benefit from NHRTs in principle, but when you have NHRTs you also have to deal with the limitations of immortal memory (no class unloading, easy leakage) and have everyone else pay a throughput price.

              There is still a lot of work ongoing in the GC area to tackle just these issues you raise.
              The "direct memory access" also sounds very good - especially if someone is planning to build some kind of Paging system for pure Java Databases/Caches etc. Explicit memory management is good, sometimes.
              The ability to get direct memory access depends on your host platform. The API's provided by RTSJ for this might be necessary but they aren't in themselves sufficient. Direct memory access makes most sense on embedded systems with no OS, or a very simple OS. Once you're on virtual memory systems direct memory access is not allowed without explicit kernel involvement - eg special loadable modules.

              Cheers,
              David Holmes
              • 4. Re: J2SE with some RTSJ features
                807557
                Realtime systems require specialized hardware and kernal to meet its objectives.

                IBM WRT V1 (Websphere realtime) runs on Real time Linux kernal only

                Sun RT supported on Solaris 10/SPARC and they have plan for windows and Linux.

                There is soft real time from both IBM and sun which include predictable GC performace for normal Java env (J2SE)
                • 5. Re: J2SE with some RTSJ features
                  807557
                  rijumr wrote:
                  Realtime systems require specialized hardware and kernal to meet its objectives.
                  Specialized hardware is not required in general. Of course you might have specialized needs that require specialized hardware.
                  Sun RT supported on Solaris 10/SPARC and they have plan for windows and Linux.
                  Solaris 10 on Sparc and x86

                  Linux is available in Early-access form for x86

                  No plans for Windows as stated above.
                  There is soft real time from both IBM and sun which include predictable GC performace for normal Java env (J2SE)
                  There are low pause-time collectors for J2SE but calling them predictable is stretching things somewhat in my view.

                  David Holmes