Java enterprise или java android

Java Enterprise vs Android в 2019 — что выбрать новичку?

Решил поделиться своими мыслями на тему того, в какую отрасль разработки стоит пойти человеку, освоившему Java core и основы computer science. А дороги как известно две: Java Enterprise или Android-разработка. Под Java Enterprise программированием я понимаю разработку, вакансии которой на hh имеют заголовок «Java-разработчик». Вакансии, связанные с android-разработкой можно найти на том же сайте по запросу, соответственно, «android-разработчик».

Будем считать, что вы изучили на базовом уровне core языка Java, а также ознакомились с темами алгоритмов, SQL и другими базовыми вещами из computer science, и теперь выбираете путь куда двигаться дальше с прицелом на то, чтобы как можно скорее устроиться на должность junior-программиста. Обсудим какие есть плюсы и минусы в выборе между двумя обозначенными выше ветками разработки.

1) Стек технологий

Java-программирование пришло в бизнес уже почти 20 лет назад. Как следствие, в сфере появилось большое разнообразие фреймворков. На каждом проекте используется свой стек технологий, и бывает достаточно сложно понять, какие технологии еще будут жить, какие вот-вот умрут, а какие уже давно не используются. При этом, кроме джавовских вещей от джависта также требуют знать UI технологии: JS с фреймворками, html, css

Так как android относительно молодая ОС, а в бизнес она вошла еще позже, то тут нет такого зоопарка фреймворков как в большой джаве. Нет тут ни спринга, ни хибернейта, ни других более экзотических вещей. Работу тут можно начинать имея в багаже знаний лишь android sdk и java core. UI, насколько мне известно, предоставляется прямо «из коробки» (android studio), средствами drag and drop. То есть GUI часть дополнительно изучать не нужно

2) Особенности сферы

Как это ни печально, в России Java-программирования нет (за небольшим исключением — банки и гос порталы). То что мы пишем тут отправляется заказчикам в Европу и Америку. Следствием того, что заказчиками являются крупные компании является сложность самой бизнес-логики. Минимальный порог вхождения предполагает не только знание основных фреймворков, но также и специфические требования по распределенным системам, big data, глубокому пониманию многопоточности, машинному обучению

Android-приложения пишутся как для малого бизнеса, так и для крупных игроков по всему миру. Как следствие, есть возможность стартовать с простых проектов и развиваться в сторону более сложных. Другими словами, android предоставляет более низкий порог входа, но не ограничивает потолок — наряду с простыми проектами на рынке присутствуют также и достаточно сложные.

3) Есть ли будущее?

Насчет промышленного программирования на большой джаве — не знаю. Хотя она и держится в первых строчках рейтинга языков программирования, чем это вызвано для меня не понятно. Раньше это можно было объяснить наличием JVM и ее переносимостью, но теперь, когда десктопные приложения больше не разрабатываются и весь функционал выносится в веб — будущее джавы как языка для enterprise программирования для меня под вопросом. Наверное, раз джаву не очень активно используют российские компании, предпочитая ей другие языки программирования, видимо джава не очень современный язык, отвечающий требованиям реальной жизни.

Читайте также:  Андроид с хорошим диктофоном

На рынке смартфонов OS Android нет конкурентов. Вероятность того, что iOS поглотит android близка к нулю. Следовательно, ближайшие пару десятков лет в отрасли вряд ли произойдут существенные изменения. Может будут появляться новые фреймворки, но тот кто начинает с нуля сейчас сможет последовательно их изучать и расти профессионально вместе с развитием самой отрасли. В отличие от большой джавы не нужно пытаться изучить все и сразу, чтобы хоть куда-то устроиться — можно спокойно изучать тот небольшой scope технологий, что используются на рынке сейчас

Источник

Java: Android или EE?

Вопрос такой — куда в мире Java сейчас лучше податься из этих двух вариантов? 1) Идти в Kotlin + Android и пилить приложухи. Также это +NDK(так как опыт в плюсах уже есть порядка 2 лет). 2) Идти в Web и учить Spring + Hibernate, учится юзать Jenkins, Kafka и т.п?

Из критериев — бОльшая вероятность у работодателя встретить интересные задачи и проекты, спрос(возможность подучить полгода + написать пару своих проектов и идти работать (т.е уровень Intermediate Junior, мб Middle), по городам — Казань, Нижний Новгород, Екатеринбург), ну и ЗП естественно.

