Причина ненависти?
Приведём маленький некролог/список, почему мы ненавидим Java
Приведём маленький некролог/список, почему мы ненавидим Java
Порождение дьявола
Java была выкована из бесполезно пролитых крови и слез в мрачных подвалах Sun Microsystems в 1995-м году (Позже пришли Oracle, чтобы плясать на костях).
Тогда джава-гномики, увидев бурный рост зоопарка железа, решили, что спасением человечества станет Виртуальная Машина. Идея звучала как сладкая утопия: "Write Once, Run Anywhere" (Напиши один раз, запускай везде).
JVM должна была стать великим уравнителем, позволяя запускать один и тот же код как на кофеварке, так и на сервере банка.
На старте это действительно выглядело как магия. Разработчиков, измученных длительной пересборкой С под каждую новую архитектуру процессора, спасала JVM.
Она была тем самым "чистым белым героином" кроссплатформенности. Ты принимал дозу, и мир становился проще.
Но, как это всегда бывает, подсаживаясь на иглу удобства, ты едва ли думаешь о том, как через 10 лет будешь готов опуститься на самое дно ради маленькой дозы грязнейшего "хмурого" из ржавой ложки Enterprise-разработки. Прекрасная идея JVM породила легионы Java-программистов, у которых атрофировалось понимание того, должно выглядеть программное обеспечение.
Стандартизация породила монструозные архитектуры, застывшие в камне, как памятники человеческой глупости.
Тогда джава-гномики, увидев бурный рост зоопарка железа, решили, что спасением человечества станет Виртуальная Машина. Идея звучала как сладкая утопия: "Write Once, Run Anywhere" (Напиши один раз, запускай везде).
JVM должна была стать великим уравнителем, позволяя запускать один и тот же код как на кофеварке, так и на сервере банка.
На старте это действительно выглядело как магия. Разработчиков, измученных длительной пересборкой С под каждую новую архитектуру процессора, спасала JVM.
Она была тем самым "чистым белым героином" кроссплатформенности. Ты принимал дозу, и мир становился проще.
Но, как это всегда бывает, подсаживаясь на иглу удобства, ты едва ли думаешь о том, как через 10 лет будешь готов опуститься на самое дно ради маленькой дозы грязнейшего "хмурого" из ржавой ложки Enterprise-разработки. Прекрасная идея JVM породила легионы Java-программистов, у которых атрофировалось понимание того, должно выглядеть программное обеспечение.
Стандартизация породила монструозные архитектуры, застывшие в камне, как памятники человеческой глупости.
И весь мир подождёт
Одним прекрасным днём 1959-го года Джон Маккарти, разработчик языка Lisp, решил внести в свой язык сборщик мусора. С тех пор сборщики мусора мы видели много где, иногда к месту, иногда - нет.
В 21-м веке сборщик мусора кажется необязательным в силу существования Rust, однако он всё ещё имеет право на существование.
Но что же получится если сборщик мусора будет реализован джава-макакой для других представителей своей стаи приматов?
Получится Stop-the-World. JVM считает тебя и твой код за терпил. И вы потерпите пока она будет чистить созданный ей же мусор.
Не хочешь терпеть? Окей, ZGC теперь требует "какой-то" десяток миллисекунд. Впрочем сначала спусти всю стипу ITMO FAMILY на 4 гига оперативки для 200-т строчного микрсервиса.
В 21-м веке сборщик мусора кажется необязательным в силу существования Rust, однако он всё ещё имеет право на существование.
Но что же получится если сборщик мусора будет реализован джава-макакой для других представителей своей стаи приматов?
Получится Stop-the-World. JVM считает тебя и твой код за терпил. И вы потерпите пока она будет чистить созданный ей же мусор.
Не хочешь терпеть? Окей, ZGC теперь требует "какой-то" десяток миллисекунд. Впрочем сначала спусти всю стипу ITMO FAMILY на 4 гига оперативки для 200-т строчного микрсервиса.
java.lang.NullPointerException
Тони Хоар извинился за изобретение null и всю жизнь страдает от осознания своей ошибки.
Джава-макаки проглотили null и сделали из него религию, ведь так весело писать if (user != null) в начале каждого действия и искать где именно твой код дропнулся из-за неожиданного возвращения null каким-то рандомным методом случайного фреймворка.
Джава-макаки проглотили null и сделали из него религию, ведь так весело писать if (user != null) в начале каждого действия и искать где именно твой код дропнулся из-за неожиданного возвращения null каким-то рандомным методом случайного фреймворка.
Ожидайте Exception в течение 3-5-ти рабочих дней
Говорят, Германия - ад бюрократического мира.
Аналог Германии в мире программирования - Java.
Хочешь напечатать что-то в stdio? Предъяви абстракцию фабрики для печати, её реализацию с тремя нашими интерфейсами и опиши это всё в пару сотен строк XML чтобы Spring понял как взаимодействовать с этим цирком уродов. Зумер и не любишь XML? Отлично, пропиши по 20 аннотаций в каждый класс, а после гадай кто и когда и в какой ситуации будет сознан. Жаль на ВТ не преподают гадание по кофейной гуще.
Аналог Германии в мире программирования - Java.
Хочешь напечатать что-то в stdio? Предъяви абстракцию фабрики для печати, её реализацию с тремя нашими интерфейсами и опиши это всё в пару сотен строк XML чтобы Spring понял как взаимодействовать с этим цирком уродов. Зумер и не любишь XML? Отлично, пропиши по 20 аннотаций в каждый класс, а после гадай кто и когда и в какой ситуации будет сознан. Жаль на ВТ не преподают гадание по кофейной гуще.
Злодей Бо Син в 100 метрах от твоего кода
Итак, ты наконец признался себе в своей ничтожности и написал свой веб-проект на джаве. Что же, молодец - теперь можешь присаживаться в то самое "кресло для смотрящего" отельной комнаты, ведь теперь тебе остаётся только смотреть как Wildfly берёт контроль над твоим кодом и показывает, что в тебе стержня нет.
Говоря более ясным языком - ты не можешь просто писать нормальный код с полным пониманием процесса. IoC, обилие рефлексии и обилие абстракций предлагают тебе доверить проект веб серверу и заставляют тебя мирится с шизофреническими идеями создателей спецификаций Java EE.
Говоря более ясным языком - ты не можешь просто писать нормальный код с полным пониманием процесса. IoC, обилие рефлексии и обилие абстракций предлагают тебе доверить проект веб серверу и заставляют тебя мирится с шизофреническими идеями создателей спецификаций Java EE.
На самом деле этот некролог можно вести почти бесконечно и расписать про обёртки, ужасное управление памятью, избыточность, дороговизну абстракций и т.д. и т.п....
Однако зачем, если лучше будет посмотреть за что мы ненавидим Java на практике?
Разберём джавапоражение на примере лабораторных работ по веб программированию.