I'm look at a embedded project that needs a LCD multitouch screen, LCD driver, a webkit browser, Avahi, a web server, and our engine written in C++.
Android on first glance looks like it has most of the right components out of the box with the least modification... But the use of a JVM seems to be heavyweight for a small memory footprint embedded device (128-196MB min) and besides our code is C++. It looks like you can't yank the JVM out because major OS components are running in Java (true?).
Linux appears to have most of the pieces that can be put together, without the unnecessary cruft. Here are the major questions:
The advantages of embedded Linux over proprietary embedded operating systems include multiple suppliers for software, development and support; no royalties or licensing fees; a stable kernel; the ability to read, modify and redistribute the source code.
Linux is the premier choice by developers of embedded applications for several reasons: from being open-source to scalability, developer support, and tooling, myriad arguments justify why Linux is a great candidate for embedded systems.
Compared to proprietary embedded operating systems, Linux is low cost; it allows for multiple suppliers of software, development and support; it has a stable kernel; and it facilitates the ability to read, modify and redistribute the source code.
Android Embedded Systems BasicsAndroid uses the Linux kernel with some adjustments. However, it differs fundamentally from common Linux distributions, such as Debian /Raspbian/Alpine Linux. It is the Linux kernel that communicates directly with the underlying hardware configuration.
There are a number of misconceptions in your post. I'm going to start by enumerating your questions and answers:
That all depends on what window manager you choose to use. My instinct here is anything with close to mature touch support at this point is going to be as heavy or heavier than android.
Android does not use JVM. Android uses the java language, but uses the dalvik virtual machine which is designed for embedded devices. The commonality ends at the fact that they're virtual machines.
You can write large portions of your app in C or C++ using the NDK, however, any module written that way needs to be called through an android written using the java/dalvik SDK. That way, any performance critical module such as doing extensive calculations can be native, but the gui layer would not be (although usually with a GUI layer performance is less likely to be a concern). The native android windowing and UI libraries are written in Java, you would have to redo much of the work to get usable UI elements in the NDK as Google didn't intend the NDK for that.
My advice here is to prototype the app using the normal SDK, leave stubs for anything that would benefit from hardware acceleration (Keep it modular so it's not too interdependent)
Depends on the window manager you use. No matter what you choose you'll likely need to fool around until you find viable combinations of everything. There is no one great integrated distro solution that I know of (although others may). My impression of the lay of the land is that there's not a lot done on this front.
The final thing I want to add is well written java code executing in Dalvik (or even JVM) can run close to the speed of native code. If you know what you're doing and understand when something is a reference, what collection types to use for what purpose (hint: Not everything is an array), and aren't replicating objects all over the place, Java is pretty good.
I'm not talking from experience, but take a look at http://www.omgubuntu.co.uk/2012/02/kde-spark-tablet-opens-pre-order-registration/ or even easier at https://www.google.com/search?q=ubuntu+touch+interface
So yes, Linux has support for touch. Not sure about multi-touch though, as far as i know its there(but i have 0 experience).
As for scrolling and zooming, i guess it will all depend on what you use in the back. The real question should be if webkit supports smooth-scrolling and zooming(if you plan to run your application in a browser as i understand).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With