Is jMonkey primarily used for developing only games?

I want to know if JME can be used for developing serious mobile applications that works for cross platform and not just for games alone. For example, i recently published this app and which is currently only available for Android devices because it was built using Android studio and would like to know if i can create such using JME?

I took a look at the page you linked to, but it does not give any details what the app actually does.
But, to answer your question, JME3 is designed primarily for games, but you can use it for other purposes. For example, I used it to create 3D renderings for my math puzzles at

1 Like

Of course, I’m using Android Studio to develop my JME application rightnow.
All you have to do is check threads with key word “android studio”.
there are also samples in github.

1 Like

Okay thanks :slight_smile:

IMHO, if your app requires purely a 2D GUI and you do not need 3D rendering,… you might better use JavaFX which supports Android (arm64 only I think), iOS as well as Desktop and has a rich UI, or if you are familiar with Kotlin you might consider JetBrains Compose Multiplatform framework (it is based on android Jetpack Compose)


But this requires me to learn the Kotlin programming language and which sounds like starting all over again because i currently only know how to code in Java, and i don’t plan to learn another programming language. That’s why i’m thinking if i could achieve the multiplatform effect by just using JME3 since it’s primarily written in Java.

1 Like

Kotlin runs on a JVM so it can’t be that different

But at least they have a slight little different syntax.
Just imagine that kind of code written in Kotlin from the image above.
What if i plan to call the same action on another view, does it mean i have to rewrite those code in my second view.setOnClickListener?
For example in Kotlin:

    fun example() {
        val view = findViewById(
        view.setOnClickListener {
            Log.d("TAG", "Item Clicked!")
        val view2 = findViewById(
        view2.setOnClickListener {
            Log.d("TAG", "Item Clicked!")

Although i know i can just simply create a method for that. But in Java, all i have to do is just to simply create an object and then reassign the instance :slight_smile:
For example:

    private View.OnClickListener logActionListener = new View.OnClickListener() {
        public void onClick(View v) {
            Log.d("TAG", "Item Clicked!");

    void example() {
        View view = findViewById(;
        val view2 = findViewById(;

Whatever you can do in Java you can do in Kotlin… but count me in the camp that likes Java and strongly dislikes Kotlin. It’s mostly personal preference but I find kotlin a little ugly and I can’t quite put my finger on why.