Java / Kotlin SDK

JVM SDK for JustAnalytics distributed tracing and error tracking.

Installation#

Add the JitPack repository to your build file:

Gradle (Kotlin DSL)#

// settings.gradle.kts
dependencyResolutionManagement {
    repositories {
        mavenCentral()
        maven("https://jitpack.io")
    }
}

// build.gradle.kts
dependencies {
    implementation("com.github.specifiedcodes.justanalytics-java:justanalytics-core:0.1.0")
}

Gradle (Groovy)#

// settings.gradle
repositories {
    mavenCentral()
    maven { url 'https://jitpack.io' }
}

// build.gradle
dependencies {
    implementation 'com.github.specifiedcodes.justanalytics-java:justanalytics-core:0.1.0'
}

Maven#

<repositories>
    <repository>
        <id>jitpack.io</id>
        <url>https://jitpack.io</url>
    </repository>
</repositories>

<dependency>
    <groupId>com.github.specifiedcodes.justanalytics-java</groupId>
    <artifactId>justanalytics-core</artifactId>
    <version>0.1.0</version>
</dependency>

Quick Start (Kotlin)#

import com.justanalytics.JustAnalytics

fun main() {
    JustAnalytics.init(
        siteId = System.getenv("JUSTANALYTICS_SITE_ID"),
        apiKey = System.getenv("JUSTANALYTICS_API_KEY"),
        serviceName = "kotlin-api",
        environment = "production"
    )
}

Quick Start (Java)#

import com.justanalytics.JustAnalytics;

public class Application {
    public static void main(String[] args) {
        JustAnalytics.init(JustAnalytics.Options.builder()
            .siteId(System.getenv("JUSTANALYTICS_SITE_ID"))
            .apiKey(System.getenv("JUSTANALYTICS_API_KEY"))
            .serviceName("java-api")
            .environment("production")
            .build());
    }
}

Tracing (Kotlin)#

val result = JustAnalytics.startSpan("process-order") { span ->
    span.setAttribute("order.id", orderId)

    val user = JustAnalytics.startSpan("fetch-user") {
        userRepository.findById(userId)
    }

    ProcessResult(success = true, user = user)
}

Tracing (Java)#

var result = JustAnalytics.startSpan("process-order", span -> {
    span.setAttribute("order.id", orderId);

    var user = JustAnalytics.startSpan("fetch-user", s -> {
        return userRepository.findById(userId);
    });

    return new ProcessResult(true, user);
});

Error Tracking#

try {
    riskyOperation()
} catch (e: Exception) {
    JustAnalytics.captureException(e, mapOf("module" to "payments"))
}

Spring Boot Integration#

// application.yml
justanalytics:
  site-id: ${JUSTANALYTICS_SITE_ID}
  api-key: ${JUSTANALYTICS_API_KEY}
  service-name: spring-boot-app
// Auto-instruments:
// - Spring MVC / WebFlux requests
// - JDBC queries
// - Spring Data repositories
// - RestTemplate / WebClient HTTP calls
// - Scheduled tasks

Custom Metrics#

JustAnalytics.recordMetric("custom.queue_size", 42.0, mapOf("queue" to "emails"))

Requirements#

  • Java 17+ / Kotlin 1.8+
  • Spring Boot 3.0+ (for Spring integration)