Отличие java от 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 и Java SE/EE (февраль 2015)?

В рамках задачи научиться создавать приложения для Android задался вопросом освоить требуемый инструментарий, в первую очередь сам язык Java.
Прочитав вводную книжку по Java, ориентированную в первую очередь на использование Java SE, заметил, что язык активно развивается, и в нём постоянно появляются различные новые конструкции. Например, в Java 8 появились лямбды.

В связи с этим вопрос: именно как язык, то есть совокупность синтаксиса и грамматики, а также программных конструкций, ими описывающихся, является ли «каноничаская» Java от Oracle идентичной тому языку, на котором пишутся программы для Android? Условно говоря, все эти дженерики, лямбды и аннотации, доступны ли они Android-разработчикам в том же самом виде, что и «обычным» Java-программистам?

Читайте также:  Airport city mod android

Отдельный вопрос — версионность языка. Насколько я понял, в «обычной» Java всё упирается в версию JVM, то есть при написании кода доступный синтаксис определяется той версией виртуальной машины, на которой он будет исполняться.
А что на Android? Всё упирается в версию ОС? Тогда, к примеру, если я создаю приложение, поддерживающее Android начиная с версии 2.1, то мне не только доступно лишь то API, которое существовало на тот момент, но и актуальный на тот момент синтаксис языка, то есть, в моём примере, без лямбд? Или же ограничения касаются лишь API, а компилятор автоматом генерит по новому исходному тексту байткод, который сможет понять даже старая версия Dalvik?

Буду благодарен всем, кто сумеет прояснить этот вопрос.

  • Вопрос задан более трёх лет назад
  • 9042 просмотра

Вдохновившись предыдущими ответами и заметив некоторые несостыковки мнений у их авторов, отправился на собственные поиски. И вот что мне удалось найти.

Is it possible to use Java 8 for Android development? — вопрос на StackOverflow, датированный апрелем 2014 года. Общая идея ответов следующая:

  • Java от Oracle и язык разработки для Android — де-юре никак не связанные друг с другом вещи. Причина — опять же юридическая, связанная с вопросами лицензирования Java для стороннего использования.
    Как следствие, язык и фреймворк для разработки под Android базируются на проекте Apache Harmony, опенсорсной реализации Java SE, причём на той его ветке, которая реализовывала Java 6.
  • Фичи канонической Java от Oracle появляются в языке разработки для Android спорадически и исключительно по желанию Google, то есть никак не связаны с версионностью Java от Oracle. Де-факто, при работе с Android KitKat и выше можно использовать большинство (хотя, я так понял, не все — к примеру, try-with-resources в пролёте) фишек Java 7.
  • Существующие способы использования новых фишек канонической Java при разработке под Android базируются на различных хитростях процедуры сборки. Например, для поддержки лямбд предлагается использовать нечто под названием gradle-retrolambda, что конвертирует байткод, получающийся при компиляции Java 8 кода, в байткод Java 6/7, после чего этот байткод конвертируется в формат JVM, используемой в Android. Судя по всему, иных фич Java 8, отличных от лямбд, данный метод не поддерживает.
    Иной подход для использования новых возможностей Java при разработке под Android — это альтернативные языки, в частности, Kotlin (gadfi, спасибо за наводку ;)) — продукт компании JetBrains, на базе чьей IDEA нынче строится официальный инструментарий для разработки под Android.

Также интересные соображения на этот счёт можно почерпнуть в другом вопросе на StackOverflow — “Why Apache Harmony” or “How to use Java 8 on Android”

Верно последнее высказывание.
Все одинаково. Не важна версия языка. Разница между версиями android заключается в API. Для поддержки очень старыми версиями android современных возможностей используется Support Library.

Допустим, велась разработка на Java 6. Потом пришло обновление до Java 8. Вы переписываете код на Java 8 (оптимизируя только функции и работу Java, а не Android) и все отлично работает.

То есть как язык является именно «каноническим» от Oracle. Но Android, кажется, работает только с Java 6. (поправьте в комментариях, если не так).

В структуре он имеет сходство с Java EE (можете это сразу заметить), но это структура Android-проекта.

Источник

Java vs Kotlin для Android: мнения разработчиков

В опросах Stack Overflow в 2018 году 45,3% респондентов называли Java самым популярным языком программирования, а Kotlin отдали предпочтение всего 4,5% разработчиков. Тем не менее, в мае 2019 в Google объявили приоритетным языком программирования именно Kotlin. Корпорация не призывала отказываться от С++ и Java, но споры между программистами разгорелись еще жарче.

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

«Основной поток останется на Java, а Kotlin будут использовать для быстрой разработки»


Дмитрий Качалов, ведущий программист Kelly IT Solutions

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

Какие использует. Сейчас при разработке корпоративных приложений я пользуюсь именно Java. Для него доступно много библиотек, есть готовые модули. Кроме того, Android Studio его настолько поддерживает, что буквально можно писать по одной букве, и код будет писаться сам за тебя. Это очень удобно.

Читайте также:  Как взломать most wanted android

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

Почему предпочитает Java. На нем можно делать бесплатные сервисы, свои методы API, писать сайты, сервера, мобильные приложения. Это по сути универсальный язык, на котором можно делать большое количество операций и разрабатывать разные приложения. К нему есть много наработок и библиотек. А еще — большое сообщество, которое всегда готово ответить на вопросы и помочь.

О противостоянии и будущем языков. Kotlin — определенно, интересный шаг вперед, но на мой взгляд, он не несет в себе каких-то новых подходов и парадигм. Просто сокращает время написания кода за счет более коротких конструкций. При этом в основе все равно лежит та же самая Java.

В ближайшее время Java все равно будет самой популярной. Основной поток останется на Java, а Kotlin будут использовать для быстрой разработки в условиях быстрого прототипирования простых приложений или разработки прототипов. Хоть это и очень провокационная точка зрения. Kotlin совместим с Java, поэтому нельзя сказать, что что-то принципиально изменится.

«Если вы новичок и хотите работать с Android — учите Kotlin. В остальных случаях я бы выбрал Java»


Артем Первушов, лицензированный специалист Android ATC, автор программы курса «Android-разработчик» в Нетологии

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

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

О будущем языков. Может в будущем Kotlin захватит мир, а может и нет. «Захват мира» Go, Python, Ruby, JS, происходит гораздо реже, чем нам говорят поклонники этих технологий. Поэтому мой совет такой — если вы новичок и твердо решили связать свою судьбу с Android — учите Kotlin, это удобно и модно. В остальных случаях я бы остановился на Java.

«Kotlin-разработчики могут использовать Java-фреймворки и библиотеки и писать более понятный и простой код»


Семен Пилунц, Android-разработчик, эксперт курса Нетологии

Какие языки знает. Знакомство с программированием случилось у меня в институте, начал с Pascal, также изучали Basic, QBasic. Уже в конце учебных лет начал изучать C. На этом я не остановился и начал изучать другие языки — Javascript, VB 6.0, MS SQL, Java. Вскоре осознал, что ближе всех мне Java, поэтому решил сфокусироваться на нем.

Спустя пару лет по воле случая начал использовать Java для создания мобильных приложений под Андроид. Иногда приходилось в самом Андроиде использовать Javascript, HTML, SQL. Знание других языков всегда помогает.

Какие использует. Сейчас я работаю как на Java, так и на Kotlin. Пока что полностью отказаться от Java мы не можем, но постепенно переходим.

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

Почему предпочитает Kotlin. Использовать Kotlin проще и удобнее, чем Джаву. В нем программный код получается в среднем на 40% короче. А еще он позволяет не допускать некоторых ошибок, которые могут возникнуть в ходе выполнения программы. Когда код более простой и понятный, ошибки сложнее сделать и легче обнаружить, поэтому их число стремительно снижается. Вы тратите меньше времени на разработку и тестирование.

О будущем языков. Думаю, в ближайшем будущем Котлин сможет практически полностью заменить Джаву. Уже сейчас он охватывает рынок Android на 50%, и это всего за 3 года после появления. Но все же Джаву надо знать, без нее будет трудно переносить код на Котлин. Здесь отмечу, что Котлин полностью совместим с Java, то есть вовсе не обязательно сразу полностью переписывать приложение. Часто удобнее делать это постепенно.

А еще разработка Android-приложений — не единственное направление Kotlin. Он поддерживает JavaScript, программисты могут перенести на него фронтенд, Kotlin отлично подходит для разработки серверных приложений, позволяя писать короткий и выразительный код, сохраняя полную совместимость с существующими стеками технологий на основе Java. Также создатели добавили поддержку Gradle, чтобы разработчики могли писать на нем Gradle-файлы. Активно идет развитие Kotlin Native, с помощью которого можно создавать iOS-приложения.

Читайте также:  Find files on android device

«Kotlin не лучше Java в целом, но лучше в мире Android»


