Java — Стоит ли изучать Scala без Java backend'a


Содержание

Можно ли учить Scala, не зная Java?

Есть ли в этом смысл?
Java неинтересна как очень традиционный язык, а Scala внезапно понравилась своей похожестью на Erlang.

Можно. Есть один минус: Java будет вызывать рвотный рефлекс.

А скалу, вообще говоря, не могут неожиданно прикрыть? JVM проприетарная технология же.

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

DevelS
Я имею ввиду то, что Oracle прикроет язык Scala, который является вроде как свободным, но в то же время базируется на JVM.
Или Scala тоже их разработка?

Silver.J
Можно конечно. Только вот в чем дело — основная масса библиотек все равно написана java, поэтому на некотором базовом уровне знать ее придется, чтобы понимать документацию. Если серьезно что-то разрабатываешь под jvm, то понадобятся знания и самой java, и инструкций байткода, и самих принципов работы виртуальной машины. Такие дела.

Silver.J
> Я имею ввиду то, что Oracle прикроет язык Scala, который является вроде как
> свободным, но в то же время базируется на JVM.
> Или Scala тоже их разработка?
>
>

Для скала есть реализация и под .NET, отсюда следует и Mono и все остальное. Так что точно никто не прикроет, это лишь зависит от авторов языка.

Silver.J
> Scala внезапно понравилась

объектная модель заимствована от st ? однако.

innuendo
> объектная модель заимствована от st ? однако.
Ась?

Silver.J
> А скалу, вообще говоря, не могут неожиданно прикрыть?
То есть это как? Взять и приказать всем забыть этот язык, так, чтоли? :)

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

vladislav
Тогда еще Михаля Москаля и Камиля Скальски придется ущучить. Идея в воздухе витает-то.

innuendo
От st только то, что все объекты. Точнее все — полиморфные модули в терминологии скалы.

Silver.J
Можно. Не знаю что там на Erlang похожего, разве что akka

NecroMENt
> От st только то, что все объекты. Точнее все — полиморфные модули в
> терминологии скалы.
Там еще часто вспоминают концепцию бинарных сообщений от st, которая чем-то похожа на скаловский вариант реализации перегрузки операторов.

Должен ли я изучать Scala?

32 rpg [2009-07-10 13:34:00]

Я опытный программист на С++ со средними навыками Python. Причины, по которым я изучил Python, в первую очередь:

  • чтобы получить другую перспективу в программировании (статический vs динамический, интерпретированный vs скомпилированный и т.д.).
  • чтобы увеличить объем проектов, над которыми я могу работать (Python позволяет мне создавать веб-разработки, разрабатывать для телефонов Symbian или сбивать быстрые сценарии администрирования системы).
  • в дополнение к моим навыкам С++.

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

Я сомневаюсь, что могу использовать его для средних и крупных проектов. Хотя динамическая типизация удобна, она позволяет определенному классу ошибок, которые я нахожу тревожными. Модульное тестирование и листинг могут облегчить эту проблему, но статическая типизация полностью исключает ее.

Посмотрев на некоторые языки программирования, я думаю, что Scala выглядит хорошим кандидатом: Мне нравится вывод типа, и он запускается на JVM, поэтому он должен быть доступен везде, где доступна JVM. Я также могу узнать больше о функциональном программировании при его использовании.

Но. У меня также есть некоторые сомнения, и я надеюсь, что сообщество Qaru может помочь:

  • Переносимость: Linux и Windows по крайней мере я надеюсь. Как насчет мобильных телефонов, можно ли запустить его там?
  • Совместимость с С++: можно ли смешивать код С++ с Scala? (JNI?)
  • Парадигма программирования: я не чувствую себя комфортно с переключением на функциональное программирование (FP) в это время. Можно ли сначала использовать объектно-ориентированный и процедурный с некоторыми FP, а затем изменить пропорции по мере того, как я узнаю?
  • Зрелость цепочки инструментов: какой у вас опыт работы с IDE и отладчиками? Я использую Eclipse прямо сейчас, и это кажется ОК.
  • Скорость обучения: учитывая мой опыт, как быстро вы думаете, что я могу достичь уровня работоспособности с помощью Scala?
  • Развертывание: как именно вы развертываете программу Scala? Является ли это банкой, это исполняемый файл?


Наконец, что вы думаете, что некоторые из недостатков Scala?

java scala jvm-languages

8 ответов

28 Решение Daniel C. Sobral [2009-07-10 17:49:00]

  • Переносимость: Linux и Windows по крайней мере я надеюсь. Как насчет мобильных телефонов, кому-нибудь удалось заставить его работать там?

Да. Существует довольно некоторое движение о Scala на Android. Что касается J2ME, я видел что-то в этом отношении, но не так много. Существует некоторый код, относящийся к J2ME в репозитории исходного кода. Я не уверен, насколько это жизнеспособно, но мне кажется, что на это не так много.

Я также упомянул, что есть/был пул на Scala -Lang о желаемых целевых платформах, а J2ME был одним из них, очень низким на столбце тотема.

  • Совместимость с С++: можно ли смешивать код С++ с Scala? (JNI?)

Кроме того, вы можете смешивать С++ с Java, что бы это ни стоило. Если у вас нет такого опыта, вы можете просто прочитать ресурсы Java, так как что-нибудь в них будет применимо к Scala без каких-либо изменений (кроме синтаксиса Scala).

  • Парадигма программирования: я не чувствую себя комфортно с переключением на FP в это время. Могу ли я использовать OO и процедурный с некоторыми FP вначале, а затем изменить пропорции, когда узнаю?

Конечно, да. Scala выходит из этого способа, чтобы убедиться, что вам не нужно программировать в функциональном стиле. Это основная критика Scala от функциональных людей, по сути: некоторые не рассматривают язык, если он заставляет программиста писать в функциональном стиле.

В любом случае, вы можете делать все правильно. Моя ставка, однако, заключается в том, что вы подберете функциональные привычки, даже не осознав, что они функциональны.

Возможно, вы можете посмотреть в Matrices в моем собственном блоге о написании класса Matrix. Несмотря на то, что он выглядит как стандартный OO-код, он, по сути, очень функциональный.

  • Зрелость цепочки инструментов: какой у вас опыт работы с IDE и отладчиками? Я использую Eclipse прямо сейчас, и это выглядит нормально.

