cnlohr / rawdrawandroid

Build android apps without any java, entirely in C and Make
MIT License
3.55k stars 226 forks source link

Does this mean that Android can be used for real-time computing? #48

Closed mavavilj closed 1 year ago

mavavilj commented 2 years ago

Does this mean that Android can be used for real-time computing?

https://ieeexplore.ieee.org/document/6454350

dreua commented 2 years ago

I don't see how this is related to rawdrawandroid. Furthermore the last paragraph oft the abstract sounds like the answer is no.

Our testing results showed that Android in its current state cannot be qualified to be used in real-time environments.

mavavilj commented 2 years ago

It's related in the sense that I was looking for rawdrawandroid to implement a C/C++ app without Java and its GC. Then, in reference to the Oboe C++ library, I thought that this would allow e.g. C++ level audio I/O latency. If it doesn't pass through the JVM and JNI, then I thought this library would be as fast as native C/C++ on desktop.

If this is not the case, then I don't understand what's the benefit of doing an unofficial port, when it's officially suggested to use Kotlin.

The quote you give is obviously w.r.t. to Java/Kotlin, and it's intuitive that it's not a RT language technology due to the limitations that the GC produces.

mavavilj commented 2 years ago

The paper also gives info in the last paragraph regarding potential solutions, so perhaps this library does not in fact change anything about Android, but just programs it in C/C++.

They also write:

As such, a lot of open source C/C++ applications cannot be built for Android.

Which also suggests that the path of "raw C/C++" may be flawed on Android. So I am going back to Kotlin. I was very interested in the library for not having to write any Java though.

mavavilj commented 2 years ago

I still wonder though, whether this allows it so that there's no latency induced by the JNI? In other words, if one writes a GUI with this and e.g. signal processing using some C library, then all calls between the GUI and the DSP would have no added latency between except for that produced by C code statements.

dreua commented 2 years ago

I understand your question now, unfortunately there seems to be no one here who has the answer. AFAIK, RT was never a goal of this project.

MatejMagat305 commented 1 year ago

I think that It is almost 100% true that pure C will not have GC latency and at certain will have less RAM consumtion and will be more realtime than java

dreua commented 1 year ago

I think this is answered as far as possible.