Ильназ Гильязов, сооснователь AIMS, автор программы курса «Разработчик на Kotlin» в Нетологии

Какие языки знает. Изначально я учил несколько языков по мере необходимости: Ассемблер, C/C++, потом уже Java, JS, PHP, Python. Поскольку работал и работаю в сфере ИБ, не могу останавливаться на одном языке.

Какие использует. Сейчас выбираю инструменты в зависимости от задач и предпочтений заказчика. Для бэкенда — Java/Kotlin, для легковесных вещей без множества интеграций — Go/NodeJS, для фронтенда — JS/TypeScript + фреймворки, для системных вещей — C++/Go. То есть учитываю не личные предпочтения, а исхожу из задачи и возможностей языка и его экосистемы.

Почему предпочитает Kotlin. Преимущества языка Kotlin в свежем взгляде на вещи, в желании предоставить разработчикам простые и удобные инструменты, не требующие большого количества кода. Это и синтаксический сахар, и корутины. Kotlin позволяет писать меньше кода — это радует.

В Android выбор Kotlin вместо Java очевиден. В мире backend позиции Kotlin гораздо слабее, хотя и там он себе пробивает дорогу. В Spring Framework (который для многих — стандарт в backend) включают фишки для Kotlin, недоступные для Java. Это уже говорит о многом. В большом и сложном backend мы пока по-прежнему работаем на Java, хотя и используем в некоторых местах Kotlin. В случае микросервисной архитектуры, где для конкретного микросервиса не требуется большого количества интеграций, Kotlin чувствуют себя прекрасно.

Kotlin не лучше Java в целом, но лучше в мире Android. Хотя с этим тоже можно поспорить — все зависит от параметров, по которым мы оцениваем.

О противостоянии и будущем языков. Противостояние между разработчиками на Kotlin и Java иногда наблюдаю в проектах, где нет общей договоренности и используют оба языка. А еще есть фанатики, которые верят в единственно правильный язык. В остальном все более-менее гладко, хотя в вопросах интеграции остаются шероховатости. Если вы хотите стать профи в Android, придется знать оба языка. Да и вообще, стоит привыкнуть к тому, что придется постоянно осваивать новые языки, библиотеки, фреймворки, идеи и подходы.

Сейчас будущее Java в Android непонятно. Когда мы перевели все свои Android-проекты на Kotlin, Java в Android застряла на уровне седьмой версии с некоторыми фишками из восьмой. И до сих пор неясно, собирается ли Google решать свои споры с Oracle и вводить поддержку новых версий, либо остановится на текущих позициях. Поэтому инвестиции в изучение, использование и поддержку Java на Android выглядят, как минимум, рискованными в среднесрочной перспективе.

Kotlin же развивается более-менее предсказуемо и предоставляет обертки, которые позволяют использовать все современные возможности языка, добавляет ряд удобств и возможностей именно для разработки под Android. Это немаловажный фактор, который влияет на удовлетворенность разработчиков.

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

«Сейчас никто не ищет разработчика со знание только Java или только Kotlin. Нужно быть универсальным специалистом»


Дмитрий Гордин, Android developer в RoadAR

О противостояни. Чтобы не разводить демагогию и не основываться на личных ощущениях, давайте посмотрим на крупных игроков рынка. Во-первых, Google признает Kotlin основным языком разработки под Android. Во-вторых, вот так выглядят вакансии на HH.ru от топовых компаний:

  • Tinkoff — «Существенный плюс: опыт разработки приложений на Kotlin»;
  • Яндекс — «Приветствуется: опыт разработки на Kotlin»;
  • Redmadrobot — «Желательно: опыт разработки на Kotlin»;
  • даже «Почта России» — «Ожидаем от вас следующие знания и компетенции: знание технологического стека Android SDK, Kotlin/Java».

О выборе языка. Нужно знать оба языка. Невозможно знать Kotlin и не знать Java. Лига зануд может придраться и заметить, что есть Kotlin Native, который не связан с Java. Но мы говорим об Android разработке, а значит, о среде выполнения Dalvik/ART. Поэтому все работодатели, которые пишут, что ищут разработчика на Kotlin, на самом деле ищут оба языка.

По моему мнению, оптимальный путь — хорошенько освоиться с Java, а затем начать плавно переходить на Kotlin. Kotlin не переворачивает с ног на голову все, что вы знали из Java. Вы с минимальными изменениями сможете перейти на новый язык и писать в «Java-стиле», постепенно котлинизируя ваш код, добавляя в него сахар и специфичные для Kotlin фишки.

Источник

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