IDEA (IntelliJ), NetBeans и Eclipse имеют хорошую поддержку для Scala. Кажется, что IDEA является лучшим, а NetBeans/Eclipse поддерживают лягушку, прыгая друг с другом, хотя NetBeans, безусловно, был более стабильным, чем Eclipse в последнее время. С другой стороны, поддержка Eclipse идет очень многообещающим путем, который должен давать результаты в течение следующих 6 месяцев или около того — это просто то, что он наталкивает маршрут.: -)

Некоторыми интересными признаками инструментария Scala для этих сред является тот факт, что плагин Eclipse в разработке использует AOP для более плавного объединения со всей IDE, что плагин NetBeans полностью переписан в Scala, и что там a Scala Power Pack на IDEA, который поддерживает, среди прочего, перевод кода Java в код Scala.

У пользователей EMACS есть обширные инструменты для Scala, и у многих небольших редакторов тоже есть поддержка. Мне очень нравится поддержка jEdit для небольших программ и скриптов, например.

Существует также хорошая поддержка Maven — на самом деле, стандартный способ установки Lift заключается в установке maven, а затем сборке артефакт подъема. Это приведет к соответствующей версии Scala. Там есть цель scala:cc , которая также выполнит перекомпиляцию.

Говоря о перекомпиляции, ни Maven, ни, в частности, и Ant не выполняют хорошую работу по определению того, что нужно перекомпилировать. Из этой проблемы sprung SBT (Simple Build Tool), написанный в Scala, который решает эту проблему с помощью плагина компилятора Scala, SBT использует тот же макет проекта, что и Maven, а также репозитории Maven/Ivy, но конфигурации проектов выполняются в коде Scala вместо XML — с поддержкой файлов конфигурации Maven/Ivy.

  • Скорость обучения: учитывая мой опыт, насколько быстро вы думаете, что я могу достичь уровня работоспособности с помощью Scala?


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

  • Развертывание: как именно вы развертываете программу Scala? Является ли это банкой, это исполняемый файл?

То же самое, что и Java. Вы можете развернуть JAR, WARs или любые другие объекты Java, потому что компилятор Scala генерирует файлы классов. Фактически, вы используете Java jar для генерации файла Scala JAR из файлов классов, а цели Maven для поддержки Lift поддерживают создание WAR файлов.

Существует альтернатива для файлов script. Вы можете вызвать «scala», чтобы запустить исходный код Scala напрямую, подобно Perl оболочки script. Это также можно сделать в Windows. Однако даже с использованием демона компиляции для ускорения выполнения время запуска достаточно медленное, чтобы эффективное использование Scala в среде с тяжелыми сценариями нуждалось в чем-то вроде Nailgun.

Что касается недостатков Scala, посмотрите на мой ответ (и другие) в этом вопрос о переполнении стека.

Scala — это развивающийся язык, который стоит инвестировать, особенно если вы приходят из Java-мира. Scala широко рассматривается в Artima. Смотрите article от Bill Venners, а также читайте Twitter и Scal а.

Относительно ваших вопросов:

  • Java может работать везде, где есть JVM. Впрочем, с мобильными телефонами не повезло. Вам нужна полная JRE, а не подмножество, которое доступно там.
  • Это возможно с JNI. Если что-то возможно с Java, тогда это возможно с помощью Scala. Scala может вызывать классы Java.
  • Функциональное программирование является сильной стороной Scala — вам нужно изучить его. Однако вы также можете начать использовать его, не используя в полной мере его и не работая с ним.
  • Имеется плагин Eclipse. Это не лучше, но он выполнит эту работу. Подробнее здесь.
  • Если вы опытный, я бы сказал очень быстро. Я рекомендую вам найти книгу для начала.
  • Смотрите faq для развертывания.

Парадигма программирования: я не чувствую себя комфортно с переключением на FP в это время. Могу ли я использовать OO и процедурный с некоторыми FP вначале, а затем изменить пропорции по мере того, как я узнаю?

Scala имеет полную поддержку для императивного программирования, написания программ без элементов FP в нем — легкий ветерок (однако FP полезен и стоит изучать в любом случае).

Скорость обучения: учитывая мой опыт, насколько быстро вы думаете, что я могу достичь уровня работоспособности с помощью Scala?

Быстро. В Scala есть ряд интересных функций, которые могут быть незнакомы людям, исходящим из среды С++, Java, например, некоторые из особенностей системы ввода. Некоторые утверждают, что тот факт, что есть много возможностей для изучения в Scala, прежде чем вы знаете все это, является проблемой с языком; Я не согласен. Наличие этой функции является преимуществом языка. Чем больше функций, тем веселее. В конце концов, вам не обязательно использовать их все сразу, так же, как вам не нужно покупать все, что продается в магазине.

Скорость обучения: учитывая мой опыт, насколько быстро вы думаете, что я могу достичь уровня работоспособности с помощью Scala?

Я также исходил из фона С++, я заметил, что, поскольку вы будете писать намного меньше кода по сравнению с С++ для сопоставимой задачи, ваше обучение будет ускорено, так как вы получите больше результатов за тот же период времени, Это был тот же самый феномен, с которым я столкнулся с Ruby.

Нужно ли изучать Java?

Мы уже разговаривали о том, стоит ли изучать PHP язык программирования. На этот раз речь пойдет об еще одном языке программирования, Java. Для начала посмотрим, где используется Ява. Этот язык имеет широкое применение:

— Web-приложения,
— Браузеры, пользовательские скрипты,
— Серверные приложения,
— Приложения для мобильных телефонов, смартфонов, планшетов,
— Виджеты,
— Прикладное ПО,
— Офисные приложения (MS Office и др),
— Информатика, обучение.

Итак, из вышеперечисленного, мы можем сделать вывод о том, что JavaScript является очень популярным языком программирования, на нем написано очень много различных ПО и кодов.
Хотелось бы добавить пару слов о том, что язык учится очень просто. В интернете огромное количество самоучителей по JavaScript, а также всевозможных сайтов и порталов, возможность скачать учебники по языку Ява. Учить или не учить, выбор за вами.

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

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

Похожее

Нужно ли изучать Java? : 2 комментария

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

Цукерберг рекомендует:  Unity - Как можно сделать меню в unity как в вконтакте

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

