Hacker News new | ask | show | jobs
by pjmlp 3562 days ago
Just be aware that C and C++ are really meant for programming games, bringing code from other platforms or improve performance.

Trying to write an app that isn't a game will make you enjoy the pleasures of JNI calls, given the APIs exposed to the NDK.

2 comments

I know, since my first attempt was in Java to create a simple app. I know the NDK can be used to create OpenGLES guis, and access the sensors, but for a traditional app it's a lot of work.

Syntax is a subjective thing; I just don't like Java. I was hoping Google was going to come up with something (other than Go), for Android.

I have tried a lot of the work arounds, and simply put, Java is the way to do Android right, so I guess I need to get over it!

Yes, they have done a Reddit AMA a few months ago where they re-stated what they keep saying every time someone asks for an alternative at Google IO.

Java is and will keep being the only main language on Android, with a little help from C++ when needed.

https://www.reddit.com/r/androiddev/comments/4tm8i6/were_on_...

I am on a similar route, but I do like Java, what I dislike is their fork that prevents me to fully use Java™.

Would be a dream if they adopt Swift but then again, the history of blink/webkit fork does come to mind.
If no one used it, they wouldn't be adding better support for it.

The NDK is pervasively used by many many applications; that's why it's getting more support.

For some reason this seems unpopular with the android team, who seem to keep trying to avoid the issue when ever its raised at I/O...but hey, clearly at least someone is paying attention to what the statistics are showing.

Sure, it's some extra hoops to jump though; but shared business logic that you can use on any code base on any platform; that's a really really compelling reason to use the NDK, or one of the stacks based on it (eg. Xamarin, react native).

It's not just for some edge case. The biggest players in the field are doing this.

I think it's misrepresentative to try to characterize this as 'just for games'...

Personally I think they were forced to do it from the games industry, just like it happened with Windows Phone 7, which only allowed pure .NET applications.

However the Android team, which is composed by quite a few ex-Sun Java team members, seems to not share the same love for C++ as Microsoft or the even their own Google clang team do.

While I appreciate the safety we get from Java as the Android main language, Symbian, iOS and WP all managed to have native sandboxes.

> I think it's misrepresentative to try to characterize this as 'just for games'...

I don't think so, because although we are able to use the NDK for coding apps, that is clearly not what the Android team wants to allow us to do, given the list of official APIs, which are all to game development related, even POSIX is only partially supported.

Now in Android N there are changes in place to prevent linking to platform libraries written in C or C++ like libpng and Skia.

It is ironic that we are forced to use JNI to make calls into those platform libraries via their Java bindings.

Also I don't believe that if Jetbrains hadn't decided CLion would be a worthy product, the Android team would have spent any effort to improve the life of NDK developers stranded with their decision to drop Eclipse CDT without any alternative.