What Programming Language Is Used in the Alfaazplus QuranApp Android Project?
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, the implementation demonstrates idiomatic Kotlin patterns including primary constructors and lambda expressions:
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 showcases Kotlin's concise syntax for Android custom views:
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 represents this legacy usage:
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:
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
*.ktfiles, such asBottomTabView.ktandPeaceRadioGroup.kt, demonstrating modern Android development patterns. - Java appears only in legacy test files like
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. 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 and 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.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →