Как стать автором
Поиск
Написать публикацию
Обновить

Комментарии 39

Ряд экспертов убежден, что организациям вообще стоит заменить Java на более современные технологии: Python, JavaScript и Node.js.
Такие вот эксперты пошли.

Тут скорее перевод такой, в оригинале там по-другому написано

НЛО прилетело и опубликовало эту надпись здесь
Спасибо, что хоть PHP не предложили.
Не знаю, как там через 20-30 лет, но сегодня мы имеем дело с килотоннами легаси кода на java на самых разных корпоративных и не очень службах и приложениях. Какой же титанический труд надо вложить чтобы все это переписать под что-то другое?
Через 10 лет будут гигатонны кода.

В мире около 10 млн Java программистов, среднее число 5 млн за последние 10 лет. Их суммарный зарплата около 500 млрд $. Даже если взять коэффициент 5 на переписывание и 5% от написанного кода, то получится 5 млрд $, никто такие деньги тратить в здравом уме не будет.
НЛО прилетело и опубликовало эту надпись здесь
10 млн программистов * 50 000 тыс доларов * 10 лет писали ПО / 5 раз быстрее * 5% переписываем = 50 млрд.

Если 100% переписывать, то 1 трлн :-)
НЛО прилетело и опубликовало эту надпись здесь
У меня есть 2 проекта один на 9 месяцев, второй 1.5 года. Имея код, получалось ускориться где-то в 5-10 раз, осуществлялся перенос с С++ -> Java, Java -> C++.

Кажется просто, но есть нюансы платформы и всегда, что-то нужно улучшить.

“ заменить Java на более современные технологии: Python, JavaScript и Node.js.” Как сказал бы мой дедушка, не смешите мои носки.


Пусть один хотя бы нормально в мультипоточность сначала сможет

Питон более или менее может. Но там свои тараканы

Ряд экспертов убежден, что организациям вообще стоит заменить Java на более современные технологии: Python, JavaScript и Node.js

Особенно финансовым организациям:


nodejs:


0.1 + 0.1 + 0.1 == 0.3 // false

python:


from decimal import Decimal
number = Decimal("0.1")
number = number + number + number
print(number)       # 0.3
#good... so far
print(number + 0.1) #runtime error
НЛО прилетело и опубликовало эту надпись здесь

Поясню свою мысль:
В js нет типов для работы с валютами.
В python есть, но могут нести сюрпризы.
В java, оба примера (с использованием BigDecimal) просто не скомпилируется (что гарантирует безопасность)


BigDecimal number = new BigDecimal(0.1);
number = number.add(number).add(number);
System.out.println(number);
System.out.println(number.add(0.1)); // incompatible types: double cannot be converted to BigDecimal

P.S.
Самый читабельный и безопасный вариант, угадайте на каком языке :)


Console.WriteLine(0.1m + 0.1m + 0.1m == 0.3m); // true      
var number = 0.1m;
number = number + number + number;
// Console.WriteLine(number + 0.1); // compile error
Console.WriteLine(number + 0.1m); // 0.4

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

НЛО прилетело и опубликовало эту надпись здесь
В чем проблема подключить библиотеку Dinero.js ? Pythob тоже можно скомпилировать, для js можно инструмент проверки синтаксиса использовать.
В чем проблема подключить библиотеку Dinero.js ?

Ok. Будете использовать Dinero.js , а там баг. Что тогда? Извольте заплатить за приватный репозиторий NPM, делать форк, переустанавливать пакеты в куче компонентов и поддерживать это все.


Искать альтернативы NPM?


Или может просить девушку из Франции, которая поддерживает этот проект, пофиксить баг и зависеть от ее настроение и занятости?


Что будет, если Евросоюз придумает новую валюту, а мэинтейнер в декретном отпуске и ей глубого наплевать на обновление проекта?


Вы готовы доверять стороннему NPM пакету денежный процессинг в организации? А ваш начальник?


Вы хотите использовать новый крутой модуль для бухгалтерии, но выясняется что он, в свою очередь зависит не от Dinero.js , а от decimal.js, а третий, нужный вам компонент от moneysafe.


Что тогда?


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


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

В DineroJs 78 файлов и 9 в папке src.
И добавлять их надо будет в каждый проект этой несчастной организации.
DineroJs использует import/export, не забываем, что NodeJS поддерживает модули экспериментально.
Так что нужно будет это собирать.
У вас старая версия Babel или вообщем его нет. что тогда?
И еще тесты тоже нужно будет добавлять.
И еще 29 зависимостей добавить в devDependencies.

В чем проблема собрать?

проблема не в том, чтобы собрать, а том, чтобы вообще не иметь таких проблем

Как будто в Java сторонние библиотеки вообще не используются.

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

НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Можно обрабатывать деньги в копейках просто

  1. При сложении/вычитании целых чисел с ошибками округления, ошибки складываются


  2. При умножении некоторого числа с ошибкой округления на некоторый коэффициент ошибка также умножается на этот коэффициент.



Например, если у вас сумма получается умножением цены на количество, при этом цена получена с ошибкой округления до 0,5 копеек, то после умножения ее на 1000 литров (считаем цену за бензин, например) ошибка округления в сумме может достичь 50 рублей.

И еще, используя копейки вместо рублей, вы снижаете диапазон допустимых значений на 2 порядка. Ошибки переполнения в отчетах за 5, 10 лет? Легко!

НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Судя по тому что Javа хоронят каждый год, можно сделать вывод, что Java — это клевая технология.

А вообще Java и C# — технологии ориентированные именно на корпоративного заказчика.

Вот и я о том же. Когда был студентом тоже повелся на тренд, что Java говно. Потом начал работать на джаве, и понял это один из языков который идеален для корпоративного уровня разработки. Все библиотеки, портированость, build systems, и экспрессивность языка позволяют компаниям с тысячами программистов работать вместе и сообща + быстрая адаптация для джуниоров.

Насчёт экспрессивности(выразительность?) это вы погорячились.

Согласен, выразительность по сравнению с Kotlin и Swift слабее, но явно лучше, чем у C/C++ и прочих C-подобных языков.


С Java8, стало намного лучше, а если мигрировать на Kotlin вообще можно о всех недостоинствах забыть.

Можно сделать вывод, что на Java только старые проекты поддерживают.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий