Библиотеки Java, драйверы и модули Spring для Azure
Twitter LinkedIn Facebook Адрес электронной почты
- Статья
- Чтение занимает 4 мин
Эта статья содержит ссылки на библиотеки Java, драйверы, модули Spring и связанные статьи, доступные для использования с Azure.
Цель Корпорации Майкрософт — предоставить каждому разработчику возможность добиться большего, и наша приверженность разработчикам Java не является исключением. Разработчики Java и Spring хотят использовать идиоматические библиотеки для упрощения подключений к предпочитаемым облачным службам. Эти библиотеки, драйверы и модули позволяют легко взаимодействовать со службами Azure между данными, сообщениями, кэшем, хранилищем, событиями, каталогами и секретами. Используйте следующую таблицу, чтобы найти нужную библиотеку, драйвер или модуль и руководства для начала работы.
Категория | Служба Azure | Библиотека Или драйвер Java | Начало работы с Java | Модуль Spring | Начало работы с Spring |
---|---|---|---|---|---|
Данные | База данных SQL | База данных SQL драйвер JDBC | Использование Java и JDBC с Базой данных SQL Azure | Spring Data: • JDBC • JPA • R2DBC | Используйте Spring Data с базой данных Azure SQL: • JDBC • JPA • R2DBC |
Данные | MySQL | Драйвер JDBC MySQL | Краткое руководство. | Spring Data: • JDBC • JPA • R2DBC | Используйте Spring Data с База данных Azure для MySQL: • JDBC • JPA • R2DBC |
Данные | PostgreSQL | Драйвер JDBC postgreSQL | Краткое руководство. Использование Java и JDBC с Гибким сервером Базы данных Azure для PostgreSQL | Spring Data: • JDBC • JPA • R2DBC | Используйте Spring Data с База данных Azure для PostgreSQL: • JDBC • JPA • R2DBC |
Данные | MariaDB | Драйвер MariaDB | Совместимость драйверов и инструментов управления MariaDB с базой данных Azure для MariaDB. | Spring Data: • JDBC • JPA • R2DBC | Используйте Spring Data с База данных Azure для MySQL: • JDBC • JPA • R2DBC |
Данные | Cosmos DB — SQL | Репозиторий Maven: com.azure » azure-cosmos | Краткое руководство. Создание приложения Java для управления данными API SQL для Azure Cosmos DB | Spring Data Cosmos DB | Использование начального приложения Spring Boot с API SQL Azure Cosmos DB |
Данные | Cosmos DB — MongoDB | Драйверы Java для MongoDB | Краткое руководство. Создание консольного приложения с использованием Java и API MongoDB в Azure Cosmos DB | Spring Data MongoDB | Как использовать API MongoDB Spring Data с Azure Cosmos DB |
Данные | Cosmos DB — Cassandra | Драйвер Java datastax для Apache Cassandra | Создание приложения Java для управления данными API Cassandra в Azure Cosmos DB (драйвер версии 4) | Spring Data для Apache Cassandra | Как использовать API Apache Cassandra Spring Data с Azure Cosmos DB |
Данные | Cosmos DB — Gremlin | Драйвер Gremlin Java | Краткое руководство. Создание графовой базы данных с помощью пакета SDK для Java и API Gremlin для Azure Cosmos DB | Краткое руководство. Создание графовой базы данных с помощью пакета SDK для Java и API Gremlin для Azure Cosmos DB | |
Кэш | Redis | Клиент JEDIS | Краткое руководство. Использование Кэша Azure для Redis с приложениями Java | • Spring Data Redis • Справочник • Поддержка Spring Cloud Для Redis | Настройка приложения Spring Boot Initializr для использования в облаке кэша Redis для Azure |
Кэш | Redis | Клиент LETTUCE | Рекомендации по использованию Кэш Azure для Redis с Lettuce | • Spring Data Redis • Справочник • Поддержка Spring Cloud Для Redis | Настройка приложения Spring Boot Initializr для использования в облаке кэша Redis для Azure |
Хранилище | Хранилище Azure | Репозиторий Maven: com.azure » azure-storage-blob | Краткое руководство. Управление большими двоичными объектами с помощью пакета SDK для Java версии 12 | Передача ресурсов Azure Spring Cloud | Как использовать Spring Boot Starter со службой хранилища Azure |
Обмен сообщениями | Служебная шина | JMS + AMQP | Отправка сообщений в раздел Служебная шина Azure и получение сообщений из подписок на раздел | • Spring AMQP • Поддержка Spring Cloud Azure JMS | Использование начального модуля Spring Boot для Служебная шина Azure JMS |
Обмен сообщениями | Служебная шина | клиентская библиотека Служебная шина Azure для Java | клиентская библиотека примеров Служебная шина Azure для Java | • Spring AMQP • Интеграция Spring с Служебная шина Azure • Spring Cloud Stream Binder для Служебная шина Azure | Использование Spring Cloud Azure Stream Binder для служебной шины Azure |
Обработка событий | Центры событий | Kafka | Отправка и получение сообщений в Java с помощью Центры событий Azure для экосистем Apache Kafka | • Spring для Apache Kafka • Поддержка Azure Kafka в Spring Cloud | How to use the Spring Boot Starter for Apache Kafka with Azure Event Hubs (Использование начального приложения Spring Boot для Apache Kafka в Центрах событий) |
Обработка событий | Центры событий | библиотеки Центры событий Azure для Java | Использование Java для отправки и получения событий в Центрах событий Azure | Spring Cloud Stream Binder для Центров событий | Создание приложения Spring Cloud Stream Binder с помощью Центров событий Azure |
Каталог | Azure Active Directory | MSAL | Включение входа пользователей в приложения Java Servlet в Azure AD | начальный Azure AD Spring Boot | Включение веб-приложений Spring Boot для входа пользователей в Azure AD |
Каталог | Azure Active Directory B2C | MSAL | Включение приложений Java Servlet для входа пользователей в Azure AD B2C | начальный Azure AD B2C Spring Boot | Включение веб-приложений Spring Boot для входа пользователей в Azure AD B2C |
Секреты | Key Vault | секреты Key Vault | Управление секретами с помощью Key Vault | Начальный Key Vault Секреты Spring Boot | Управление секретами для приложений Spring Boot |
Сертификаты | Key Vault | JCA сертификатов Key Vault | Начальный Key Vault сертификатов Spring Boot | Управление сертификатами для приложений Spring Boot |
Все остальные библиотеки см. в статье azure SDK для библиотек Java.
Микросервисы и API на Java и Kotlin
Купить за 30 000 ₽
рассрочка
Видеокурс
релиз
1 сентября
Кому подойдет курс
IT-студентам старших курсов
Посмотрите по шагам, как создаются микросервисы и получите возможность поразбираться в коде.
Разработчикам
Научитесь навыкам разработки микросервисов.
Сможете задать любые вопросы, если что-то будет непонятно.
Джавистам
Прокачаетесь в написании микросервисов с уровня junior+.
Посмотреть
Урок 1: Введение в микросервисы
Урок 2: Эволюция монолита в микросервисы
Познакомьтесь со спикером Дмитрием Горчаковым
и посмотрите демо-уроки.
Бесплатные демо-уроки
Требования к знаниям и программам
- Практические знания языка Java
- Знакомство с фреймворком Spring
- Наличие IDE, лучше IntelliJ IDEA
- Общие представления о контейнеризации
- Компьютер с процессором Intel или AMD, для комфортной работы не ниже 8Гб RAM, 10Гб диска
- ОС лучше Linux (Ubuntu), но можно и Windows 10 или MacOS
- Java OpenJDK не ниже 11 версии, Docker и docker-compose, IntelliJ IDEA (можно Community Edition), Apache Maven для сборки проекта
Чему ты научишься
- Получишь практические навыки для старта разработки микросервисов на Java/Kotlin
- Познакомишься с самым популярным на текущий момент Java-фреймворком для разработки модулей микросервисов (Spring Boot) и прочими полезными инструментам и подходами
- У тебя снизится порог входа в проект, где применяются похожие технологии
80% практики.
Программа
1.1. Как работать с этим курсом
1.2. Введение в микросервисы
1.3. Java, Kotlin и фреймворки для разработки микросервисов
2.1. Разработка основных сервисов: котировки и процессинг
2.2. Реализация модулей маршрутизации и регистрации сервисов
2.3. Безопасность микросервисов. Модуль для аутентификации и авторизации
2.4. Реализация сервиса истории. Интеграция микросервисов. Apache Kafka
2.5. Реализация Telegram бота для оповещения пользователей на Kotlin
2.6. Журналирование и трассировка
2.7. Метрики. Настройка журналов онлайн мониторинга
2.8. Реализация сервиса хранения конфигураций
3.1. Развёртывание модулей с помощью Docker-compose
4. Подводим итоги
Спикер курса
Дмитрий Горчаков
- Более 15 лет практического опыта разработки и внедрения IT-решений разного уровня сложности.
- Опыт разработки крупных проектов в госсекторе по автоматизации федеральных служб и для иностранных заказчиков, проектирования и разработки высокопроизводительных и высоконагруженных распределённых вычислительных систем с режимом высокой доступности, опыт разработки систем на микросервисной архитектуре.
- Участвует в OpenSource проектах, организует и участвует технологические конференции и митапы.
- Проектирование и разработка самого быстрого сервиса на портале госуслуг — Суперсервис «Цифровое исполнительное производство». Сервис — победитель в номинации «Лучший государственный сервис» премии «Цифровые вершины 2021», победитель номинации «Большие данные» премии ПРОФ-IT.
После оплаты курса вас автоматически перенаправит в личный кабинет, где будет открыт доступ к занятиям. Логин и пароль для входа мы отправим вам на электронную почту, указанную при оплате.
Видео и материалы курса находятся в личном кабинете по адресу edu.slurm.io.
Старт обучения — 1 сентября.
В личном кабинете по адресу edu.slurm.io в правом нижнем углу есть чат поддержки. Поддержка отвечает в течение нескольких минут.
Записи занятий останутся у тебя на 2 года.
Да, у нашего центра есть официальная лицензия, поэтому по окончании обучения ты сможешь вернуть 13% стоимости за счет налогового вычета.
Да, мы выдаем официальное свидетельство, также на курсе будет итоговый проект с сертификацией.
Да, курс можно оплатить частями.
Видеокурс
Видеоуроки
Практика на стендах
Оплатить
30 000 ₽
Оставить заявку
Микросервисы и API на Java и Kotlin
есть рассрочка
Доступ к материалам на 2 года
Комплектом дешевле
О курсе
Обычная цена 30 000 ₽
О курсе
Обычная цена 30 000 ₽
Комплект курсов
Купить за 48 000 ₽
Выгода составит 30 000 ₽
Как разделить монолит на микросервисы
Микросервисы: проектирование и интеграция на Go
Микросервисы и API на Java и Kotlin
Как писать микросервисы и работать с приложениями
О курсе
Обычная цена 30 000 ₽
О курсе
Обычная цена 5 000 ₽
Комплект курсов
Купить за 32 000 ₽
Выгода составит 30 000 ₽
Как писать более эффективный код и решать задачи, которые не могут решить другие программисты
Алгоритмы
Микросервисы и API на Java и Kotlin
Как писать микросервисы и работать с приложениями
Знакомство с языком Java и инструментами
Автор урока: Лев Екасов, Back-end developer, Team Lead в Syncier, ex-Back-end developer, TeamLead в HeadHunter
Привет!
Добро пожаловать на первый вводный урок по языку программирования Java!
Сегодня мы, как и полагается в первом уроке, изучим основы: поговорим об истории Java, почему он появился, обсудим особенности платформы и языка Java. Вы узнаете в каких отраслях могут работать Java-программисты и начнёте понимать чем они живут.
Но! Чтобы вы не заскучали будет и немного практики: вы увидите, как выглядит код на Java и вместе со Львом напишите первые строки кода. Поехали!
Цели:
- Узнать историю языка и платформы Java
- Изучить принципиальные особенности языка Java
- Изучить принципиальные особенности платформы Java
- Узнать, чем занимаются Java-программисты
Это занятие мы сделали открытым, чтобы ты мог его посмотреть и познакомиться с форматом курса
Оплата курса
Старая цена: 85 000 ₽/ мес.
Цена по акции: 64 900 ₽
(период действия акции ограничен)
Разовый платёж
Полная оплата курса со скидкой 24%
64 900 ₽
Купить курс с наибольшей скидкой
Беспроцентная рассрочка
на 24 месяца
(первый платеж через месяц)
Ваш менеджер ответит на все вопросы и расскажет подробнее о курсе и вариантах оформления рассрочки
3 542
2 704 ₽/ мес.
Click to order
Ваш заказ
Как проходит обучение
Изучаете тему
Лекции в видеоформате, воркшопы с разбором кейсов и квизы для закрепления знаний
Выполняете
задания
В том темпе, в котором вам удобно и получаете обратную связь.
Общаетесь с наставником
Закрепляете знания и исправляете ошибки
Открываете новый урок
После выполнения и проверки всех заданий текущего блока
Куда трудоустраиваются студенты
Помогаем нашим студентам попадать на собеседования и устраиваться на работу
Программа курса
Блок 1
Блок 1
Основы Java
- Знакомство с языком Java и инструментами
- Переменные и типы данных в Java
- Алгоритмы на Java
- Работа с массивами
- Классы и объекты
- Обработка исключений
- Строки и регулярные выражения
- Первая программа на Java
- Условные операторы и циклы
- Типы данных
- Массивы одномерные и многомерные
Блок 2
Блок 2
Java Core
- Основы объектно-ориентированного программирования
- Классы. Модификаторы доступа, наследование
- Полиморфизм. Абстракции и интерфейсы
- InMemory хранение данных — коллекции
- Unit-тесты на Junit5
- Generic-типы. Runtime, wildcards & PECS
- Stream API
- Работа с файлами
- Работа с памятью JVM. Heap, stack, Garbage collector, VisualVM
- Работа с сетью. UPD, TCP/HTTP, OSI
- JVM и сборщики мусора
- SQL
- Логирование
Блок 3
Блок 3
Введение в Android
- Android Studio, SDK, эмулятор и первое приложение
- Обзор ресурсов. Базовые шаблоны View и ViewGroup
- ConstraintLayout Mastering
- Обработка событий в Android
- Отображение списков: RecyclerView
- Логирование
- Material Design
- Организация навигации (перемещение между Activity)
- Fragments, FragmentManager
- Push-уведомления
Блок 4
Блок 4
Работа с Git и Spring Framework
- Предназначение системы контроля версий
- Основные операции (фиксация и откат изменений, поиск, история)
- Работа с сервисом GitHub
- Ветки, слияние веток и разрешение конфликтов
- Командная работа
- Dependency Injection. Поле, конструктор, сеттер
- Системы автоматической сборки Java-проектов. Gradle, Maven
- Java-config Spring’a
- Обзор REST, SOAP, RPC
- Spring MVC + REST
- Spring Boot
- Spring Boot Test. Библиотека MockMvc
Блок 5
Блок 5
SQL и базы данных
- Виды баз данных. Relation, key-value, document, colon
- Реляционные базы данных MySQL, PostgreSQL
- Индексы
- Синтаксис SQL
- Как работать из Java c реляционными базами. JDBC, JPA, ORM, Hibernate
- Транзакции и уровни изоляции
- NoSQL, MongoDB. Как работать из Java
- Spring Data
Блок 6
Блок 6
Шаблоны проектирования и создание приложений
- Порождающие. Builder, Singletone, Factory Method
- Структурные. Proxy, Decorator, Adapter
- Поведенческие. Command, Iterator, Observer, Chain of Responsibility
- Свойства хорошего кода. Abstraction, Composition, Coupling, Cohesion
- Принципы SOLID
- Основы клиент-серверного взаимодействия
- Основы HTML, CSS
- Разработка приложения на Spring Boot с созданием контроллера и подключением к базе данных
Блок 7
Блок 7
Продвинутая разработка на Android
- Интеграция с Backend: API, типичные формы интеграции (RPC, REST)
- Сетевые запросы: Main Thread & Background
- Многопоточность: потоки, проблемы общих данных
- Загрузка и отображение изображений
- Регистрация, аутентификация и авторизация
- Свойства хорошего кода. Abstraction, Composition, Coupling, Cohesion
- Принципы SOLID
- Основы клиент-серверного взаимодействия
- Работа с камерой и мультимедиа
Финал
Дипломная работа и помощь с трудоустройством
- Работа над дипломным проектом
- Подготовка резюме
- Подготовка к собеседованию
- Финальная защита и консультации
В финальной программе возможны небольшие правки на основании фидбэка и потребностей студентов курса
Формат понятен, готов к занятию!
Что изучим на занятии
Теория:
- История языка и платформы Java
- Принципиальные особенности языка Java
- Принципиальные особенности платформы Java
- Чем занимаются Java-программисты
Практика:
- Напишем первые строки кода на Java
Инструменты:
- Ideone.com
Начать занятие
Java в Azure — разработка Java
Разработка корпоративных приложений Java в облаке с помощью ваших любимых инструментов и платформ
Начать бесплатно
Отправляйте быстрее и раскройте весь потенциал Spring с помощью Azure Spring Apps Enterprise
Почему Java в Azure?
Разрабатывайте с помощью любимых инструментов и платформ
Создавайте, отлаживайте и развертывайте приложения Java в Azure с помощью ваших любимых IDE, включая Eclipse, IntelliJ и Visual Studio Code для Java. Используйте инструменты сборки и автоматизации, такие как Maven, Gradle и Jenkins, для непрерывной интеграции и непрерывной доставки.
Доставка быстрее благодаря полностью управляемым службам
Сосредоточьтесь на создании бизнес-приложений, а не на управлении инфраструктурой. Воспользуйтесь преимуществами службы приложений Azure, приложений Azure Spring, службы Azure Kubernetes (AKS) и Azure Red Hat OpenShift для управления аппаратной и программной инфраструктурой.
Расширьте свои приложения Java
Быстро добавляйте службы и возможности, включая управляемые базы данных MySQL, PostgreSQL и SQL, мониторинг производительности и управление секретами. Подключите свои приложения к службам интеграции, таким как служебная шина Azure, с поддержкой службы сообщений Java (JMS) и Azure API Management.
Воспользуйтесь преимуществами партнерской экосистемы Microsoft
Получите лучшие в своем классе решения для переноса существующих рабочих нагрузок Java в Azure и расширения функциональности ваших приложений. Получите доступ к растущему портфелю решений, ориентированных на Java, от уникальных вариантов управляемого хостинга с совместной разработкой и поддержкой до образов Azure Marketplace для популярных дистрибутивов Linux.
Начать разработку
Виртуальное мероприятие по запросу: модернизируйте приложения и данные с помощью Azure и Power Apps. Смотри
Azure Spring Apps
Простое развертывание, эксплуатация и масштабирование приложений Spring Boot в полностью управляемой среде с помощью Azure Spring Apps. Получите еще больше функциональных возможностей с Azure Spring Apps Enterprise, который добавляет полностью управляемые компоненты VMware Tanzu, расширенные возможности настройки и поддержку среды выполнения Spring.
Java EE в службе приложений Azure
Разверните корпоративные приложения Java в полностью управляемой службе с помощью Red Hat JBoss Enterprise Application Platform (EAP) в службе приложений Azure. Получите полностью управляемую службу приложений при совместной поддержке Microsoft и Red Hat.
Ознакомьтесь с краткими руководствами
Java EE в службе Azure Kubernetes (AKS)
Запуск приложений Java EE с Oracle WebLogic Server на AKS с помощью решений, проверенных Microsoft и Oracle. Легко создавайте готовые к работе развертывания с помощью инструкций, примеров и рекомендаций.
Читать документацию
Создание и развертывание приложений Java в облаке с использованием знакомых служб
ПОМОЩЬ В МИГРАЦИИ
Помощник по миграции службы приложений Azure
Перенесите приложения Java, работающие на Tomcat, в Azure с помощью помощника по миграции службы приложений.
КОНТЕЙНЕРНАЯ МОДЕРНИЗАЦИЯ
Миграция Azure: контейнеризация приложений
Оптимизируйте свои вычислительные ресурсы с помощью контейнеров. Начните работу с автоматизированными инструментами, которые контейнеризируют ваши веб-приложения Java и перемещают их в службу Azure Kubernetes (AKS).
УПРАВЛЯЕМЫЙ POSTGRESQL, MYSQL И SQL СЕРВЕР
Службы базы данных Azure
Настройте свою любимую реляционную базу данных в облаке, используя надежные, масштабируемые и полностью управляемые службы для PostgreSQL, MySQL и SQL Server.
ИИ И КОГНИТИВНЫЕ УСЛУГИ
Когнитивные службы Azure
Используйте искусственный интеллект и когнитивные API для создания интеллектуальных приложений. Azure Cognitive Services делает ИИ доступным для каждого разработчика, не требуя знаний в области машинного обучения.
УСЛУГИ БЕЗОПАСНОСТИ И ИДЕНТИФИКАЦИИ
Azure Active Directory (Azure AD)
Добавьте проверку подлинности в свое приложение с помощью Azure AD и сохраните криптографические ключи и другие секреты в Azure Key Vault.
УСЛУГИ ПО МОНИТОРИНГУ
Azure монитор
Собирайте, анализируйте и обрабатывайте данные телеметрии из вашей среды Azure и локальной среды с помощью Azure Monitor, чтобы максимизировать производительность и доступность ваших приложений.
Начать разработку Java
Технический разговор с клиентами Kroger
Компания Kroger перенесла свое локальное приложение Java в Azure, чтобы масштабировать процесс управления запасами. Узнайте, как они спланировали и выполнили миграцию, а также как Java в Azure помогает повысить качество обслуживания клиентов.
Усовершенствуйте свои приложения Spring Boot
Посмотрите эту демонстрацию, чтобы узнать, как развертывать приложения в Azure Spring Apps и пользоваться такими функциями, как автоматическое масштабирование, мониторинг и сквозная автоматизация.
Ускорение корпоративных рабочих нагрузок Java в Azure
Перенос критически важных приложений Java EE в Azure с помощью серверов приложений, таких как WebLogic, WebSphere и JBoss EAP. Узнайте об уникальной поддержке Azure для корпоративных приложений Java и о том, что будет в ближайшее время.
Предприятия, которые запускают свои Java-приложения в Azure
Adobe запускает обширный портфель приложений с открытым исходным кодом в Azure
«Поскольку мы написали Experience Manager на Java, а не на . NET, мы изначально беспокоились о развертывании в Azure. Однако продукт хорошо работает в Azure».
Брэндон Пулсифер, вице-президент по техническим операциям и управляемым услугам
AIA Singapore повышает производительность и сокращает расходы за счет переноса важных приложений Java в Azure
«Azure освобождает команду от повседневной тяжелой операционной работы, чтобы сосредоточиться на создании основной ценности для бизнеса».
Недвед Янг, руководитель отдела цифровых технологий
Daimler использует облачные технологии для более быстрого внедрения инноваций
«Мы добавили контейнеры Java, Tomcat, Docker, Red Hat Enterprise Linux, SUSE Linux и многие другие инструменты с открытым исходным кодом в DevTest Labs, и все они отлично работают».
Питер Ротлендер, менеджер по облачным решениям
Быстрый путь к цифровой революции: J.B. Hunt создает облачный сервис с согласованием нагрузки для грузоотправителей и перевозчиков
«Было очень легко создать кластеры Kubernetes в Azure Container Service. А связать все вместе с помощью Java/Jenkins и Team Foundation Server было просто и быстро».
Дэниел Тримбл, старший инженер-программист-эксперт
Компания Maersk использует облачные технологии для ускорения разработки контейнерных решений на базе Kubernetes
«Использование Kubernetes в Azure удовлетворяет нашим требованиям по эффективной разработке программного обеспечения. Это хорошо согласуется с нашими цифровыми планами и нашим выбором решений с открытым исходным кодом».
Расмус Халд, руководитель отдела облачной архитектуры
Swiss Re ускоряет модернизацию приложений Java с помощью Azure Spring Apps
«Мы выбрали Azure Spring Apps, чтобы сосредоточиться на написании приложений и их запуске с минимальными затратами».
Джонатан Джонс, ведущий архитектор решений, Group Finance IT, Swiss Re
Сильная партнерская экосистема
Ресурсы
Путь обучения Java в Azure
Узнайте, как создавать, переносить и масштабировать приложения Java в Azure с помощью служб Azure и знакомых инструментов и сред разработки Java.
Начните с Microsoft Learn
Разверните веб-приложение Java в службе приложений Azure
Узнайте, как развернуть и настроить веб-приложение Java в службе приложений Azure. Вы создадите и упакуете веб-приложение Java и будете использовать подключаемый модуль Maven для функции веб-приложений службы приложений Azure для развертывания.
Начните с Microsoft Learn
Разверните микрослужбы Spring Boot в Azure
Узнайте, как развернуть микрослужбы Spring Boot в Azure Spring Apps. Вы создадите кластер Azure Spring Apps, создадите различные микросервисы Spring Boot, настроите сервер конфигурации Spring Apps и создадите шлюз Spring Apps.
Запустить в Microsoft Learn
Развертывание приложения Java EE в Azure
Узнайте, как развернуть приложение Java EE (Jakarta EE) в Red Hat JBoss EAP в службе приложений Azure и связать его с базой данных Azure для MySQL. Вы создадите экземпляр базы данных, привяжете его к приложению и будете управлять приложением в JBoss EAP.
Начните с Microsoft Learn
Документы по миграции с Java на Azure
Ознакомьтесь с рекомендуемыми стратегиями переноса приложений Java в Azure. Документация охватывает общую миграцию и конкретные рабочие нагрузки, включая Spring, Tomcat, WebLogic, WildFly, WebSphere и JBoss EAP.
Просмотрите документацию
Повышение производительности с последними пакетами SDK Azure для Java
Запустите свои облачные приложения Java с помощью новейших унифицированных пакетов SDK. Оптимизируйте свою облачную разработку с помощью таких функций, как повторные попытки HTTP, ведение журнала, а также транспортные протоколы и протоколы аутентификации.
Загрузите SDK
Java и OpenJDK являются товарными знаками или зарегистрированными товарными знаками Oracle и/или ее дочерних компаний.
Готов к работе — начните разработку приложений с помощью Java в Azure
Начать бесплатноВведение в программирование на Python и Java
Чему вы научитесь
Описывать основные концепции программирования на Python, включая настройку инструментов для кода Python и написание полнофункциональных программ с использованием структур данных
Изучение основных методов и концепций обработки данных с использованием Python, включая использование библиотек анализа данных и развитие навыков визуализации данных модульное тестирование
Понимание наследования Java и применение методов анализа текста в файлах, использование расширенных структур данных для хранения информации и отладки кода
Skills you will gain
- Programming Principles
- Python Programming
- Java Programming
- Data Structure
- Computer Programming
- Python Tools
- Python Syntax And Semantics
- Data Science
- Python Libraries
- Анализ данных
- Визуализация данных (DataViz)
- Инструменты Java
Об этой специализации
31 647 последних просмотров
Эта специализация начинается с изучения базовых понятий Python и переходит к более сложным предметам, таким как объектно-ориентированное программирование и структуры данных в Java. К тому времени, когда учащиеся закончат эту серию из четырех курсов, они смогут писать полнофункциональные программы как на Python, так и на Java, двух самых известных и часто используемых языках программирования в современном мире. Введение в программирование на Python и Java предназначено для студентов и профессионалов, которые имеют минимальный опыт программирования или не имеют его вообще. Это для мотивированных учащихся, которые имеют опыт тщательной курсовой работы и хотят получить конкурентное преимущество в продвижении своей карьеры. Это для людей, которые думают о подаче заявления на получение онлайн-степени магистра компьютерных и информационных технологий Университета Пенсильвании и хотят попробовать некоторые лекционные видео и контент из первого курса программы. Мы надеемся, что эта специализация для вас. Темы этой специализации включают синтаксис языка, стиль, методы программирования и соглашения о кодировании. Узнайте о передовых методах и правильном проектировании кода, тестировании кода и разработке через тестирование, отладке кода, документации по коду и программе и вычислительном мышлении.
Учащиеся будут писать полнофункциональные программы на Python, включая реализацию системы онлайн-банкинга и проект по анализу данных, анализируя фильмы и рейтинги из IMDB. Учащиеся будут применять программирование Python, файловый ввод-вывод, анализ данных и визуализацию, используя как PyCharm, так и Jupyter Notebook.
Учащиеся также будут писать полнофункциональные программы на языке Java, включая анализатор текстовых файлов, который читает, записывает и анализирует текстовые файлы. Учащиеся будут применять Java-программирование, объектно-ориентированные принципы, структуры данных, файловый ввод-вывод, модульное тестирование, отладку кода, используя Eclipse.
Совместно используемый сертификатСовместно используемый сертификат
Получите сертификат по завершении
100% онлайн-курсы100% онлайн-курсы
Начните немедленно и учитесь по собственному графику.
Гибкий графикГибкий график
Устанавливайте и соблюдайте гибкие сроки.
Начальный уровеньНачальный уровень
Количество часов для завершенияПриблизительно 4 месяца для завершения
Рекомендуемый темп 6 часов в неделю
Доступные языкиАнглийский
Субтитры: английский, корейский
Общий сертификатОбщий сертификат
Получите сертификат по завершении
100% онлайн-курсы100% онлайн-курсы
Начните сразу и учитесь по собственному графику.
Гибкий графикГибкий график
Устанавливайте и соблюдайте гибкие сроки.
Начальный уровеньНачальный уровень
Часов для завершенияПриблизительно 4 месяца для завершения
Рекомендуемый темп 6 часов в неделю
Доступные языкиАнглийский
Субтитры: английский, корейский
Как работает специализация
Пройти курсы
Специализация Coursera — это серия курсов, которые помогут вам овладеть навыком. Для начала зарегистрируйтесь на специализацию напрямую или просмотрите ее курсы и выберите тот, с которого вы хотите начать. Когда вы подписываетесь на курс, являющийся частью специализации, вы автоматически подписываетесь на полную специализацию. Можно пройти только один курс — вы можете приостановить обучение или отменить подписку в любое время. Посетите панель учащегося, чтобы отслеживать зачисление на курс и свой прогресс.
Практический проект
Каждая специализация включает практический проект. Вам нужно будет успешно завершить проект(ы), чтобы завершить специализацию и получить сертификат. Если специализация включает в себя отдельный курс для практического проекта, вам нужно будет пройти все остальные курсы, прежде чем вы сможете приступить к нему.
Получите сертификат
Когда вы закончите каждый курс и завершите практический проект, вы получите сертификат, которым сможете поделиться с потенциальными работодателями и своей профессиональной сетью.
Инструктор
Брэндон Краковский
Лектор
Школа инженерных и прикладных наук
61,735 Учитель
7 . обычно называемый Penn) — частный университет, расположенный в Филадельфии, штат Пенсильвания, США. Член Лиги плюща, Пенн является четвертым старейшим высшим учебным заведением в Соединенных Штатах и считает себя первым университетом в Соединенных Штатах, где есть как бакалавриат, так и аспирантура.
Graduation CapНачните работать над получением степени магистра
Эта специализация связана со 100% онлайн-программой магистра компьютерных и информационных технологий Пенсильванского университета. Он предоставит вам предварительный просмотр тем, материалов и преподавателей, чтобы вы могли решить, подходит ли вам полная онлайн-программа получения степени.
Подробнее
Часто задаваемые вопросы
Какова политика возврата?
Могу ли я просто записаться на один курс?
Доступна ли финансовая помощь?
Могу ли я пройти курс бесплатно?
Этот курс действительно на 100% онлайн? Нужно ли мне лично посещать какие-либо занятия?
Нужно ли проходить курсы в определенном порядке?
Нужно ли мне уметь программировать или изучать информатику, чтобы получить эту специализацию?
Что я смогу делать после завершения этой специализации?
Насколько хорошо мне нужно знать математику, чтобы пройти эту специализацию?
Подготовит ли меня эта специализация к получению степени магистра компьютерных и информационных технологий (MCIT) в Пенсильванском университете?
Где я могу найти дополнительную информацию о программе получения степени магистра компьютерных и информационных технологий (MCIT) в Пенсильванском университете?
Получу ли я университетский кредит за завершение специализации?
Есть вопросы? Посетите Справочный центр для учащихся.
Чемпион Java Джеймс Уорд о состоянии языков Java и JVM
Домашняя страница InfoQ Статьи Чемпион Java Джеймс Уорд о состоянии языков Java и JVM
QCon Plus (29 ноября — 9 декабря): принимайте правильные решения, узнавая о новых тенденциях в области программного обеспечения
Закладки
29 августа 2022 г. 20 мин читать
по
Карстен Силз
Джеймс Уорд
проверено
Майкл Редлих
Напишите для InfoQ
Присоединяйтесь к сообществу экспертов. Увеличьте свою видимость.Карьерный рост.Подробнее
Ключевые выводы
- Java по-прежнему отличный язык, но Kotlin — более быстро развивающаяся альтернатива, в то время как Scala доводит функциональное программирование до крайности.
- Джеймс предпочитает языки, которые позволяют ему писать более правильный код за счет высокого уровня проверки во время компиляции.
- Через Scala Джеймс нашел парадигмы программирования и опыт, которые изменили его образ мышления.
- Изменчивость по умолчанию в Java — это «ошибка на триллион долларов», потому что из-за нее трудно рассуждать о том, что делает код. Подход
- Project Loom меняет правила игры, потому что он устраняет когнитивную перегрузку реактивного программирования.
Джеймс Уорд (James Ward) — чемпион по Java и менеджер по продукту Kotlin в Google. Он ведет подкаст «Happy Path Programming» с Брюсом «Thinking in Java» Eckel. В одном из эпизодов Экель говорил о «людях, которые все еще застряли в мире Явы». Уорд согласился и назвал изменчивость по умолчанию в Java «ошибкой на триллион долларов» (ссылаясь на «ошибку на миллиард долларов» NullPointerExceptions
). InfoQ заинтересовался взглядом защитников Java на Java и задал Уорду несколько вопросов. Вот ответы.
InfoQ: Какова роль менеджера по продукции Kotlin в Google? Каковы ваши повседневные обязанности?
Ward: У работы Kotlin PM есть две стороны. Я работаю с нашими командами Android и JetBrains над улучшением и развитием языка Kotlin. Я также работаю со многими командами инженеров в Google, чтобы помочь им успешно перенести серверную часть и Android с Java на Kotlin.
InfoQ: Каково состояние языков JVM в 2022 году?
Ward: Я начал использовать язык программирования Java 25 лет назад и думаю, что это все еще отличный язык. Но за последние десять лет мне также удалось поработать с более современными языками JVM, включая Scala и Kotlin. Scala отлично подходит для разработчиков, желающих довести функциональное программирование до крайности. Kotlin — это скорее дополнительный шаг для существующих разработчиков Java, имеющих хорошую поддержку некоторых функциональных парадигм, таких как неизменяемость и типы суммы, но лишенных некоторых «монадических» функций, которые есть в Scala. И Kotlin, и Scala прекрасно взаимодействуют с Java, что позволяет совместно использовать экосистему. У разработчиков JVM есть много вариантов для отличных языков и много дублирующих инструментов (инструменты сборки, IDE, инструменты производства/самоанализа и т. д.). Здорово, что на JVM, в одной большой экосистеме, есть такой спектр языковых возможностей.
InfoQ: Как часто в настоящее время в Kotlin выполняется внутренняя разработка JVM? И как, по-вашему, Kotlin может стать там популярнее?
Ward: В целом доля Kotlin среди серверов JVM довольно мала, но она быстро растет. Google, например, наблюдает значительный рост использования Kotlin для серверной разработки. Разработчики, перешедшие с Java или перешедшие с других языков, сообщают, что они очень довольны этим опытом. Нулевая безопасность, сопрограммы и выразительность часто отмечаются как важные причины, по которым Kotlin более продуктивн и интересен в работе.
Kotlin определенно продолжит расти на стороне сервера. Spring, Quarkus и Micronaut проделали немало работы, чтобы сделать свои возможности Kotlin великолепными (например, совместимость сопрограмм для Reactive). Предприятия обычно продвигаются довольно медленно с новыми технологиями. Тем не менее, для многих переход на Kotlin (на JVM) является гораздо менее рискованным и разрушительным изменением, чем переход на Rust (например). Кроме того, совместимость Kotlin с Java помогает выполнять миграцию кода поэтапно, а не перезаписывать его. Многие команды, с которыми я работал, просто добавляли новый код на Kotlin в существующую кодовую базу Java.
InfoQ: Как языки JVM соотносятся с другими языками программирования, особенно в облаке? Python и JavaScript более популярны в поиске Google, чем Java, и у вас больше вопросов о Stack Overflow.
Ward: Если бы я разрабатывал язык программирования, я бы хотел, чтобы было меньше запросов и вопросов о моем языке. 😉 Будучи программистом более 30 лет, я больше склоняюсь к языкам, которые позволяют мне писать более «правильный» код, который можно тестировать и использовать повторно. Я не люблю сюрпризов в продакшене и хочу иметь возможность без страха проводить рефакторинг. Наличие компилятора, который может выполнять высокий уровень проверки моей программы, является важной функцией. Конечно, я не могу писать необработанный код так же быстро, как другие, но я пишу код, который вряд ли будет содержать ошибки в рабочей среде. Если вы рассматриваете исправление производственных ошибок как часть цикла разработки, то использование современных языков на JVM, вероятно, обеспечит максимально возможную производительность для многих проблемных областей.
InfoQ: GraalVM создает собственные Java-приложения, которые запускаются быстрее и используют меньше памяти. Как это повлияет на конкурентную позицию языков JVM в облаке?
Ward: Накладные расходы на запуск и память определенно препятствуют внедрению технологий JVM в некоторых проблемных областях (бессерверные, интерфейсы командной строки, операторы Kubernetes и т. д.). GraalVM Native Image, Kotlin/Native и Scala Native помогают вывести эти языки туда, где обычно интерпретируемые или родные языки лучше подходят. Теперь мы можем съесть свой пирог (быстрый запуск и минимальные затраты памяти) и съесть его (современные языки высокого уровня). Недавно я создал сервер с библиотекой Kotlin Ktor, который я могу запустить на JVM или скомпилировать в родной образ с Kotlin/Native и GraalVM Native Image. В нативном случае время запуска составляло около 2 мс, использование памяти — 11 МБ, а двоичный файл был сжат до 700 КБ. Во многих случаях нам больше не нужно искать компромисс между родным и современным языком/языком высокого уровня.
InfoQ: Что делает Scala таким привлекательным для вас?
Район: Scala требует длительного обучения. Спустя более десяти лет с языком я все еще чувствую себя новичком. Для меня это здорово, потому что я люблю изучать новые языки программирования и получаю удовольствие от сложных задач. Я также действительно усвоил многие принципы функционального программирования, но еще не следовал им на всем пути к Haskell, поэтому Scala — это хорошее место, где можно немного освоиться с FP на основе JVM. В настоящее время я пишу книгу с Брюсом Экелем и Биллом Фразуром об ориентированном на эффекты программировании в Scala 3 и ZIO 2. Функциональные эффекты представляют собой концепцию, которая существенно влияет на качество создаваемого нами программного обеспечения, но еще недостаточно поддерживается в Java. или Котлин. Есть много причин выбрать Java или Kotlin, но такие понятия, как эффекты, не входят в этот список.
InfoQ: Для каких приложений или задач идеально подходит Scala? Где это не так?
Район: Многие факторы определяют соответствие технологии. Недавно я работал над проектами, в которых структура команды подразумевала, что Java и Spring Boot лучше всего подходят для среды. Одним из наиболее важных факторов для «подгонки» является технология, которую команда хочет использовать. Я думаю, что это согласуется с целями моей работы Kotlin PM, которые связаны с тем, чтобы помочь сделать Kotlin технологией, которую разработчики захотят использовать.
InfoQ: JetBrains утверждает, что Kotlin — «лучшая Java», но Java по-прежнему в 5-12 раз популярнее. Как вы видите роль Котлина сегодня? И какова будет его роль в будущем?
Район: Язык Java развивался с течением времени. Но, как описывает архитектор языка (Брайан Гетц), у него есть «преимущество последнего хода», что во многих случаях является правильным выбором. Если стартапы живут под лозунгом «Двигайся быстро и ломай вещи», то предприятия живут под лозунгом «Двигайся медленно и ничего не ломай», что вполне согласуется с тем, как развивался язык Java за последние 20 лет или около того. Что касается меня, мне нравится двигаться быстрее, чем это позволяют типичные корпоративные организации (из-за соответствия, безопасности, нормативных требований и других причин). Так что да, Kotlin в некотором смысле «лучше Java», но «лучше» для меня может не быть «лучше» для всех, и это нормально. JVM и Android поддерживают как Java, так и Kotlin — и это хорошо.
InfoQ: В эпизоде 51 вашего подкаста Happy Path Programming Брюс Экель говорил о «людях, которые все еще застряли в мире Java» (около 33:15). Ты согласился. Пожалуйста, объясните нашим читателям, почему вы с Брюсом так себя чувствуете.
Ward: 25 лет назад я написал свою Java так же, как я написал свой Perl. Книга Брюса «Мышление на Java» изменила мои представления о программировании. Теперь и Брюс, и я обнаружили парадигмы программирования и опыт, которые имели тот же эффект, полностью изменяя то, как мы думаем о вещах. Мы с Брюсом столкнулись с этими проблемами не из-за Java (языка), а из-за других языков. Я считаю, что то, что Брюс и я подчеркивали в этом эпизоде, было не ударом по Java (языку), а надеждой на то, что программисты постоянно учатся и находят пути для роста, как и Брюс, и я.
InfoQ: Как описал Тони Хоар, NullPointerExceptions
— это «ошибка на миллиард долларов». Нулевая безопасность в языке — это исправление. У Kotlin это есть, а у Dart и Swift даже хорошая нулевая безопасность. В Java этого нет, и, похоже, в ближайшее время не будет нулевой безопасности. Как вы думаете, почему?
Ward: В Java ВСЕ, что не является примитивным значением, может принимать значение NULL. И для того, чтобы это изменить, потребуется масштабная переработка всего языка и стандартной библиотеки. Многие современные языки имеют основополагающий принцип, согласно которому допустимость значений NULL должна быть выражена через систему типов. Это просто очень трудно или невозможно позже. Как уже упоминалось ранее, я стремлюсь писать программы, которые более корректны во время компиляции, и явная допустимость значений NULL является одним из способов достижения этой цели. Одна из причин, по которой я больше не использую язык Java, заключается в том, что выразить допустимость значений NULL способом, проверенным компилятором, сложно.
InfoQ: Вы сказали, что добавление нулевой безопасности «очень сложно или невозможно добавить позже». Google Dart добился этого, добавив нулевую безопасность для приложений и библиотек через семь лет после версии 1.0. 😉 В любом случае, что вы посоветуете Java-разработчикам, которые хотят иметь меньше NullPointerExceptions
?
Район: Сложность заключается не в языковой функции. Это все API. Согласно системе типов, все в стандартной библиотеке Java и почти все в экосистеме библиотек Java допускает значение NULL. Чтобы нулевая безопасность была полезной, а не чрезвычайно раздражающей, все базовые типы должны правильно выражать свою допустимость нулевых значений. Это изменение, которое очень трудно или невозможно осуществить.
InfoQ: В том же эпизоде «Программирование счастливого пути» вы назвали изменчивость по умолчанию в Java «ошибкой на триллион долларов» (около 35:05). Пожалуйста, уточните, почему вы так думаете.
Ward: Я слишком много раз сталкивался с производственными проблемами, когда было очень трудно выяснить причину, потому что я не мог «рассуждать» о рассматриваемом коде. Вы видите это, когда люди публикуют головоломки типа «что делает этот код» в Твиттере. В большинстве случаев это загадка, потому что изменчивость делает так, что мой простой мозг не может рассуждать о том, что происходит. Вы никогда не увидите людей, публикующих одни и те же задачи в чисто неизменной форме, потому что неизменные ценности и чистые функции — это то, что мой мозг может понять. Я уверен, что чем больше наших программ будет чистыми функциями и значениями, тем меньше ошибок будет в том, что мы создадим.
InfoQ: Насколько, по вашему мнению, поддержка инструментов (таких как IDE и инструменты сборки) важна для успеха языка программирования?
Ward: Раньше я писал много кода без помощи IDE (vim — боритесь со мной, пожалуйста), но теперь IDE — неотъемлемая часть моей производительности. Одна из причин, по которой я люблю языки программирования с отличными системами типов, заключается в том, что среда IDE предоставляет гораздо лучшие подсказки, когда я пишу код. Когда мне приходится писать код на динамических языках, я удивляюсь, как кто-то когда-либо делал что-либо без миллиона справочных API-запросов, потому что я ничего не могу сделать без того, чтобы моя IDE дополняла все параметры точками.
InfoQ: Говоря об инструментах: в феврале 2021 года у Visual Studio Code было 14 миллионов пользователей, и она была второй самой любимой IDE в «Опросе разработчиков 2022 года» Stack Overflow (neovim был номером один). Предположим, что Visual Studio Code становится бесплатной IDE по умолчанию для всех разработчиков, поддерживающей все соответствующие языки программирования и фреймворки. Как это изменит разработку программного обеспечения?
Ward: VS Code — отличный инструмент, и для многих разработчиков он стал огромным шагом вперед по сравнению с Sublime Text, vim или emacs. Но для меня это все еще значительно менее полезно, чем IntelliJ (для вещей JVM), особенно когда дело доходит до рефакторинга. Так что я не использую его часто, но я понимаю, что это вполне может быть лучший редактор кода, который использовали разработчики (при условии, что они не использовали их все).
InfoQ: Компиляторы обнаруживают ошибки в коде. Статические анализаторы, такие как Error Prone, Spotbugs или PMD, показывают еще больше ошибок, включая страшные NullPointerExceptions
. Почему тогда эти статические анализаторы не получили более широкого распространения?
Ward: Вообще, я предпочитаю, чтобы мой набор инструментов был максимально сжатым. Будь то из соображений производительности, простоты или совместной работы, я предпочитаю помещать как можно больше логики проверки во что-то, что может проверить компилятор (например, в систему типов). Для меня линтеры и инструменты статического анализа кода — это признак чего-то, что нужно просто проверить в компиляторе. Тем не менее, вероятно, существуют языковые ограничения, препятствующие этому. Эти инструменты хороши для улучшения качества кода, но также являются сильным сигналом для разработчиков языков, что им следует попытаться перейти от метапрограммирования к просто программированию.
InfoQ: Вы сказали, что «предпочитаете поместить как можно больше логики проверки в то, что может проверить компилятор». Компилятор Java не проверяет нулевую безопасность, пустые еще
ветвей и т.д. Но статические анализаторы, такие как Google Error Prone, делают это. Как вы видите преимущества добавления этих анализаторов в Java по сравнению с недостатками усложнения вашей цепочки инструментов?
Ward: Линтеры и другие инструменты статического анализа кода накладывают ограничения на систему типов и проверки компилятора. Эти ограничения будут существовать всегда, поэтому инструменты не исчезнут в ближайшее время. Но, надеюсь, они помогают моделям программирования и компиляторам развиваться, охватывая со временем все больше возможных ножных орудий.
InfoQ: кроссплатформенная платформа пользовательского интерфейса Google Flutter компилирует изменения и обновляет приложение менее чем за секунду. Почему по сравнению с этим компиляция и обновление приложений JVM все еще такие медленные?
Ward: Чем больше компилятор делает для проверки правильности чего-либо, тем больше времени это займет. Я не знаю, как это обойти. Я могу сделать нулевую компиляцию чего-то, запустить это в продакшене, а в результате получить ошибки времени выполнения. Я не хочу разрабатывать программное обеспечение таким образом. Поэтому для меня оценки времени компиляции должны быть сбалансированы с ценностью компилятора. Однако я часто запускаю компиляторы Java, Kotlin и Scala постепенно с горячей перезагрузкой менее чем за секунду (спасибо, хорошее кэширование). Этот спор должен перейти к тому, «сколько времени нужно, чтобы исправить ошибку или избавиться от ошибок», а не к тому, «сколько времени нужно, чтобы получить что-то с неопределенным количеством сломанных в производство».
InfoQ: В моем проекте Spring Boot частые сбои перезагрузки классов сводят на нет мою высокую скорость компиляции. И что касается вашего комментария «получить что-то с неопределенным количеством сломанных для производства»: я думаю, что сложность компиляции для Dart (язык во Flutter) может быть на уровне Java. Тем не менее, большую часть времени Flutter перекомпилирует и повторно развертывает на мобильных устройствах за одну секунду. Большинство Java-проектов этого не делают. Теперь Flutter владеет всей своей цепочкой инструментов (язык, компилятор, среда выполнения, фреймворк и инструмент сборки). Java не поддерживает (например, инструмент сборки и структуру приложения). Насколько важно для производительности разработчиков то, что языки JVM владеют целым набором инструментов?
Ward: Ничто не мешает аналогичному времени цикла внутренней разработки на JVM быть таким быстрым. Новая функция Android Studio под названием Live Edit почти мгновенно обновляет пользовательский интерфейс для приложений Jetpack Compose на основе изменения кода в эмуляторе или на устройстве. Десять лет назад Play Framework перезагружала сервер на JVM за доли секунды, используя некоторые причудливые трюки с загрузчиком классов. Проблема в основном заключается в том, чтобы инвестировать время разработки, чтобы сделать этот опыт быстрым и качественным. Но по какой-то причине это не было огромным приоритетом в экосистеме JVM. Что касается серверных фреймворков, Quarkus проделал лучшую работу по оптимизации, и я уверен, что они еще могут сделать больше.
InfoQ: Как бы вы определили и измерили успех языка программирования? Например, вы можете сказать, что Scala успешна, потому что она сделала функциональное программирование более популярным. Вы также можете возразить, что Scala больше не имеет успеха, потому что она уступила место языка JVM № 2 Kotlin.
Район: Цели имеют значение, и у всех разные цели. Для меня это выравнивание ценностей. Я очень ценю, что язык программирования Flix записал свои цели/принципы.
Flix — невероятно успешный язык программирования, потому что он проделал потрясающую работу по достижению своих целей. Если бы Flix поставил перед собой цель иметь 10 миллионов активных разработчиков, они определенно потерпели бы неудачу в этом (но мне все равно это нравится, потому что я согласен с принципами языка). Любовь к языку отличается от успеха языка. Как Kotlin PM, одна из моих целей в отношении языка — упростить разработчикам создание правильного программного обеспечения (т. е. уменьшить количество производственных ошибок). Уже было показано, что язык снижает количество сбоев приложений Android на 20%, что является большим успехом. Я хотел бы пойти дальше и продолжать помогать уменьшать количество ошибок приложений и серверов с помощью улучшений языка и инструментов.
InfoQ: История разработки программного обеспечения — это история повышения уровня абстракции. Но таким инновациям, как объектная ориентация и функциональное программирование, уже более 50 лет. Как вы думаете, насколько вырос уровень абстракции за последние 20 лет? И каким вы видите его рост в ближайшие 20 лет?
Ward: До недавнего времени многие идеи из функционального программирования были объединены в технологии для любителей математики (которыми я мечтаю когда-нибудь стать). Теперь, благодаря Scala (и другим), мы начинаем видеть слияние OO и FP, которое делает FP доступным для масс, которые могут не быть математическими ботаниками. Это слияние будет продолжаться некоторое время, помогая сделать наш код более тестируемым и пригодным для повторного использования. Kotlin является отличным примером этого, поскольку он является мостом для многих разработчиков объектно-ориентированного Java к «облегченной FP», для которой не требуется степень в области теории категорий. Следующая фаза этого перехода будет включать в себя принятие идеи «Эффектов» (отделение чистых функций от небольших частей, которые взаимодействуют с внешним миром / не являются ссылочно прозрачными). Многие новые языки программирования уже имеют встроенную концепцию: Flix, Unison, Roc и т. д. Помимо эффектов, мы, вероятно, увидим появление одной концепции, похожей на Datalog — язык запросов, встроенный в язык общего назначения. Впервые я увидел эту идею с Linq, затем с Flix. Запросы — довольно универсальная потребность, будь то базы данных, объективы (обновление неизменяемых структур данных), GraphQL и т. д. Поэтому наличие интегрированного и проверенного компилятором способа написания запросов является значительным преимуществом.
InfoQ: Какой язык программирования эволюционировал лучше всего?
Отделение: Это определенно зависит от определения «лучший». Если мы рассмотрим это с чисто академической точки зрения, я думаю, что на много порядков Scala получила больше докторских диссертаций. исследование, чем любой язык, который я знаю. Многие функции языка Scala переходят на другие языки, что очень удобно для всех. Python проделал потрясающую работу, став общедоступным языком. Я слышал, что многие профессионалы, ориентированные на данные, не могут решить большинство типичных задач программирования, но могут написать код Python, который представляет собой сложный математический алгоритм или обрабатывает массивный набор данных с использованием таких библиотек, как Pandas, NumPy и т. д. Kotlin — современный язык. с возможностью взаимодействия с Java и мультиплатформенностью. Так что «лучше» зависит от многих факторов.
InfoQ: Какая будущая функция любого языка JVM волнует вас больше всего?
Район: Что касается JVM, Loom меняет правила игры. Для большинства разработчиков Java/JVM «Реактивный» был хорошей идеей, но не стоил когнитивных и сложных накладных расходов. Kotlin Coroutines реализовали аналогичную идею нулевой когнитивной стоимости для асинхронных операций, которые кажутся императивными. Тем не менее, для многих разработчиков JVM Reactive, вероятно, останется «хорошей» функцией, пока Loom не станет доступен в их организации. Учитывая этот срок, многие разработчики JVM будут использовать абстракции параллелизма, такие как Kotlin Coroutines и Scala ZIO Effects, в JDK 8 до этого. Учитывая проблемы с временными рамками Loom и текущую доступность альтернатив, я должен сказать, что предстоящая функция, которая меня больше всего волнует в любом языке JVM, — это синтаксис Scala без скобок, который наполовину присутствует в Scala 3. 0 и может быть завершен в Scala 3.3. . Мне нравится, как мало визуального шума в моем коде по сравнению с проблемой, которую я решаю. Я знаю, что это кажется глупым, что простое снятие брекетов может иметь такие последствия. Но Python показывает нам, что когнитивные накладные расходы обычно могут быть самыми большими затратами в большинстве организаций. Самая сложная/самая дорогостоящая часть написания правильной программы – это не преобразование текста в байт-код/машинный код. Это цена правильного представления и прочтения человеческих идей в форме, понятной компьютерам. Это кажется глупым, но фигурные скобки в большей части кода отвлекают мой мозг от человеческих намерений кода.
InfoQ: Если бы вы могли внести по одному изменению в каждый язык JVM, какие бы это были изменения?
Район: Ява: Есть много изменений, которые я хотел бы внести, и это звучит как обвинение. Но это не потому, что в JVM вы можете либо выбрать другой язык, либо смириться с тем, что все происходит медленно, и это хорошо. Если бы мне пришлось выбрать одну вещь для изменения, это, вероятно, была бы лучшая поддержка неизменности. Изменяемость по умолчанию — рецепт для недетерминированных программ.
Kotlin: Когда я программирую на Kotlin, мне больше всего не хватает в Scala приятного синтаксиса для объединения монад (называемого в Haskell «do notation», а в Scala — для понимания). Подобно сопрограммам Kotlin, код кажется императивным, хотя на самом деле это цепочка вызовов функций. Я понятия не имею, как такие вещи можно добавить в Kotlin, но если все сделать правильно, я думаю, это будет здорово.
Scala: Самое сложное в Scala — это то, что есть много способов сделать примерно одно и то же. Например, в Scala 3 есть по крайней мере три способа сделать что-то, что в основном представляет собой Sum Type (запечатанный, enum и логическое ИЛИ). Я не знаю, как вы вообще что-то убираете в языке программирования. Тем не менее, сложность Scala — это проблема, а наличие множества способов сделать большинство вещей — это проблема для языка.
InfoQ: COBOL уже более 60 лет, и он все еще активно используется. Как вы думаете, разработчики все еще будут писать новые Java-приложения, когда Java исполнится 60 лет в 2056 году?
Отделение: Обязательно! Java является важной частью многих систем, которые мы используем каждый день. Он не исчезает, и с медленными, но прогрессивными улучшениями он продолжает улучшаться (в отличие от COBOL). Более крупная экосистема Java (включая Kotlin, Scala, Clojure, Groovy и т. д.) также продолжает расти. В целом, это, вероятно, крупнейшая экосистема разработчиков в мире. Новые языки JVM продолжают появляться, как Flix, показывая, что инновационный цикл не остановится в ближайшее время. Инновационные и революционные технологии, такие как Testcontainers, GraalVM и Kalix, продолжают появляться в экосистеме Java, демонстрируя способность продолжать расти и совершенствоваться еще 35 лет (как минимум).
InfoQ: Пожалуйста, поделитесь своими заключительными мыслями о языках JVM в 2022 году.
Отделение: Это захватывающее время для работы с Java, Kotlin и Scala! Инструменты и языки обеспечивают самую высокую производительность разработчиков, с которой я когда-либо сталкивался. От телефонов до серверов, технологии Java стоят за подавляющим большинством критически важных систем, которые мы используем каждый день. И для меня так приятно иметь возможность выбирать из множества разных языков на одной платформе.
InfoQ: Джеймс, мы благодарим вас за это интервью.
Резюме
Уорд хорошо объяснил комментарии подкаста: Когда Экель говорил о «людях, которые все еще застряли в мире Java», он имел в виду разработчиков, использующих то, что он и Джеймс считают старыми парадигмами в Java, такими как процедурное и объектно-ориентированное программирование. Экель и Уорд, напротив, внедрили в Scala концепции функционального программирования, которых нет в языке Java. А изменяемый код затрудняет для Уорда анализ этого кода и, в конечном итоге, приводит к большему количеству ошибок, в отличие от чистых функций и неизменяемых значений.
Об интервьюируемом
Джеймс Уорд (James Ward) — чемпион Java и ярый сторонник открытого исходного кода. Он также самопровозглашенный «фанат типизированного чистого функционального программирования», но часто идет на компромисс со своими идеалами, чтобы добиться цели. Он работал разработчиком в Adobe, Salesforce, компании Scala Typesafe и Google. С декабря 2021 года Джеймс работает менеджером по продукту Kotlin в Google.
Об авторах
Karsten SilzПоказать большеПоказать меньше
Джеймс УордПоказать большеПоказать меньше
Оцените эту статью
Принятие
Автор связался с
Информационный бюллетень InfoQОбзор контента прошлой недели на InfoQ, который рассылается каждый вторник.