Scala для Java Junior Developer


09.05.2014, 21:58

Перевести небольшой код из Scala на Java
Называется «сделайте за меня», но все же, кому не трудно, пожалуйста: object ConnectedBlockRender.

Как пользоваться онлайн-IDE для Scala?
Добрый вечер! Прошу объяснить: как пользоваться? (Scala v2.10.3).

(КА) Senior Scala/Java Developer г.Москва!
Requiements: * Scala / Java development experience, Spray, Akka; * Common data structures and.

(КА) Senior Scala/Java Developer г.Москва
Requiements: * Scala / Java development experience, Spray, Akka; * Common data structures and.

Junior Java developer
Requirements: Практикант с опытом в java-linux (можно без опыта коммерческой разработки). .

Быстрый старт со Scala для начинающих и не очень

Scala – строгий статически типизированный JVM-based язык, успешно совмещающий парадигмы объектно-ориентированного и функционального программирования. В языке есть классы, функции высшего порядка, анонимные функции, обобщенное программирование. Использование Java-кода из Scala не вызывает трудностей, синтаксически языки очень близки. В этой статье мы разберем основные элементы языка, достаточные для того, чтобы начать на нем писать.

Настройка окружения

Scala — язык, работающий на JVM, поэтому для работы требует установленную JDK (минимальная версия 1.6). Ее можно взять отсюда. После установки JDK можно приступить к установке самой Scala. Скачать свежую версию можно на официальном сайте. Последняя версия на момент написания статьи — 2.11.6.

Для того, чтобы все корректно работало из командной строки, рекомендуется прописать переменные среды JAVA_HOME и SCALA_HOME , а также дополнить переменную PATH путями к выполняемым файлам. На Linux и MacOS это делается так:

Для того, чтобы сохранить эти настройки, их надо прописать в

На Windows команда немного другая:

Прописать эти опции постоянно можно в настройках системы: Control Panel → Advanced System Settings → Environmental Variables.

4 октября 2020 – 1 марта 2020, Москва и онлайн, беcплатно

После выполнения всех манипуляций можно проверить результат, запустив:

Простые скрипты и маленькие программы можно, конечно, компилировать и запускать вручную с помощью команд scalac и scala . Однако, по мере того, как количество файлов будет расти, ручная компиляция будет становиться все более нудной. Вместо этого используют системы сборки. Для сборки кода на Scala можно использовать стандартные для Java (неофициально) maven, gradle или ant, но сообщество и сами разработчики рекомендуют sbt (simple build tool).

Примечание: если вы устанавливаете sbt, то можете пропустить отдельную установку scala, так как система сборки скачает ее автоматически

Описание процесса сборки находится либо в файле build.sbt в корне проекта, либо в файлах .scala в папке project там же. Само описание – это программа на Scala (которая, в свою очередь, может собираться с помощью sbt как отдельный проект, который… ну, вы поняли).

Синтаксис .sbt -файла напоминает синтаксис Scala с некоторыми дополнениями и ограничениями. Минимальный build.sbt выглядит примерно так (пустые строки обязательны):

Исходники помещаются в папку src/main/scala и src/test/scala по пути, соответствующем иерархии пакетов (как в Java). Чтобы собрать, протестировать и запустить проект, необходимо в любой поддиректории проекта выполнить следующие команды:

или через интерактивную консоль:

Последовательное выполнение команд выглядит немного необычно (обратите внимание на точку с запятой в начале — это особенность синтаксиса):

Отличным помощником в разработке будет REPL (Read-Eval-Print-Loop), или по-другому, интерактивная консоль. Очень удобно проверять в ней небольшие функции, отлаживать код или просто посмотреть возможности языка. Для запуска REPL наберите sbt console в командной строке. Вы увидите примерно следующее:

Все! Можно писать команды на Scala и сразу же их выполнять:

Для выхода из REPL можно нажать Ctrl+D. Все примеры на Scala далее можно протестировать в REPL, для вставки больших кусков кода можно воспользоваться командой :paste .

Использование IDE для разработки на Scala не обязательно, однако сильно упрощает процесс. Скала — язык со сложной семантикой, поэтому возможности IDE более ограничены, чем, скажем, при разработке на Java. Тем не менее даже простая подсветка несуществующих методов и автодополнение существующих может сильно облегчить жизнь. Самые популярные IDE для Scala — это IntelliJ IDEA и Eclipse. Для IDEA есть плагин от JetBrains, в случае с Eclipse есть ее вариант Scala IDE.


Переменные, значения и типы.

В Scala переменные и значения объявляются ключевым словом val или var . val — это неизменяемая переменная (значение), аналог final в Java. var — обычная переменная. Например:

Аналогичный код на Java будет выглядеть так:

Здесь мы видим сразу несколько приятных особенностей Scala:

  1. точка с запятой не обязательна (работает автоматический вывод);
  2. указания типа переменной необязательно (также работает автоматический вывод типов);
  3. ключевое слово public подразумевается по умолчанию.

Типы переменных указываются после имени, через двоеточие. Также в Scala нет, как таковых, примитивных типов ( int , float , boolean и т.д.). Их заменяют соответствующие классы Int , Float , Boolean и т.д. Любая переменная — экземпляр какого-либо класса. Иерархия классов начинается с Any , все классы наследуются от него (аналог Object в Java).

Применение привычных операторов, при этом, на самом деле — вызов метода: a + b тождественно a.+(b) . Вариант записи без точки применим к любым методам (с некоторыми ограничениями).

Функции, анонимные функции, методы

Функция в Scala объявляется с помощью ключевого слова def . Пример объявления и применения функции:

Аналогичный код на Java:

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

На самом деле, функция — это тоже объект. Каждая функция в Scala — это экземпляр класса Function , у которого есть метод apply . Поэтому мы вполне можем записать так (знак подчеркивания ставится на место аргумента функции):

Вызов метода apply подразумевается по умолчанию, поэтому использование функций внешне выглядит как в Java:

Все четыре вызова функции идентичны. Представление функций в виде объектов позволяет оперировать с ними, как с остальными объектами: передавать в качестве аргументов, возвращать из других функций, расширять дополнительными методами и т.д., что позволяет Scala полноценно поддерживать парадигму функционального программирования.

