В Google рассматривают Swift как язык первого класса для Android
Константин Иванов
В то время как Swift становился открытым языком, представители трех крупнейших брендов, Google, Facebook и Uber обсуждали новый язык на встрече в Лондоне. Источники рассказали Next Web, что в Google рассматривают Swift как язык первого класса для Android, в то время как Facebook и Uber также предполагают более активно использовать Swift в своих операциях.
В настоящее время ОС Android поддерживает Java как язык первого класса, и, по словам источников, не предполагается, что Swift заменит Java, по крайней мере, вначале. Пока тянущееся судебное разбирательство с Oracle предоставляет основания для беспокойства, Google, как говорят, предполагает, что Swift имеет больший потенциал роста, чем Java.
Кроме того, Swift – еще и открытый язык, и это значит, что в Google могут приспособить его для Android, не меняя его собственной открытой мобильной структуры.
Получится ли у Google?
Созданный Apple в качестве замены Objective C, Swift быстро полюбился разработчикам как простой для написания программ язык, избавленный от загроможденности и неуклюжести параметров других языков. Он был представлен на WWDC 2014, получил большую поддержку со стороны IBM, а также ряд крупных приложений, таких как Lyft, Pixelmator и Vimeo, получили свои версии под iOS, переделанные на Swift.
Впрочем, Swift нельзя так просто взять и перенести на другую платформу. Конкретно Android потребуется время, чтобы создать среду выполнения Swift — и это только для начала.
Также Google придется адаптировать под Swift всю их библиотеку стандартов и обеспечить поддержку этого языка в API и SDK. Ряд низкоуровневых API на Android написаны на C++, к которому в настоящее время не может обращаться Swift. Их потребуется переписать.
Swift также не сможет обращаться к API более высокого уровня на Java, которые также нужно будет переписывать.
Использование Swift на Android, впрочем, нельзя назвать невозможным. В конце прошлого года разработчик Romain Goyet попробовал это сделать и добился определенного успеха. И несмотря на то, что проект был завершен до того, как Swift стал открытым, он, тем не менее, может послужить доказательством того, что такое возможно.
В проекте использовался Android NDK, который позволяет другим языкам свободно включаться в Android. При наличии открытого Swift и поддержки со стороны Google приложениям на Android этот набор утилит не потребуется.
В итоге Google нужно будет эффективно воспроизвести действия с Java — уже для Swift. При наличии у компании достаточной мотивации вполне возможно это сделать, не скомпрометировав принципа открытости и не затронув мимоходом интересов разработчиков.
Kotlin
Kotlin, который только развивает свой потенциал, также, по словам источников, обсуждается в качестве языка первого класса для Android.
Как и Swift, Kotlin – объектно-ориентированный язык, в котором упор делается на безопасности. Но в отличие от Swift, Kotlin работает с Android Studio, IDE Google для разработчиков под Android.
К сожалению, как узнали в Next Web, нынешняя позиция Google заключается в том, что Kotlin слишком медленный при компилировании.
Однако Kotlin считается языком, работающим «везде, где работает Java» и имеет «непрерывную» поддержку для проектов, объединяющих его и Java.
От Google потребуется значительно меньше усилий, чтобы использовать Kotlin для Android, но для разработчиков такой переход будет непростым.
Так когда случится переход на Swift?
Если вкратце, то не в ближайшее время. Потому что Android.
Но Swift быстро развивается. Ряд исследований показывает, что это самый быстро набирающий популярность язык программирования, а переход к открытости кода дал взрывной рост. По данным GitHub, это уже 11-й по популярности язык программирования. Спрос на программистов, пишущих на Swift, также растет взрывообразно, что сигнализирует всем компаниям, что по меньшей мере требуется изучать вопрос использования Swift в подробностях.
Переход Google на Swift будет весьма непростым и длительным процессом, поскольку это заставит переписать буквально каждый сервис Android, приложения для ОС и API. Компании Google также придется возглавить поддержку Swift для Android — которая до сих пор двигается вперед только благодаря тычкам и подталкиваниям наиболее способных разработчиков из комьюнити.
Однако Google уже начал вырываться из тисков принадлежащего Oracle языка Java. В настоящий момент компания использует Open JDK для Android вместо проприетарного Java API, а также весьма вероятно рассматривает возможность существования без Java вовсе. Переговоры в Лондоне называют предварительными; в Google пока нет необходимости отходить от Java. В то же время, это будет масштабным предприятием, Swift подразумевает быстроту и безопасность, а его программа развития показывает, что в будущем не составит большой проблемы использование на других платформах, особенно когда речь заходит о совмещении с С++.
Хотя Kotlin является альтернативой, этот язык находится в стадии становления, и у него нет такого нетерпеливого комьюнити, как у Swift. Компании Facebook и Uber столкнутся с такими же пугающими задачами, если решатся на самостоятельный переход на Swift, но вполне могут и должны будут подождать Google, которая подставит им свое плечо при переходе ОС Android. Если применение Swift станет массовым и повсеместным, то поддержка ОС Android станет встроенной.
Переход на Swift для любой из этих компаний имеет мало смысла без тотальной переработки всего, но может, это не так ужасно, как звучит. Сервисы наподобие Perfect показывают, что с сервисной стороны Swift полностью готов, и это, возможно, учтено инженерами Facebook, которые могут уже работать над этим решением.
Компания IBM также работает над тем, чтобы сделать Swift готовым к выполнению функций на стороне сервера.
Но не стоит ждать, что Google, Facebook или Uber объявят о каких-то планах по использованию Swift в ближайшее время. Facebook и Google в скором времени будут проводить конференции разработчиков, но нет никаких свидетельств, что на любой из них значительное внимание будет уделено Swift. Редакции The Next Web не удалось получить официальных комментариев от пресс-служб, хотя в Google особенно отметили, что судебная тяжба с Oracle – причина, по которой они не хотели бы выражать свое мнение по данному вопросу. Как хотите, так и понимайте.
Источник
Swift android что это
Copy raw contents
Copy raw contents
Getting Started with Swift on Android
The Swift stdlib can be compiled for Android armv7, x86_64, and aarch64 targets, which makes it possible to execute Swift code on a mobile device running Android or an emulator. This guide explains:
- How to run a simple «Hello, world» program on your Android device.
- How to run the Swift test suite on an Android device.
If you encounter any problems following the instructions below, please file a bug using https://bugs.swift.org/.
Let’s answer a few frequently asked questions right off the bat:
Does this mean I can write Android applications in Swift?
No. Although the Swift compiler is capable of compiling Swift code that runs on an Android device, it takes a lot more than just the Swift stdlib to write an app. You’d need some sort of framework to build a user interface for your application, which the Swift stdlib does not provide.
Alternatively, one could theoretically call into Java interfaces from Swift, but unlike as with Objective-C, the Swift compiler does nothing to facilitate Swift-to-Java bridging.
To follow along with this guide, you’ll need:
- A Linux environment capable of building Swift from source, preferably Ubuntu 18.04 or Ubuntu 16.04. Before attempting to build for Android, please make sure you are able to build for Linux by following the instructions in the Swift project README.
- The latest version of the Android NDK (r23b at the time of this writing), available to download here: https://developer.android.com/ndk/downloads/index.html.
- An Android device with remote debugging enabled or the emulator. We require remote debugging in order to deploy built stdlib products to the device. You may turn on remote debugging by following the official instructions: https://developer.chrome.com/devtools/docs/remote-debugging.
«Hello, world» on Android
1. Downloading (or building) the Swift Android stdlib dependencies
You may have noticed that, in order to build the Swift stdlib for Linux, you needed to apt-get install libicu-dev icu-devtools . Similarly, building the Swift stdlib for Android requires the libiconv and libicu libraries. However, you’ll need versions of these libraries that work on Android devices.
The steps are as follows:
- Ensure you have curl , autoconf , automake , libtool , and git installed.
- Clone the SwiftAndroid/libiconv-libicu-android project. From the command-line, run the following command: git clone https://github.com/SwiftAndroid/libiconv-libicu-android.git .
- From the command-line, run which ndk-build . Confirm that the path to the ndk-build executable in the Android NDK you downloaded is displayed. If not, you may need to add the Android NDK directory to your PATH .
- Change directories into libiconv-libicu-android : cd libiconv-libicu-android
- Run the Swift build script: ./build-swift.sh
- Confirm that the various libicuXYZswift.so libraries are located in the armeabi-v7a directory.
2. Building the Swift stdlib for Android
Enter your Swift directory, then run the build script, passing paths to the Android NDK, as well as the directories that contain the libicuucswift.so and libicui18nswift.so you downloaded or built in step one:
3. Compiling hello.swift to run on an Android device
Create a simple Swift file named hello.swift :
Then use the built Swift compiler from the previous step to compile a Swift source file, targeting Android:
This should produce a hello executable in the directory you executed the command. If you attempt to run this executable using your Linux environment, you’ll see the following error:
This is exactly the error we want: the executable is built to run on an Android device—it does not run on Linux. Next, let’s deploy it to an Android device in order to execute it.
4. Deploying the build products to the device
You can use the adb push command to copy build products from your Linux environment to your Android device. If you haven’t already installed adb , you may do so via apt-get :
Once you have adb installed, verify your device is connected and is listed when you run the adb devices command — currently this example works only in devices / emulators with at least Android 7.0, API 24 — then run the following commands to copy the Swift Android stdlib:
You will also need to push the icu libraries:
In addition, you’ll also need to copy the Android NDK’s libc++:
Finally, you’ll need to copy the hello executable you built in the previous step:
5. Running «Hello, world» on your Android device
You can use the adb shell command to execute the hello executable on the Android device:
You should see the following output:
Congratulations! You’ve just run your first Swift program on Android.
Running the Swift test suite hosted on an Android device
When running the test suite, build products are automatically pushed to your device. As in part four, you’ll need to connect your Android device via USB:
Источник
Kotlin и Swift. Новая эпоха в мобильной разработке?
Когда в Google объявили о том, что они теперь официально будут использовать Kotlin для разработки под Android, я, как и многие другие Android-разработчики, вздохнул с облегчением. Я еще раз зашел на официальный сайт Kotlin, чтобы перепроверить функционал/синтаксис и сравнить его с последней версией Swift, на котором сейчас пишу, и вдруг ощутил это: проходит одна эпоха и начинается новая, по крайней мере в мобильной разработке.
В Kotlin, как и в Swift довольно много синтаксического сахара, который снижает объемы обычной рутины (сравнение синтаксиса тут). Но что меня особенно радует — они оба, прям «из коробки», поддерживают новые парадигмы программирования. Особенно функциональное программирование.
Принципы функционального программирования, конечно, не являются чем-то новым в разработке, даже наоборот. Но теперь, когда есть официальная поддержка «из коробки» в разработке под iOS и Android — стоит пользоваться именно ими.
Когда я только начинал свою карьеру в мобильной разработке, все писали циклы как-то так:
Теперь же все используют функциональный подход, чтобы сделать все то же самое за один вызов, и этот подход намного лучше:
Блоки были представлены Apple для Objective-C в 2010 году (iOS SDK 4.0), чтобы улучшить жизнь разработчиков и соответствовать анонимным классам в Java, которые могут быть использованы как коллбэки:
Пример блока в Objective-C:
Пример анонимного класса в Java:
Лямбда-выражения в Java были представлены в 2014, как часть JDK 8, но к сожалению они не были доступны Android-разработчикам, потому что Android SDK поддерживает только JDK версии 7 (поэтому и есть такие библиотеки, как retrolambda).
Теперь же оба языка полностью поддерживают такой подход: в Swift — «замыкания» (то же самое, что блоки в Objective-C), а у Kotlin есть поддержка «лямбд», которая работает в Android SDK:
Пример замыкания в Swift:
Пример лямбды в Kotlin:
Начиная с Xcode 4, где-то с 2011, Objective-C предоставляет однострочную инициализацию для массивов и словарей:
Пример инициализация в Swift:
В JDK доступна только статическая инициализация, но нет способа инициализировать Map в одну строку. Функция Map.of которая позволяет это, была представлена только в JDK 9.
Пример статической инициализации в Java:
Но теперь Kotlin умеет делать так:
Еще одна вещь, которую я хочу выделить — Range операторы, которые делают вашу жизнь намного проще. Теперь вместо использования циклов for для простого обхода:
Вы можете делать в Kotlin так:
Или вот так в Swift:
Стоит еще упомянуть о кортежах (tuples). Они дают определенную свободу во взаимодействии с другими компонентами и помогают избегать создания дополнительных классов.
Итак, глядя на все эти новые «фичи» и многие-многие другие вещи, которые не упомянуты в этой статье — я бы предположил, что новая эпоха уже началась. Теперь всем новичкам, которые начинают свой путь в мобильной разработке, будут доступны все эти функции прямо «из коробки», и они смогут сократить затраты на рутинную разработку бизнес-логики и управление приложением. И это намного важнее, чем писать сотни строк для того чтоб сделать простой кусок работы. Конечно, раньше вы могли просто поставить и настроить дополнительную библиотеку, такую как PromiseKit, ReactiveCocoa, RxJava и т.п. Но я верю, что доступность этих парадигм и принципов — будет побуждать новых разработчиков использовать именно их, что приведет нас к светлому будущему. 🙂
Спасибо за внимание! Я надеюсь вам было интересно или, как минимум, это пост дал вам свежие идеи. Я пытался написать коротко, но если вам нужны более конкретные примеры и/или у вас есть предложения/замечания — пожалуйста, напишите в комментариях!
Источник