Ответ
Для нативной разработки используются языки и инструменты, предоставляемые и рекомендуемые владельцем платформы (Apple, Google, Microsoft). Это гарантирует полную совместимость, высокую производительность и доступ ко всем функциям устройства.
Основные языки по платформам:
| Платформа | Основной язык (рекомендуемый) | Альтернативный / Legacy язык | Ключевые фреймворки |
|---|---|---|---|
| iOS / iPadOS / macOS | Swift (современный, безопасный, высокопроизводительный) | Objective-C (для поддержки старых проектов) | UIKit, SwiftUI |
| Android | Kotlin (официально рекомендован Google с 2019 г.) | Java (традиционный, огромная кодовая база) | Android SDK, Jetpack (AndroidX) |
| Windows | C# (основной для прикладного ПО) | C++ (для системного ПО, игр, драйверов) | .NET, UWP, WinUI, WPF |
Пример: Базовая активность на Android (Kotlin)
package com.example.myfirstapp
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.Toast
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main) // Связь с XML-макетом
// Находим кнопку по ID и вешаем обработчик клика
val myButton: Button = findViewById(R.id.my_button)
myButton.setOnClickListener {
// Действие при клике
Toast.makeText(this, "Button clicked!", Toast.LENGTH_SHORT).show()
}
}
}
Пример: Контроллер представления на iOS (Swift + UIKit)
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var greetingLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// Настройка представления после загрузки
greetingLabel.text = "Welcome"
}
@IBAction func buttonTapped(_ sender: UIButton) {
// Действие при нажатии кнопки (связь через Storyboard)
greetingLabel.text = "Hello, iOS!"
}
}
Почему выбор языка важен для тестирования:
- Инструменты автоматизации часто привязаны к языку и фреймворку:
- iOS: XCUITest (на Swift/Objective-C), EarlGrey.
- Android: Espresso (Kotlin/Java), UIAutomator.
- Понимание крэшей: Логи падения приложения (stack traces) будут содержать названия классов и методов на языке разработки. Знание Swift/Kotlin помогает быстрее локализовать проблему.
- Особенности платформы: Зная, что iOS использует Automatic Reference Counting (ARC), а в Kotlin/Java есть Garbage Collector, можно по-разному интерпретировать проблемы с памятью.