Преимущества Java над Ruby / JRuby

try,

SELECT round(AVG(rating) * 2.0) / 2.0 AS result
FROM rating
WHERE ....
13
задан RubyDubee 28 March 2010 в 07:31
поделиться

14 ответов

Я не очень хорошо знаю Ruby, но могу предположить следующие моменты:

  • Java имеет дополнительную документацию (книги, блоги, учебные пособия и т. Д.) ; общее качество документации очень хорошее
  • Java имеет больше инструментов (IDE, инструменты сборки, компиляторы и т. д.)
  • Java имеет лучшие возможности рефакторинга (из-за статического типа система, я полагаю)
  • Java имеет более широкое распространение, чем Ruby
  • Java имеет четко определенную модель памяти
  • Насколько мне известно, Java имеет лучшую поддержку потоковой передачи и юникода (JRuby может помочь здесь)
  • Общая производительность Java в последнее время довольно высока (из-за точки доступа, нового сборщика мусора G1 и т. д.)
  • В настоящее время Java имеет очень привлекательный и дешевый серверный хостинг: appengine
12
ответ дан 1 December 2019 в 17:27
поделиться

ИМХО, то, что один человек считает преимуществом, может быть недостатком для другого. Некоторые люди предпочитают статическую типизацию, а другие - динамическую. Это довольно субъективно и во многом зависит от работы и человека, выполняющего ее.

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

1
ответ дан 1 December 2019 в 17:27
поделиться

Лучшая производительность

0
ответ дан 1 December 2019 в 17:27
поделиться

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

Статическая проверка типов и хорошая Java IDE не предлагают никакого волшебства, и это хорошо для многих сопровождающих вместо Ruby.

1
ответ дан 1 December 2019 в 17:27
поделиться

Недостаточно указать, что java типизируется статически, а ruby ​​- динамически.

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

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

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

1
ответ дан 1 December 2019 в 17:27
поделиться

Язык.

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

Если я попытаюсь перечислить эти свойства, это будет:

  • Конечно, строгая статическая типизация
  • грамматика языка - это LALR ( 1) грамматика - так что легко создать синтаксический анализатор
  • полные имена (пакеты)

То, что у нас есть в среде IDE до сих пор, например Eclipse:

  • большие возможности для исследования очень больших баз кода . Вы можете однозначно найти все ссылки, иерархию вызовов, использование классов или общедоступных и защищенных членов - это очень ценно, когда вы изучаете код проекта или собираетесь что-то изменить.
  • очень полезный редактор кода. Я заметил, что когда я пишу код в java-редакторе Eclipse, я на самом деле набираю вручную только названия кодов или методов, а затем нажимаю Ctrl + 1, и редактор генерирует для меня много чего. И особенно хорошо, что eclipse побуждает вас сначала написать использование фрагмента кода и даже до того, как код будет полностью написан. Таким образом, вы вызываете метод до того, как создадите метод, а затем редактор генерирует заглушку метода для вас. Или вы добавляете дополнительные аргументы к методу или конструктору в том месте, где вы его вызываете, и редактор изменяет подпись за вас. И еще более сложные вещи - вы передаете какой-то объект методу, который принимает какой-то интерфейс - и если класс объекта не реализует этот интерфейс - редактор может сделать это за вас ... и так далее. Много интересного.

Существует МНОГО инструментов для Java. В качестве примера одного замечательного инструмента я хочу упомянуть Maven. Собственно, я считаю, что повторное использование кода действительно возможно только при наличии такого инструмента, как Maven. Созданная вокруг него инфраструктура и интеграция с IDE делают возможными очень интересные проекты. Пример: у меня установлен плагин m2eclipse. У меня новый пустой проект в Eclipse. Я знаю, что есть класс, который мне нужно использовать (на самом деле повторно) где-то в репозиториях, например, StringUtils. Я пишу в своем коде StringUtils, редактор Eclipse сообщает мне, что такого класса в проекте нет, и подчеркивает его красным. Я нажимаю Ctrl + 1 и вижу, что есть возможность искать этот класс в публичном репозитории (фактически в индексе, а не в самом репозитории). Были найдены некоторые библиотеки, Я выбираю одну из них в определенной версии, и инструмент загружает jar-файл, настраивает calsspath моего проекта, и я уже получил все, что мне нужно.

Так что все дело в производительности программиста.

JVM.