В Devops иди. Там щас бум на Kubernetesи требуются архитекторы. Плюс ща во всех нагруженных вакансиях — Golang. А Java забудь — это страшный сон, в мобилках скоро будет Dart, а на серверах — Go, Node.js, Swift.

Идти в Kotlin + Web и учить Spring + Hibernate, учится юзать Jenkins, Kafka и т.п

ruby & rails, nuff said

я смотрю дно еще податливое

В андроиде интересных задач ты не встретишь, да и конкуренции со студентами там куча. Тогда уж лучше iOS, задачи те же самые, но там хоть самых нищебродов отсекают требованием макбука и айфона. EE это то, где крутятся все деньги, лучше идти туда. Особо интересных задач там, наверное, тоже не будет, но хотя бы платить будут нормально.

Как бы бум мобильных приложений закончился, имхо. Там из нативного скоро останутся игрушки и немного топовых приложений. Тонко-толстые клиенты для сайтов, а именно они основной хлеб мобильщиков вернуться к мобильному вебу и всяким реакт нейтивам с жабоскриптом.

Так что на далекую перспективу, бэкенд и веб получше. Но можно поиграть в лотерею с нативными приложениями. Рынок их пока еще есть и вероятно даже немного растет — место там себе найдешь. Но я бы к играм склонялся.
//Интересных задач нет нигде)

Ну тут бы я поспорил. Мне, например, нравится сфера геймдева. Но в нашей стране вакансий хороших и куда можно пройти — с гулькин нос:) А вообще, лично для меня, неинтересные задачи это — разбираться в говне мамонта legacy коде, и писать тесты или документацию.

подучить полгода + написать пару своих проектов и идти работать

Джуна все равно не допустят к чему-то серьезному ни там ни там.

В мобильном девелопменте нет никакой конкуренции, а наоборот недостаток кадров на уровне миддл и выше. iOS-разработчика немного сложнее найти, но не сильно.

Как бы бум мобильных приложений закончился, имхо. Там из нативного скоро останутся игрушки и немного топовых приложений. Тонко-толстые клиенты для сайтов, а именно они основной хлеб мобильщиков вернуться к мобильному вебу и всяким реакт нейтивам с жабоскриптом.

Это очень напоминает разговоры лет 15 назад, что весь код уже написан, нужно только поддерживать существующий.

Читайте также:  Расчет балок для андроида

Мобильный бум закончился, но софт ещё довольно активно развивается и раз в пять лет базовый набор приложений нужно чуть ли не целиком переписывать. Работы ещё много. И с развитием IoT (плюс всякие умные дома, встраиваемые компьютеры) будет ещё больше.

Разговоры о том, что джаваскриптом (фронтендом, Cordova, reactNative и прочими) можно заменить нейтивные приложения идут уже много лет. Де-юре возможно, а на практике не всё так красиво получается.

Лучше исходить из того к чему у самого лежит душа. Интересные задачи – довольно субъективная штука.

В мире java везде работы много. Про Нижний Новгород могу сказать из первых рук. Хотя я сейчас удалённо работаю не на Нижний Новгород.

Android — это не Java.

Spring + Hibernate — это не JavaEE.

Изучай JavaEE 8.

А разве нельзя запускать Мак (с апстором) через виртуалку? Видел в инете много историй успеха. Для нищих студентов (и некоторых дядечек типа меня 🙂 ) виртуалка — самое то ведь? (когда я попробовал, у меня не получилось, но думаю из-за старого проца, без SSSE3, SSE4).

Да не переживай. Как придёшь, тебе дадут новый проект, а тесты писать и документировать твой код наймут еще одного человека.

Это очень напоминает разговоры лет 15 назад, что весь код уже написан, нужно только поддерживать существующий.

Не, это напоминает разговоры 15 лет назад о написании десктопных приложений. Тоже там вероятно рассказывали сказки про светлое будущее и что никто не будет использовать тормозной жабаскрипт и паковать копию браузера в каждое приложение.

Де-юре возможно, а на практике не всё так красиво получается.

50% мобильных проектов на галере епама реакт нейтив и уже есть программа для обычных мобильщиков по изучению реакта.

Но дело даже не столько в том что кросплатфома выживает нейтив из некоторых ниш. А в том что мобильные приложения не нужны. Китайцы раньше это поняли и там магазины не пишут свои велосипеды, а интегрируется в какой-нибудь вичат. Посему скоро очередной кризис заставит хайпонутых смотреть в свой кошелек и поедут толсто тонкие клиенты в браузер и в более крупные платформы аля какой-нибудь Гугл асистанс.