Конечно, присутствуют анонимные функции (лямбда-функции). Они объявляются так:

Здесь мы объявляем анонимную функцию, которая принимает один целочисленный аргумент и присвоил ее переменной f , после чего применяем f как обычную функцию.

Классы и объекты

Если вы программировали на Java, многие вещи, касающиеся объектно-ориентированного программирования будут вам знакомы. Класс объявляется ключевым словом class , новый экземпляр — через new . Методы класса — это функции, объявленные в его теле. Поля класса указываются сразу после имени, как список аргументов. При этом, по умолчанию они объявляются как private val . То есть, если мы не укажем никаких модификаторов, указанное поле будет доступно только внутри класса и будет неизменяемым. Класс можно сделать абстрактным, добавив abstract перед объявлением. Основное отличие от Java здесь заключается в отсутствии конструктора. Код, который должен выполняться при создании объекта, пишется прямо в теле класса. Как при этом реализовать несколько конструкторов с различным числом аргументов, мы рассмотрим позже. Пример использования класса:

И аналогичный код на Java:

Как видим, public указывать не обязательно, аргументы конструктора доступны во всем классе, локальное приватное поле создавать также не обязательно.

Кроме того, в Scala мы можем объявить сразу объект, без создания класса, с помощью ключевого слова object . Таким образом реализуется паттерн «Одиночка» (Singleton).

Аналог на Java будет куда более многословен.

В этом примере мы пометили конструктор как protected , чтобы исключить возможность его вызова извне, обращение к объекту будет осуществляться через метод getInstance() , который при первом своем вызове инициализирует экземпляр класс, а при последующих возвращает уже созданный экземпляр. Кроме того, вполне допустимо существование объекта и класса с одним и тем же именем, при этом они делят область видимости. Поэтому необходимость в директиве static отпадает — методы, объявленные не в классе, а в объекте ведут себя как статические. Такой объект называется в терминологии Scala «companion object» («объект-компаньон»).

Вернемся к конструкторам. Вспомним, что при применении любого объекта к некоторым аргументам по умолчанию вызывается метод apply . Этим мы и воспользуемся и напишем класс с несколькими конструкторами, статическими методами, изменяемыми и неизменяемыми полями в идиоматичном для Scala стиле и продублируем этот же код на Java.

Интерефейсы и трейты

Аналогом Java-интерфейса в Scala является трейт (trait). Как ни удивительно, объявляется он с помощью ключевого слова trait . Как и интерфейсы Java, трейты содержат только объявления методов и допускают множественное наследование. В отличие от интерфейса, в трейте можно описывать поля класса и частично реализовывать методы. Наследование как трейтов, так и абстрактных классов осуществляется с помощью extend (первый родитель) и with (последующие родители). Пример использования:


Ключевое слово override необязательно, но его использование является хорошей практикой.

Другие особенности и отличия от Java

Как и в Java, в Scala классы, трейты и функции можно параметризовать. Параметры типов пишутся в квадратных скобках после имени класса или функции. Так определяется интерфейс Foo , который принимает некоторый тип A и содержит метод bar ? который принимает значение типа A и некоторого типа B и возвращает объект типа C . Конкретные типы A , B и C будут определены в реализации интерфейса.

Конструкция if / else всегда возвращает значение выражения, которое стоит последним ввыполняемом блоке. Скобки вокруг условия обязательны, скобки вокруг тела, в котором только одна инструкция, можно опустить.

Блок try / catch / finally выглядит в Scala так:

Циклы while ничем не отличаются от варианта в Java:

А циклы for — наоборот, совсем не похожи (о них мы подробнее поговорим в следующей статье):

Также вы, возможно, могли заметить литерал . . Он имеет тип Nothing который является подкласс любого класса. При вызове . кидает исключение NotImplemented . Это примерно аналог undefined в Python. . можно ставить в качестве заглушки вместо тела функции, к написанию которого вы планируете вернуться позже.

Заключение

Итак, мы установили и настроили среду разработки для Scala, посмотрели основные элементы языка, сходства с Java и отличия от нее. Этого вполне должно хватить для того, чтобы начать писать простой и рабочий код. В следующей статье мы подробнее рассмотрим элементы функционального программирования, case-классы, pattern-matching и другие высокоуровневые особенности языка.

Что учить: Scala, Java или.NET?

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

Выбираю между Scala, Java и C#. Хочется сразу двух зайцев убить: в случае провала собственных стартаповских планов, суметь найти хорошую работу*, в другом случае просто знать нужную технологию.

Кратко о себе: упертый линуксоид и питонщик, в прошлом похапешник.

__
*да, я понимаю, что работа/зарплата во многом завысит от собственных знаний и умении

UPD.
Всем спасибо большое за ответы. Учу Java.
Если бы не ваши ответы, то полез бы в Scala, не разорбался бы без Java и бросил бы путь личностного роста ;)

1 ответов

Есть ряд преимуществ перед другими языками:

1. Востребованность. Большая часть банковского софта (особенно серверной части) и софта, работа которого подразумевает большую нагруженность и высокое время отклика, используют именно Java и смежные с ней технологии. Это могут быть разного рода торговые платформы, фронт-офисные системы или биллинговые системы. Всё, что угодно. Кроме того, на Java есть масса фреймворков, которые быстро и эффективно позволяют вести сложных web-ориентированных проектов.
C# может сравниться по востребованности с Java, но, всё-таки, серверную часть на C# делать не так удобно, как клиентскую. Поэтому я уже неоднократно встречал связку rich-client на C#, а серверная часть на Java.
Scala — прекрасный язык, подающий большие надежды, но, увы, на данный момент он далёк от мэйнстрима, и неясно, станет ли он им когда-нибудь.

2. Кроссплатформенность. Java изначально создавалась, как язык, работающий по принципу write once, run everywhere. И, насколько мне известно, пока этому принципу удаётся следовать более-менее успешно. .NET в целом, и C# в частности, ориентирован строго на Windows. Да, я знаю, что есть проект Mono. Однако этот проект разрабатывается не в MS, а значит любые изменения в платформе .NET могут потенциально повлечь странные и внезапные проблемы в коде, который запускается с помощью Mono.
Кстати, несомненным плюсом Java является и то, что на ней же можно разрабатывать мобильные приложения. Несмотря на то, что Oracle делает определённые шаги, чтобы поссориться с Google-ом насчёт Java, этот язык всё ещё является основным для разработке приложений на Android.

