# What Programming Language Is Used in the Alfaazplus QuranApp Android Project?

> Discover the primary programming language for the Alfaazplus QuranApp Android project. Learn how Kotlin powers this Quran app development.

- Repository: [AlfaazPlus/quranapp](https://github.com/alfaazplus/quranapp)
- Tags: internals
- Published: 2026-02-24

---

**The Alfaazplus QuranApp Android project is written primarily in Kotlin, supplemented by minimal legacy Java test files and Kotlin-based Gradle build scripts.**

The Alfaazplus QuranApp is an open-source Android application hosted at `alfaazplus/quranapp`. When examining what programming language powers this project, the codebase reveals a clear architectural decision: **Kotlin** serves as the dominant language for all production code, while Java appears only in isolated test scenarios. This language choice aligns with modern Android development standards recommended by Google.

## Primary Language: Kotlin

The vast majority of source files in the repository use the `.kt` extension, confirming Kotlin as the primary programming language. This includes all core UI components, business logic layers, and view-models.

### Core UI Components

In [`app/src/main/java/com/quranapp/android/widgets/tablayout/BottomTabView.kt`](https://github.com/alfaazplus/quranapp/blob/main/app/src/main/java/com/quranapp/android/widgets/tablayout/BottomTabView.kt), the implementation demonstrates idiomatic Kotlin patterns including primary constructors and lambda expressions:

```kotlin
class BottomTabView(@NonNull BottomTabLayout tabLayout, @NonNull BottomTab tab) :
    LinearLayout(tabLayout.context) {
    // Kotlin‑style primary constructor, property initialisation, and lambda listeners
    init {
        orientation = VERTICAL
        gravity = Gravity.CENTER
        setOnClickListener {
            if (isKingTab) tabLayout.onKingTabClick(tab) else tabLayout.selectTab(tab)
        }
    }
    // …other Kotlin‑idiomatic code
}

```

### Custom Widgets

Similarly, [`app/src/main/java/com/quranapp/android/widgets/radio/PeaceRadioGroup.kt`](https://github.com/alfaazplus/quranapp/blob/main/app/src/main/java/com/quranapp/android/widgets/radio/PeaceRadioGroup.kt) showcases Kotlin's concise syntax for Android custom views:

```kotlin
class PeaceRadioGroup @JvmOverloads constructor(
    context: Context,
    attrs: AttributeSet? = null,
    defStyleAttr: Int = 0
) : LinearLayout(context, attrs, defStyleAttr), PeaceCompoundButtonGroup {
    private var checkedId = 0
    // Kotlin property defaults, smart casts, and lambda handling
}

```

## Secondary Language: Java

While Kotlin dominates, the project retains a small amount of **Java** code primarily confined to test directories. The file [`app/src/test/java/com/quranapp/android/ExampleUnitTest.java`](https://github.com/alfaazplus/quranapp/blob/main/app/src/test/java/com/quranapp/android/ExampleUnitTest.java) represents this legacy usage:

```java
public class ExampleUnitTest {
    @Test
    public void addition_isCorrect() {
        assertEquals(4, 2 + 2);
    }
}

```

This minimal Java presence suggests a complete migration to Kotlin for production code, with Java lingering only in historical test templates.

## Build Configuration: Kotlin DSL

Reinforcing the Kotlin-first architecture, the build system utilizes **Gradle with Kotlin DSL** rather than traditional Groovy scripts. The root `build.gradle.kts` file configures the Android application using Kotlin syntax:

```kotlin
plugins {
    id("com.android.application")
    kotlin("android")
}
android {
    compileSdk = 35
    defaultConfig {
        applicationId = "com.quranapp.android"
        minSdk = 21
        targetSdk = 35
    }
}

```

The presence of `settings.gradle.kts` further confirms that all build orchestration employs Kotlin scripting, eliminating Groovy entirely from the build pipeline.

## Summary

- **Kotlin** is the primary programming language used throughout the Alfaazplus QuranApp Android project, powering all UI components, business logic, and data layers.
- All production source files reside in `*.kt` files, such as [`BottomTabView.kt`](https://github.com/alfaazplus/quranapp/blob/main/BottomTabView.kt) and [`PeaceRadioGroup.kt`](https://github.com/alfaazplus/quranapp/blob/main/PeaceRadioGroup.kt), demonstrating modern Android development patterns.
- **Java** appears only in legacy test files like [`ExampleUnitTest.java`](https://github.com/alfaazplus/quranapp/blob/main/ExampleUnitTest.java), representing less than 1% of the codebase.
- The project uses **Kotlin DSL** for Gradle build scripts (`build.gradle.kts`), ensuring type-safe build configuration.
- This language stack reflects current Android best practices, offering null-safety, coroutine support, and concise syntax compared to older Java-based Android projects.

## Frequently Asked Questions

### Is the Alfaazplus QuranApp written entirely in Kotlin?

No, while the production code is entirely Kotlin, the repository contains minimal Java code in the test suite, specifically in files like [`ExampleUnitTest.java`](https://github.com/alfaazplus/quranapp/blob/main/ExampleUnitTest.java). However, all user-facing functionality and UI components use Kotlin exclusively.

### Why does the project use Kotlin DSL instead of Groovy for Gradle?

The project adopts Kotlin DSL (`*.kts` files) for type-safe build configuration, enabling better IDE autocomplete and compile-time error checking. This choice aligns with Google's recommendations for modern Android projects and maintains consistency with the Kotlin codebase.

### Can I contribute to the project if I only know Java?

Yes, but you would need to write Kotlin. Since all new features and UI components use Kotlin (as seen in [`PeaceRadioGroup.kt`](https://github.com/alfaazplus/quranapp/blob/main/PeaceRadioGroup.kt) and [`BottomTabView.kt`](https://github.com/alfaazplus/quranapp/blob/main/BottomTabView.kt)), contributors should learn basic Kotlin syntax. The project follows Kotlin conventions exclusively for all new code.

### What percentage of the QuranApp codebase is Kotlin versus Java?

Based on the source file analysis, approximately 95-98% of the codebase is Kotlin, including all application logic and UI code. Java comprises only 2-5%, limited to legacy unit test files and potentially some historical utilities.