Swift on Android

SwiftRumor has it that Google may be considering making Apple’s Swift a first class language for Android development. Predictably, the internet has been pretty excited about this possibility. My lack of enthusiasm for Swift has been fairly well document, so I’m going to keep my comments to a minimum.  Swift on Android shares the same API problem as Swift on iOS and this likely has more to do with legal wrangling than technology.

Java and Objective-C are very object oriented languages and the Android SDK and Cocoa Touch APIs reflect that. Swift is a far more functional language than either of them. “Good Swift”, which I have been told is functional and not just “Objective-C in Swift” doesn’t really go so well with a OO designed API on Apple’s platform. Why should that problem not exist on Android as well? Maybe Google and Apple will rewrite their SDKs to be more functional, but that’s not where they are right now.

Oracle is suing Google and has been suing Google for Android’s use of the Java programming language, which Oracle acquired in its acquisition of Sun. The lawsuit is ridiculous and a destructive waste of resources, but that’s a pretty fair description of the US legal system, so it is likely to continue to be an ongoing concern for Google. If Google were to stop using Java on Android, that might put them in a better position regarding the suit and it’s pretty clear that the licensing on Swift would prevent any similar issue from cropping up between Apple and Google.

Yes, I’m admittedly bias, but it’s important to think about the practical and ulterior motives that Google might have for adopting Swift and not just blindly jump aboard the hype train. Swift is a decent programming language, but it’s not the right solution to every problem and we should only make changes when it makes sense to do so. Let me know what you think on Twitter or Google+.

  • Just listened to the latest ep of CoderRadio and your discussion of this matter. What are your thoughts on Google switching Android over to OpenJDK? I know it’s pretty different from Oracle’s Java, but it might make for a better transition target than Swift, right?