Поскольку Scala компилируется в байт-код, который потом гоняется на JVM, сравнивать в этом контексте Scala и Java бессмысленно.

3. Простота. Java, сама по себе, не очень простой язык, но Scala сложнее. Да, гибче, да, более насыщенна смыслом (засчёт тех же замыканий, например), но сложнее. C# и Java, на мой взгляд, примерно одинаковы по сложности.

4. Открытость исходников. Большая часть библиотек для Java, да и сама Java, как правило, поставляется с исходниками. В процессе отладки или идентификации проблем, которые внезапно случились в продакшне, ценность исходников чрезвычайно велика. Без них, порой, просто не разобраться. У Scala с этим, вроде, тоже всё в порядке, а вот платформа .NET открытостью похвастаться не может.

5. Удобство в использовании. Для Java есть, как минимум, одна восхитительная среда разработки — IntelliJ Idea. Их девиз — develop with pleasure, и это ни разу не пустые слова. Есть ещё Eclipse и NetBeans, тоже годные среды разработки, но лично мне они нравятся существенно меньше.
Для Scala есть отличный плагин в Idea, и он уже может достаточно, чтобы сделать разработку более-менее комфортной, но, всё же, до возможностей, доступных для Java, плагину ещё предстоит проделать немалый путь.

В C# — это Visual Studio, без вариантов. Если она не нравится по какой-то причине, то всё, в процессе написания кода будет элемент раздражения, а это плохо сказывается на продуктивности.

А я бы посоветовал .NET. Это заставит понять принципы Windows платформы, её достоинства и недостатки, особенно если за плечами есть знания *NIX систем. В сравнении придёт лучшее понимание.
Что касается зарплат, то, по моим наблюдениям, начинающие Java разработчики получают больше начинающих .NET разработчиков. Однако, с ростом уровня разработчика, разница нивелируется. Скорее всего это вызвано более низким порогом вхождения в разработку для выбравших .NET.

Scala присутствует и для .NET и для JVM. Так что к ней можно перейти после C#/Java.


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

На мой взгляд все зависит от задач, с которыми Вам хотелось бы работать. Указывать какой из языков для чего лучше подходит опасно — грозит лютым и песполезным холиваром, но я все таки выражу лишь краткое ИМХО: окошки и сайты ооочень удобно писать на .net, в то время, как серьездные распределенные системы на java (хотя бы в силу кроссплатформенности последней).

Цукерберг рекомендует:  Macos - mysql пароль

ПС: еще одно сугубо личное мнение: .net на столько хорошо спроектированная платформа, что приводит к некоторому ограничению в проф. развитии, тк многие технические аспекты в .net крайне удачно скрыты (на пример подключение к б.д., создание GUI или тестирование web сайтов) и детали, с ними связанные могут достаточно долго оставаться нераскрытыми. Для меня, именно это и послужило причиной смены языка (и работы) с C# на Java.

Если Вы крутой линуксоид и питонщик — то Java не будет сложной. В Джаве много разных библиотек, приличная документация , огромная комьюнити — найти помощь и поддержку почти по любой части — вообще без проблем.

Очень зависит , чем Вы собираетесь заниматься , в какую сторону идти. В Вузе преподовали джаву . Спрос на неё есть во всем мире. Хоть и продолжаю практиковать в джаве, лично сам переключился на Ruby.

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

Android очень сильно поднял JAVU. А теперь очередь WindowsPhone. И я уверен что С# cтанет более популярным боагодаря Expression Blend (гениальная штука)

1с или Scala учи. Ява ну плохо там все фреймворки,
распространенность маленькая. Вакансий по 1с в 20 раз больше.
Никому эникейщики не нужны. 1c scala это промышленность,
будешь на заводе или предприятии сидеть
а не в тараканьей конторе. Уволят вот тебя с работы,
жена бросит и все ок тогда не будешь удивляться
зачем такое вражье по пишут.

Swing Ejb too bad

Есть ряд преимуществ перед другими языками:

1. Востребованность. Большая часть банковского софта (особенно серверной части) и софта, работа которого подразумевает большую нагруженность и высокое время отклика, используют именно Java и смежные с ней технологии. Это могут быть разного рода торговые платформы, фронт-офисные системы или биллинговые системы. Всё, что угодно. Кроме того, на Java есть масса фреймворков, которые быстро и эффективно позволяют вести сложных web-ориентированных проектов.

Ну ну ну такая она востребованная, как андроид телефоны, ты по ним много программистов
видел. Самое востребованное 1с

C# может сравниться по востребованности с Java, но, всё-таки, серверную часть на C# делать не так удобно, как клиентскую. Поэтому я уже неоднократно встречал связку rich-client на C#, а серверная часть на Java.

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

Scala — прекрасный язык, подающий большие надежды, но, увы, на данный момент он далёк от мэйнстрима, и неясно, станет ли он им когда-нибудь.

Зато это все промышленное, а не филькина контора паленая

2. Кроссплатформенность. Java изначально создавалась, как язык, работающий по принципу write once, run everywhere. И, насколько мне известно, пока этому принципу удаётся следовать более-менее успешно. .NET в целом, и C# в частности, ориентирован строго на Windows. Да, я знаю, что есть проект Mono. Однако этот проект разрабатывается не в MS, а значит любые изменения в платформе .NET могут потенциально повлечь странные и внезапные проблемы в коде, который запускается с помощью Mono.
Кстати, несомненным плюсом Java является и то, что на ней же можно разрабатывать мобильные приложения. Несмотря на то, что Oracle делает определённые шаги, чтобы поссориться с Google-ом насчёт Java, этот язык всё ещё является основным для разработке приложений на Android.

Ну с тоже кросплатформенный и покросплатформеннее джава, есть вон обжектив с,
но это только название джава, понимаешь код с пк под андроид не пойдет

Поскольку Scala компилируется в байт-код, который потом гоняется на JVM, сравнивать в этом контексте Scala и Java бессмысленно.

Джава машина такая быстрая, что закачаешься просто

3. Простота. Java, сама по себе, не очень простой язык, но Scala сложнее. Да, гибче, да, более насыщенна смыслом (засчёт тех же замыканий, например), но сложнее. C# и Java, на мой взгляд, примерно одинаковы по сложности.

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

