Skip to main content

Kotlin, the Swift of Android

Now that Apple replaced Objective-C with Swift for iOS, the lack of a less archaic language for Android development has become more apparent.

For the desperate and adventurous there are the JVM alternatives like Scala and Groovy, but using them with Android is expensive: importing a language means importing the whole runtime, which is a nightmare for the package size and method count. Fine for small applications, but they are not what you are trying to solve with a better language.

Kotlin
Introducing Kotlin -- JVM-based language made by JetBrains (folks behind IntelliJ IDEA and, by extension, Android Studio) and named after an island near Saint Petersburg, which is where the development office behind the project is located. Introduced in 2011, it's been around for a few years now and the Android support came in the second milestone release (M2).

Expecting the standard reaction: yes, another JVM alternative, but this one is specifically designed to be light by excluding all the domain-specific heft and only keeping the core features missing from Java. If that sounds good, read on.

Mike Gouline
Official Kotlin Blog

Kotlin is coming!



Trends Google

The Dark Path

Over the last few months I’ve dabbled in two new languages. Swift and Kotlin. These two languages have a number of similarities. Indeed, the similarities are so stark that I wonder if this isn’t a new trend in our language churn. If so, it is a dark path.

The Clean Code Blog (Robert C. Martin)

Comments

Most Favorite Posts

How to link to TestFlight App in iOS

There are two things you need to do. First, check to see if TestFlight is installed. Then create a new link to your app. NSURL *customAppURL = [NSURL URLWithString:@"itms-beta://"]; if ([[UIApplication sharedApplication] canOpenURL:customAppURL]) {     // TestFlight is installed     // Special link that includes the app's Apple ID     customAppURL = [NSURL URLWithString:@"https://beta.itunes.apple.com/v1/app/978489855"];      [[UIApplication sharedApplication] openURL:customAppURL]; } This special https://beta.itunes.apple.com URL will be opened directly in TestFlight. Finally, if you are using iOS 9 (or later), you need to make an addition to your Info.plist to get the canOpenURL: method to work. If your app is linked on or after iOS 9.0, you must declare the URL schemes you want to pass to this method. Do this by using the LSApplicationQueriesSchemes array in your Xcode project’s Info.plist file. For each URL scheme you wan...

Working natively with JavaScript in iOS and Android without WebView

Using JavaScript code from native code without using a WebView (sic!) can be really useful to introduce dynamic functionality that was updatable without need of updating the app shorter iteration cycles share code between backend and native iOS and Android apps You can have business logic provided by a JavaScript that then controls the app that inject native functionality in the JavaScript context. You could even write an A/B testing framework based on this approach. iOS iOS offers the native JavaScriptCore: Evaluate JavaScript programs from within an app, and support JavaScript scripting of your app. So you can evaluate a script and read its return value natively: context.evaluateScript(myLib); let result = context.evaluateScript("myFunction();") let myFunction = context.objectForKeyedSubscription("myFunction"); let parametrizedResult = myFunction.invokeMethod(...) Or you can inject a native object into the JavaScript engine: @objc protoco...

Validity Time Auto-Renewables in Sandbox

The subscription durations, sandbox durations and incentive durations of auto-renewables. Hint: In Sandbox the validity time differs from live environment!!! Durations Sandbox Duration Incentive Durations (optional) 7 days 3 minutes 7 days 1 month 5 minutes 7 days, 1 month 2 months 10 minutes 7 days, 1 month 3 months 15 minutes 1 month 6 months 30 minutes 1 month, 2 months 1 year 1 hour 1 month, 2 months, 3 months After 6 extensions the abo is cancelled automatically in the sandbox environment.

Xcode 7.2: Refactoring not supported for Swift... but there is a plugin!

but... there is a plugin for that: Refactorator GitHub

Bundeskartellamt prüft Apples Tracking-Regelungen für Dritt-Apps (ATT, App Tracking Transparency Framework)

Das Bundeskartellamt hat gegen das Technologieunternehmen Apple ein Verfahren zur kartellrechtlichen Prüfung seiner Tracking-Regelungen sowie des App Tracking Transparency Framework eingeleitet. Das Bundeskartellamt geht dabei insbesondere dem Anfangsverdacht nach, dass diese Regelungen Apples eigene Angebote bevorzugt behandeln und/oder andere Unternehmen behindern könnten. 14.06.2022 Pressemeldung Bundeskartellamt

How to access specific settings in the iOS settings app

Apple Settings App Open the preference / settings app. You can open the app at different pages Native application URL string example: prefs:root=General&path=Bluetooth Extended example: Tags: settings preferences Airplane mode: prefs:root=AIRPLANE_MODE Bluetooth: prefs:root=General&path=Bluetooth Brightness: prefs:root=Brightness Location services: prefs:root=LOCATION_SERVICES Location services (System services): prefs:root=LOCATION_SERVICES_Systemservices Hotspots: prefs:root=Hotspot WLAN: prefs:root=WIFI UMTS-Settings: prefs:root=General&path=Network Mobile data: prefs:root=General&path=USAGE/CELLULAR_USAGE VPN: prefs:root=General&path=Network/VPN Sound: prefs:root=Sounds Rigntone: prefs:root=Sounds&path=Ringtone Siri speech settings: prefs:root=General&path=Assistant handleopenurl.com

Tips for working with Firebase Remote Config

Caching As long as we're talking about loading strategies, let me hit on a related topic; caching. It sometimes confuses developers that values from remote config are cached for 12 hours instead of being grabbed immediately every time you call fetch(). And while you can reduce this cache time somewhat, if you start making network calls too frequently, your app might start getting throttled, either by the client, or the Remote Config service. Obviously, while you're developing and testing your Remote Config implementation, this can be inconvenient, which is why you can override the local throttling behavior by turning on developer mode . Force Update of Remote Config With Firebase Cloud Messaging, you can send a data-only notification to all of your devices, letting them know that there's an urgent update pending. Your apps can respond to this incoming notification by storing some kind of flag locally. The next time your user starts up your app, it can look for thi...