<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/party-clicker-time--9t36r9zvv" -->

---
title: Party (clicker) Time! | daily.dev
description: Doppl (built on J2objc) enables sharing Java code between Android and iOS apps, including business logic, data access, and presenters — everything except the...
canonical: https://daily.dev/posts/party-clicker-time--9t36r9zvv
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Party (clicker) Time! | daily.dev
og:description: Doppl (built on J2objc) enables sharing Java code between Android and iOS apps, including business logic, data access, and presenters — everything except the...
og:url: https://daily.dev/posts/party-clicker-time--9t36r9zvv
og:image: https://api.daily.dev/og/posts/9T36R9zvv.png
og:image:alt: Party (clicker) Time!
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Party (clicker) Time!

**[Touchlab](https://daily.dev/sources/touchlab)** · 7 min read · 0 upvotes · 0 comments

## Summary

Doppl (built on J2objc) enables sharing Java code between Android and iOS apps, including business logic, data access, and presenters — everything except the UI. A sample Party Clicker app demonstrates the approach using MVP architecture, SQLite via multiple ORM options (Squeaky, SQLDelight, greenDAO, SQLCipher), Dagger for dependency injection, and unit tests that run on both platforms. The core idea: write shared logic once with platform-specific UI interfaces, and run the same unit tests in Android Studio and Xcode.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://touchlab.co/2017-5-party-clicker-time>

## Similar posts on daily.dev

- [Building a Real-World Kotlin Multiplatform TV Shows App](https://daily.dev/posts/building-a-real-world-kotlin-multiplatform-tv-shows-app-7wrjfcriy) · Medium · 0 upvotes · 0 comments
- [Why we love multiplatform with Kotlin and Compose](https://daily.dev/posts/why-we-love-multiplatform-with-kotlin-and-compose-ygw5twyaa) · Q42 Engineering · 0 upvotes · 0 comments
- [Building & Deploying a simple KMP app — Part 4: Dependency injection](https://daily.dev/posts/building-deploying-a-simple-kmp-app-part-4-dependency-injection-bsi12alag) · ProAndroidDev · 0 upvotes · 0 comments
- [Introduction to Cross-Platform Java Development With Codename One](https://daily.dev/posts/introduction-to-cross-platform-java-development-with-codename-one-equaxwt04) · Baeldung · 12 upvotes · 0 comments

---

Tags: [#java](https://daily.dev/tags/java), [#android](https://daily.dev/tags/android), [#ios](https://daily.dev/tags/ios)

[View this post on daily.dev](https://daily.dev/posts/party-clicker-time--9t36r9zvv)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Party (clicker) Time!","url":"https://daily.dev/posts/party-clicker-time--9t36r9zvv","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/party-clicker-time--9t36r9zvv"},"datePublished":"2026-08-02T07:15:08.261Z","dateModified":"2026-08-02T07:33:18.125Z","description":"Doppl (built on J2objc) enables sharing Java code between Android and iOS apps, including business logic, data access, and presenters — everything except the...","image":"https://media.daily.dev/image/upload/s--qPvKM23u--/f_auto/v1722860399/public/Placeholder%2009","thumbnailUrl":"https://media.daily.dev/image/upload/s--qPvKM23u--/f_auto/v1722860399/public/Placeholder%2009","isAccessibleForFree":true,"articleSection":"Touchlab","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Touchlab","logo":"https://media.daily.dev/image/upload/s--CQ0u6GwB--/f_auto,q_auto/v1785654902/logos/touchlab?_a=BAMAMicg0","url":"https://daily.dev/sources/touchlab"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/party-clicker-time--9t36r9zvv","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"java,android,ios","timeRequired":"PT7M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Touchlab","item":"https://daily.dev/sources/touchlab"},{"@type":"ListItem","position":3,"name":"Party (clicker) Time!"}]}
```