4. Открытость исходников. Большая часть библиотек для Java, да и сама Java, как правило, поставляется с исходниками. В процессе отладки или идентификации проблем, которые внезапно случились в продакшне, ценность исходников чрезвычайно велика. Без них, порой, просто не разобраться. У Scala с этим, вроде, тоже всё в порядке, а вот платформа .NET открытостью похвастаться не может.

Ну и че тебе до их открытости. Зато апи постоянно меняются, даже примеры и те устаревают.

5. Удобство в использовании. Для Java есть, как минимум, одна восхитительная среда разработки — IntelliJ Idea. Их девиз — develop with pleasure, и это ни разу не пустые слова. Есть ещё Eclipse и NetBeans, тоже годные среды разработки, но лично мне они нравятся существенно меньше.
Для Scala есть отличный плагин в Idea, и он уже может достаточно, чтобы сделать разработку более-менее комфортной, но, всё же, до возможностей, доступных для Java, плагину ещё предстоит проделать немалый путь.

Да такая удобная со своим кривым интелиджи и мавеном, тут что сказать пойти поблевать

В C# — это Visual Studio, без вариантов. Если она не нравится по какой-то причине, то всё, в процессе написания кода будет элемент раздражения, а это плохо сказывается на продуктивности.


без вариантов это конечно плохо пошел в другую контору устраиваться — а там — такое.

10 сложностей при изучении Java.

1. Первый вопрос, который вы себе задаёте: C чего начать?

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

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

Желание задавать другие вопросы пропадает напрочь. Но вы не опускаете руки — пытаетесь написать свою первую программу — но не тут-то было, элементарная программа не запускается. Вместо “Привет мир!” на экране — ошибка, которая вам мало о чем говорит.

Сидите Вы и думаете: “Из книги мало что понял, в интернете меня принимают в штыки, как только появляюсь со своими глупыми вопросами, я даже первую программу запустить не могу. Может я не такой умный как все и Java не для меня? Как же другие начинают?”. И вы начинаете злиться на самого себя.

2. Ещё одна мысль, которая посещает новичка: “Java — слишком сложный язык, наверное, не всем дано на нем программировать”.

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

Для этого наверно надо иметь мозги не хуже, чем у создателя космического корабля. Мне кажется я не потяну. Чтобы научиться программировать на таком уровне, нужно прожить несколько жизней.

3. Следующая боязнь новичка: “Новичков никто не любит, им никто не хочет помогать, над ними смеются и издеваются”

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

Не у всех они есть. Мало того, вас часто пытаются осадить более умные коллеги, поставить на место, иногда унизить и за счет этого потешить свое эго. Вам и так то нелегко поначалу, а тут ещё и какие то “псевдо гуру” пытаются на вас давить и насмехаться над вами. Часто бывает так: что то не получилось — а спросить не у кого.

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

4. Четвертая проблема новичка: “Где находить нужную информацию?”

В интернете куча разрозненной информации, не знаешь, за какую браться. Приходится все собирать по крупицам, самому систематизировать, что неудобно и отнимает время, которого и так немного.

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

Все это приводит к тому, что у вас падает интерес к обучению, и дальше вы начинаете продвигаться очень медленно или совсем останавливаетесь.

5. Рассмотрим ещё одну проблему: новичок уверен, что нужно прочитать не один десяток книг, чтобы научится программировать.

У вас не возникало такой мысли: “Учиться по книге могут только гении, ну или приближенные к ним” или “Чтобы дочитать полностью книгу нужно обладать супер дисциплиной ”?

Вы несколько раз пытаетесь покорить какую-нибудь книгу, но обязательно в каком-то месте застреваете и дальше идти уже нет сил и желания. Возникает вопрос: если я не могу осилить одну книгу, что уж тогда говорить о десятке? Вы злитесь на автора книги, который не удосужился всё объяснить нормальным человеческим языком. Вместо этого он использует какие-то заумные слова, после которых мозг от перегрева начинает плавиться.

6. Ещё одна мысль, которая посещают начинающих: “Java очень быстро развивается, мне за ним не угнаться, тем более я ещё даже не начал изучение”.

Java развивается такими темпами, что никто не знает где ему найдут применение через пару лет. У него много направлений, каждый из которых можно изучать до конца жизни, но так и не понять всех его тонкостей. Сейчас Java — это такой Змей Горыныч, у которого отрубают одну голову (в виде устаревших технологий), а на этом месте вырастает две, которые ещё сильнее чем предыдущая. И так до бесконечности.

Поэтому кажется, что поезд уже ушел, тот кто успел на него запрыгнуть — счастливчики, а нам придется продолжать программировать на своем “родных” Паскале и Visual Basic, в глубине души завидуя всем остальным. Про себя вы все время повторяете, что находитесь не то что в начале пути, а вы даже не ступили на этот путь.

7. Следующая проблема новичка: “Хочу устроиться на работу программистом, но без опыта нигде не берут”

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


  • умение договариваться с людьми (преподаватель становится вашим лучшим другом, когда подходит время сессии)
  • умение быстро ориентироваться в экстренной ситуации
  • умение находить решение своей проблемы за счет других людей (списать, выдать чужое решение за свое, попросить сдать друга экзамен вместо вас)
  • неумение планировать время
  • отсутствие дисциплины
  • отсутствие реальных знаний по программированию.

Даже если вы изучили visual basic или Паскаль, и если вы напишите это в своем резюме, работодатель рассмеется вам в лицо. По окончании учебы невольно приходят мысли: “Что делать? Где набраться опыта? Почему я раньше об этом не думал, вместо этого гулял и развлекался? Нужно было все осваивать самому, а не надеяться на университет”. Чувство потерянного и неправильно спланированного времени не покидает вас.

8. Восьмое препятствие, которое сидит у новичка в голове: “Нужно хорошо владеть английским языком, чтобы научиться программировать на Java”

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

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

9. В скором времени все новички приходят к такому вопросу: «Какую среду программирования выбрать? Сколько людей — столько и мнений».

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

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

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

Скала и Java 2020

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

Цукерберг рекомендует:  С# ios swift - 2d игры,ios разработка

Что такое Java?