Источник

Java Android или Java Enterprice: что выбрать?

И в Enterprise, и в Android используется та же самая Java, но разница на самом деле очень большая.

Разработчики Энтерпрайз работают с очень большими системами со сложной бизнес логикой. Задачи для программистов этого направления ставятся примерно следующим образом: вот тут выводится неправильная цифра, сделай так, чтобы выводилась правильная. Чаще всего вы вообще не понимаете, что к чему и идете к своему бизнес аналитику. В лучшем случае он проводит часовую лекцию, в худшем вы услышите, что «просто так должно быть». Предметная область очень сложная, изучить ее полностью практически нереально. Поэтому большая часть работы Java Enterprise разработчика заключается в необходимости разобраться, что именно должно произойти и почему сейчас работает не так как нужно. Ну и еще одна проблема – много миллионов строк кода, вы будете тратить ну очень много времени, чтобы найти нужное кусок с ошибкой.

У Андроид разработчиков все иначе – есть задача написать приложение, и вы его пишете с нуля. Задача может выглядеть и таким образом: если приложение установить на девайсе N-ного века, не нажимается кнопочка/разрешение хреновое и пр. Вы ставите эмулятор этого девайса, ищите проблему и фиксите. Причем так, чтобы все работало и на этом устройстве, и не сломалось с внесением изменений на других. Проблема в том, что девайсов море и очень трудно подогнать так, чтобы работало идеально на всех.

Читайте также:  Android studio add external library

Дальше вы выбираете, что вам больше по душе.

Андроид разработчик запросто может быть фрилансером или работать ремоут – это очень распространенная практика. В Энтерпрайзе до текущей ситуации с COVID не было возможности работать удаленно. Как будет дальше, когда вся эта история с пандемией закончится – никто не знает. Поэтому если вы из маленького городка и не хотите никуда релокейтиться, то лучше обратить внимание на Java Android – это однозначно будет проще.

Нужно понимать, что у каждого программиста есть дополнительные обязанности, и если они вас бесят, то и вся профессия целиком не будет приносить удовольствие. Дополнительная обязанность Энтерпрайз разработчика – умение работать с Linux сервером. Т.е. вы как минимум должны быть джуниор Linux админом – уметь открыть/закрыть порты, создать пользователя, проверить логи, запустить/застопить сервер, построить простенький pipe и пр. По большому счету тут нет ничего сложного – это все учится за пару недель. Но если вам это не нравится, то зачем себя мучить?

У Андроид разработчиков такими дополнительными обязанностями будет понимание UI/UX. Т.е. не смотря на то что вы разработчик, вам придется много думать как UX дизайнер: где поставить менюшку, какие пункты этой менюшки, где какая кнопочка и пр. Да, этим должны заниматься UX дизайнеры, но на них, бывает, экономят и во всех тонкостях нужно разбираться вам. Вам также понадобятся знания графических редакторов, так как вполне реальна ситуация, что вам потребуется какая-то картинка для иконки, и эту картинку нужно создать. Если вам это все не нравится, то Андроид – не ваша специальность.

Kotlin в Android

Ну и конечно пару слов про Kotlin. Многие сейчас говорят, что Android больше про Kotlin, чем про Java. Да, Google заявил, что для Андроида теперь только Kotlin. Но Google много чего говорит, а завтра все может измениться. Задайте запрос «The Google cemetery». На данный момент там уже более 166 похороненных проектов. Поэтому да, Google может передумать. Лично для меня больная тема, когда Google закрыл отлично работающий проект Hangouts On Air. Поэтому совершенно не исключено, что сегодня/через неделю/месяц Google вдруг сообщит, что они решили не поддерживать Kotlin, а написать свой собственный язык.

Понятно, что от java они рано или поздно уйдут, так как у них сейчас разборки с Oracle по поводу торговой марки. Однако учить Kotlin с 0 сейчас практически не реально, потому что вся документация создана по принципу: «вот это делаем как в Джаве, а это делаем не как в Джаве, а вот так». Т.е. не зная Java, вы эту документацию просто не поймете. Именно поэтому Андроид девелоперы сначала учат Java, а потом доучивают Kotlin. Когда Java совсем не будет, вероятно, документацию перепишут исключительно под Kotlin. И тогда уже вы будете учить этот язык с нуля. Но Kotlin вырос из Java, языки очень близкие, поэтому я все равно рекомендую начинать с Java.

Источник

Оцените статью