Зачем разработчику Java изучать дополнительный язык JVM?
Я Java-разработчик, и я хочу знать, что является основным преимуществом изучения языка, такого как Scala или Groovy?
9 ответов
Изучение другого языка JVM дает такую же выгоду, как и изучение любого нового языка. Это улучшает ваше понимание программирования в целом и, что более важно, добавляет еще один инструмент в ваш набор инструментов.
Таким образом, в следующий раз, когда вам придется решить проблему, вы можете достать гвоздодер вместо молотка.
Чтобы быть более конкретным, Groovy - хороший язык для быстрого макетирования кода, и Scala, хотя я никогда не использовал его, считается идеальным для написания параллельных приложений благодаря своему функциональному подходу. Как уже упоминалось, языки JVM могут взаимодействовать с кодом Java. Что может быть полезно для добавления в устаревшие системы или для быстрого макетирования частей приложения.
Несколько хороших причин, которые приходят на ум:
- У них есть функции, которых нет в Java и которые вы можете найти полезными в определенных обстоятельствах.
- Они используют разные парадигмы программирования, разные способы мышления.
- Изучение других языков открывает ваш разум.
- Изучение языков заставляет вас осознать их сильные и слабые стороны.
- Они получают все больше внимания и лучшую поддержку JVM (с Java 7).
Собственно, возможно, задайте себе обратный вопрос:
- Почему бы не выучить дополнительный язык JVM?
Другие ответы здесь имеют очень хорошие моменты, но есть одна вещь, по которой я скучаю.
Хороший кодер редко идентифицирует себя как "Java-разработчик", "Python-разработчик" или любой "разработчик". Изучение другого языка (будь то язык JVM или нет) заставит вас понять, что в мире есть чему поучиться.
Если вы удовлетворены только одним языком, это обычно означает, что вы не замечаете проблем, с которыми он сталкивается, и что есть много задач, которые лучше подходят для других языков.
Вот почему прагматичные программисты поощряют каждого программиста изучать язык в год.
Языки, которые вы упомянули, практикуют другую парадигму программирования, которая может помочь вам быть более продуктивным. С ними также веселее работать.
Такие языки, как Scala и Clojure, работают на JVM и демонстрируют отличную производительность в многоядерных системах без наложения требований к синхронизации.
И, конечно же, вы все еще можете использовать все богатство библиотек, доступных для Java.
Потому что тогда вы будете знать новый язык, что означает более широкий набор навыков и другой взгляд на проблемы. Но поскольку Groovy и Scala работают на JVM и вы знаете Java, вы можете интегрировать существующие библиотеки и код, если хотите или должны это делать.
С http://groovy.codehaus.org/:
"Groovy похож на супер версию Java. Он может использовать возможности Java для предприятий, но также имеет отличные функции производительности, такие как замыкания, компоновщики и динамическая типизация. Если вы разработчик, тестировщик или гуру сценариев, вы должны любить Groovy".
Так что во многих случаях имеет смысл использовать Groovy поверх Java; Например, в модульных тестах Java!
Я знаю, что с Groovy вы можете загружать скрипты (из файлов) во время выполнения из вашего Java-приложения. Это позволяет мне настраивать поведение действий приложения на клиентском сайте без необходимости перекомпиляции кода. Это довольно мило.
Извините больше вопросов, чем ответов..
- На что бы вы потратили время, если не изучаете новый язык?
- Почему вы ограничиваете себя языками JVM?
- Будет ли полезнее изучать разработку через тестирование?
- Как насчет изучения стандартных патентов на дизайн?
- Чего вы пытаетесь достичь, вкладывая время?
Изучение языка всегда хорошо, однако, если вы не выучите их очень хорошо и не будете их использовать, вы не получите большой выгоды, так как вам нужно уметь "думать на языке", чтобы расширить свой кругозор.
Использование более чем одного языка в компании приводит к большим дополнительным долгосрочным затратам, поэтому вы можете получить больше, узнав, как лучше программировать на своем основном языке, решать только вам.
Преимущества языка сценариев внутри jvm. Бесшовное взаимодействие с скомпилированным кодом Java.