Мое мнение таково. что JVM (в частности, Sun's HotSpot) является одним из самых интересных программных продуктов в настоящее время. Конечно, ключевым моментом здесь является перформанс. Но текущая реализация HotSpot JVM исследует самые современные способы достижения такой действительно высокой производительности. Он исследует все возможные преимущества своевременной компиляции над статической, собирает статистику использования кода перед JIT-компиляцией, оптимизирует, когда это возможно, виртуальные вызовы, может встраивать гораздо больше вещей, чем статический компилятор, и так далее. И самое замечательное в том, что все это находится в JVM, но не в самом языке (как, например, в C #). На самом деле, если вы только изучаете язык Java, я настоятельно рекомендую вам изучить детали современных реализаций JVM, чтобы вы знали, что действительно снижает производительность, а что нет, и не добавляйте ненужные оптимизации в код Java. , и не боитесь использовать все возможности языка.

Итак ... на самом деле все дело в IDE и инструментах, но по какой-то причине у нас есть их для Java, а не для любого другого языка или платформы (.NET, конечно, является большим конкурентом в мире Windows).

2
ответ дан 1 December 2019 в 17:27
поделиться

Мне нравится это сравнение (найдено по ссылке, предоставленной Маркусом! Спасибо!) ... Спасибо всем ... я также ожидаю еще нескольких дискретных преимуществ

Java-Ruby Comparison


И это здорово !!

2
ответ дан 1 December 2019 в 17:27
поделиться

Виртуальная машина Java , в которую было внесено более десяти лет улучшений, включая:

  • своевременную компиляцию в компиляторе HotSpot (JIT - байт компиляции код в собственный код)
  • множество алгоритмов сборки мусора и параметров настройки
  • поддержки консоли времени выполнения для профилирования, управления и т. д. вашего приложения ( JConsole , JVisualVM и т. Д.)
3
ответ дан 1 December 2019 в 17:27
поделиться

Причина №1. Существует много устаревшего кода Java. Ruby - новинка, не так много программистов, которые его знают, и еще меньше тех, кто в нем хорош. Точно так же для Java доступно гораздо больше библиотечного кода, чем для Ruby.

Таким образом, могут быть технические причины, по которым Ruby лучше, чем Java, но если вы спрашиваете по причинам бизнеса, Java все равно лучше.

5
ответ дан 1 December 2019 в 17:27
поделиться

Расскажите, пожалуйста, об абсолютных… преимуществах Java перед Ruby

Программистам редко приходится иметь дело с абсолютными понятиями.

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

При разумном использовании сильная система типов со статической проверкой типов может реально сэкономить время.


1) Я делаю не выступать против модульного тестирования! Но хорошее модульное тестирование сложно, и компилятор может быть большим подспорьем в сокращении огромного количества необходимых тестовых примеров.

7
ответ дан 1 December 2019 в 17:27
поделиться
  • Многие разработчики имеют опыт работы с Java, чем с Ruby.
  • Многие существующие библиотеки на Java (что также помогает JRuby).
  • Статическая проверка типов (можно рассматривать как как преимущество и как недостаток).
  • Существующая кодовая база, которая должна быть поддерживается.
  • Хорошая поддержка инструментов.
  • Все больше и больше документации и учебные пособия.
  • Больше опыта с передовыми методами и подводные камни.
  • Дополнительная коммерческая поддержка. Это интересны для компаний.

Многие из этих преимуществ являются результатом того, что экосистема Java стала более зрелой, чем экосистема вокруг Ruby. Многие из этих моментов субъективны, например статическая или динамическая типизация.

18
ответ дан 1 December 2019 в 17:27
поделиться

Прочитав это: Является ли Ruby таким же кроссплатформенным, как Java? заставил меня осознать по крайней мере одно фактическое преимущество java перед ruby:

J2ME-совместимый subest of java более портативен, чем ruby ​​

, пока JRuby не будет работать на J2ME, что может быть навсегда

0
ответ дан 1 December 2019 в 17:27
поделиться

Есть больше вариантов:

  • Разработчики - много наемных
  • Библиотеки - уже изобретено множество колес.
  • IDE - множество сред разработки на выбор. Не только vi / emacs + оболочка.
  • Время выполнения - если вам по какой-то причине не нравится JVM, которую вы используете в системе, вы можете либо загрузить, либо купить другую реализацию, и она, скорее всего, будет просто работать. Сколько существует реализаций Ruby?

Обратите внимание, что это не имеет ничего общего с ЯЗЫКАМИ как таковыми :)

0
ответ дан 1 December 2019 в 17:27
поделиться

Негативы для Java:

  • Существует много дублирования в библиотеках и фреймворках, доступных для Java.
  • Разработчики / сообщества Java склонны создавать сложные решения простых проблем.
  • Существует гораздо больше наследия. в Java, чтобы поддерживать.
  • Слишком много потворства бизнес-пользователям привело к тому, что менеджеры среднего звена почувствовали себя лучше. Другими словами, некоторые философии в Java больше связаны с BS, а не с выполнением работы. Вот почему компании любят использовать Java.
  • Обычно вам нужно писать больше кода на Java, чем на Ruby.
  • Требуется гораздо больше настройки / установки / настройки, чтобы получить полностью рабочую среду разработки Java поверх Ruby.

Положительные стороны для Java:

  • Скорость.
  • Документация.
  • Язык более низкого уровня, чем Ruby, что может быть как хорошо, так и плохо, в зависимости от ваших потребностей.
1
ответ дан 1 December 2019 в 17:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: