RSS

Комментарии

Под Android это выглядит как нативное приложение на Java/Kotlin с одной Activity, в которой либа на Flutter рисует весь интерфейс. Эта либа компилится под конкретную архитектуру процессора при помощи NDK и подключенная через JNI.

С одной стороны это надстройка над Java, с другой стороны работает быстро как системные библиотеки.

Рисование производится при помощи SKIA, которая используется в том числе и самим Android для рисования интерфейса.

Для себя я отметил следующие недостатки:

всё-таки не до конца нативный вид под обоими платформами, в каких-то мелких деталях
больше APK на размер рантайма Flutter ~5Mb
немного дольше старт, так как сперва стартует Activity, которая потом грузит эту либу и только после этого что-то начинает отрисовываться
сложнее взаимодействие с платформой, которое неизбежно, когда нет нужной либы на Dart Pub
на декларативном UI иногда бывает сложнее и/или менее эффективно написать код по сравнению с обычным императивным подходом
Dart как язык сильно уступает Kotlin, хотя большинство кейсов он покрывает, но нужно писать больше буков и скобочек
Однопоточный язык, сложнее делать всякие реально асинхронные операции. Есть только аналог ServiceWorker как в браузере
Background сервисы flutter и dart не покрывают. Там надо писать нативно.

Возможно что-то еще забыл…
Я не знаком с Flutter, так как разрабатывал на Java. Вот и хотел примериться к новой технологии. Но судя по всему статья однобокая и поверхностная. Например ничего не говориться про то как Flutter обрабатывает жизненный цикл (поворот экрана, уход в спящий режим). Очевидно что любая программная прослойка будет жрать ресурсы. Только понять где Flutter стоит — над Java или вместо Java (в Андроиде)?
Какие, на ваш взгляд, минусы Flutterа?
На досуге как-то посмотрел флаттер (основное занятие у меня — это android и kotlin) — так вот весьма понравилось мне. По тьюториалам, конечно, сложно судить, но то, что я видел и пробовал, очень неплохо. Понравилось, как работают с состояниями и как изменения в состояниях рендерится на UI.

Длинный код (всё описание view в коде) с непривычки — да, необычно. Можно нагородить нечитаемых вещей. Но, как я понимаю, в Compose будет примерно так же.
14:09 (отредактировано)
+4
Намного хуже я бы сказала, а то сильно веская причина в пользу RN
У Флатера упор на анимации, у React Native тоже есть анимация но у флатера она гораздо удобнее, там больше возможностей и делается она проще. Но «паровозный» код флаттера мне лично не нравится и хуже читается чем у RN.
Это зависит от имеющихся навыков, мотивации и наличия базовых знаний в программировании. На изучение синтаксиса Java, принципов ООП и стандартных инструментов разработки может уйти от 3 до 6 месяцев, иногда больше.

Хочу отметить, что для новичков язык программирования имеет второстепенное значение. Гораздо важнее вначале научиться строить алгоритмы и понимать, как компьютер их выполняет.

Быстрее и эффективнее изучать Java поможет выполнение практических задач или работа над конкретным проектом. А если работать над совместным проектом с другими программистами, можно получить бесценный опыт работы в команде.
Путь в Java-программировании местами тернистый. Некоторых начинающих программистов приводит в ступор использование классов в простой программе. Не стоит опускать руки! Нужно подобрать для себя ту платформу, ресурс, учебник, канал на YouTube, который будет понятен именно вам, тогда все детали и нюансы разложатся по полочкам.

Изучив основы программирования на Java, нужно выбрать дальнейшее направление, изучать фреймворки и библиотеки для конкретной цели.

Какое направление предпочесть? Выбор огромный: от веб-сервисов до космических разработок. Каждый решает сам, исходя из своих интересов.
19:33 (отредактировано)
+1
Да я уже более 10 лет работают в DST Global в должности тестировщик.

Уверен, Java еще долго будет востребован.

Некоторые разработчики считают, что язык Java не так актуален, как раньше. И действительно, некоторые языки программирования подвинули его с позиций лидера. Например, Android-разработчики чаще используют Kotlin для создания мобильных приложений.

Но Java развивается, и каждые полгода мы видим новый релиз языка.

К тому же, этот язык легко интегрируется с другими JVM-языками, такими как Groovy, Scala, Kotlin.

А благодаря высокой популярности у Java есть огромное количество библиотек, фреймворков и инструментов, которые делают разработку приложений максимально удобным и эффективным.

Язык Java прекрасно подходит для коммерческих проектов, он очень востребован в корпорациях. Поддержка и рефакторинг существующих проектов всегда будет актуален в крупных финансовых компаниях.

Несмотря на популярность Kotlin, Java все еще активно используется для разработки Android-приложений.

Разработка с использованием Spring Framework открывает большие перспективы в бэкенд-разработке и разработке корпоративных программ.

Применение Java настолько широко, что каждый найдет вакансию по душе а также не пропадут без дела в любом ИТ-отделе
Я так поняла Валерий что Вы специалист компании DST Global, спасибо Вам за оперативный ответ. Тогда Валерий еще не подскажите — по вашему мнению, почему новичкам стоит изучать Java и будет ли этот язык востребован в будущем, стоит ли нам взять в свою компанию, в ИТ-отдел например джуниоров?
Нужно понимать, что Java — это в первую очередь не язык, а платформа. То есть Java — это гораздо больше чем язык, и на платформе Java есть много других языков. Поэтому рекомендую кроме языка попытаться понять, что лежит под самим языком, что заставляет программы, написанные на Java, работать.

Если есть основы, мотивация, хорошая и интересная задача для начала, которую хочется решить, то освоить язык вполне можно за полгода.
У нас один из проектов написан на языке Java. Неподскажите что начинающему нужно знать об особенностях Java и направлениях развития этого языка и сколько на это понадобится времени? Есть какой то быстрый вход?
Новичкам нужно начинать с основ — с алгоритмов и структур данных. Язык вторичен, но если основа есть, не составит труда выучить любой. Для кругозора стоит пожалуй разбираться в нескольких языках. Новичкам рекомендую ознакомиться с C/LISP/Java/Python. А далее уже понять к чему больше душа лежит.
Новичку пожалуй нужно понимать, что сам язык — это лишь верхушка айсберга. Java очень простой язык с точки зрения синтаксиса, потому что очень медленно эволюционировал в прошлом. И есть огромное количество учебных материалов, чтобы быстро его освоить.

Но вот потом начинается самое интересное, ведь направлений разработки в Java экосистеме большое множество:

энтерпрайз мир с Java EE (теперь Jakarta EE);
Spring и все что построено за долгие годы вокруг него;
мобильная разработка под Android;
веб-разработка с множеством готовых платформ;
реактивное направление и т.д.

И каждое из направлений весьма глубокое, охватить все сразу не хватит ни времени ни возможностей.

Ну и еще новичку стоит знать о том, что на базе JVM есть альтернативные языки как Kotlin или Groovy. Они выглядят куда более адаптированными под реалии современного мира разработки за счет отсутствия legacy «задолженностей» обратной совместимости.
Я думаю, в ближайшем будущем (5-7 лет) Java в плане востребованности ничего не угрожает. И тут дело даже не в языке, а в той экосистеме, которая выросла вокруг Java и JVM. Это бесконечное количество фреймворков, инструментов и библиотек практически под любую задачу, которая может прийти в голову.

За счет кроссплатформенности Java остается стандартом де-факто для серверной разработки и распределенных систем. А в этой области не так важен язык с его синтаксисом и правилами, как возможность быстро разрабатывать за счет существующих решений и компонентов.

Да и Java не стоит на месте. Сейчас действует стабильная система релизов новых версий языка каждые полгода и разработчики начали получать возможности, которые давно есть в других языках программирования (var, pattern matching, текстовые блоки, легковесные потоки и так далее). То есть язык все больше подстраивается под современные реалии и требования.

Насчет перспективы Java-разработчика на рынке труда то спрос на них всегда превышает предложение, как на локальном так и на глобальном международном рынке. Поэтому зарплаты постоянно растут и условия улучшаются.

Из особенностей я бы отметил разве что нарастающее количество legacy продуктов в энтерпрайз-мире, которые заказчики хотят переписывать и обновлять под новые архитектурные веяния. За это неплохо платят, но работа не всегда сильно интересная. Ведь приходится разбираться и копаться в весьма старых технологиях, а процесс перехода зачастую болезненный и очень неторопливый.
Спасибо за ответ!
А каковы перспективы языка Java и Java-разработчика могли бы рассказать по подробней?
Java является многопрофильным языком программирования в том плане, что на нем пишут как серверную логику распределенных систем, так и десктопные, мобильные и веб-приложения. Поэтому ставка на Java дает широкие возможности по выбору направления в мире разработки. Скучно точно не будет, можно легко начать заниматься другого типа разработкой, не меняя языка программирования.

В то же время, Java является очень комфортной платформой с точки зрения имеющихся в наличии готовых решений и компонентов. Наличие огромного сообщества делает процесс обучения и входа в профессию более простым и быстрым. Ну и в финансовом плане, спрос на Java разработчиков растет с каждым днем. Поэтому это достаточно стабильная среда, где можно быть уверенным в завтрашнем дне.
Хорошо тогда почему по вашему мнению, почему новичкам стоит изучать именно язык Java?
Надо понимать, что интервью джуниора — это в общем случайность. Нет стандартов таких интервью. Обычно собеседование проводит мидл или даже такой же джун. Он задаёт каверзные вопросы и просит решить задачи. Если человек вчера посмотрел урок, связанный с вопросом или с задачей, он всё решит.

Итак, считаю собеседования необъективными, а их результат случайным. Потенциальный кандидат может увеличить вероятность успеха. Для этого надо учиться, учиться и ещё раз учиться.

Некоторым людям для обучения нужны годы, некоторые справляются за 2 месяца. Чётко определённого времени нет. В среднем на обучение уходит полгода. Или 2-3 месяца обучения фултайм.

Ключ к успеху — практика, свои проекты, опенсорс. Также надо знать английский язык.

Если нужен быстрый вход в разработку, надо изучать Java и делать Android-приложения. Такую возможность сложно найти в других направлениях.
Занимательные комментарии, тоже назрел вопрос — если отбросить маркетинговые обещания, сколько времени придётся учиться с нуля до уровня джуниора?