Java — это самый популярный и широко используемый язык программирования, используемый миллионами разработчиков по всему миру практически на всех возможных компьютерах. Разработанная на Sun Microsystems, Java была разработана как независимый от машины язык программирования для работы в разных средах, достаточно безопасных для пересечения сетей и достаточно мощных, чтобы заменить собственный исполняемый код. Для разработки первой рабочей версии потребовалось почти 18 месяцев. Язык первоначально назывался «Дуб», но в 1995 году был переименован в «Java». Со временем Java стала главной платформой для веб-приложений и веб-сервисов. Эти приложения используют такие технологии, как веб-службы Java, Java Servlet API и многие другие серверы и фреймворки с открытым исходным кодом и коммерческими Java-приложениями. Эволюция Интернета также помогла катапультировать Java на первый план программирования.

Что такое Scala?

Scala — это основанный на JVM объектно-ориентированный язык программирования, который на протяжении многих лет приобрел значительный импульс в качестве потенциальной альтернативы Java. Хотя это не так популярно, как Java, по крайней мере, пока нет, но это определенно не позади. Термин Scala означает «масштабируемый язык» и назван так потому, что он был разработан для роста с растущими требованиями пользователей. Он обеспечивает лучшее из всего мирового опыта для разработчиков, которые могут применяться к широкому спектру задач программирования, от написания небольших сценариев до построения больших систем. Лучшая часть, она работает на стандартной платформе Java и полностью взаимодействует со всеми библиотеками Java. Он может вызывать любой Java-код, подкласс любого Java-класса и реализовать любой Java-интерфейс.

Разница между Scala и Java

Основы Scala и Java

Java — это объектно-ориентированный язык общего назначения, разработанный Sun Microsystems Джеймсом Гослингом и немногими его коллегами в начале 1990-х годов. Он начался как проект под названием «Дуб» в 1991 году, который позже был переименован в Java. Язык занимает большую часть синтаксиса с C и C ++, но с меньшим количеством объектов низкого уровня. Scala также является объектно-ориентированным языком общего назначения, но более объектно ориентирован, чем Java. Скала является детищем немецкого компьютерного ученого и профессора методов программирования в EPFL Мартина Одерского.

Читаемость Scala и Java

И Scala, и Java являются объектно-ориентированными языками, которые работают на JVM (Java Virtual Machine), однако Scala включает как объектно-ориентированное, так и функциональное программирование в довольно сжатый и необычный язык. Разработчикам необходимо написать несколько строк кода для рутинных задач при использовании Java, тогда как Scala значительно сокращает несколько строк кода до краткого и сжатого кода, что упрощает идентификацию и исправление ошибок. Однако он имеет более сложную структуру, чем Java.

Классы и экземпляры


Scala более объектно-ориентированная, чем Java, поскольку Scala не имеет статических элементов; вместо этого он имеет одноэлементные объекты — класс с одним экземпляром. Все в Scala — это экземпляр класса, тогда как в Java есть примитивы и статика, которые находятся вне модели OO. Более того, все операции над объектами осуществляются через вызовы методов в Scala, в то время как операторы обрабатываются по-разному в Java и не являются вызовами методов.

Объект и статический

В Java класс может иметь статические методы и данные. Таким образом, существует одна точка доступа к методу, и класс не должен быть создан для доступа к статическим методам. Статические переменные обеспечивают глобальный доступ к данным в JVM. С другой стороны, Scala обеспечивает аналогичный механизм, но в виде объектов, которые представляют собой реализацию одноэлементного шаблона. В каждом загрузчике классов есть один экземпляр, и таким образом можно иметь глобально разделенное состояние. Однако объекты — это экземпляры классов, которые позволяют передавать объекты в качестве параметров.

Взаимодействие Scala и Java

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

Scala vs. Java: сравнительная таблица

Резюме Scala и Java

Оба Scala и Java являются объектно-ориентированными языками программирования на основе JVM, которые используются для создания широкого спектра приложений. Однако Scala более объектно-ориентированная, чем Java, которая включает как объектно-ориентированное, так и функциональное программирование в довольно сжатый и необычный язык. У Scala есть все преимущества платформы Java, и она работает без проблем со всеми библиотеками Java, за исключением того, что она не поддерживает обратную совместимость. Scala быстрый и лаконичный с другими функциями безопасности по сравнению с Java. Однако Java существует с возрастом, что объясняет его популярность и зрелость.

Как освоить Java-программирование и начать зарабатывать

Если вы раздумываете, чем заниматься и как зарабатывать деньги — присмотритесь к профессии программиста. Она не так сложна, как кажется со стороны, и осваивать её можно удалённо, без ущерба для основной работы или учёбы в вузе. Но с чего же начать? Языков программирования больше десятка, как понять, какой лучше подойдёт для старта? Пожалуй, обратимся к опыту западных стран: в США школьники и студенты младших курсов сначала проходят обучение на Java. И это правильно — мы расскажем, почему.

Кофе и дуб

Java — один из самых популярных языков программирования, и один из самых старых среди «ныне живущих»: его начали писать в 1990 году — возможно, ещё до вашего рождения. Тогда язык хотели назвать Oak — то есть «Дуб». Но в итоге Джеймс Гослинг, создатель языка, остановился на популярном названии кофе, который, похоже, очень любил. Отсюда взялся и логотип с дымящейся чашкой — наверняка вы его видели, запуская какую-нибудь игру на старом телефоне. По другой версии, чашка с кофе появилась, так как изначально Java планировали использовать для программирования бытовых приборов. А кофемашина для многих главный бытовой прибор — у миллионов людей новый день начинается именно с неё.

Java стал поистине «народным» языком, и работают под его управлением не только видеоплееры, холодильники и прочая встраиваемая техника, но и банковские системы. Программы, написанные на Java, можно увидеть на любом Android-устройстве. Построена на нём и серверная часть огромного количества сайтов — Amazon, eBay, PayPal, «Газпрома», РЖД, МВД, «Одноклассников». В этом «Джава» особенно хорош. Даже карточка, на которую падает ваша зарплата, работает с банкоматом не в последнюю очередь благодаря одной из версий Java. Ну, а если вы грезите об игровой индустрии, вам достаточно знать, что Маркус Перссон написал на Java «Майнкрафт».

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

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

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

Недостатки у языка тоже есть. Его ругают за чрезмерную нагрузку на оперативную память — отмечается, что продукты этого языка нередко обрабатывают процессы в полтора-два раза медленнее, чем конкуренты, написанные на C. Критикуют его и за синтаксис прошлого тысячелетия: блоки необходимо выделять фигурными скобками.

И всё же Java остаётся одним из самых популярных и востребованных языков. На GitHub, крупнейшем сервисе для программистов, он занимает второе место в рейтинге популярности, пропуская вперёд лишь ещё более возрастной Python.

Как и где освоить

Научиться писать на Java за пару часов, параллельно с просмотром новых серий «Игры престолов», вряд ли получится. Программирование — трудоёмкий процесс, сопряжённый с постоянным отслеживанием ошибок, багов и потерянных фигурных скобок. Но двух часов хватит, чтобы создать нечто простенькое: например, аналог «Тетриса» или «Змейки». Особенно если вы будете это делать не самостоятельно, а под руководством преподавателя. Интернет-площадка GeekBrains регулярно проводит web-семинары, посвящённые работе на Java. Посмотрите пару уроков сами и убедитесь: в программировании нет ничего архисложного.

Одними играми возможности Java-разработчика не ограничиваются, и Java-программист может найти себя, например, в разработке ПО для встраиваемой техники, Android-приложений или бэкендов — серверной части сайтов и сервисов. Специалист, знающий этот язык, никогда не останется без работы. Вправе он рассчитывать и на неплохую зарплату: средняя стоимость услуг Java-программиста в Москве оценивается в 110 тысяч рублей. Конечно, никто не станет платить такие деньги пусть и талантливому, но неопытному соискателю — нужна подготовка и стажировка.

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

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

Курсы идут семь месяцев (практика занимает два). Обучение организовано так, чтобы его можно было совмещать с работой или очной учёбой. Все уроки записываются, чтобы вы могли пересматривать их в любое удобное время. А в специальном чате можно обсуждать интересующие вопросы с преподавателями и другими студентами.

Для ознакомления есть бесплатные web-семинары и краткие курсы. Затраты на учёбу компенсируются за пару месяцев — после нескольких программистских зарплат. Так что, если хотите научиться кодить на Java и зарабатывать этим неплохие деньги, оставляйте заявку на сайте GeekBrains. Скоро набор, а места в группе ещё есть.

Set(Scala, Java, JavaScript, Python, `C#`).maxBy(_.fun) == Scala. Разработчики объясняют в 7 пунктах, почему

Когда-то на рынке говорили о Python-парадоксе — Google интервьюировала Java, C и прочих программистов и требовала от них знания Python, таким образом отбирая тех, кто развивается, смотрит по сторонам, заинтересован в чём-то ещё, кроме основной сферы деятельности. То же самое сейчас со Scala: если компания выбирает этот язык, значит она хочет найти действительно крутых разработчиков.

«Жизнь слишком коротка, чтобы всё время писать на Java», — заявляют Scala-девелоперы. И аргументируют.

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

2. Scala делает разработчиков счастливыми. В языке хорошая система типов и поддержка функциональной парадигмы плюс живое комьюнити, совместимость с Java-экосистемой и появление новых подходов и собственных библиотек каждый год. Перейти на Scala стоит, чтобы снова получать удовольствие от своей работы. Жизнь слишком коротка, чтобы всё время писать на Java. Если разработчики переходят на Scala, чаще всего они на этом языке и остаются. Случается, скалисты мигрируют на Haskell или Rust, но в Java возвращаются крайне редко — к возможности писать элегантный код, как и ко всему хорошему в принципе, быстро привыкаешь. Scala позволяет изучать не только язык, но и всю обширную экосистему, поэтому разработчикам не бывает скучно. В Scala-библиотеках есть куда развиваться и расти, а значит быть вознаграждённым: полезные знания хорошо оплачиваются.

3. Scala — один их самых популярных коммерческих языков, который используют, например, в распределённых системах. На Scala написан весь игровой бэкенд Evolution Gaming, его заслуженно любят «Тинькофф Банк», LinkedIn, Twitter, Netflix и Epic Games (Fortnite). Scala также может использоваться для фронтенда в виде Scala.js, который транслируется в JavaScript.

4. Мигрировать на Scala с Java или TypeScript не так тяжело, как кажется. О том, что Scala — язык сложный, говорят те, кто никогда не пробовал на нём писать. Не обязательно глубоко понимать внутреннее устройство используемых библиотек, чтобы начать разработку на Scala. Это как с машиной: можно не разбираться, как она работает, но комфортно ездить. Всегда можно начать со Scala как с «лучшей Java», а затем внедрять в свой код элементы функционального программирования.

5. Scala работает на JVM, используя тем самым многолетний опыт её разработчиков. Благодаря этому скорость работы кода на Scala практически аналогична скорости кода на Java. Многие распространённые в JVM-мире библиотеки написаны на Scala (например, Akka и Spark), и проще всего их использовать именно из Scala-кода.

6. Scala тоже критикуют. Например, за медленную компиляцию, которая благодаря последним улучшениям перестала быть проблемой. Да, компилятор по-прежнему медленнее, чем в Java, потому что делает больше работы и не даст собрать проект, пока не будут исправлены все ошибки, но это точно не головная боль. Также на Scala больше сложностей для написания проектов для Android, потому что эта ОС не является высшим приоритетом для Scala. Но при этом существуют проекты, позволяющие компилировать код на Scala вместо Java байт-кода в машинный код (Scala Native) и JavaScript (Scala.js), а также использовать библиотеки этих экосистем.

7. В целом Scala — язык с относительно высоким порогом входа. Некоторые сдаются, пытаясь изучить Scala и сталкиваясь со сложными для понимания библиотеками, но нет ничего невозможного. Для этого есть книги (1, 2, 3, 4, 5), курсы и Scala-школа, которую запускает продуктовая компания Evolution Gaming. Трехмесячное обучение — бесплатное, опыт программирования на Scala не обязателен, но знание одного из фундаментальных языков программирования будет плюсом. Лучшим выпускникам предложат работу в Evolution Gaming. ​

Остались сомнения? Приходите на Scala Meetup 3 декабря.

Понравилась статья? Поделиться с друзьями:
Все языки программирования для начинающих